aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-10-15 20:08:40 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-10-15 20:08:40 -0700
commitcf2e81b03662c4b1a227d1bc9560a91826ef20e6 (patch)
tree0dc03cb97af1eb0615b8bb491696247962a81b73
parent0baa3b511e28cfb124f712e12d8f93474e6ce6fa (diff)
parentbf2732599cc7e45f320f75b38672c1a1fc3d5583 (diff)
downloadbun-cf2e81b03662c4b1a227d1bc9560a91826ef20e6.tar.gz
bun-cf2e81b03662c4b1a227d1bc9560a91826ef20e6.tar.zst
bun-cf2e81b03662c4b1a227d1bc9560a91826ef20e6.zip
Merge branch 'jarred/gen'
-rw-r--r--.gitignore3
-rw-r--r--.gitmodules8
-rw-r--r--Makefile310
-rw-r--r--README.md185
-rw-r--r--build.zig33
-rw-r--r--examples/.gitignore1
-rw-r--r--examples/.is-examples-folder (renamed from examples/hello-next/styles/2.css)0
-rw-r--r--examples/hello-next/components/wow/such-path.ts1
-rw-r--r--examples/hello-next/package-lock.json18014
-rw-r--r--examples/hello-next/pages/api/hello.tsx5
-rw-r--r--examples/hello-next/pages/foo/bar/third.tsx26
-rw-r--r--examples/hello-next/pages/posts/[id].tsx19
-rw-r--r--examples/lotta-modules/index.js1
-rw-r--r--examples/lotta-modules/package.json31
-rw-r--r--examples/lotta-modules/public/index.html6
-rw-r--r--examples/next/.eslintrc.json (renamed from examples/hello-next/.eslintrc.json)0
-rw-r--r--examples/next/.gitignore (renamed from examples/hello-next/.gitignore)8
-rw-r--r--examples/next/.npmignore42
-rw-r--r--examples/next/README.md (renamed from examples/hello-next/README.md)0
-rw-r--r--examples/next/components/Title.tsx (renamed from examples/hello-next/components/Title.tsx)0
-rw-r--r--examples/next/components/subtitle.tsx (renamed from examples/hello-next/components/subtitle.tsx)0
-rw-r--r--examples/next/gitignore42
-rw-r--r--examples/next/next-env.d.ts (renamed from examples/hello-next/next-env.d.ts)0
-rw-r--r--examples/next/next.config.js (renamed from examples/hello-next/next.config.js)0
-rw-r--r--examples/next/package.json (renamed from examples/hello-next/package.json)15
-rw-r--r--examples/next/pages/_app.tsx (renamed from examples/hello-next/pages/_app.tsx)0
-rw-r--r--examples/next/pages/index.tsx (renamed from examples/hello-next/pages/index.tsx)10
-rw-r--r--examples/next/pages/second.tsx (renamed from examples/hello-next/pages/second.tsx)0
-rw-r--r--examples/next/public/favicon.ico (renamed from examples/hello-next/public/favicon.ico)bin25931 -> 25931 bytes
-rw-r--r--examples/next/public/vercel.svg (renamed from examples/hello-next/public/vercel.svg)0
-rw-r--r--examples/next/styles/Home.module.css (renamed from examples/hello-next/styles/Home.module.css)2
-rw-r--r--examples/next/styles/globals.css (renamed from examples/hello-next/styles/globals.css)5
-rw-r--r--examples/next/tsconfig.json (renamed from examples/hello-next/tsconfig.json)0
-rw-r--r--examples/react/.gitignore32
-rw-r--r--examples/react/.npmignore (renamed from examples/hello-create-react-app/.gitignore)8
-rw-r--r--examples/react/README.md (renamed from examples/hello-create-react-app/README.md)0
-rw-r--r--examples/react/gitignore32
-rw-r--r--examples/react/package.json (renamed from examples/hello-create-react-app/package.json)14
-rw-r--r--examples/react/public/favicon.ico (renamed from examples/hello-create-react-app/public/favicon.ico)bin3870 -> 3870 bytes
-rw-r--r--examples/react/public/index.html (renamed from examples/hello-create-react-app/public/index.html)0
-rw-r--r--examples/react/public/logo192.png (renamed from examples/hello-create-react-app/public/logo192.png)bin5347 -> 5347 bytes
-rw-r--r--examples/react/public/logo512.png (renamed from examples/hello-create-react-app/public/logo512.png)bin9664 -> 9664 bytes
-rw-r--r--examples/react/public/manifest.json (renamed from examples/hello-create-react-app/public/manifest.json)0
-rw-r--r--examples/react/public/robots.txt (renamed from examples/hello-create-react-app/public/robots.txt)0
-rw-r--r--examples/react/src/App.css (renamed from examples/hello-create-react-app/src/App.css)0
-rw-r--r--examples/react/src/App.jsx (renamed from examples/hello-create-react-app/src/App.jsx)0
-rw-r--r--examples/react/src/App.test.js (renamed from examples/hello-create-react-app/src/App.test.js)0
-rw-r--r--examples/react/src/index.css (renamed from examples/hello-create-react-app/src/index.css)0
-rw-r--r--examples/react/src/index.jsx (renamed from examples/hello-create-react-app/src/index.jsx)0
-rw-r--r--examples/react/src/logo.svg (renamed from examples/hello-create-react-app/src/logo.svg)0
-rw-r--r--examples/react/src/reportWebVitals.js (renamed from examples/hello-create-react-app/src/reportWebVitals.js)0
-rw-r--r--examples/react/src/setupTests.js (renamed from examples/hello-create-react-app/src/setupTests.js)0
-rw-r--r--fixtures_example.com.html.gzbin648 -> 0 bytes
-rw-r--r--misctools/.gitignore3
-rw-r--r--misctools/fetch.zig185
-rw-r--r--misctools/publish-examples.js150
-rw-r--r--misctools/tgz.zig82
-rw-r--r--package.json3
-rw-r--r--src/allocators.zig11
-rw-r--r--src/c.zig12
-rw-r--r--src/cache.zig81
-rw-r--r--src/cli.zig90
-rw-r--r--src/cli/colon_list_type.zig36
-rw-r--r--src/cli/create.sh1
-rw-r--r--src/cli/create_command.zig1600
-rw-r--r--src/copy_file.zig50
m---------src/deps/libarchive0
-rw-r--r--src/deps/libgit2.zig2209
-rw-r--r--src/deps/picohttp.zig23
-rw-r--r--src/deps/picohttpparser.zig21
m---------src/deps/s2n-tls0
-rw-r--r--src/deps/zig-clap/clap.zig2
-rw-r--r--src/feature_flags.zig19
-rw-r--r--src/global.zig9
-rw-r--r--src/http.zig49
-rw-r--r--src/http/method.zig49
-rw-r--r--src/http_client.zig431
-rw-r--r--src/javascript/jsc/webcore/response.zig4
-rw-r--r--src/js_printer.zig61
-rw-r--r--src/libarchive/libarchive-bindings.zig628
-rw-r--r--src/libarchive/libarchive.zig634
-rw-r--r--src/main.zig14
-rw-r--r--src/router.zig212
-rw-r--r--src/runtime.version2
-rw-r--r--src/runtime/hmr.ts8
-rw-r--r--src/s2n.zig792
-rw-r--r--src/string_immutable.zig8
-rw-r--r--src/walker_skippable.zig151
-rw-r--r--src/which.zig40
-rw-r--r--src/which_npm_client.zig102
90 files changed, 8080 insertions, 18545 deletions
diff --git a/.gitignore b/.gitignore
index d4eca5e8c..bc2458e82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,4 +67,5 @@ packages/bun-cli/postinstall.js
packages/bun-*/bin/*
packages/bun-cli/bin/*
-bun-test-scratch \ No newline at end of file
+bun-test-scratch
+misctools/fetch \ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index 20b3953f7..935351eb2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -17,3 +17,11 @@
path = src/deps/zlib
url = https://github.com/cloudflare/zlib.git
ignore = dirty
+[submodule "src/deps/libarchive"]
+ path = src/deps/libarchive
+ url = https://github.com/libarchive/libarchive.git
+ ignore = dirty
+[submodule "src/deps/s2n-tls"]
+ path = src/deps/s2n-tls
+ url = https://github.com/Jarred-Sumner/s2n-tls
+ ignore = dirty \ No newline at end of file
diff --git a/Makefile b/Makefile
index 8f45e0085..16713bddb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,27 +1,40 @@
OS_NAME := $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH_NAME_RAW := $(shell uname -m)
+make-lazy = $(eval $1 = $​$(eval $1 := $(value $(1)))$​$($1))
+
ARCH_NAME :=
ifeq ($(ARCH_NAME_RAW),arm64)
ARCH_NAME = aarch64
+ BREW_PREFIX_PATH = /opt/homebrew
else
ARCH_NAME = x64
+ BREW_PREFIX_PATH = /usr/local
endif
-TRIPLET := $(OS_NAME)-$(ARCH_NAME)
-PACKAGE_NAME := bun-cli-$(TRIPLET)
-PACKAGES_REALPATH := $(shell realpath packages)
-PACKAGE_DIR := $(PACKAGES_REALPATH)/$(PACKAGE_NAME)
-DEBUG_PACKAGE_DIR := $(PACKAGES_REALPATH)/debug-$(PACKAGE_NAME)
-BIN_DIR := $(PACKAGE_DIR)/bin
-RELEASE_BUN := $(PACKAGE_DIR)/bin/bun
-DEBUG_BIN := $(DEBUG_PACKAGE_DIR)/bin
-DEBUG_BUN := $(DEBUG_BIN)/bun-debug
-BUILD_ID := $(shell cat ./build-id)
-PACKAGE_JSON_VERSION := 0.0.$(BUILD_ID)
-BUN_BUILD_TAG := bun-v$(PACKAGE_JSON_VERSION)
-CC := clang
-CXX := clang++
+TRIPLET = $(OS_NAME)-$(ARCH_NAME)
+PACKAGE_NAME = bun-cli-$(TRIPLET)
+PACKAGES_REALPATH = $(shell realpath packages)
+PACKAGE_DIR = $(PACKAGES_REALPATH)/$(PACKAGE_NAME)
+DEBUG_PACKAGE_DIR = $(PACKAGES_REALPATH)/debug-$(PACKAGE_NAME)
+BIN_DIR = $(PACKAGE_DIR)/bin
+RELEASE_BUN = $(PACKAGE_DIR)/bin/bun
+DEBUG_BIN = $(DEBUG_PACKAGE_DIR)/bin
+DEBUG_BUN = $(DEBUG_BIN)/bun-debug
+BUILD_ID = $(shell cat ./build-id)
+PACKAGE_JSON_VERSION = 0.0.$(BUILD_ID)
+BUN_BUILD_TAG = bun-v$(PACKAGE_JSON_VERSION)
+CC ?= $(shell realpath clang)
+CXX ?= $(shell realpath clang++)
+DEPS_DIR = $(shell pwd)/src/deps
+CPUS ?= $(shell nproc)
+USER ?= $(echo $USER)
+
+LIBICONV_PATH ?= $(BREW_PREFIX_PATH)/opt/libiconv/lib/libiconv.a
+
+LIBCRYPTO_PREFIX_DIR = $(BREW_PREFIX_PATH)/opt/openssl@1.1
+LIBCRYPTO_STATIC_LIB ?= $(LIBCRYPTO_PREFIX_DIR)/lib/libcrypto.a
+LIBCRYPTO_INCLUDE_DIR = $(LIBCRYPTO_PREFIX_DIR)/include
BUN_TMP_DIR := /tmp/make-bun
@@ -47,6 +60,8 @@ endif
JSC_LIB ?= $(DEFAULT_JSC_LIB)
JSC_INCLUDE_DIR ?= $(JSC_BASE_DIR)/include
+ZLIB_INCLUDE_DIR ?= $(DEPS_DIR)/zlib
+ZLIB_LIB_DIR ?= $(DEPS_DIR)/zlib
JSC_FILES := $(JSC_LIB)/libJavaScriptCore.a $(JSC_LIB)/libWTF.a $(JSC_LIB)/libbmalloc.a
@@ -61,14 +76,118 @@ endif
STRIP ?= $(shell which llvm-strip || which llvm-strip-12 || echo "Missing llvm-strip. Please pass it in the STRIP environment var"; exit 1;)
+HOMEBREW_PREFIX ?= BREW_PREFIX_PATH
+
+
+SRC_DIR := src/javascript/jsc/bindings
+OBJ_DIR := src/javascript/jsc/bindings-obj
+SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp)
+OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))
+MAC_INCLUDE_DIRS := -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders \
+ -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/WTF/Headers \
+ -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/ICU/Headers \
+ -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/ \
+ -Isrc/javascript/jsc/bindings/ \
+ -Isrc/javascript/jsc/WebKit/Source/bmalloc
+
+LINUX_INCLUDE_DIRS := -I$(JSC_INCLUDE_DIR) \
+ -Isrc/javascript/jsc/bindings/
+
+INCLUDE_DIRS :=
+
+ifeq ($(OS_NAME),linux)
+ INCLUDE_DIRS += $(LINUX_INCLUDE_DIRS)
+endif
+
ifeq ($(OS_NAME),darwin)
- HOMEBREW_PREFIX := $(shell brew --prefix)/
+ INCLUDE_DIRS += $(MAC_INCLUDE_DIRS)
+endif
+
+
+
+MACOS_ICU_FILES = $(HOMEBREW_PREFIX)opt/icu4c/lib/libicudata.a \
+ $(HOMEBREW_PREFIX)opt/icu4c/lib/libicui18n.a \
+ $(HOMEBREW_PREFIX)opt/icu4c/lib/libicuuc.a
+
+MACOS_ICU_INCLUDE = $(HOMEBREW_PREFIX)opt/icu4c/include
+
+ICU_FLAGS :=
+
+# TODO: find a way to make this more resilient
+# Ideally, we could just look up the linker search paths
+LIB_ICU_PATH ?= /usr/lib/x86_64-linux-gnu
+
+ifeq ($(OS_NAME),linux)
+ ICU_FLAGS += $(LIB_ICU_PATH)/libicuuc.a $(LIB_ICU_PATH)/libicudata.a $(LIB_ICU_PATH)/libicui18n.a
+endif
+
+ifeq ($(OS_NAME),darwin)
+ICU_FLAGS += -l icucore \
+ $(MACOS_ICU_FILES) \
+ -I$(MACOS_ICU_INCLUDE)
+endif
+
+
+
+CLANG_FLAGS = $(INCLUDE_DIRS) \
+ -std=gnu++17 \
+ -DSTATICALLY_LINKED_WITH_JavaScriptCore=1 \
+ -DSTATICALLY_LINKED_WITH_WTF=1 \
+ -DSTATICALLY_LINKED_WITH_BMALLOC=1 \
+ -DBUILDING_WITH_CMAKE=1 \
+ -DNDEBUG=1 \
+ -DNOMINMAX \
+ -DIS_BUILD \
+ -g \
+ -DENABLE_INSPECTOR_ALTERNATE_DISPATCHERS=0 \
+ -DBUILDING_JSCONLY__ \
+ -DASSERT_ENABLED=0 \
+ -fPIE
+
+# This flag is only added to webkit builds on Apple platforms
+# It has something to do with ICU
+ifeq ($(OS_NAME), darwin)
+CLANG_FLAGS += -DDU_DISABLE_RENAMING=1
+endif
+
+BUN_LLD_FLAGS = $(OBJ_FILES) \
+ ${ICU_FLAGS} \
+ ${JSC_FILES} \
+ src/deps/mimalloc/libmimalloc.a \
+ src/deps/zlib/libz.a \
+ src/deps/libarchive.a \
+ src/deps/libs2n.a \
+ src/deps/libcrypto.a \
+ src/deps/picohttpparser.o \
+ $(LIBICONV_PATH) \
+ $(CLANG_FLAGS) \
+ -liconv \
+
+ifeq ($(OS_NAME), linux)
+BUN_LLD_FLAGS += -lstdc++fs \
+ -pthread \
+ -ldl \
+ -lc \
+ -Wl,-z,now \
+ -Wl,--as-needed \
+ -Wl,-z,stack-size=12800000 \
+ -Wl,-z,notext \
+ -ffunction-sections \
+ -fdata-sections \
+ -Wl,--gc-sections \
+ -fuse-ld=lld
endif
bun: vendor build-obj bun-link-lld-release
-vendor-without-check: api analytics node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib
+vendor-without-check: api analytics node-fallbacks runtime_js fallback_decoder bun_error mimalloc picohttp zlib openssl s2n libarchive
+
+libarchive:
+ cd src/deps/libarchive; \
+ cmake . -DENABLE_ZLIB=OFF -DENABLE_OPENSSL=OFF; \
+ make -j${CPUS}; \
+ cp libarchive/libarchive.a $(DEPS_DIR)/libarchive.a;
vendor: require init-submodules vendor-without-check
@@ -81,6 +200,8 @@ require:
@cmake --version >/dev/null 2>&1 || (echo "ERROR: cmake is required."; exit 1)
@esbuild --version >/dev/null 2>&1 || (echo "ERROR: esbuild is required."; exit 1)
@npm --version >/dev/null 2>&1 || (echo "ERROR: npm is required."; exit 1)
+ @stat $(LIBICONV_PATH) >/dev/null 2>&1 || (echo "ERROR: libiconv is required. Please:\nbrew install libiconv"; exit 1)
+ @stat $(LIBCRYPTO_STATIC_LIB) >/dev/null 2>&1 || (echo "ERROR: OpenSSL 1.1 is required. Please:\nbrew install openssl@1.1"; exit 1)
init-submodules:
git submodule update --init --recursive --progress --depth=1
@@ -121,8 +242,64 @@ runtime_js:
bun_error:
@cd packages/bun-error; npm install; npm run --silent build
+fetch:
+ cd misctools; zig build-obj -Drelease-fast ./fetch.zig -fcompiler-rt --main-pkg-path ../
+ $(CXX) ./misctools/fetch.o -g -O3 -o ./misctools/fetch \
+ src/deps/mimalloc/libmimalloc.a \
+ src/deps/zlib/libz.a \
+ src/deps/libarchive.a \
+ src/deps/libs2n.a \
+ src/deps/picohttpparser.o \
+ src/deps/libcrypto.a
+fetch-debug:
+ cd misctools; zig build-obj ./fetch.zig -fcompiler-rt --main-pkg-path ../
+ $(CXX) ./misctools/fetch.o -g -o ./misctools/fetch \
+ src/deps/mimalloc/libmimalloc.a \
+ src/deps/zlib/libz.a \
+ src/deps/libarchive.a \
+ src/deps/libs2n.a \
+ src/deps/picohttpparser.o \
+ src/deps/libcrypto.a
+
+s2n-mac:
+ cd $(DEPS_DIR)/s2n-tls; \
+ make clean; \
+ CC=$(CC) CXX=$(CXX) cmake . -Bbuild -GNinja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DLibCrypto_INCLUDE_DIR=$(LIBCRYPTO_INCLUDE_DIR) \
+ -DLibCrypto_STATIC_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
+ -DLibCrypto_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
+ -DCMAKE_PREFIX_PATH=$(LIBCRYPTO_PREFIX_DIR); \
+ CC=$(CC) CXX=$(CXX) cmake --build ./build -j$(CPUS); \
+ CC=$(CC) CXX=$(CXX) CTEST_PARALLEL_LEVEL=$(CPUS) ninja -C build
+ cp $(DEPS_DIR)/s2n-tls/build/lib/libs2n.a $(DEPS_DIR)/libs2n.a
+ unlink $(DEPS_DIR)/libcrypto.a || echo "";
+ ln $(LIBCRYPTO_STATIC_LIB) $(DEPS_DIR)/libcrypto.a || echo "";
+
+s2n-mac-debug:
+ cd $(DEPS_DIR)/s2n-tls; \
+ make clean; \
+ CC=$(CC) CXX=$(CXX) cmake . -Bbuild -GNinja \
+ -DCMAKE_BUILD_TYPE=Debug \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DLibCrypto_INCLUDE_DIR=$(LIBCRYPTO_INCLUDE_DIR) \
+ -DLibCrypto_STATIC_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
+ -DLibCrypto_LIBRARY=$(LIBCRYPTO_STATIC_LIB) \
+ -DCMAKE_PREFIX_PATH=$(LIBCRYPTO_PREFIX_DIR); \
+ CC=$(CC) CXX=$(CXX) cmake --build ./build -j$(CPUS); \
+ CC=$(CC) CXX=$(CXX) CTEST_PARALLEL_LEVEL=$(CPUS) ninja -C build test
+ cp $(DEPS_DIR)/s2n-tls/build/lib/libs2n.a $(DEPS_DIR)/libs2n.a
+ unlink $(DEPS_DIR)/libcrypto.a || echo "";
+ ln $(LIBCRYPTO_STATIC_LIB) $(DEPS_DIR)/libcrypto.a || echo "";
+
+libcrypto_path:
+ @echo ${LIBCRYPTO_STATIC_LIB}
+ifeq ($(OS_NAME),darwin)
+s2n: s2n-mac
+endif
jsc: jsc-build jsc-bindings
jsc-build: $(JSC_BUILD_STEPS)
@@ -240,106 +417,17 @@ clean-bindings:
clean: clean-bindings
rm src/deps/*.a src/deps/*.o
- cd src/deps/mimalloc && make clean;
-
-
-
-SRC_DIR := src/javascript/jsc/bindings
-OBJ_DIR := src/javascript/jsc/bindings-obj
-SRC_FILES := $(wildcard $(SRC_DIR)/*.cpp)
-OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))
-MAC_INCLUDE_DIRS := -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/JavaScriptCore/PrivateHeaders \
- -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/WTF/Headers \
- -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/ICU/Headers \
- -Isrc/javascript/jsc/WebKit/WebKitBuild/Release/ \
- -Isrc/javascript/jsc/bindings/ \
- -Isrc/javascript/jsc/WebKit/Source/bmalloc
+ (cd src/deps/mimalloc && make clean) || echo "";
+ (cd src/deps/libarchive && make clean) || echo "";
+ (cd src/deps/s2n-tls && make clean) || echo "";
+ (cd src/deps/picohttp && make clean) || echo "";
+ (cd src/deps/zlib && make clean) || echo "";
-LINUX_INCLUDE_DIRS := -I$(JSC_INCLUDE_DIR) \
- -Isrc/javascript/jsc/bindings/
-
-INCLUDE_DIRS :=
-
-ifeq ($(OS_NAME),linux)
- INCLUDE_DIRS += $(LINUX_INCLUDE_DIRS)
-endif
-
-ifeq ($(OS_NAME),darwin)
- INCLUDE_DIRS += $(MAC_INCLUDE_DIRS)
-endif
-
-CLANG_FLAGS := $(INCLUDE_DIRS) \
- -std=gnu++17 \
- -DSTATICALLY_LINKED_WITH_JavaScriptCore=1 \
- -DSTATICALLY_LINKED_WITH_WTF=1 \
- -DSTATICALLY_LINKED_WITH_BMALLOC=1 \
- -DBUILDING_WITH_CMAKE=1 \
- -DNDEBUG=1 \
- -DNOMINMAX \
- -DIS_BUILD \
- -g \
- -DENABLE_INSPECTOR_ALTERNATE_DISPATCHERS=0 \
- -DBUILDING_JSCONLY__ \
- -DASSERT_ENABLED=0 \
- -fPIE
-
-# This flag is only added to webkit builds on Apple platforms
-# It has something to do with ICU
-ifeq ($(OS_NAME), darwin)
-CLANG_FLAGS += -DDU_DISABLE_RENAMING=1
-endif
jsc-bindings-mac: $(OBJ_FILES)
-MACOS_ICU_FILES := $(HOMEBREW_PREFIX)opt/icu4c/lib/libicudata.a \
- $(HOMEBREW_PREFIX)opt/icu4c/lib/libicui18n.a \
- $(HOMEBREW_PREFIX)opt/icu4c/lib/libicuuc.a
-
-MACOS_ICU_INCLUDE := $(HOMEBREW_PREFIX)opt/icu4c/include
-
-ICU_FLAGS :=
-
-# TODO: find a way to make this more resilient
-# Ideally, we could just look up the linker search paths
-LIB_ICU_PATH ?= /usr/lib/x86_64-linux-gnu
-
-ifeq ($(OS_NAME),linux)
- ICU_FLAGS += $(LIB_ICU_PATH)/libicuuc.a $(LIB_ICU_PATH)/libicudata.a $(LIB_ICU_PATH)/libicui18n.a
-endif
-
-ifeq ($(OS_NAME),darwin)
-ICU_FLAGS += -l icucore \
- $(MACOS_ICU_FILES) \
- -I$(MACOS_ICU_INCLUDE)
-endif
-
-BUN_LLD_FLAGS := $(OBJ_FILES) \
- ${ICU_FLAGS} \
- ${JSC_FILES} \
- src/deps/picohttpparser.o \
- src/deps/mimalloc/libmimalloc.a \
- src/deps/zlib/libz.a \
- $(CLANG_FLAGS) \
-
-
-ifeq ($(OS_NAME), linux)
-BUN_LLD_FLAGS += -lstdc++fs \
- -pthread \
- -ldl \
- -lc \
- -Wl,-z,now \
- -Wl,--as-needed \
- -Wl,-z,stack-size=12800000 \
- -Wl,-z,notext \
- -ffunction-sections \
- -fdata-sections \
- -Wl,--gc-sections \
- -fuse-ld=lld
-endif
-
-
mimalloc:
cd src/deps/mimalloc; cmake .; make;
@@ -383,7 +471,7 @@ sizegen:
$(BUN_TMP_DIR)/sizegen > src/javascript/jsc/bindings/sizes.zig
picohttp:
- $(CC) -O3 -g -fPIE -c src/deps/picohttpparser.c -Isrc/deps -o src/deps/picohttpparser.o; cd ../../
+ $(CC) -march=native -O3 -g -fPIE -c src/deps/picohttpparser/picohttpparser.c -Isrc/deps -o src/deps/picohttpparser.o; cd ../../
analytics:
./node_modules/.bin/peechy --schema src/analytics/schema.peechy --zig src/analytics/analytics_schema.zig
diff --git a/README.md b/README.md
index 95bcb9100..95885d52f 100644
--- a/README.md
+++ b/README.md
@@ -31,8 +31,8 @@ npm install -g bun-cli
In your project folder root (where `package.json` is):
```bash
-npm install -D bun-framework-next
-bun bun --use next
+bun create next ./app
+cd app
bun
```
@@ -77,17 +77,11 @@ If `public/index.html` exists, it becomes the default page instead of a 404 page
#### Using Bun with Create React App
-To use Bun with `create-react-app`, there are two changes you will need to make in `public/index.html`:
-
-1. Replace `%PUBLIC_URL%` with `/`
-2. Insert `<script type="module" async src="/src/index.js">` just before `</body>`
-
-These changes are (sadly) necessary until Bun supports parsing &amp; transpiling HTML.
-
-In your project folder root (where `package.json` is):
+Run this:
```bash
-bun bun ./src/index.js
+bun create react ./app
+cd app
bun
```
@@ -411,7 +405,7 @@ type Router = {
To use a framework, you pass `bun bun --use package-name`.
-Your framework's package.json `name` should start with `bun-framework-`. This is so that people can type something like `bun bun --use next` and it will check `bun-framework-next` first. This is similar to how Babel plugins tend to start with `babel-plugin-`.
+Your framework's `package.json` `name` should start with `bun-framework-`. This is so that people can type something like `bun bun --use next` and it will check `bun-framework-next` first. This is similar to how Babel plugins tend to start with `babel-plugin-`.
For developing frameworks, you can also do `bun bun --use ./relative-path-to-framework`.
@@ -419,6 +413,170 @@ If you're interested in adding a framework integration, please reach out. There'
# Reference
+### `bun create`
+
+`bun create` is a fast way to create a new project from a template.
+
+At the time of writing, `bun create react app` runs ~14x faster on my local computer than `yarn create react-app app`. `bun create` currently does no caching (though your npm client does)
+
+#### Usage
+
+By default, templates are downloaded from folders inside `examples/` in Bun's GitHub repo. Running `bun create react ./local-path` downloads the `react` folder from `examples/react`.
+
+Create a new Next.js project:
+
+```bash
+bun create next ./app
+```
+
+Create a new React project:
+
+```bash
+bun create react ./app
+```
+
+To see a list of available templates, run
+
+```bash
+bun create
+```
+
+Note: you don't need `bun create` to use Bun. You don't need any configuration at all. This command exists to make it a little easier.
+
+##### Local templates
+
+If you have your own boilerplate you prefer using, copy it into `$HOME/.bun-create/my-boilerplate-name`.
+
+Before checking Bun's examples folder, `bun create` checks for a local folder matching the input in:
+
+- `$BUN_CREATE_DIR/`
+- `$HOME/.bun-create/`
+- `$(pwd)/.bun-create/`
+
+If a folder exists in any of those folders with the input, bun will use that instead of a remote template.
+
+To create a local template, run:
+
+```bash
+mkdir -p $HOME/.bun-create/new-template-name
+echo '{"name":"new-template-name"}' > $HOME/.bun-create/new-template-name/package.json
+```
+
+This lets you run:
+
+```bash
+bun create new-template-name ./app
+```
+
+Now your new template should appear when you run:
+
+```bash
+bun create
+```
+
+Warning: unlike with remote templates, **bun will delete the entire destination folder if it already exists.**
+
+##### Flags
+
+| Flag | Description |
+| ------------ | -------------------------------------- |
+| --npm | Use `npm` for tasks & install |
+| --yarn | Use `yarn` for tasks & install |
+| --pnpm | Use `pnpm` for tasks & install |
+| --force | Overwrite existing files |
+| --no-install | Skip installing `node_modules` & tasks |
+| --no-git | Don't initialize a git repository |
+
+By default, `bun create` will cancel if there are existing files it would overwrite and its a remote template. You can pass `--force` to disable this behavior.
+
+##### Publishing a new template
+
+Clone this repository and a new folder in `examples/` with your new template. The `package.json` must have a `name` that starts with `@bun-examples/`. Do not worry about publishing it, that will happen automaticallly after the PR is merged.
+
+Make sure to include a `.gitignore` that includes `node_modules` so that `node_modules` aren't checked in to git when people download the template.
+
+##### Testing your new template
+
+To test your new template, add it as a local template or pass the absolute path.
+
+```bash
+bun create /path/to/my/new/template destination-dir
+```
+
+Warning: **This will always delete everything in destination-dir**.
+
+##### Config
+
+The `bun-create` section of `package.json` is automatically removed from the `package.json` on disk. This lets you add create-only steps without waiting for an extra package to install.
+
+There are currently two options:
+
+- `postinstall`
+- `preinstall`
+
+They can be an array of strings or one string. An array of steps will be executed in order.
+
+Here is an example:
+
+```json
+{
+ "name": "@bun-examples/next",
+ "version": "0.0.31",
+ "main": "index.js",
+ "dependencies": {
+ "next": "11.1.2",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2",
+ "react-is": "^17.0.2"
+ },
+ "devDependencies": {
+ "@types/react": "^17.0.19",
+ "bun-framework-next": "^0.0.0-21",
+ "typescript": "^4.3.5"
+ },
+ "bun-create": {
+ "postinstall": ["bun bun --use next"]
+ }
+}
+```
+
+By default, all commands run inside the environment exposed by the auto-detected npm client. This incurs a significant performance penalty, something like 150ms spent waiting for the npm client to start on each invocation.
+
+Any command that starts with `"bun "` will be run without npm, relying on the first `bun` binary in `$PATH`.
+
+##### How `bun create` works
+
+When you run `bun create ${template} ${destination}`, here's what happens:
+
+IF remote template
+
+1. GET `registry.npmjs.org/@bun-examples/${template}/latest` and parse it
+2. GET `registry.npmjs.org/@bun-examples/${template}/-/${template}-${latestVersion}.tgz`
+3. Decompress & extract `${template}-${latestVersion}.tgz` into `${destination}`
+
+ - If there are files that would overwrite, warn and exit unless `--force` is passed
+
+ELSE IF local template
+
+1. Open local template folder
+2. Delete destination directory recursively
+3. Copy files recursively using the fastest system calls available (on macOS `fcopyfile` and Linux, `copy_file_range`). Do not copy or traverse into `node_modules` folder if exists (this alone makes it faster than `cp`)
+
+4. Parse the `package.json` (again!), update `name` to be `${basename(destination)}`, remove the `bun-create` section from the `package.json` and save the updated `package.json` to disk.
+5. Auto-detect the npm client, preferring `pnpm`, `yarn` (v1), and lastly `npm`
+6. Run any tasks defined in `"bun-create": { "preinstall" }` with the npm client
+7. Run `${npmClient} install` unless `--no-install` is passed OR no dependencies are in package.json
+8. Run any tasks defined in `"bun-create": { "preinstall" }` with the npm client
+9. Run `git init; git add -A .; git commit -am "Initial Commit";`
+
+ - Rename `gitignore` to `.gitignore`. NPM automatically removes `.gitignore` files from appearing in packages.
+ - If there are dependencies, this runs in a separate thread concurrently while node_modules are being installed
+ - Using libgit2 if available was tested and performed roughly 3x slower in microbenchmarks
+
+10. Done
+
+`misctools/publish-examples.js` publishes all examples to npm.
+
### `bun bun`
Run `bun bun ./path-to.js` to generate a `node_modules.bun` file containing all imported dependencies (recursively).
@@ -558,6 +716,9 @@ Bun also statically links these libraries:
- [`picohttp`](https://github.com/h2o/picohttpparser), which is dual-licensed under the Perl License or the MIT License
- [`mimalloc`](https://github.com/microsoft/mimalloc), which is MIT licensed
- [`zlib-cloudflare`](https://github.com/cloudflare/zlib), which is zlib licensed
+- [`s2n-tls`](https://github.com/aws/s2n-tls), which is MIT licensed
+- [`libarchive`](https://github.com/libarchive/libarchive), which has [several licenses](https://github.com/libarchive/libarchive/blob/master/COPYING)
+- [`libiconv`](https://www.gnu.org/software/libiconv/), which is LGPL2. It's a dependency of libarchive.
For compatibiltiy reasons, these NPM packages are embedded into Bun's binary and injected if imported.
diff --git a/build.zig b/build.zig
index 04c9f9231..664490906 100644
--- a/build.zig
+++ b/build.zig
@@ -133,16 +133,6 @@ pub fn build(b: *std.build.Builder) !void {
exe.setOutputDir(output_dir);
var cwd_dir = std.fs.cwd();
- if (std.builtin.is_test) {
- var walker = cwd_dir.walk(std.heap.c_allocator) catch unreachable;
-
- while (walker.next() catch unreachable) |entry| {
- if (std.mem.endsWith(u8, entry.basename, "_test.zig")) {
- std.debug.print("[test] Added {s}", .{entry.basename});
- _ = b.addTest(entry.path);
- }
- }
- }
const runtime_hash = std.hash.Wyhash.hash(0, @embedFile("./src/runtime.out.js"));
const runtime_version_file = std.fs.cwd().openFile("src/runtime.version", .{ .write = true }) catch unreachable;
@@ -237,13 +227,14 @@ pub fn build(b: *std.build.Builder) !void {
true,
);
-
step.addObjectFile("src/deps/libJavaScriptCore.a");
step.addObjectFile("src/deps/libWTF.a");
+ step.addObjectFile("src/deps/libcrypto.a");
+ step.addObjectFile("src/deps/libbmalloc.a");
+ step.addObjectFile("src/deps/libarchive.a");
+ step.addObjectFile("src/deps/libs2n.a");
- if (target.getOs().tag != .linux) {
- step.addObjectFile("src/deps/libbmalloc.a");
- }
+ step.addObjectFile("src/deps/zlib/libz.a");
step.addObjectFile("src/deps/mimalloc/libmimalloc.a");
step.addLibPath("src/deps/mimalloc");
@@ -261,6 +252,7 @@ pub fn build(b: *std.build.Builder) !void {
step.addObjectFile(homebrew_prefix ++ "opt/icu4c/lib/libicudata.a");
step.addObjectFile(homebrew_prefix ++ "opt/icu4c/lib/libicui18n.a");
step.addObjectFile(homebrew_prefix ++ "opt/icu4c/lib/libicuuc.a");
+ step.addObjectFile(homebrew_prefix ++ "opt/libiconv/lib/libiconv.a");
// icucore is a weird macOS only library
step.linkSystemLibrary("icucore");
step.addLibPath(homebrew_prefix ++ "opt/icu4c/lib");
@@ -269,6 +261,7 @@ pub fn build(b: *std.build.Builder) !void {
step.linkSystemLibrary("icuuc");
step.linkSystemLibrary("icudata");
step.linkSystemLibrary("icui18n");
+ step.linkSystemLibrary("iconv");
}
for (bindings_files.items) |binding| {
@@ -295,13 +288,11 @@ pub fn build(b: *std.build.Builder) !void {
obj.bundle_compiler_rt = true;
- if (target.getOsTag() == .linux) {
- // obj.want_lto = tar;
- obj.link_emit_relocs = true;
- obj.link_function_sections = true;
- }
-
-
+ if (target.getOsTag() == .linux) {
+ // obj.want_lto = tar;
+ obj.link_emit_relocs = true;
+ obj.link_function_sections = true;
+ }
} else {
b.default_step.dependOn(&exe.step);
}
diff --git a/examples/.gitignore b/examples/.gitignore
new file mode 100644
index 000000000..38f8778e4
--- /dev/null
+++ b/examples/.gitignore
@@ -0,0 +1 @@
+bun-examples-all \ No newline at end of file
diff --git a/examples/hello-next/styles/2.css b/examples/.is-examples-folder
index e69de29bb..e69de29bb 100644
--- a/examples/hello-next/styles/2.css
+++ b/examples/.is-examples-folder
diff --git a/examples/hello-next/components/wow/such-path.ts b/examples/hello-next/components/wow/such-path.ts
deleted file mode 100644
index a21ac9ab1..000000000
--- a/examples/hello-next/components/wow/such-path.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const yep = true;
diff --git a/examples/hello-next/package-lock.json b/examples/hello-next/package-lock.json
deleted file mode 100644
index 5bbdc1b58..000000000
--- a/examples/hello-next/package-lock.json
+++ /dev/null
@@ -1,18014 +0,0 @@
-{
- "name": "hello-next",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "hello-next",
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "@jarred/react-static-tweets": "0.5.8",
- "@jarred/static-tweets": "^0.5.8",
- "date-fns": "^2.23.0",
- "isomorphic-fetch": "^3.0.0",
- "next": "^11.1.0",
- "parcel": "2.0.0-rc.0",
- "path-browserify": "^1.0.1",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
- "react-is": "^17.0.2",
- "whatwg-url": "^9.1.0"
- },
- "devDependencies": {
- "@babel/standalone": "^7.15.3",
- "@types/react": "^17.0.19",
- "bun-framework-next": "^0.0.0-18",
- "typescript": "^4.3.5"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.15.0",
- "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.15.5",
- "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==",
- "dependencies": {
- "@babel/code-frame": "^7.14.5",
- "@babel/generator": "^7.15.4",
- "@babel/helper-compilation-targets": "^7.15.4",
- "@babel/helper-module-transforms": "^7.15.4",
- "@babel/helpers": "^7.15.4",
- "@babel/parser": "^7.15.5",
- "@babel/template": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/@babel/code-frame": {
- "version": "7.14.5",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "dependencies": {
- "@babel/highlight": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core/node_modules/json5": {
- "version": "2.2.0",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@babel/core/node_modules/source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.15.4",
- "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
- "dependencies": {
- "@babel/types": "^7.15.4",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/generator/node_modules/source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.15.4",
- "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
- "dependencies": {
- "@babel/compat-data": "^7.15.0",
- "@babel/helper-validator-option": "^7.14.5",
- "browserslist": "^4.16.6",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.15.4",
- "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
- "dependencies": {
- "@babel/helper-get-function-arity": "^7.15.4",
- "@babel/template": "^7.15.4",
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.15.4",
- "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.15.4",
- "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.15.4",
- "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.15.4",
- "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.15.4",
- "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
- "dependencies": {
- "@babel/helper-module-imports": "^7.15.4",
- "@babel/helper-replace-supers": "^7.15.4",
- "@babel/helper-simple-access": "^7.15.4",
- "@babel/helper-split-export-declaration": "^7.15.4",
- "@babel/helper-validator-identifier": "^7.14.9",
- "@babel/template": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.15.4",
- "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.14.5",
- "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.15.4",
- "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
- "dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.15.4",
- "@babel/helper-optimise-call-expression": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.15.4",
- "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.15.4",
- "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
- "dependencies": {
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.14.9",
- "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.14.5",
- "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.15.4",
- "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
- "dependencies": {
- "@babel/template": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.14.5",
- "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.14.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.15.5",
- "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==",
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-flow": {
- "version": "7.14.5",
- "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.14.5",
- "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-flow-strip-types": {
- "version": "7.14.5",
- "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5",
- "@babel/plugin-syntax-flow": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.15.3",
- "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
- "dependencies": {
- "regenerator-runtime": "^0.13.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/standalone": {
- "version": "7.15.5",
- "integrity": "sha512-rho2fzDGLrdYVbl0S71I8z6AREWnVvADzv7Gb4TLKhqpE6cJAvno0ALMuF253+wqhN8futx4ELWQpBYMxi4jmA==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.15.4",
- "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
- "dependencies": {
- "@babel/code-frame": "^7.14.5",
- "@babel/parser": "^7.15.4",
- "@babel/types": "^7.15.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template/node_modules/@babel/code-frame": {
- "version": "7.14.5",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "dependencies": {
- "@babel/highlight": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.15.4",
- "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
- "dependencies": {
- "@babel/code-frame": "^7.14.5",
- "@babel/generator": "^7.15.4",
- "@babel/helper-function-name": "^7.15.4",
- "@babel/helper-hoist-variables": "^7.15.4",
- "@babel/helper-split-export-declaration": "^7.15.4",
- "@babel/parser": "^7.15.4",
- "@babel/types": "^7.15.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
- "version": "7.14.5",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "dependencies": {
- "@babel/highlight": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse/node_modules/globals": {
- "version": "11.12.0",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.15.4",
- "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.14.9",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@hapi/accept": {
- "version": "5.0.2",
- "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==",
- "dependencies": {
- "@hapi/boom": "9.x.x",
- "@hapi/hoek": "9.x.x"
- }
- },
- "node_modules/@hapi/boom": {
- "version": "9.1.4",
- "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==",
- "dependencies": {
- "@hapi/hoek": "9.x.x"
- }
- },
- "node_modules/@hapi/hoek": {
- "version": "9.2.0",
- "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug=="
- },
- "node_modules/@iarna/toml": {
- "version": "2.2.5",
- "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
- },
- "node_modules/@jarred/react-static-tweets": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/@jarred/react-static-tweets/-/react-static-tweets-0.5.8.tgz",
- "integrity": "sha512-YciJBKZSm/SHVUKcI8NO9Wytv9g2yo33YTCLhUx38DtNOedAK71J9cyaHRgVZrLiJRy+OXLC+EIGg28xWSg6SA==",
- "dependencies": {
- "classnames": "^2.2.6",
- "swr": "^1.0.0-beta.5"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "date-fns": ">=2",
- "next": "^10.0.6",
- "react": ">=16",
- "react-dom": ">=16"
- }
- },
- "node_modules/@jarred/static-tweets": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/@jarred/static-tweets/-/static-tweets-0.5.8.tgz",
- "integrity": "sha512-gFOJjqyQJjQH0Gqx2qA6S/RfaLSUHQAGJpR0gS1v7PiGUAzc5jcmob1eqzLIclxBtSftdog0Uaz0DkzcJMsAQQ==",
- "dependencies": {
- "@mapbox/rehype-prism": "^0.5.0",
- "@vercel/fetch": "^6.1.0",
- "cheerio": "^1.0.0-rc.5",
- "github-slugger": "^1.3.0",
- "hast-util-sanitize": "^4.0.0",
- "mdast-util-to-string": "^3.0.0",
- "rehype-parse": "^7.0.0",
- "rehype-raw": "^5.0.0",
- "rehype-sanitize": "^4.0.0",
- "remark-parse": "^9.0.0",
- "remark-rehype": "^8.0.0",
- "unified": "^9.0.0",
- "unist-util-visit": "^3.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@mapbox/rehype-prism": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@mapbox/rehype-prism/-/rehype-prism-0.5.0.tgz",
- "integrity": "sha512-sE5EetmSR6At7AU2s3N2rFUUqm8BpvxUcGcesgfTZgqF7bQoekqsKxLX8gunIDjZs34acZJ6fgPFHepEWnYKCQ==",
- "dependencies": {
- "hast-util-to-string": "^1.0.3",
- "refractor": "^3.0.0",
- "unist-util-visit": "^2.0.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/rehype-prism/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mapbox/rehype-prism/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@napi-rs/triples": {
- "version": "1.0.3",
- "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
- },
- "node_modules/@next/env": {
- "version": "11.1.2",
- "integrity": "sha512-+fteyVdQ7C/OoulfcF6vd1Yk0FEli4453gr8kSFbU8sKseNSizYq6df5MKz/AjwLptsxrUeIkgBdAzbziyJ3mA=="
- },
- "node_modules/@next/polyfill-module": {
- "version": "11.1.2",
- "integrity": "sha512-xZmixqADM3xxtqBV0TpAwSFzWJP0MOQzRfzItHXf1LdQHWb0yofHHC+7eOrPFic8+ZGz5y7BdPkkgR1S25OymA=="
- },
- "node_modules/@next/react-dev-overlay": {
- "version": "11.1.2",
- "integrity": "sha512-rDF/mGY2NC69mMg2vDqzVpCOlWqnwPUXB2zkARhvknUHyS6QJphPYv9ozoPJuoT/QBs49JJd9KWaAzVBvq920A==",
- "dependencies": {
- "@babel/code-frame": "7.12.11",
- "anser": "1.4.9",
- "chalk": "4.0.0",
- "classnames": "2.2.6",
- "css.escape": "1.5.1",
- "data-uri-to-buffer": "3.0.1",
- "platform": "1.3.6",
- "shell-quote": "1.7.2",
- "source-map": "0.8.0-beta.0",
- "stacktrace-parser": "0.1.10",
- "strip-ansi": "6.0.0"
- },
- "peerDependencies": {
- "react": "^17.0.2",
- "react-dom": "^17.0.2"
- }
- },
- "node_modules/@next/react-dev-overlay/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@next/react-dev-overlay/node_modules/chalk": {
- "version": "4.0.0",
- "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@next/react-dev-overlay/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@next/react-dev-overlay/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/@next/react-dev-overlay/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@next/react-dev-overlay/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@next/react-refresh-utils": {
- "version": "11.1.2",
- "integrity": "sha512-hsoJmPfhVqjZ8w4IFzoo8SyECVnN+8WMnImTbTKrRUHOVJcYMmKLL7xf7T0ft00tWwAl/3f3Q3poWIN2Ueql/Q==",
- "peerDependencies": {
- "react-refresh": "0.8.3",
- "webpack": "^4 || ^5"
- },
- "peerDependenciesMeta": {
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/@next/swc-darwin-arm64": {
- "version": "11.1.2",
- "integrity": "sha512-hZuwOlGOwBZADA8EyDYyjx3+4JGIGjSHDHWrmpI7g5rFmQNltjlbaefAbiU5Kk7j3BUSDwt30quJRFv3nyJQ0w==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@node-rs/helper": {
- "version": "1.2.1",
- "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
- "dependencies": {
- "@napi-rs/triples": "^1.0.3"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@parcel/babel-ast-utils": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-cEWoinV9RW4T4iaRGL1TeI9hexRD/xAMGUpjTSiswRP1SJXr4uftOw3V+ptRuny7+mvMXGoID+c8nXFE5kgEIw==",
- "dependencies": {
- "@babel/parser": "^7.0.0",
- "@parcel/babylon-walk": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "astring": "^1.6.2"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/babylon-walk": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-h/Gz+RQNbPUxHHd0TO1lm1QmLhKI+kgByXq8U9cIMhkoef8gN2BqwA8v1Dr3Cm2tbT1G9TUPPx1GUrN8uA44pQ==",
- "dependencies": {
- "@babel/types": "^7.12.13",
- "lodash.clone": "^4.5.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/bundler-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-DyCvrxpHyvj1JcdRZ4yqcxU4NRFuJOvmpyfPIx53BfAjZqtkEfcZ0TPnQzR9sXkv754qkISPfCKEJlhTWCDoDw==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/cache": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-XW3evoovrpr661Ts7Pgw6OTQ+TC63yCffd/+e4qvxD+/nmvHLRUnJR66gRX9GzbG7xaEfJvgcENbxx1CHNm3WA==",
- "dependencies": {
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "lmdb-store": "^1.5.5"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "peerDependencies": {
- "@parcel/core": "^2.0.0-alpha.3.1"
- }
- },
- "node_modules/@parcel/codeframe": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-wJR/5y1xAutpCPTpDSEpSO1d5Tm6GYQZ1kNS9jx+J7KVcwpwB/ypw9mon+4kFoyegkc98YaJpTm3jlL/bBJblg==",
- "dependencies": {
- "chalk": "^4.1.0",
- "emphasize": "^4.2.0",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/codeframe/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@parcel/codeframe/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@parcel/codeframe/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@parcel/codeframe/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/@parcel/codeframe/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/codeframe/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/config-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-BVSst1GXA9Y2/+7E9uiuiPYiAAM+9OJRaOyveClBDRj9t8zltP4f6dlk5hbNtLIF1SnFir2kY4I8Rrc1OOp/DQ==",
- "dependencies": {
- "@parcel/bundler-default": "2.0.0-rc.0",
- "@parcel/namer-default": "2.0.0-rc.0",
- "@parcel/optimizer-cssnano": "2.0.0-rc.0",
- "@parcel/optimizer-htmlnano": "2.0.0-rc.0",
- "@parcel/optimizer-svgo": "2.0.0-rc.0",
- "@parcel/optimizer-terser": "2.0.0-rc.0",
- "@parcel/packager-css": "2.0.0-rc.0",
- "@parcel/packager-html": "2.0.0-rc.0",
- "@parcel/packager-js": "2.0.0-rc.0",
- "@parcel/packager-raw": "2.0.0-rc.0",
- "@parcel/reporter-dev-server": "2.0.0-rc.0",
- "@parcel/resolver-default": "2.0.0-rc.0",
- "@parcel/runtime-browser-hmr": "2.0.0-rc.0",
- "@parcel/runtime-js": "2.0.0-rc.0",
- "@parcel/runtime-react-refresh": "2.0.0-rc.0",
- "@parcel/transformer-babel": "2.0.0-rc.0",
- "@parcel/transformer-css": "2.0.0-rc.0",
- "@parcel/transformer-html": "2.0.0-rc.0",
- "@parcel/transformer-js": "2.0.0-rc.0",
- "@parcel/transformer-json": "2.0.0-rc.0",
- "@parcel/transformer-postcss": "2.0.0-rc.0",
- "@parcel/transformer-posthtml": "2.0.0-rc.0",
- "@parcel/transformer-raw": "2.0.0-rc.0",
- "@parcel/transformer-react-refresh-wrap": "2.0.0-rc.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "peerDependencies": {
- "@parcel/core": "^2.0.0-alpha.3.1"
- }
- },
- "node_modules/@parcel/core": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-W4Qun0RTFJ258DrSwiQj66tIhqz/OXw7O+KlOLLWQ0gnB59t1NMd9S0jqk/dRQMVBohmg1VZf/haxLtgKkLlJQ==",
- "dependencies": {
- "@parcel/cache": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/events": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/package-manager": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "@parcel/workers": "2.0.0-rc.0",
- "abortcontroller-polyfill": "^1.1.9",
- "base-x": "^3.0.8",
- "browserslist": "^4.6.6",
- "clone": "^2.1.1",
- "dotenv": "^7.0.0",
- "dotenv-expand": "^5.1.0",
- "json-source-map": "^0.6.1",
- "json5": "^1.0.1",
- "micromatch": "^4.0.2",
- "nullthrows": "^1.1.1",
- "querystring": "^0.2.0",
- "semver": "^5.4.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/core/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/diagnostic": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-s8hzLkUcgFqwfuCxHHuqx0zyeDU+GYtz69StWlCECXumHJMS0iaomE4IaKW5fsIMsdgndg7g4/yZc2eMXiHR1Q==",
- "dependencies": {
- "json-source-map": "^0.6.1",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/events": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-k/fqhFXyQQYqo/2Y0pfxz97usoW14+g5hFO1Kfnto3t5l46M8sU65Di6qLHeTEVkO2cWh/alc7N8QxlcXmxO3Q==",
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/fs": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-vUXkiNiHa6cc9QrV4GGi40ID27aH5a/GNZ8G2EZxnPtC7FXjrI359CAt7qU8rGxOyPVECGNIwBr+e31p+Xg/Lg==",
- "dependencies": {
- "@parcel/fs-search": "2.0.0-rc.0",
- "@parcel/fs-write-stream-atomic": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "@parcel/watcher": "2.0.0-alpha.10",
- "@parcel/workers": "2.0.0-rc.0",
- "graceful-fs": "^4.2.4",
- "mkdirp": "^0.5.1",
- "ncp": "^2.0.0",
- "nullthrows": "^1.1.1",
- "rimraf": "^3.0.2",
- "utility-types": "^3.10.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "peerDependencies": {
- "@parcel/core": "^2.0.0-alpha.3.1"
- }
- },
- "node_modules/@parcel/fs-search": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-x/gdmnxWIhuP6kVUe3u8fiY5JBCmALHNJIPNDGdoVada1CEEHF+DJtQG7LT+LIcPFeAqXT6qx05HrgO94KLaUQ==",
- "dependencies": {
- "detect-libc": "^1.0.3"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/fs-write-stream-atomic": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-KQ9FbE+ee2nzEtZwdVcxup1uWGfyfKj0cDsbxfak+oMubDTb3ycQlyCAnVPKoybvxqpsTG+TKDXObDz8SBCF1A==",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "iferr": "^1.0.2",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/fs-write-stream-atomic/node_modules/readable-stream": {
- "version": "2.3.7",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/@parcel/fs-write-stream-atomic/node_modules/safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/@parcel/fs-write-stream-atomic/node_modules/string_decoder": {
- "version": "1.1.1",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/@parcel/hash": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-qbR1evXfjR4t0LhY3z32nrGnPh32vsuafS6rrS4JOJyD7mbOsHUKsT1Vkggh3R5Jv0sMtuRqlYngK59WO/Yzbg==",
- "dependencies": {
- "detect-libc": "^1.0.3",
- "xxhash-wasm": "^0.4.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/logger": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-gUbEN0iTM0E8Vb0qhLev/AcHyKc3McVWOSZQDC31CQ0DpPY8KPVmDR4tEL+hC0YEl6ekpG2c41F5XpH2mzTawg==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/events": "2.0.0-rc.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/markdown-ansi": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-ipR71hKCpqq9aXaPCordBPETYP/QyrN2t2Ra7tPPCvNful44i0JqWakPeSrDO1HJT1s1GI1lGpIk+ytc/5PCCg==",
- "dependencies": {
- "chalk": "^4.1.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/markdown-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@parcel/markdown-ansi/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@parcel/markdown-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@parcel/markdown-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/@parcel/markdown-ansi/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/markdown-ansi/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/namer-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-voQC1VQzkZqU2cJJ7hS8mN/TlpxLURYBSK1qERT0+zCVuQR1z+5HX+pwTXet7HdnI6+A5FSq2F5B7fj4KMRMqQ==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/node-libs-browser": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-QQVvT0qRdbu1Q8FDiqlrby+4EqjJW24mckKOGiLsDzT134/XGiG8psgYm1HOsrsqgN1psetTbZRs49yfIs4Zog==",
- "dependencies": {
- "assert": "^2.0.0",
- "browserify-zlib": "^0.2.0",
- "buffer": "^5.5.0",
- "console-browserify": "^1.2.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.12.0",
- "domain-browser": "^3.5.0",
- "events": "^3.1.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "^1.0.0",
- "process": "^0.11.10",
- "punycode": "^1.4.1",
- "querystring-es3": "^0.2.1",
- "readable-stream": "^3.6.0",
- "stream-http": "^3.1.0",
- "string_decoder": "^1.3.0",
- "timers-browserify": "^2.0.11",
- "tty-browserify": "^0.0.1",
- "url": "^0.11.0",
- "util": "^0.12.3",
- "vm-browserify": "^1.1.2"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/node-libs-browser/node_modules/domain-browser": {
- "version": "3.5.0",
- "integrity": "sha512-zrzUu6auyZWRexjCEPJnfWc30Hupxh2lJZOJAF3qa2bCuD4O/55t0FvQt3ZMhEw++gjNkwdkOVZh8yA32w/Vfw==",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/@parcel/node-resolver-core": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-Xl8XNT13SgzjTxPzthUcyodz5PIaXixaZQrkKUBIdVuoohQkBqzs9U8p38pRXuM65xesGVLpjGKZWICAwViM2Q==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/node-libs-browser": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "micromatch": "^3.0.4",
- "nullthrows": "^1.1.1",
- "querystring": "^0.2.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/braces": {
- "version": "2.3.2",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/fill-range": {
- "version": "4.0.0",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/is-number": {
- "version": "3.0.0",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/micromatch": {
- "version": "3.1.10",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/node-resolver-core/node_modules/to-regex-range": {
- "version": "2.1.1",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/optimizer-cssnano": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-Sr7aXsYJt05hfAsBv8JKYtbNVD/GbO7RoMVrZw+Gd3a2uwLyMRjnOIyDp9+L06U/LQIKAMBJt+bToDBoWYPl3A==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "cssnano": "^5.0.5",
- "postcss": "^8.3.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/optimizer-cssnano/node_modules/postcss": {
- "version": "8.3.6",
- "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
- "dependencies": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map-js": "^0.6.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/@parcel/optimizer-htmlnano": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-ItYNuT/CxEwSKo3hFHUZfWa8+LgqwfnmUdpFfyf5vrEXqM8o/LZUukR69m8nZGSaKspfR/c4H/UQxpYKmsJfIQ==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "htmlnano": "^1.0.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4",
- "svgo": "^2.3.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/optimizer-svgo": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-mokwpZt5Ki169t/wVXXfXcYsdn0oN4WFoo5lr0ihZujDwPcuYg2Ygpdktd+g6nAxznXrN7rhpXKpTSnpJjdTdA==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "svgo": "^2.3.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/optimizer-terser": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-Xnu/6NP5B8kOgeXFjq1DzAdaMj3mWCop75235ZFfM7EMLFVH1qn0OZnJPK1THO4CZ2vElOknO1BW25gqNCoE4A==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "terser": "^5.2.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/package-manager": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-QA1B7FViEMB0CpEeEV1oCqIDFHDReYWL38NnwWesLiewIAeIZHLCHqN35ClCK84F8NnCUp9uMymDv61rwJlq9A==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "@parcel/workers": "2.0.0-rc.0",
- "command-exists": "^1.2.6",
- "cross-spawn": "^6.0.4",
- "nullthrows": "^1.1.1",
- "semver": "^5.4.1",
- "split2": "^3.1.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "peerDependencies": {
- "@parcel/core": "^2.0.0-alpha.3.1"
- }
- },
- "node_modules/@parcel/package-manager/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/packager-css": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-X+H2QrnHtUdXY7pLCaU+FnYVHW/W2x7bMfIpxdEaqz9QNvmpivHfmQ+Ifda7WwyIg66KHeG55RiODv6qi6bsgg==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "postcss": "^8.3.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/packager-css/node_modules/postcss": {
- "version": "8.3.6",
- "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
- "dependencies": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map-js": "^0.6.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/@parcel/packager-html": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-xYMUmDBRjcCafItklOPz0dllIQkDSdSocdRpPF2apLyms8QU8EQ7JzOAVSpI+I2OyQbHYzMjTssFTJbqywz2zA==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/packager-js": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-12+kqcdW55WuMNRRu5unYWDnEDyw24WSJZiRaA+UH3oYkYF8MrK3BRrTbv4a6X2sH4iGA/4FznXEWc1mzWgl6Q==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "globals": "^13.2.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/packager-raw": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-9R0OIreEqDQxj8coMhqDBdqGpJMsQo1gHimLWw/pcYQFLQDSM2eqxGIt0NdB2ZbESltbkfyOl5BdfjuR7iUOyQ==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/plugin": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-dCfnWnkoqsPijEHKhisENDiGBUUCLuZfjPkVGqMcKBpLhv6bnh3ivmXyC9bcJBZJ8BV9Ytltj+ooOyFOMQRJnQ==",
- "dependencies": {
- "@parcel/types": "2.0.0-rc.0"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/reporter-cli": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-szynnxoWewnALI9zdwD5d4ZlvY95xDRliza/TnzKqYHHFtFcfER6DXiznSgZ9sMXILZ0S1xZrXiagATpQUpxnQ==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "chalk": "^4.1.0",
- "filesize": "^6.1.0",
- "nullthrows": "^1.1.1",
- "ora": "^5.2.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "term-size": "^2.2.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/reporter-cli/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@parcel/reporter-cli/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@parcel/reporter-cli/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@parcel/reporter-cli/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/@parcel/reporter-cli/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/reporter-cli/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/reporter-dev-server": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-upA2rugECBsLb8JzG8A7iNrl7EYYNpnNwuW/o4x6aDWYSa3bdx0XI/1K2+9zHxj5V5bj3n0mDH6qw65f25ykEg==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "connect": "^3.7.0",
- "ejs": "^2.6.1",
- "http-proxy-middleware": "^1.0.0",
- "nullthrows": "^1.1.1",
- "serve-handler": "^6.0.0",
- "ws": "^7.0.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/resolver-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-b79IUkDIVQ4LGuFsWWCdSqrXrU6bPR+AouMb1vH4Dbu8ljdqAdVHs3fu5TnAHBY2o0cXhm1KD3ecH7iEz/h8EA==",
- "dependencies": {
- "@parcel/node-resolver-core": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/runtime-browser-hmr": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-PTljXkNp4ZH9iOIgEg3EpdSPqrPfPssOGUE3W4tTvE6r/DfweqhiyQCHL7XWbFaG4uXJACko8WVqJAtXadcUDQ==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/runtime-js": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-L+7umxrp0VrOJB6FooGmDvxbXGseVXibeHqluMsRpN0tmh3bwxhPbWl2KGhtxvWCFVADKHtZo9sBIcnTU4Dp/Q==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/runtime-react-refresh": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-KuIz9vI6zWcA7IOAYR8ldCby7DnqhtZwR5LG3GU0oH4QUckUdheH5Pi35qg0wpFy2N9KSRRbNarXps4WQ0IJvg==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "react-refresh": "^0.9.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/runtime-react-refresh/node_modules/react-refresh": {
- "version": "0.9.0",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/source-map": {
- "version": "2.0.0-rc.6",
- "integrity": "sha512-qtXLd9dbxWx/ybe1dduAzAGzb7iTSQv3imNZo7pVyEtSaCcphg+rTmY8/Fg3MQqqu7of/2+tEqNAGMz8nOJyUA==",
- "dependencies": {
- "detect-libc": "^1.0.3",
- "globby": "^11.0.3"
- },
- "engines": {
- "node": "^12.18.3 || >=14"
- }
- },
- "node_modules/@parcel/transformer-babel": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-z0SapRmPycI1sQ4h+Gs+i14bzv97VCz3q1moTzsD8DhkPPuFRBXS7N/cxmRIGqXt8P0qaffJ+gsf4jN0ji3JWg==",
- "dependencies": {
- "@babel/core": "^7.12.0",
- "@babel/generator": "^7.9.0",
- "@babel/helper-compilation-targets": "^7.8.4",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@parcel/babel-ast-utils": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "browserslist": "^4.6.6",
- "core-js": "^3.2.1",
- "nullthrows": "^1.1.1",
- "semver": "^5.7.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-babel/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/transformer-css": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-KJ/Xc1GqirUSr8BZ/UoPMcwXaDFqtc/E9bGfPGdWiPND/R4x24GHPtY1IsT7V4BBQ1hiO4Yw8C8jl1BgheWS+w==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "postcss": "^8.3.0",
- "postcss-value-parser": "^4.1.0",
- "semver": "^5.4.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-css/node_modules/postcss": {
- "version": "8.3.6",
- "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
- "dependencies": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map-js": "^0.6.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/@parcel/transformer-css/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/transformer-html": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-jGzgxDiN7YrsosG9kwGeGSEz+gCUvl1tP4EJIx4PY401bYOlr31+ppR/7aGWQ+BxmsG4SL7QTxU4KZ42TE7gEQ==",
- "dependencies": {
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4",
- "posthtml-parser": "^0.9.0",
- "posthtml-render": "^2.0.6",
- "semver": "^5.4.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-html/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/transformer-js": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-zmp2ha7fnIBCG7d56MBneXjZxhOBcJLXpO+3rpiwGoic2fQdcNk702QHGBmfqnZW4u/pebGZpolj/wUqtP0bcQ==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "@swc/helpers": "^0.2.11",
- "browserslist": "^4.6.6",
- "detect-libc": "^1.0.3",
- "micromatch": "^4.0.2",
- "nullthrows": "^1.1.1",
- "regenerator-runtime": "^0.13.7",
- "semver": "^5.4.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-js/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/transformer-json": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-nTGPI5gyDP166FjDafzOw8WhBOqq9T95j3Q7qSmdXQ3og6Tm5pzN92YDsAXhcaIkRhJeof5eRG3Q1XsoGR0n9g==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "json5": "^2.1.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-json/node_modules/json5": {
- "version": "2.2.0",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@parcel/transformer-postcss": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-VqYBjLP1wmBrUFkazUvN7O4XYD61NCAtvKfTuH6P4eer8+GbeSFeYiG5vpXpbleRk2u9o2aJ5iyzY0Rie8ogiA==",
- "dependencies": {
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "clone": "^2.1.1",
- "css-modules-loader-core": "^1.1.0",
- "nullthrows": "^1.1.1",
- "postcss-modules": "^3.2.2",
- "postcss-value-parser": "^4.1.0",
- "semver": "^5.4.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-postcss/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/transformer-posthtml": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-RcpCUNNm70V+HeR3l6onhLeflZAwytgmVdb8TDFkTkoZ7GVZ2qdkMuYBhz4aTnLZZm+/Fjh8kRJMkIFYOLx1mA==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4",
- "posthtml-parser": "^0.9.0",
- "posthtml-render": "^2.0.6",
- "semver": "^5.4.1"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-posthtml/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@parcel/transformer-raw": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-yyu1y0ViatnY05JdU8uqA1iypcdYx9qrt0ZliJZYT5WGb5eYZXtc500sk6x7Mpch35RiQzIjUFg6oBvgCnTqAw==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-react-refresh-wrap": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-pwF00jhJ+H108ZhZY/L/wOklDNC91+Slv/INN0avFa3c1xBceDLEb7363mZzvRJThaFChxwya7siuuohKc0xqw==",
- "dependencies": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "react-refresh": "^0.9.0"
- },
- "engines": {
- "node": ">= 12.0.0",
- "parcel": "^2.0.0-beta.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/transformer-react-refresh-wrap/node_modules/react-refresh": {
- "version": "0.9.0",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/types": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-v1/pS/benX/ekED8FC5kcKfUJffuPcvllzuZKaBlV5rsMwlRbMtdWfRfJ+ibdEIqjvJRtflt84p88Oo725SMQA==",
- "dependencies": {
- "@parcel/cache": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/package-manager": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/workers": "2.0.0-rc.0",
- "utility-types": "^3.10.0"
- }
- },
- "node_modules/@parcel/utils": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-4W5HT3zILVH0c8W1SMu6jPYtjEy7qh2IOSDR2KiUlT1jFF1OOjd4iQFAEYvHP0iBr1mdiSwXEdkEMhm4hR9xYA==",
- "dependencies": {
- "@iarna/toml": "^2.2.0",
- "@parcel/codeframe": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/markdown-ansi": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "ansi-html": "^0.0.7",
- "chalk": "^4.1.0",
- "clone": "^2.1.1",
- "fast-glob": "3.1.1",
- "fastest-levenshtein": "^1.0.8",
- "is-glob": "^4.0.0",
- "is-url": "^1.2.2",
- "json5": "^1.0.1",
- "lru-cache": "^6.0.0",
- "micromatch": "^3.0.4",
- "node-forge": "^0.10.0",
- "nullthrows": "^1.1.1",
- "open": "^7.0.3"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/utils/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@parcel/utils/node_modules/braces": {
- "version": "2.3.2",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@parcel/utils/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/@parcel/utils/node_modules/fill-range": {
- "version": "4.0.0",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/utils/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/is-number": {
- "version": "3.0.0",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/micromatch": {
- "version": "3.1.10",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/utils/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@parcel/utils/node_modules/to-regex-range": {
- "version": "2.1.1",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@parcel/watcher": {
- "version": "2.0.0-alpha.10",
- "integrity": "sha512-8uA7Tmx/1XvmUdGzksg0+oN7uj24pXFFnKJqZr3L3mgYjdrL7CMs3PRIHv1k3LUz/hNRsb/p3qxztSkWz1IGZA==",
- "hasInstallScript": true,
- "dependencies": {
- "node-addon-api": "^3.0.2",
- "node-gyp-build": "^4.2.3"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/@parcel/workers": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-HYRr8wg+PwRpZJDFpAZ0te6jVJKQlg4QkfH9nV0u9BktBVs/fmRWH/t4qYZz2c4W2zF+xIe8EfZbkafeETH67Q==",
- "dependencies": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "chrome-trace-event": "^1.0.2",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- },
- "peerDependencies": {
- "@parcel/core": "^2.0.0-alpha.3.1"
- }
- },
- "node_modules/@swc/helpers": {
- "version": "0.2.13",
- "integrity": "sha512-HxfZHtTgDlME7fH+KIwBrm1B1+2iB3UpbcSbPCZzDAHxZ3z+qfjflHverm33sXrdyQYx4s3J7r6ot76433mwEg=="
- },
- "node_modules/@trysound/sax": {
- "version": "0.1.1",
- "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==",
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@types/async-retry": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.2.1.tgz",
- "integrity": "sha512-yMQ6CVgICWtyFNBqJT3zqOc+TnqqEPLo4nKJNPFwcialiylil38Ie6q1ENeFTjvaLOkVim9K5LisHgAKJWidGQ=="
- },
- "node_modules/@types/hast": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
- "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/http-proxy": {
- "version": "1.17.7",
- "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/lru-cache": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-4.1.1.tgz",
- "integrity": "sha512-8mNEUG6diOrI6pMqOHrHPDBB1JsrpedeMK9AWGzVCQ7StRRribiT9BRvUmF8aUws9iBbVlgVekOT5Sgzc1MTKw=="
- },
- "node_modules/@types/mdast": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
- "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/node": {
- "version": "16.7.10",
- "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA=="
- },
- "node_modules/@types/node-fetch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.3.2.tgz",
- "integrity": "sha512-yW0EOebSsQme9yKu09XbdDfle4/SmWZMK4dfteWcSLCYNQQcF+YOv0kIrvm+9pO11/ghA4E6A+RNQqvYj4Nr3A==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/parse5": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
- "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw=="
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.4",
- "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==",
- "dev": true
- },
- "node_modules/@types/react": {
- "version": "17.0.20",
- "integrity": "sha512-wWZrPlihslrPpcKyCSlmIlruakxr57/buQN1RjlIeaaTWDLtJkTtRW429MoQJergvVKc4IWBpRhWw7YNh/7GVA==",
- "dev": true,
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.2",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "node_modules/@types/unist": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
- "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
- },
- "node_modules/@vercel/fetch": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@vercel/fetch/-/fetch-6.1.1.tgz",
- "integrity": "sha512-nddCkgpA0aVIqOlzh+qVlzDNcQq0cSnqefM+x6SciGI4GCvVZeaZ7WEowgX8I/HwBAq8Uj5Bdnd+r0+sYsJsig==",
- "dependencies": {
- "@types/async-retry": "1.2.1",
- "@vercel/fetch-cached-dns": "^2.0.2",
- "@vercel/fetch-retry": "^5.0.2",
- "agentkeepalive": "3.4.1",
- "debug": "3.1.0"
- },
- "peerDependencies": {
- "@types/node-fetch": "2",
- "node-fetch": "2"
- }
- },
- "node_modules/@vercel/fetch-cached-dns": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@vercel/fetch-cached-dns/-/fetch-cached-dns-2.0.2.tgz",
- "integrity": "sha512-gDqKEV8CeY2YmCdZpP1rn3tFK1L07Vw2+HYkCK8zpRHOVGr/sP8yhBsW+C/yqGVj0i9z/rIvqIHe5emvRvxwgw==",
- "dependencies": {
- "@types/node-fetch": "2.3.2",
- "@zeit/dns-cached-resolve": "2.1.2"
- },
- "peerDependencies": {
- "node-fetch": "*"
- }
- },
- "node_modules/@vercel/fetch-retry": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@vercel/fetch-retry/-/fetch-retry-5.0.3.tgz",
- "integrity": "sha512-DIIoBY92r+sQ6iHSf5WjKiYvkdsDIMPWKYATlE0KcUAj2RV6SZK9UWpUzBRKsofXqedOqpVjrI0IE6AWL7JRtg==",
- "dependencies": {
- "async-retry": "^1.3.1",
- "debug": "^3.1.0"
- },
- "peerDependencies": {
- "node-fetch": "*"
- }
- },
- "node_modules/@vercel/fetch-retry/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/@vercel/fetch/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/@vercel/fetch/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/@zeit/dns-cached-resolve": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@zeit/dns-cached-resolve/-/dns-cached-resolve-2.1.2.tgz",
- "integrity": "sha512-A/5gbBskKPETTBqHwvlaW1Ri2orO62yqoFoXdxna1SQ7A/lXjpWgpJ1wdY3IQEcz5LydpS4sJ8SzI2gFyyLEhg==",
- "dependencies": {
- "@types/async-retry": "1.2.1",
- "@types/lru-cache": "4.1.1",
- "@types/node": "10.12.18",
- "async-retry": "1.2.3",
- "lru-cache": "5.1.1"
- }
- },
- "node_modules/@zeit/dns-cached-resolve/node_modules/@types/node": {
- "version": "10.12.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
- "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
- },
- "node_modules/@zeit/dns-cached-resolve/node_modules/async-retry": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz",
- "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==",
- "dependencies": {
- "retry": "0.12.0"
- }
- },
- "node_modules/@zeit/dns-cached-resolve/node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/@zeit/dns-cached-resolve/node_modules/retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@zeit/dns-cached-resolve/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- },
- "node_modules/abab": {
- "version": "2.0.5",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "node_modules/abortcontroller-polyfill": {
- "version": "1.7.3",
- "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q=="
- },
- "node_modules/acorn": {
- "version": "6.4.2",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "4.3.4",
- "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
- "dependencies": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
- }
- },
- "node_modules/acorn-walk": {
- "version": "6.2.0",
- "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agentkeepalive": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.4.1.tgz",
- "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==",
- "dependencies": {
- "humanize-ms": "^1.2.1"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/alphanum-sort": {
- "version": "1.0.2",
- "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
- },
- "node_modules/anser": {
- "version": "1.4.9",
- "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA=="
- },
- "node_modules/ansi-html": {
- "version": "0.0.7",
- "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
- "engines": [
- "node >= 0.8.0"
- ],
- "bin": {
- "ansi-html": "bin/ansi-html"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.0",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.2",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-equal": {
- "version": "1.0.0",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM="
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/asn1": {
- "version": "0.2.4",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/asn1.js": {
- "version": "5.4.1",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dependencies": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/asn1.js/node_modules/bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/assert": {
- "version": "2.0.0",
- "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
- "dependencies": {
- "es6-object-assign": "^1.1.0",
- "is-nan": "^1.2.1",
- "object-is": "^1.0.1",
- "util": "^0.12.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ast-types": {
- "version": "0.13.2",
- "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/astring": {
- "version": "1.7.5",
- "integrity": "sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA==",
- "bin": {
- "astring": "bin/astring"
- }
- },
- "node_modules/async-limiter": {
- "version": "1.0.1",
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
- },
- "node_modules/async-retry": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
- "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
- "dependencies": {
- "retry": "0.13.1"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.11.0",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
- },
- "node_modules/bail": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
- "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/base": {
- "version": "0.11.2",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base-x": {
- "version": "3.0.8",
- "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
- "node_modules/big.js": {
- "version": "5.2.2",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bn.js": {
- "version": "5.2.0",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw=="
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/brorand": {
- "version": "1.1.0",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
- },
- "node_modules/browserify-aes": {
- "version": "1.2.0",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dependencies": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/browserify-cipher": {
- "version": "1.0.1",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dependencies": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
- }
- },
- "node_modules/browserify-des": {
- "version": "1.0.2",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dependencies": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "node_modules/browserify-rsa": {
- "version": "4.1.0",
- "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "dependencies": {
- "bn.js": "^5.0.0",
- "randombytes": "^2.0.1"
- }
- },
- "node_modules/browserify-sign": {
- "version": "4.2.1",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
- "dependencies": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
- "inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- }
- },
- "node_modules/browserify-zlib": {
- "version": "0.2.0",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "dependencies": {
- "pako": "~1.0.5"
- }
- },
- "node_modules/browserslist": {
- "version": "4.16.6",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
- "dependencies": {
- "caniuse-lite": "^1.0.30001219",
- "colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.71"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
- },
- "node_modules/buffer": {
- "version": "5.6.0",
- "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
- "dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "node_modules/buffer-xor": {
- "version": "1.0.3",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
- },
- "node_modules/builtin-status-codes": {
- "version": "3.0.0",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
- },
- "node_modules/bun-framework-next": {
- "version": "0.0.0-18",
- "resolved": "https://registry.npmjs.org/bun-framework-next/-/bun-framework-next-0.0.0-18.tgz",
- "integrity": "sha512-ZOlRzbZKCeGiE379TOnW38xtg6nSYZBwube0ZfjIn3ZWk8cQbArMm9G0BUvBSIVvSuiACDtYn3LLxebTFgRezA==",
- "dev": true,
- "dependencies": {
- "react-is": "^17.0.2"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.0",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/caniuse-api": {
- "version": "3.0.0",
- "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
- "dependencies": {
- "browserslist": "^4.0.0",
- "caniuse-lite": "^1.0.0",
- "lodash.memoize": "^4.1.2",
- "lodash.uniq": "^4.5.0"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001254",
- "integrity": "sha512-GxeHOvR0LFMYPmFGA+NiTOt9uwYDxB3h154tW2yBYwfz2EMX3i1IBgr6gmJGfU0K8KQsqPa5XqLD8zVdP5lUzA==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "dependencies": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- },
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
- }
- },
- "node_modules/cheerio-select": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
- "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
- "dependencies": {
- "css-select": "^4.1.3",
- "css-what": "^5.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.7.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cheerio/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/chokidar": {
- "version": "3.5.1",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "dependencies": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.1"
- }
- },
- "node_modules/chrome-trace-event": {
- "version": "1.0.3",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/cipher-base": {
- "version": "1.0.4",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/classnames": {
- "version": "2.2.6",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-spinners": {
- "version": "2.6.0",
- "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/clone": {
- "version": "2.1.2",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "node_modules/colord": {
- "version": "2.7.0",
- "integrity": "sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q=="
- },
- "node_modules/colorette": {
- "version": "1.3.0",
- "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w=="
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/comma-separated-tokens": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
- "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/command-exists": {
- "version": "1.2.9",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
- },
- "node_modules/commander": {
- "version": "7.2.0",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/commondir": {
- "version": "1.0.1",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "dependencies": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/connect/node_modules/debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/connect/node_modules/ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/console-browserify": {
- "version": "1.2.0",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
- },
- "node_modules/constants-browserify": {
- "version": "1.0.0",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
- },
- "node_modules/content-disposition": {
- "version": "0.5.2",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.8.0",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/convert-source-map/node_modules/safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-js": {
- "version": "3.17.2",
- "integrity": "sha512-XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA==",
- "hasInstallScript": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "node_modules/create-ecdh": {
- "version": "4.0.4",
- "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dependencies": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.5.3"
- }
- },
- "node_modules/create-ecdh/node_modules/bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/create-hash": {
- "version": "1.2.0",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dependencies": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "node_modules/create-hmac": {
- "version": "1.1.7",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dependencies": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "node_modules/cross-spawn": {
- "version": "6.0.5",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/cross-spawn/node_modules/semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/crypto-browserify": {
- "version": "3.12.0",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dependencies": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/css-color-names": {
- "version": "1.0.1",
- "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/css-declaration-sorter": {
- "version": "6.1.1",
- "integrity": "sha512-BZ1aOuif2Sb7tQYY1GeCjG7F++8ggnwUkH5Ictw0mrdpqpEd+zWmcPdstnH2TItlb74FqR0DrVEieon221T/1Q==",
- "dependencies": {
- "timsort": "^0.3.0"
- },
- "engines": {
- "node": ">= 10"
- },
- "peerDependencies": {
- "postcss": "^8.0.9"
- }
- },
- "node_modules/css-modules-loader-core": {
- "version": "1.1.0",
- "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=",
- "dependencies": {
- "icss-replace-symbols": "1.1.0",
- "postcss": "6.0.1",
- "postcss-modules-extract-imports": "1.1.0",
- "postcss-modules-local-by-default": "1.2.0",
- "postcss-modules-scope": "1.1.0",
- "postcss-modules-values": "1.3.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/ansi-regex": {
- "version": "2.1.1",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/ansi-styles": {
- "version": "2.2.1",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/chalk": {
- "version": "1.1.3",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/chalk/node_modules/supports-color": {
- "version": "2.0.0",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/has-flag": {
- "version": "1.0.0",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/postcss": {
- "version": "6.0.1",
- "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=",
- "dependencies": {
- "chalk": "^1.1.3",
- "source-map": "^0.5.6",
- "supports-color": "^3.2.3"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/strip-ansi": {
- "version": "3.0.1",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-modules-loader-core/node_modules/supports-color": {
- "version": "3.2.3",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dependencies": {
- "has-flag": "^1.0.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/css-select": {
- "version": "4.1.3",
- "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^5.0.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.6.0",
- "nth-check": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-selector-tokenizer": {
- "version": "0.7.3",
- "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
- "dependencies": {
- "cssesc": "^3.0.0",
- "fastparse": "^1.1.2"
- }
- },
- "node_modules/css-tree": {
- "version": "1.1.3",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "dependencies": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/css-tree/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/css-what": {
- "version": "5.0.1",
- "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css.escape": {
- "version": "1.5.1",
- "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cssnano": {
- "version": "5.0.8",
- "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==",
- "dependencies": {
- "cssnano-preset-default": "^5.1.4",
- "is-resolvable": "^1.1.0",
- "lilconfig": "^2.0.3",
- "yaml": "^1.10.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/cssnano"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/cssnano-preset-default": {
- "version": "5.1.4",
- "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==",
- "dependencies": {
- "css-declaration-sorter": "^6.0.3",
- "cssnano-utils": "^2.0.1",
- "postcss-calc": "^8.0.0",
- "postcss-colormin": "^5.2.0",
- "postcss-convert-values": "^5.0.1",
- "postcss-discard-comments": "^5.0.1",
- "postcss-discard-duplicates": "^5.0.1",
- "postcss-discard-empty": "^5.0.1",
- "postcss-discard-overridden": "^5.0.1",
- "postcss-merge-longhand": "^5.0.2",
- "postcss-merge-rules": "^5.0.2",
- "postcss-minify-font-values": "^5.0.1",
- "postcss-minify-gradients": "^5.0.2",
- "postcss-minify-params": "^5.0.1",
- "postcss-minify-selectors": "^5.1.0",
- "postcss-normalize-charset": "^5.0.1",
- "postcss-normalize-display-values": "^5.0.1",
- "postcss-normalize-positions": "^5.0.1",
- "postcss-normalize-repeat-style": "^5.0.1",
- "postcss-normalize-string": "^5.0.1",
- "postcss-normalize-timing-functions": "^5.0.1",
- "postcss-normalize-unicode": "^5.0.1",
- "postcss-normalize-url": "^5.0.2",
- "postcss-normalize-whitespace": "^5.0.1",
- "postcss-ordered-values": "^5.0.2",
- "postcss-reduce-initial": "^5.0.1",
- "postcss-reduce-transforms": "^5.0.1",
- "postcss-svgo": "^5.0.2",
- "postcss-unique-selectors": "^5.0.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/cssnano-preset-simple": {
- "version": "3.0.0",
- "integrity": "sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==",
- "dependencies": {
- "caniuse-lite": "^1.0.30001202"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/cssnano-simple": {
- "version": "3.0.0",
- "integrity": "sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==",
- "dependencies": {
- "cssnano-preset-simple": "^3.0.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- }
- }
- },
- "node_modules/cssnano-utils": {
- "version": "2.0.1",
- "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==",
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/csso": {
- "version": "4.2.0",
- "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
- "dependencies": {
- "css-tree": "^1.1.2"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/cssom": {
- "version": "0.3.8",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
- },
- "node_modules/cssstyle": {
- "version": "1.4.0",
- "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
- "dependencies": {
- "cssom": "0.3.x"
- }
- },
- "node_modules/csstype": {
- "version": "3.0.8",
- "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==",
- "dev": true
- },
- "node_modules/dashdash": {
- "version": "1.14.1",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/data-uri-to-buffer": {
- "version": "3.0.1",
- "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/data-urls": {
- "version": "1.1.0",
- "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
- "dependencies": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
- }
- },
- "node_modules/data-urls/node_modules/punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/data-urls/node_modules/tr46": {
- "version": "1.0.1",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/data-urls/node_modules/whatwg-url": {
- "version": "7.1.0",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/date-fns": {
- "version": "2.23.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz",
- "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==",
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/debug": {
- "version": "4.3.2",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.0",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
- },
- "node_modules/defaults": {
- "version": "1.0.3",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "dependencies": {
- "clone": "^1.0.2"
- }
- },
- "node_modules/defaults/node_modules/clone": {
- "version": "1.0.4",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/define-properties": {
- "version": "1.1.3",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dependencies": {
- "object-keys": "^1.0.12"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/depd": {
- "version": "1.1.2",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz",
- "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/des.js": {
- "version": "1.0.1",
- "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
- "dependencies": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "node_modules/detect-libc": {
- "version": "1.0.3",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/diffie-hellman": {
- "version": "5.0.3",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dependencies": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- }
- },
- "node_modules/diffie-hellman/node_modules/bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dom-serializer": {
- "version": "1.3.2",
- "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/domain-browser": {
- "version": "4.19.0",
- "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.2.0",
- "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/domexception": {
- "version": "1.0.1",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
- "dependencies": {
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/domhandler": {
- "version": "4.2.2",
- "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
- "dependencies": {
- "domelementtype": "^2.2.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "2.8.0",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dotenv": {
- "version": "7.0.0",
- "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/dotenv-expand": {
- "version": "5.1.0",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "node_modules/ejs": {
- "version": "2.7.4",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "hasInstallScript": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.3.830",
- "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ=="
- },
- "node_modules/elliptic": {
- "version": "6.5.4",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dependencies": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/elliptic/node_modules/bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/emojis-list": {
- "version": "3.0.0",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/emphasize": {
- "version": "4.2.0",
- "integrity": "sha512-yGKvcFUHlBsUPwlxTlzKLR8+zhpbitkFOMCUxN8fTJng9bdH3WNzUGkhdaGdjndSUgqmMPBN7umfwnUdLz5Axg==",
- "dependencies": {
- "chalk": "^4.0.0",
- "highlight.js": "~10.4.0",
- "lowlight": "~1.17.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/emphasize/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/emphasize/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/emphasize/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/emphasize/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/emphasize/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/emphasize/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/encoding": {
- "version": "0.1.13",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "dependencies": {
- "iconv-lite": "^0.6.2"
- }
- },
- "node_modules/entities": {
- "version": "2.2.0",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.18.5",
- "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.3",
- "is-string": "^1.0.6",
- "object-inspect": "^1.11.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es6-object-assign": {
- "version": "1.1.0",
- "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw="
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/escodegen": {
- "version": "1.14.3",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=4.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/escodegen/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/esm": {
- "version": "3.2.25",
- "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/eventemitter3": {
- "version": "4.0.7",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
- },
- "node_modules/events": {
- "version": "3.3.0",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "engines": {
- "node": ">=0.8.x"
- }
- },
- "node_modules/evp_bytestokey": {
- "version": "1.0.3",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dependencies": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "engines": [
- "node >=0.6.0"
- ]
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-glob": {
- "version": "3.1.1",
- "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
- },
- "node_modules/fast-url-parser": {
- "version": "1.1.3",
- "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=",
- "dependencies": {
- "punycode": "^1.3.2"
- }
- },
- "node_modules/fastest-levenshtein": {
- "version": "1.0.12",
- "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
- },
- "node_modules/fastparse": {
- "version": "1.1.2",
- "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ=="
- },
- "node_modules/fastq": {
- "version": "1.12.0",
- "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fault": {
- "version": "1.0.4",
- "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
- "dependencies": {
- "format": "^0.2.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/filesize": {
- "version": "6.4.0",
- "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/find-cache-dir": {
- "version": "3.3.1",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
- "node_modules/find-up": {
- "version": "4.1.0",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.14.3",
- "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/foreach": {
- "version": "2.0.5",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/form-data": {
- "version": "2.3.3",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/format": {
- "version": "0.2.2",
- "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/generic-names": {
- "version": "2.0.1",
- "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==",
- "dependencies": {
- "loader-utils": "^1.1.0"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.1.1",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-orientation": {
- "version": "1.1.2",
- "integrity": "sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==",
- "dependencies": {
- "stream-parser": "^0.3.1"
- }
- },
- "node_modules/get-port": {
- "version": "4.2.0",
- "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/getpass": {
- "version": "0.1.7",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
- "node_modules/github-slugger": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz",
- "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ=="
- },
- "node_modules/glob": {
- "version": "7.1.7",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
- },
- "node_modules/globals": {
- "version": "13.11.0",
- "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby": {
- "version": "11.0.4",
- "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.8",
- "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "deprecated": "this library is no longer supported",
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-ansi": {
- "version": "2.0.0",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-ansi/node_modules/ansi-regex": {
- "version": "2.1.1",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.0.1",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.2",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number": {
- "version": "3.0.0",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hash-base": {
- "version": "3.1.0",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/hash.js": {
- "version": "1.1.7",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "node_modules/hast-to-hyperscript": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz",
- "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==",
- "dependencies": {
- "@types/unist": "^2.0.3",
- "comma-separated-tokens": "^1.0.0",
- "property-information": "^5.3.0",
- "space-separated-tokens": "^1.0.0",
- "style-to-object": "^0.3.0",
- "unist-util-is": "^4.0.0",
- "web-namespaces": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-from-parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz",
- "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==",
- "dependencies": {
- "@types/parse5": "^5.0.0",
- "hastscript": "^6.0.0",
- "property-information": "^5.0.0",
- "vfile": "^4.0.0",
- "vfile-location": "^3.2.0",
- "web-namespaces": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-parse-selector": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
- "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz",
- "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-from-parse5": "^6.0.0",
- "hast-util-to-parse5": "^6.0.0",
- "html-void-elements": "^1.0.0",
- "parse5": "^6.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile": "^4.0.0",
- "web-namespaces": "^1.0.0",
- "xtend": "^4.0.0",
- "zwitch": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/hast-util-raw/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-sanitize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz",
- "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==",
- "dependencies": {
- "@types/hast": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-parse5": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz",
- "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==",
- "dependencies": {
- "hast-to-hyperscript": "^9.0.0",
- "property-information": "^5.0.0",
- "web-namespaces": "^1.0.0",
- "xtend": "^4.0.0",
- "zwitch": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-string": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz",
- "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hastscript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
- "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "comma-separated-tokens": "^1.0.0",
- "hast-util-parse-selector": "^2.0.0",
- "property-information": "^5.0.0",
- "space-separated-tokens": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/highlight.js": {
- "version": "10.4.1",
- "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/hmac-drbg": {
- "version": "1.0.1",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "dependencies": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/html-encoding-sniffer": {
- "version": "1.0.2",
- "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
- "dependencies": {
- "whatwg-encoding": "^1.0.1"
- }
- },
- "node_modules/html-tags": {
- "version": "1.2.0",
- "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/html-void-elements": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz",
- "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/htmlnano": {
- "version": "1.0.0",
- "integrity": "sha512-1lmF8MK6UZEEOtSusKn4/NJhJxw8vMb6lqie6Vmd80gxykPVstCqYGr4EYNlfkbLNQomQW++qHmnBDAe1XEytw==",
- "dependencies": {
- "cssnano": "^5.0.0",
- "postcss": "^8.2.9",
- "posthtml": "^0.15.2",
- "purgecss": "^4.0.0",
- "relateurl": "^0.2.7",
- "srcset": "^3.0.0",
- "svgo": "^2.3.0",
- "terser": "^5.6.1",
- "timsort": "^0.3.0",
- "uncss": "^0.17.3"
- }
- },
- "node_modules/htmlnano/node_modules/posthtml": {
- "version": "0.15.2",
- "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==",
- "dependencies": {
- "posthtml-parser": "^0.7.2",
- "posthtml-render": "^1.3.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/htmlnano/node_modules/posthtml-parser": {
- "version": "0.7.2",
- "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==",
- "dependencies": {
- "htmlparser2": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/htmlnano/node_modules/posthtml-render": {
- "version": "1.4.0",
- "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/htmlparser2": {
- "version": "6.1.0",
- "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- },
- "node_modules/http-errors": {
- "version": "1.7.3",
- "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-proxy": {
- "version": "1.18.1",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
- "dependencies": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/http-proxy-middleware": {
- "version": "1.3.1",
- "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==",
- "dependencies": {
- "@types/http-proxy": "^1.17.5",
- "http-proxy": "^1.18.1",
- "is-glob": "^4.0.1",
- "is-plain-obj": "^3.0.0",
- "micromatch": "^4.0.2"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/http-signature": {
- "version": "1.2.0",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/https-browserify": {
- "version": "1.0.0",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
- },
- "node_modules/humanize-ms": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
- "dependencies": {
- "ms": "^2.0.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/icss-replace-symbols": {
- "version": "1.1.0",
- "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0="
- },
- "node_modules/icss-utils": {
- "version": "4.1.1",
- "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
- "dependencies": {
- "postcss": "^7.0.14"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/icss-utils/node_modules/postcss": {
- "version": "7.0.36",
- "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/icss-utils/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/icss-utils/node_modules/supports-color": {
- "version": "6.1.0",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/iferr": {
- "version": "1.0.2",
- "integrity": "sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/ignore": {
- "version": "5.1.8",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/image-size": {
- "version": "1.0.0",
- "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
- "dependencies": {
- "queue": "6.0.2"
- },
- "bin": {
- "image-size": "bin/image-size.js"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indexes-of": {
- "version": "1.0.1",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/inline-style-parser": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
- "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
- },
- "node_modules/internal-slot": {
- "version": "1.0.3",
- "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
- "dependencies": {
- "get-intrinsic": "^1.1.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/is-absolute-url": {
- "version": "3.0.3",
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "dependencies": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-arguments": {
- "version": "1.1.1",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "node_modules/is-callable": {
- "version": "1.2.4",
- "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.1",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-html": {
- "version": "1.1.0",
- "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=",
- "dependencies": {
- "html-tags": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-interactive": {
- "version": "1.0.0",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-json": {
- "version": "2.0.1",
- "integrity": "sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8="
- },
- "node_modules/is-nan": {
- "version": "1.3.2",
- "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.1",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.6",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "3.0.0",
- "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-resolvable": {
- "version": "1.1.0",
- "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.8",
- "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-abstract": "^1.18.5",
- "foreach": "^2.0.5",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-url": {
- "version": "1.2.4",
- "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isomorphic-fetch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz",
- "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==",
- "dependencies": {
- "node-fetch": "^2.6.1",
- "whatwg-fetch": "^3.4.1"
- }
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "node_modules/jest-worker": {
- "version": "27.0.0-next.5",
- "integrity": "sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/jest-worker/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/jsbn": {
- "version": "0.1.1",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "node_modules/jsdom": {
- "version": "14.1.0",
- "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==",
- "dependencies": {
- "abab": "^2.0.0",
- "acorn": "^6.0.4",
- "acorn-globals": "^4.3.0",
- "array-equal": "^1.0.0",
- "cssom": "^0.3.4",
- "cssstyle": "^1.1.1",
- "data-urls": "^1.1.0",
- "domexception": "^1.0.1",
- "escodegen": "^1.11.0",
- "html-encoding-sniffer": "^1.0.2",
- "nwsapi": "^2.1.3",
- "parse5": "5.1.0",
- "pn": "^1.1.0",
- "request": "^2.88.0",
- "request-promise-native": "^1.0.5",
- "saxes": "^3.1.9",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^2.5.0",
- "w3c-hr-time": "^1.0.1",
- "w3c-xmlserializer": "^1.1.2",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^7.0.0",
- "ws": "^6.1.2",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jsdom/node_modules/punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsdom/node_modules/tr46": {
- "version": "1.0.1",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/jsdom/node_modules/whatwg-url": {
- "version": "7.1.0",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/jsdom/node_modules/ws": {
- "version": "6.2.2",
- "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
- "dependencies": {
- "async-limiter": "~1.0.0"
- }
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-schema": {
- "version": "0.2.3",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "node_modules/json-source-map": {
- "version": "0.6.1",
- "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg=="
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "node_modules/json5": {
- "version": "1.0.1",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/jsprim": {
- "version": "1.4.1",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/levn": {
- "version": "0.3.0",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lilconfig": {
- "version": "2.0.3",
- "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lmdb-store": {
- "version": "1.6.7",
- "integrity": "sha512-q9q7zNhuFWjSD0fDmyB5hiQkOY3UUJ6LPjhs+W/zJdleRLOLPFR6bAh9nERHGkmEA49sZtZRwFPCwPWGM8qdzA==",
- "hasInstallScript": true,
- "dependencies": {
- "mkdirp": "^1.0.4",
- "nan": "^2.14.2",
- "node-gyp-build": "^4.2.3",
- "ordered-binary": "^1.0.0",
- "weak-lru-cache": "^1.0.0"
- },
- "optionalDependencies": {
- "msgpackr": "^1.3.7"
- }
- },
- "node_modules/lmdb-store/node_modules/mkdirp": {
- "version": "1.0.4",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/loader-utils": {
- "version": "1.4.0",
- "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
- "dependencies": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/locate-path": {
- "version": "5.0.0",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.camelcase": {
- "version": "4.3.0",
- "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
- },
- "node_modules/lodash.clone": {
- "version": "4.5.0",
- "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
- },
- "node_modules/lodash.memoize": {
- "version": "4.1.2",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
- },
- "node_modules/lodash.sortby": {
- "version": "4.7.0",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
- },
- "node_modules/lodash.uniq": {
- "version": "4.5.0",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-symbols/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/log-symbols/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/log-symbols/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-symbols/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lowlight": {
- "version": "1.17.0",
- "integrity": "sha512-vmtBgYKD+QVNy7tIa7ulz5d//Il9R4MooOVh4nkOf9R9Cb/Dk5TXMSTieg/vDulkBkIWj59/BIlyFQxT9X1oAQ==",
- "dependencies": {
- "fault": "^1.0.0",
- "highlight.js": "~10.4.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/make-dir": {
- "version": "3.1.0",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/md5.js": {
- "version": "1.3.5",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "dependencies": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "node_modules/mdast-util-definitions": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz",
- "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==",
- "dependencies": {
- "unist-util-visit": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-definitions/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
- "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^2.0.0",
- "micromark": "~2.11.0",
- "parse-entities": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz",
- "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "mdast-util-definitions": "^4.0.0",
- "mdurl": "^1.0.0",
- "unist-builder": "^2.0.0",
- "unist-util-generated": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz",
- "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdn-data": {
- "version": "2.0.14",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromark": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
- "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.4",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/miller-rabin": {
- "version": "4.0.1",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dependencies": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
- },
- "bin": {
- "miller-rabin": "bin/miller-rabin"
- }
- },
- "node_modules/miller-rabin/node_modules/bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/mime-db": {
- "version": "1.33.0",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.18",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "dependencies": {
- "mime-db": "~1.33.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/minimalistic-assert": {
- "version": "1.0.1",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
- },
- "node_modules/minimalistic-crypto-utils": {
- "version": "1.0.1",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
- },
- "node_modules/minimatch": {
- "version": "3.0.4",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.5",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.5",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/msgpackr": {
- "version": "1.4.3",
- "integrity": "sha512-QxNu1m6L8ZlAZn3bMAkGxCJTs6nLPcBt1j+ku/ksF2leEDAX2aM2srCZCL80HwwkWokzm1et16Oo8MnRkxIN4A==",
- "optional": true,
- "optionalDependencies": {
- "msgpackr-extract": "^1.0.13"
- }
- },
- "node_modules/msgpackr-extract": {
- "version": "1.0.13",
- "integrity": "sha512-JlQPllMLETiuQ5Vv3IAz+4uOpd1GZPOoCHv9P5ka5P5gkTssm/ejv0WwS4xAfB9B3vDwrExRwuU8v3HRQtJk2Q==",
- "hasInstallScript": true,
- "optional": true,
- "dependencies": {
- "nan": "^2.14.2",
- "node-gyp-build": "^4.2.3"
- }
- },
- "node_modules/nan": {
- "version": "2.15.0",
- "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ=="
- },
- "node_modules/nanoid": {
- "version": "3.1.25",
- "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/native-url": {
- "version": "0.3.4",
- "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==",
- "dependencies": {
- "querystring": "^0.2.0"
- }
- },
- "node_modules/ncp": {
- "version": "2.0.0",
- "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
- "bin": {
- "ncp": "bin/ncp"
- }
- },
- "node_modules/next": {
- "version": "11.1.2",
- "integrity": "sha512-azEYL0L+wFjv8lstLru3bgvrzPvK0P7/bz6B/4EJ9sYkXeW8r5Bjh78D/Ol7VOg0EIPz0CXoe72hzAlSAXo9hw==",
- "dependencies": {
- "@babel/runtime": "7.15.3",
- "@hapi/accept": "5.0.2",
- "@next/env": "11.1.2",
- "@next/polyfill-module": "11.1.2",
- "@next/react-dev-overlay": "11.1.2",
- "@next/react-refresh-utils": "11.1.2",
- "@node-rs/helper": "1.2.1",
- "assert": "2.0.0",
- "ast-types": "0.13.2",
- "browserify-zlib": "0.2.0",
- "browserslist": "4.16.6",
- "buffer": "5.6.0",
- "caniuse-lite": "^1.0.30001228",
- "chalk": "2.4.2",
- "chokidar": "3.5.1",
- "constants-browserify": "1.0.0",
- "crypto-browserify": "3.12.0",
- "cssnano-simple": "3.0.0",
- "domain-browser": "4.19.0",
- "encoding": "0.1.13",
- "etag": "1.8.1",
- "find-cache-dir": "3.3.1",
- "get-orientation": "1.1.2",
- "https-browserify": "1.0.0",
- "image-size": "1.0.0",
- "jest-worker": "27.0.0-next.5",
- "native-url": "0.3.4",
- "node-fetch": "2.6.1",
- "node-html-parser": "1.4.9",
- "node-libs-browser": "^2.2.1",
- "os-browserify": "0.3.0",
- "p-limit": "3.1.0",
- "path-browserify": "1.0.1",
- "pnp-webpack-plugin": "1.6.4",
- "postcss": "8.2.15",
- "process": "0.11.10",
- "querystring-es3": "0.2.1",
- "raw-body": "2.4.1",
- "react-is": "17.0.2",
- "react-refresh": "0.8.3",
- "stream-browserify": "3.0.0",
- "stream-http": "3.1.1",
- "string_decoder": "1.3.0",
- "styled-jsx": "4.0.1",
- "timers-browserify": "2.0.12",
- "tty-browserify": "0.0.1",
- "use-subscription": "1.5.1",
- "util": "0.12.4",
- "vm-browserify": "1.1.2",
- "watchpack": "2.1.1"
- },
- "bin": {
- "next": "dist/bin/next"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "optionalDependencies": {
- "@next/swc-darwin-arm64": "11.1.2",
- "@next/swc-darwin-x64": "11.1.2",
- "@next/swc-linux-x64-gnu": "11.1.2",
- "@next/swc-win32-x64-msvc": "11.1.2"
- },
- "peerDependencies": {
- "fibers": ">= 3.1.0",
- "node-sass": "^4.0.0 || ^5.0.0",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
- "sass": "^1.3.0"
- },
- "peerDependenciesMeta": {
- "fibers": {
- "optional": true
- },
- "node-sass": {
- "optional": true
- },
- "sass": {
- "optional": true
- }
- }
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
- },
- "node_modules/node-addon-api": {
- "version": "3.2.1",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
- },
- "node_modules/node-fetch": {
- "version": "2.6.1",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/node-forge": {
- "version": "0.10.0",
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/node-gyp-build": {
- "version": "4.2.3",
- "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==",
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
- }
- },
- "node_modules/node-html-parser": {
- "version": "1.4.9",
- "integrity": "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==",
- "dependencies": {
- "he": "1.2.0"
- }
- },
- "node_modules/node-libs-browser": {
- "version": "2.2.1",
- "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
- "dependencies": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^3.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.1",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.11.0",
- "vm-browserify": "^1.0.1"
- }
- },
- "node_modules/node-libs-browser/node_modules/assert": {
- "version": "1.5.0",
- "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
- "dependencies": {
- "object-assign": "^4.1.1",
- "util": "0.10.3"
- }
- },
- "node_modules/node-libs-browser/node_modules/assert/node_modules/inherits": {
- "version": "2.0.1",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
- },
- "node_modules/node-libs-browser/node_modules/assert/node_modules/util": {
- "version": "0.10.3",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "dependencies": {
- "inherits": "2.0.1"
- }
- },
- "node_modules/node-libs-browser/node_modules/buffer": {
- "version": "4.9.2",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
- "dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "node_modules/node-libs-browser/node_modules/domain-browser": {
- "version": "1.2.0",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "engines": {
- "node": ">=0.4",
- "npm": ">=1.2"
- }
- },
- "node_modules/node-libs-browser/node_modules/inherits": {
- "version": "2.0.3",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "node_modules/node-libs-browser/node_modules/path-browserify": {
- "version": "0.0.1",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ=="
- },
- "node_modules/node-libs-browser/node_modules/readable-stream": {
- "version": "2.3.7",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/node-libs-browser/node_modules/safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/node-libs-browser/node_modules/stream-browserify": {
- "version": "2.0.2",
- "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
- "dependencies": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "node_modules/node-libs-browser/node_modules/stream-http": {
- "version": "2.8.3",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "dependencies": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "node_modules/node-libs-browser/node_modules/string_decoder": {
- "version": "1.1.1",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/node-libs-browser/node_modules/tty-browserify": {
- "version": "0.0.0",
- "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
- },
- "node_modules/node-libs-browser/node_modules/util": {
- "version": "0.11.1",
- "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
- "dependencies": {
- "inherits": "2.0.3"
- }
- },
- "node_modules/node-releases": {
- "version": "1.1.75",
- "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw=="
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-url": {
- "version": "6.1.0",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nth-check": {
- "version": "2.0.0",
- "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/nullthrows": {
- "version": "1.1.1",
- "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="
- },
- "node_modules/nwsapi": {
- "version": "2.2.0",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.11.0",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-is": {
- "version": "1.1.5",
- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.2",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/open": {
- "version": "7.4.2",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "dependencies": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/optionator": {
- "version": "0.8.3",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/ora": {
- "version": "5.4.1",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
- "dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/ora/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/ora/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ordered-binary": {
- "version": "1.1.0",
- "integrity": "sha512-ZCES27KVhWfm/k/R6sXcC0zRyNl/XHOWSPDMPxkImeUGZ2JAlc2uTWMi9RsmTD8TNbVQJbttzrta1oXPS+Nu4A==",
- "dependencies": {
- "esm": "^3.2.25"
- }
- },
- "node_modules/os-browserify": {
- "version": "0.3.0",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "4.1.0",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-locate/node_modules/p-limit": {
- "version": "2.3.0",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pako": {
- "version": "1.0.11",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
- },
- "node_modules/parcel": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-40brGCIJO+KPbFNduM9qGbi2GoZw3CeEV+Kgs3Vfxr2XfR9jkqjD4lzfDY/mnE3gAbsa+5pGdiB+JrOmnzSo5A==",
- "dependencies": {
- "@parcel/config-default": "2.0.0-rc.0",
- "@parcel/core": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/events": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/package-manager": "2.0.0-rc.0",
- "@parcel/reporter-cli": "2.0.0-rc.0",
- "@parcel/reporter-dev-server": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "chalk": "^4.1.0",
- "commander": "^7.0.0",
- "get-port": "^4.2.0",
- "v8-compile-cache": "^2.0.0"
- },
- "bin": {
- "parcel": "lib/bin.js"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/parcel"
- }
- },
- "node_modules/parcel/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/parcel/node_modules/chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/parcel/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/parcel/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/parcel/node_modules/has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/parcel/node_modules/supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/parse-asn1": {
- "version": "5.1.6",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dependencies": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "dependencies": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse5": {
- "version": "5.1.0",
- "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ=="
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
- "dependencies": {
- "parse5": "^6.0.1"
- }
- },
- "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-browserify": {
- "version": "1.0.1",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-is-inside": {
- "version": "1.0.2",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
- },
- "node_modules/path-key": {
- "version": "2.0.1",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "2.2.1",
- "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ=="
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pbkdf2": {
- "version": "3.1.2",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
- "dependencies": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/performance-now": {
- "version": "2.1.0",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
- "node_modules/picomatch": {
- "version": "2.3.0",
- "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/platform": {
- "version": "1.3.6",
- "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
- },
- "node_modules/pn": {
- "version": "1.1.0",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA=="
- },
- "node_modules/pnp-webpack-plugin": {
- "version": "1.6.4",
- "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==",
- "dependencies": {
- "ts-pnp": "^1.1.6"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss": {
- "version": "8.2.15",
- "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
- "dependencies": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-calc": {
- "version": "8.0.0",
- "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==",
- "dependencies": {
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.0.2"
- },
- "peerDependencies": {
- "postcss": "^8.2.2"
- }
- },
- "node_modules/postcss-colormin": {
- "version": "5.2.0",
- "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==",
- "dependencies": {
- "browserslist": "^4.16.6",
- "caniuse-api": "^3.0.0",
- "colord": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-convert-values": {
- "version": "5.0.1",
- "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==",
- "dependencies": {
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-discard-comments": {
- "version": "5.0.1",
- "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==",
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-discard-duplicates": {
- "version": "5.0.1",
- "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==",
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-discard-empty": {
- "version": "5.0.1",
- "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==",
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-discard-overridden": {
- "version": "5.0.1",
- "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==",
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-merge-longhand": {
- "version": "5.0.2",
- "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==",
- "dependencies": {
- "css-color-names": "^1.0.1",
- "postcss-value-parser": "^4.1.0",
- "stylehacks": "^5.0.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-merge-rules": {
- "version": "5.0.2",
- "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==",
- "dependencies": {
- "browserslist": "^4.16.6",
- "caniuse-api": "^3.0.0",
- "cssnano-utils": "^2.0.1",
- "postcss-selector-parser": "^6.0.5",
- "vendors": "^1.0.3"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-minify-font-values": {
- "version": "5.0.1",
- "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==",
- "dependencies": {
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-minify-gradients": {
- "version": "5.0.2",
- "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==",
- "dependencies": {
- "colord": "^2.6",
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-minify-params": {
- "version": "5.0.1",
- "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==",
- "dependencies": {
- "alphanum-sort": "^1.0.2",
- "browserslist": "^4.16.0",
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0",
- "uniqs": "^2.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-minify-selectors": {
- "version": "5.1.0",
- "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==",
- "dependencies": {
- "alphanum-sort": "^1.0.2",
- "postcss-selector-parser": "^6.0.5"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-modules": {
- "version": "3.2.2",
- "integrity": "sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==",
- "dependencies": {
- "generic-names": "^2.0.1",
- "icss-replace-symbols": "^1.1.0",
- "lodash.camelcase": "^4.3.0",
- "postcss": "^7.0.32",
- "postcss-modules-extract-imports": "^2.0.0",
- "postcss-modules-local-by-default": "^3.0.2",
- "postcss-modules-scope": "^2.2.0",
- "postcss-modules-values": "^3.0.0",
- "string-hash": "^1.1.1"
- }
- },
- "node_modules/postcss-modules-extract-imports": {
- "version": "1.1.0",
- "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
- "dependencies": {
- "postcss": "^6.0.1"
- }
- },
- "node_modules/postcss-modules-extract-imports/node_modules/postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dependencies": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/postcss-modules-extract-imports/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-local-by-default": {
- "version": "1.2.0",
- "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
- "dependencies": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- }
- },
- "node_modules/postcss-modules-local-by-default/node_modules/postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dependencies": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/postcss-modules-local-by-default/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-scope": {
- "version": "1.1.0",
- "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
- "dependencies": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- }
- },
- "node_modules/postcss-modules-scope/node_modules/postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dependencies": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/postcss-modules-scope/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules-values": {
- "version": "1.3.0",
- "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
- "dependencies": {
- "icss-replace-symbols": "^1.1.0",
- "postcss": "^6.0.1"
- }
- },
- "node_modules/postcss-modules-values/node_modules/postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dependencies": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/postcss-modules-values/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules/node_modules/postcss": {
- "version": "7.0.36",
- "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-modules/node_modules/postcss-modules-extract-imports": {
- "version": "2.0.0",
- "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
- "dependencies": {
- "postcss": "^7.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/postcss-modules/node_modules/postcss-modules-local-by-default": {
- "version": "3.0.3",
- "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
- "dependencies": {
- "icss-utils": "^4.1.1",
- "postcss": "^7.0.32",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/postcss-modules/node_modules/postcss-modules-scope": {
- "version": "2.2.0",
- "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
- "dependencies": {
- "postcss": "^7.0.6",
- "postcss-selector-parser": "^6.0.0"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/postcss-modules/node_modules/postcss-modules-values": {
- "version": "3.0.0",
- "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
- "dependencies": {
- "icss-utils": "^4.0.0",
- "postcss": "^7.0.6"
- }
- },
- "node_modules/postcss-modules/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss-modules/node_modules/supports-color": {
- "version": "6.1.0",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/postcss-normalize-charset": {
- "version": "5.0.1",
- "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==",
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-display-values": {
- "version": "5.0.1",
- "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==",
- "dependencies": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-positions": {
- "version": "5.0.1",
- "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==",
- "dependencies": {
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-repeat-style": {
- "version": "5.0.1",
- "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==",
- "dependencies": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-string": {
- "version": "5.0.1",
- "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==",
- "dependencies": {
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-timing-functions": {
- "version": "5.0.1",
- "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==",
- "dependencies": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-unicode": {
- "version": "5.0.1",
- "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==",
- "dependencies": {
- "browserslist": "^4.16.0",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-url": {
- "version": "5.0.2",
- "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==",
- "dependencies": {
- "is-absolute-url": "^3.0.3",
- "normalize-url": "^6.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-normalize-whitespace": {
- "version": "5.0.1",
- "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==",
- "dependencies": {
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-ordered-values": {
- "version": "5.0.2",
- "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==",
- "dependencies": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-reduce-initial": {
- "version": "5.0.1",
- "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==",
- "dependencies": {
- "browserslist": "^4.16.0",
- "caniuse-api": "^3.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-reduce-transforms": {
- "version": "5.0.1",
- "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==",
- "dependencies": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "6.0.6",
- "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-svgo": {
- "version": "5.0.2",
- "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==",
- "dependencies": {
- "postcss-value-parser": "^4.1.0",
- "svgo": "^2.3.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-unique-selectors": {
- "version": "5.0.1",
- "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==",
- "dependencies": {
- "alphanum-sort": "^1.0.2",
- "postcss-selector-parser": "^6.0.5",
- "uniqs": "^2.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.1.0",
- "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
- },
- "node_modules/postcss/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/posthtml": {
- "version": "0.16.5",
- "integrity": "sha512-1qOuPsywVlvymhTFIBniDXwUDwvlDri5KUQuBqjmCc8Jj4b/HDSVWU//P6rTWke5rzrk+vj7mms2w8e1vD0nnw==",
- "dependencies": {
- "posthtml-parser": "^0.10.0",
- "posthtml-render": "^3.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/posthtml-parser": {
- "version": "0.9.1",
- "integrity": "sha512-sF8X2cuNQMrb9wdr1GYV8X4DdJhk2lvavLV3PRsVunYNKdU/DT+w2iTgTijgpzWm9xcEsV/sz6mFAl7sGvnjFQ==",
- "dependencies": {
- "htmlparser2": "^6.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/posthtml-render": {
- "version": "2.0.6",
- "integrity": "sha512-AvjM4yfEtjhbpZdtLOWfnezgojEtgeejSxrjTAvfr5phXjPcZQyB5QiOvYeU+rrTF0u+eqqlJrs8HS3nrPexGQ==",
- "dependencies": {
- "is-json": "^2.0.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/posthtml/node_modules/entities": {
- "version": "3.0.1",
- "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/posthtml/node_modules/htmlparser2": {
- "version": "7.1.1",
- "integrity": "sha512-hZb0lfG0hbhR/hB879zbBr8Opv0Be9Zp+JYHgqTw5epF++aotu/zmMTPLy/60iJyR1MaD/3pYRp7xYteXsZMEA==",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.8.0",
- "entities": "^3.0.1"
- }
- },
- "node_modules/posthtml/node_modules/posthtml-parser": {
- "version": "0.10.1",
- "integrity": "sha512-i7w2QEHqiGtsvNNPty0Mt/+ERch7wkgnFh3+JnBI2VgDbGlBqKW9eDVd3ENUhE1ujGFe3e3E/odf7eKhvLUyDg==",
- "dependencies": {
- "htmlparser2": "^7.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/posthtml/node_modules/posthtml-render": {
- "version": "3.0.0",
- "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
- "dependencies": {
- "is-json": "^2.0.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.1.2",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prismjs": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz",
- "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow=="
- },
- "node_modules/process": {
- "version": "0.11.10",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/property-information": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
- "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
- "dependencies": {
- "xtend": "^4.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/psl": {
- "version": "1.8.0",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "node_modules/public-encrypt": {
- "version": "4.0.3",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "dependencies": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "node_modules/public-encrypt/node_modules/bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/punycode": {
- "version": "1.4.1",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- },
- "node_modules/purgecss": {
- "version": "4.0.3",
- "integrity": "sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==",
- "dependencies": {
- "commander": "^6.0.0",
- "glob": "^7.0.0",
- "postcss": "^8.2.1",
- "postcss-selector-parser": "^6.0.2"
- },
- "bin": {
- "purgecss": "bin/purgecss.js"
- }
- },
- "node_modules/purgecss/node_modules/commander": {
- "version": "6.2.1",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/qs": {
- "version": "6.5.2",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/querystring": {
- "version": "0.2.1",
- "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/querystring-es3": {
- "version": "0.2.1",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/queue": {
- "version": "6.0.2",
- "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
- "dependencies": {
- "inherits": "~2.0.3"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/randomfill": {
- "version": "1.0.4",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dependencies": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.0",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.4.1",
- "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==",
- "dependencies": {
- "bytes": "3.1.0",
- "http-errors": "1.7.3",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/raw-body/node_modules/iconv-lite": {
- "version": "0.4.24",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react": {
- "version": "17.0.2",
- "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "17.0.2",
- "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "scheduler": "^0.20.2"
- },
- "peerDependencies": {
- "react": "17.0.2"
- }
- },
- "node_modules/react-is": {
- "version": "17.0.2",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
- },
- "node_modules/react-refresh": {
- "version": "0.8.3",
- "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.0",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "3.5.0",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/refractor": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.4.0.tgz",
- "integrity": "sha512-dBeD02lC5eytm9Gld2Mx0cMcnR+zhSnsTfPpWqFaMgUMJfC9A6bcN3Br/NaXrnBJcuxnLFR90k1jrkaSyV8umg==",
- "dependencies": {
- "hastscript": "^6.0.0",
- "parse-entities": "^2.0.0",
- "prismjs": "~1.24.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.13.9",
- "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/rehype-parse": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz",
- "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==",
- "dependencies": {
- "hast-util-from-parse5": "^6.0.0",
- "parse5": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-parse/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/rehype-raw": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-5.1.0.tgz",
- "integrity": "sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==",
- "dependencies": {
- "hast-util-raw": "^6.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-sanitize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-4.0.0.tgz",
- "integrity": "sha512-ZCr/iQRr4JeqPjun5i9CHHILVY7i45VnLu1CkkibDrSyFQ7dTLSvw8OIQpHhS4RSh9h/9GidxFw1bRb0LOxIag==",
- "dependencies": {
- "hast-util-sanitize": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-sanitize/node_modules/hast-util-sanitize": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz",
- "integrity": "sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA==",
- "dependencies": {
- "xtend": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/relateurl": {
- "version": "0.2.7",
- "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
- "dependencies": {
- "mdast-util-from-markdown": "^0.8.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-rehype": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz",
- "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==",
- "dependencies": {
- "mdast-util-to-hast": "^10.2.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/request": {
- "version": "2.88.2",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request-promise-core": {
- "version": "1.1.4",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "dependencies": {
- "lodash": "^4.17.19"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request-promise-native": {
- "version": "1.0.9",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "engines": {
- "node": ">=0.12.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request/node_modules/mime-db": {
- "version": "1.49.0",
- "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/request/node_modules/mime-types": {
- "version": "2.1.32",
- "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
- "dependencies": {
- "mime-db": "1.49.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/requires-port": {
- "version": "1.0.0",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated"
- },
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/ripemd160": {
- "version": "2.0.2",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dependencies": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/saxes": {
- "version": "3.1.11",
- "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
- "dependencies": {
- "xmlchars": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/scheduler": {
- "version": "0.20.2",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
- "node_modules/semver": {
- "version": "6.3.0",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/serve-handler": {
- "version": "6.1.3",
- "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==",
- "dependencies": {
- "bytes": "3.0.0",
- "content-disposition": "0.5.2",
- "fast-url-parser": "1.1.3",
- "mime-types": "2.1.18",
- "minimatch": "3.0.4",
- "path-is-inside": "1.0.2",
- "path-to-regexp": "2.2.1",
- "range-parser": "1.2.0"
- }
- },
- "node_modules/serve-handler/node_modules/bytes": {
- "version": "3.0.0",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
- },
- "node_modules/setprototypeof": {
- "version": "1.1.1",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
- },
- "node_modules/sha.js": {
- "version": "2.4.11",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dependencies": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- },
- "bin": {
- "sha.js": "bin.js"
- }
- },
- "node_modules/shebang-command": {
- "version": "1.2.0",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shebang-regex": {
- "version": "1.0.0",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shell-quote": {
- "version": "1.7.2",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.3",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/slice-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/snapdragon/node_modules/source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.8.0-beta.0",
- "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
- "dependencies": {
- "whatwg-url": "^7.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/source-map-js": {
- "version": "0.6.2",
- "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.19",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
- },
- "node_modules/source-map/node_modules/punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/source-map/node_modules/tr46": {
- "version": "1.0.1",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/source-map/node_modules/whatwg-url": {
- "version": "7.1.0",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/space-separated-tokens": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
- "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split2": {
- "version": "3.2.2",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "dependencies": {
- "readable-stream": "^3.0.0"
- }
- },
- "node_modules/srcset": {
- "version": "3.0.1",
- "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/sshpk": {
- "version": "1.16.1",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stable": {
- "version": "0.1.8",
- "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
- },
- "node_modules/stacktrace-parser": {
- "version": "0.1.10",
- "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
- "dependencies": {
- "type-fest": "^0.7.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/stacktrace-parser/node_modules/type-fest": {
- "version": "0.7.1",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stealthy-require": {
- "version": "1.1.1",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stream-browserify": {
- "version": "3.0.0",
- "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
- "dependencies": {
- "inherits": "~2.0.4",
- "readable-stream": "^3.5.0"
- }
- },
- "node_modules/stream-http": {
- "version": "3.1.1",
- "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==",
- "dependencies": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "xtend": "^4.0.2"
- }
- },
- "node_modules/stream-parser": {
- "version": "0.3.1",
- "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
- "dependencies": {
- "debug": "2"
- }
- },
- "node_modules/stream-parser/node_modules/debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/stream-parser/node_modules/ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-hash": {
- "version": "1.1.3",
- "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs="
- },
- "node_modules/string-width": {
- "version": "4.2.2",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.4",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.4",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.0",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "dependencies": {
- "ansi-regex": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/style-to-object": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz",
- "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==",
- "dependencies": {
- "inline-style-parser": "0.1.1"
- }
- },
- "node_modules/styled-jsx": {
- "version": "4.0.1",
- "integrity": "sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==",
- "dependencies": {
- "@babel/plugin-syntax-jsx": "7.14.5",
- "@babel/types": "7.15.0",
- "convert-source-map": "1.7.0",
- "loader-utils": "1.2.3",
- "source-map": "0.7.3",
- "string-hash": "1.1.3",
- "stylis": "3.5.4",
- "stylis-rule-sheet": "0.0.10"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "peerDependencies": {
- "react": ">= 16.8.0 || 17.x.x || 18.x.x"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- }
- }
- },
- "node_modules/styled-jsx/node_modules/@babel/types": {
- "version": "7.15.0",
- "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.14.9",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/styled-jsx/node_modules/convert-source-map": {
- "version": "1.7.0",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/styled-jsx/node_modules/emojis-list": {
- "version": "2.1.0",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/styled-jsx/node_modules/loader-utils": {
- "version": "1.2.3",
- "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
- "dependencies": {
- "big.js": "^5.2.2",
- "emojis-list": "^2.0.0",
- "json5": "^1.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/styled-jsx/node_modules/safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/styled-jsx/node_modules/source-map": {
- "version": "0.7.3",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/stylehacks": {
- "version": "5.0.1",
- "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==",
- "dependencies": {
- "browserslist": "^4.16.0",
- "postcss-selector-parser": "^6.0.4"
- },
- "engines": {
- "node": "^10 || ^12 || >=14.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.15"
- }
- },
- "node_modules/stylis": {
- "version": "3.5.4",
- "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q=="
- },
- "node_modules/stylis-rule-sheet": {
- "version": "0.0.10",
- "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==",
- "peerDependencies": {
- "stylis": "^3.5.0"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/svgo": {
- "version": "2.5.0",
- "integrity": "sha512-FSdBOOo271VyF/qZnOn1PgwCdt1v4Dx0Sey+U1jgqm1vqRYjPGdip0RGrFW6ItwtkBB8rHgHk26dlVr0uCs82Q==",
- "dependencies": {
- "@trysound/sax": "0.1.1",
- "colorette": "^1.3.0",
- "commander": "^7.2.0",
- "css-select": "^4.1.3",
- "css-tree": "^1.1.3",
- "csso": "^4.2.0",
- "stable": "^0.1.8"
- },
- "bin": {
- "svgo": "bin/svgo"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/swr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/swr/-/swr-1.0.1.tgz",
- "integrity": "sha512-EPQAxSjoD4IaM49rpRHK0q+/NzcwoT8c0/Ylu/u3/6mFj/CWnQVjNJ0MV2Iuw/U+EJSd2TX5czdAwKPYZIG0YA==",
- "dependencies": {
- "dequal": "2.0.2"
- },
- "peerDependencies": {
- "react": "^16.11.0 || ^17.0.0"
- }
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
- },
- "node_modules/term-size": {
- "version": "2.2.1",
- "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/terser": {
- "version": "5.7.2",
- "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==",
- "dependencies": {
- "commander": "^2.20.0",
- "source-map": "~0.7.2",
- "source-map-support": "~0.5.19"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/terser/node_modules/commander": {
- "version": "2.20.3",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "node_modules/terser/node_modules/source-map": {
- "version": "0.7.3",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/timers-browserify": {
- "version": "2.0.12",
- "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
- "dependencies": {
- "setimmediate": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/timsort": {
- "version": "0.3.0",
- "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
- },
- "node_modules/to-arraybuffer": {
- "version": "1.0.1",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.0",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tough-cookie": {
- "version": "2.5.0",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/tough-cookie/node_modules/punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tr46": {
- "version": "2.1.0",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
- "dependencies": {
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tr46/node_modules/punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/trough": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
- "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/ts-pnp": {
- "version": "1.2.0",
- "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==",
- "engines": {
- "node": ">=6"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
- },
- "node_modules/tty-browserify": {
- "version": "0.0.1",
- "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
- "node_modules/type-check": {
- "version": "0.3.2",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "4.4.2",
- "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.1",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/uncss": {
- "version": "0.17.3",
- "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==",
- "dependencies": {
- "commander": "^2.20.0",
- "glob": "^7.1.4",
- "is-absolute-url": "^3.0.1",
- "is-html": "^1.1.0",
- "jsdom": "^14.1.0",
- "lodash": "^4.17.15",
- "postcss": "^7.0.17",
- "postcss-selector-parser": "6.0.2",
- "request": "^2.88.0"
- },
- "bin": {
- "uncss": "bin/uncss"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/uncss/node_modules/commander": {
- "version": "2.20.3",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "node_modules/uncss/node_modules/postcss": {
- "version": "7.0.36",
- "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
- "dependencies": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/uncss/node_modules/postcss-selector-parser": {
- "version": "6.0.2",
- "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
- "dependencies": {
- "cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/uncss/node_modules/source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/uncss/node_modules/supports-color": {
- "version": "6.1.0",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/unified": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
- "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
- "dependencies": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unified/node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unified/node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/union-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/uniq": {
- "version": "1.0.1",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
- },
- "node_modules/uniqs": {
- "version": "2.0.0",
- "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI="
- },
- "node_modules/unist-builder": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz",
- "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-generated": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz",
- "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-position": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz",
- "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "dependencies": {
- "@types/unist": "^2.0.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
- "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
- "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents/node_modules/unist-util-is": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
- "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit/node_modules/unist-util-is": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
- "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/uri-js/node_modules/punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated"
- },
- "node_modules/url": {
- "version": "0.11.0",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
- "dependencies": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- }
- },
- "node_modules/url/node_modules/punycode": {
- "version": "1.3.2",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
- },
- "node_modules/url/node_modules/querystring": {
- "version": "0.2.0",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/use": {
- "version": "3.1.1",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/use-subscription": {
- "version": "1.5.1",
- "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==",
- "dependencies": {
- "object-assign": "^4.1.1"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0"
- }
- },
- "node_modules/util": {
- "version": "0.12.4",
- "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "safe-buffer": "^5.1.2",
- "which-typed-array": "^1.1.2"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "node_modules/utility-types": {
- "version": "3.10.0",
- "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "3.4.0",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/v8-compile-cache": {
- "version": "2.3.0",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
- },
- "node_modules/vendors": {
- "version": "1.0.4",
- "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/verror": {
- "version": "1.10.0",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "node_modules/vfile": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
- "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-location": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz",
- "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile/node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/vm-browserify": {
- "version": "1.1.2",
- "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
- },
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "node_modules/w3c-xmlserializer": {
- "version": "1.1.2",
- "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
- "dependencies": {
- "domexception": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "xml-name-validator": "^3.0.0"
- }
- },
- "node_modules/watchpack": {
- "version": "2.1.1",
- "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
- "dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/weak-lru-cache": {
- "version": "1.1.0",
- "integrity": "sha512-Z7oN8OXQRYVB+ElsIQLw4ntkMnwxpYefO3umpbtOKp841s9De0F4UFIh9bDK6rgcPz7KAJ2p4mraE9nvWBA73g==",
- "dependencies": {
- "esm": "^3.2.25"
- }
- },
- "node_modules/web-namespaces": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
- "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "4.0.2",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
- },
- "node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-encoding/node_modules/iconv-lite": {
- "version": "0.4.24",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/whatwg-fetch": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
- "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
- },
- "node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
- },
- "node_modules/whatwg-url": {
- "version": "9.1.0",
- "integrity": "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==",
- "dependencies": {
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/whatwg-url/node_modules/webidl-conversions": {
- "version": "6.1.0",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
- "engines": {
- "node": ">=10.4"
- }
- },
- "node_modules/which": {
- "version": "1.3.1",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-typed-array": {
- "version": "1.1.7",
- "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-abstract": "^1.18.5",
- "foreach": "^2.0.5",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "node_modules/ws": {
- "version": "7.5.4",
- "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml-name-validator": {
- "version": "3.0.0",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/xxhash-wasm": {
- "version": "0.4.2",
- "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA=="
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/yaml": {
- "version": "1.10.2",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/zwitch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
- "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- }
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.11",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/compat-data": {
- "version": "7.15.0",
- "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA=="
- },
- "@babel/core": {
- "version": "7.15.5",
- "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==",
- "requires": {
- "@babel/code-frame": "^7.14.5",
- "@babel/generator": "^7.15.4",
- "@babel/helper-compilation-targets": "^7.15.4",
- "@babel/helper-module-transforms": "^7.15.4",
- "@babel/helpers": "^7.15.4",
- "@babel/parser": "^7.15.5",
- "@babel/template": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.14.5",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "requires": {
- "@babel/highlight": "^7.14.5"
- }
- },
- "json5": {
- "version": "2.2.0",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- }
- }
- },
- "@babel/generator": {
- "version": "7.15.4",
- "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
- "requires": {
- "@babel/types": "^7.15.4",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- }
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.15.4",
- "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
- "requires": {
- "@babel/compat-data": "^7.15.0",
- "@babel/helper-validator-option": "^7.14.5",
- "browserslist": "^4.16.6",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.15.4",
- "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
- "requires": {
- "@babel/helper-get-function-arity": "^7.15.4",
- "@babel/template": "^7.15.4",
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.15.4",
- "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.15.4",
- "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.15.4",
- "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.15.4",
- "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.15.4",
- "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
- "requires": {
- "@babel/helper-module-imports": "^7.15.4",
- "@babel/helper-replace-supers": "^7.15.4",
- "@babel/helper-simple-access": "^7.15.4",
- "@babel/helper-split-export-declaration": "^7.15.4",
- "@babel/helper-validator-identifier": "^7.14.9",
- "@babel/template": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.15.4",
- "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.14.5",
- "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ=="
- },
- "@babel/helper-replace-supers": {
- "version": "7.15.4",
- "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.15.4",
- "@babel/helper-optimise-call-expression": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.15.4",
- "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.15.4",
- "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
- "requires": {
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.14.9",
- "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g=="
- },
- "@babel/helper-validator-option": {
- "version": "7.14.5",
- "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow=="
- },
- "@babel/helpers": {
- "version": "7.15.4",
- "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
- "requires": {
- "@babel/template": "^7.15.4",
- "@babel/traverse": "^7.15.4",
- "@babel/types": "^7.15.4"
- }
- },
- "@babel/highlight": {
- "version": "7.14.5",
- "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.15.5",
- "integrity": "sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg=="
- },
- "@babel/plugin-syntax-flow": {
- "version": "7.14.5",
- "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.14.5",
- "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-transform-flow-strip-types": {
- "version": "7.14.5",
- "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5",
- "@babel/plugin-syntax-flow": "^7.14.5"
- }
- },
- "@babel/runtime": {
- "version": "7.15.3",
- "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
- "requires": {
- "regenerator-runtime": "^0.13.4"
- }
- },
- "@babel/standalone": {
- "version": "7.15.5",
- "integrity": "sha512-rho2fzDGLrdYVbl0S71I8z6AREWnVvADzv7Gb4TLKhqpE6cJAvno0ALMuF253+wqhN8futx4ELWQpBYMxi4jmA==",
- "dev": true
- },
- "@babel/template": {
- "version": "7.15.4",
- "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
- "requires": {
- "@babel/code-frame": "^7.14.5",
- "@babel/parser": "^7.15.4",
- "@babel/types": "^7.15.4"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.14.5",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "requires": {
- "@babel/highlight": "^7.14.5"
- }
- }
- }
- },
- "@babel/traverse": {
- "version": "7.15.4",
- "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
- "requires": {
- "@babel/code-frame": "^7.14.5",
- "@babel/generator": "^7.15.4",
- "@babel/helper-function-name": "^7.15.4",
- "@babel/helper-hoist-variables": "^7.15.4",
- "@babel/helper-split-export-declaration": "^7.15.4",
- "@babel/parser": "^7.15.4",
- "@babel/types": "^7.15.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.14.5",
- "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
- "requires": {
- "@babel/highlight": "^7.14.5"
- }
- },
- "globals": {
- "version": "11.12.0",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
- }
- }
- },
- "@babel/types": {
- "version": "7.15.4",
- "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.9",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@hapi/accept": {
- "version": "5.0.2",
- "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==",
- "requires": {
- "@hapi/boom": "9.x.x",
- "@hapi/hoek": "9.x.x"
- }
- },
- "@hapi/boom": {
- "version": "9.1.4",
- "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==",
- "requires": {
- "@hapi/hoek": "9.x.x"
- }
- },
- "@hapi/hoek": {
- "version": "9.2.0",
- "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug=="
- },
- "@iarna/toml": {
- "version": "2.2.5",
- "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
- },
- "@jarred/react-static-tweets": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/@jarred/react-static-tweets/-/react-static-tweets-0.5.8.tgz",
- "integrity": "sha512-YciJBKZSm/SHVUKcI8NO9Wytv9g2yo33YTCLhUx38DtNOedAK71J9cyaHRgVZrLiJRy+OXLC+EIGg28xWSg6SA==",
- "requires": {
- "classnames": "^2.2.6",
- "swr": "^1.0.0-beta.5"
- }
- },
- "@jarred/static-tweets": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/@jarred/static-tweets/-/static-tweets-0.5.8.tgz",
- "integrity": "sha512-gFOJjqyQJjQH0Gqx2qA6S/RfaLSUHQAGJpR0gS1v7PiGUAzc5jcmob1eqzLIclxBtSftdog0Uaz0DkzcJMsAQQ==",
- "requires": {
- "@mapbox/rehype-prism": "^0.5.0",
- "@vercel/fetch": "^6.1.0",
- "cheerio": "^1.0.0-rc.5",
- "github-slugger": "^1.3.0",
- "hast-util-sanitize": "^4.0.0",
- "mdast-util-to-string": "^3.0.0",
- "rehype-parse": "^7.0.0",
- "rehype-raw": "^5.0.0",
- "rehype-sanitize": "^4.0.0",
- "remark-parse": "^9.0.0",
- "remark-rehype": "^8.0.0",
- "unified": "^9.0.0",
- "unist-util-visit": "^3.0.0"
- }
- },
- "@mapbox/rehype-prism": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@mapbox/rehype-prism/-/rehype-prism-0.5.0.tgz",
- "integrity": "sha512-sE5EetmSR6At7AU2s3N2rFUUqm8BpvxUcGcesgfTZgqF7bQoekqsKxLX8gunIDjZs34acZJ6fgPFHepEWnYKCQ==",
- "requires": {
- "hast-util-to-string": "^1.0.3",
- "refractor": "^3.0.0",
- "unist-util-visit": "^2.0.2"
- },
- "dependencies": {
- "unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- }
- },
- "unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- }
- }
- },
- "@napi-rs/triples": {
- "version": "1.0.3",
- "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
- },
- "@next/env": {
- "version": "11.1.2",
- "integrity": "sha512-+fteyVdQ7C/OoulfcF6vd1Yk0FEli4453gr8kSFbU8sKseNSizYq6df5MKz/AjwLptsxrUeIkgBdAzbziyJ3mA=="
- },
- "@next/polyfill-module": {
- "version": "11.1.2",
- "integrity": "sha512-xZmixqADM3xxtqBV0TpAwSFzWJP0MOQzRfzItHXf1LdQHWb0yofHHC+7eOrPFic8+ZGz5y7BdPkkgR1S25OymA=="
- },
- "@next/react-dev-overlay": {
- "version": "11.1.2",
- "integrity": "sha512-rDF/mGY2NC69mMg2vDqzVpCOlWqnwPUXB2zkARhvknUHyS6QJphPYv9ozoPJuoT/QBs49JJd9KWaAzVBvq920A==",
- "requires": {
- "@babel/code-frame": "7.12.11",
- "anser": "1.4.9",
- "chalk": "4.0.0",
- "classnames": "2.2.6",
- "css.escape": "1.5.1",
- "data-uri-to-buffer": "3.0.1",
- "platform": "1.3.6",
- "shell-quote": "1.7.2",
- "source-map": "0.8.0-beta.0",
- "stacktrace-parser": "0.1.10",
- "strip-ansi": "6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.0.0",
- "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@next/react-refresh-utils": {
- "version": "11.1.2",
- "integrity": "sha512-hsoJmPfhVqjZ8w4IFzoo8SyECVnN+8WMnImTbTKrRUHOVJcYMmKLL7xf7T0ft00tWwAl/3f3Q3poWIN2Ueql/Q=="
- },
- "@next/swc-darwin-arm64": {
- "version": "11.1.2",
- "integrity": "sha512-hZuwOlGOwBZADA8EyDYyjx3+4JGIGjSHDHWrmpI7g5rFmQNltjlbaefAbiU5Kk7j3BUSDwt30quJRFv3nyJQ0w==",
- "optional": true
- },
- "@node-rs/helper": {
- "version": "1.2.1",
- "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
- "requires": {
- "@napi-rs/triples": "^1.0.3"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@parcel/babel-ast-utils": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-cEWoinV9RW4T4iaRGL1TeI9hexRD/xAMGUpjTSiswRP1SJXr4uftOw3V+ptRuny7+mvMXGoID+c8nXFE5kgEIw==",
- "requires": {
- "@babel/parser": "^7.0.0",
- "@parcel/babylon-walk": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "astring": "^1.6.2"
- }
- },
- "@parcel/babylon-walk": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-h/Gz+RQNbPUxHHd0TO1lm1QmLhKI+kgByXq8U9cIMhkoef8gN2BqwA8v1Dr3Cm2tbT1G9TUPPx1GUrN8uA44pQ==",
- "requires": {
- "@babel/types": "^7.12.13",
- "lodash.clone": "^4.5.0"
- }
- },
- "@parcel/bundler-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-DyCvrxpHyvj1JcdRZ4yqcxU4NRFuJOvmpyfPIx53BfAjZqtkEfcZ0TPnQzR9sXkv754qkISPfCKEJlhTWCDoDw==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/cache": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-XW3evoovrpr661Ts7Pgw6OTQ+TC63yCffd/+e4qvxD+/nmvHLRUnJR66gRX9GzbG7xaEfJvgcENbxx1CHNm3WA==",
- "requires": {
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "lmdb-store": "^1.5.5"
- }
- },
- "@parcel/codeframe": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-wJR/5y1xAutpCPTpDSEpSO1d5Tm6GYQZ1kNS9jx+J7KVcwpwB/ypw9mon+4kFoyegkc98YaJpTm3jlL/bBJblg==",
- "requires": {
- "chalk": "^4.1.0",
- "emphasize": "^4.2.0",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@parcel/config-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-BVSst1GXA9Y2/+7E9uiuiPYiAAM+9OJRaOyveClBDRj9t8zltP4f6dlk5hbNtLIF1SnFir2kY4I8Rrc1OOp/DQ==",
- "requires": {
- "@parcel/bundler-default": "2.0.0-rc.0",
- "@parcel/namer-default": "2.0.0-rc.0",
- "@parcel/optimizer-cssnano": "2.0.0-rc.0",
- "@parcel/optimizer-htmlnano": "2.0.0-rc.0",
- "@parcel/optimizer-svgo": "2.0.0-rc.0",
- "@parcel/optimizer-terser": "2.0.0-rc.0",
- "@parcel/packager-css": "2.0.0-rc.0",
- "@parcel/packager-html": "2.0.0-rc.0",
- "@parcel/packager-js": "2.0.0-rc.0",
- "@parcel/packager-raw": "2.0.0-rc.0",
- "@parcel/reporter-dev-server": "2.0.0-rc.0",
- "@parcel/resolver-default": "2.0.0-rc.0",
- "@parcel/runtime-browser-hmr": "2.0.0-rc.0",
- "@parcel/runtime-js": "2.0.0-rc.0",
- "@parcel/runtime-react-refresh": "2.0.0-rc.0",
- "@parcel/transformer-babel": "2.0.0-rc.0",
- "@parcel/transformer-css": "2.0.0-rc.0",
- "@parcel/transformer-html": "2.0.0-rc.0",
- "@parcel/transformer-js": "2.0.0-rc.0",
- "@parcel/transformer-json": "2.0.0-rc.0",
- "@parcel/transformer-postcss": "2.0.0-rc.0",
- "@parcel/transformer-posthtml": "2.0.0-rc.0",
- "@parcel/transformer-raw": "2.0.0-rc.0",
- "@parcel/transformer-react-refresh-wrap": "2.0.0-rc.0"
- }
- },
- "@parcel/core": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-W4Qun0RTFJ258DrSwiQj66tIhqz/OXw7O+KlOLLWQ0gnB59t1NMd9S0jqk/dRQMVBohmg1VZf/haxLtgKkLlJQ==",
- "requires": {
- "@parcel/cache": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/events": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/package-manager": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "@parcel/workers": "2.0.0-rc.0",
- "abortcontroller-polyfill": "^1.1.9",
- "base-x": "^3.0.8",
- "browserslist": "^4.6.6",
- "clone": "^2.1.1",
- "dotenv": "^7.0.0",
- "dotenv-expand": "^5.1.0",
- "json-source-map": "^0.6.1",
- "json5": "^1.0.1",
- "micromatch": "^4.0.2",
- "nullthrows": "^1.1.1",
- "querystring": "^0.2.0",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/diagnostic": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-s8hzLkUcgFqwfuCxHHuqx0zyeDU+GYtz69StWlCECXumHJMS0iaomE4IaKW5fsIMsdgndg7g4/yZc2eMXiHR1Q==",
- "requires": {
- "json-source-map": "^0.6.1",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/events": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-k/fqhFXyQQYqo/2Y0pfxz97usoW14+g5hFO1Kfnto3t5l46M8sU65Di6qLHeTEVkO2cWh/alc7N8QxlcXmxO3Q=="
- },
- "@parcel/fs": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-vUXkiNiHa6cc9QrV4GGi40ID27aH5a/GNZ8G2EZxnPtC7FXjrI359CAt7qU8rGxOyPVECGNIwBr+e31p+Xg/Lg==",
- "requires": {
- "@parcel/fs-search": "2.0.0-rc.0",
- "@parcel/fs-write-stream-atomic": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "@parcel/watcher": "2.0.0-alpha.10",
- "@parcel/workers": "2.0.0-rc.0",
- "graceful-fs": "^4.2.4",
- "mkdirp": "^0.5.1",
- "ncp": "^2.0.0",
- "nullthrows": "^1.1.1",
- "rimraf": "^3.0.2",
- "utility-types": "^3.10.0"
- }
- },
- "@parcel/fs-search": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-x/gdmnxWIhuP6kVUe3u8fiY5JBCmALHNJIPNDGdoVada1CEEHF+DJtQG7LT+LIcPFeAqXT6qx05HrgO94KLaUQ==",
- "requires": {
- "detect-libc": "^1.0.3"
- }
- },
- "@parcel/fs-write-stream-atomic": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-KQ9FbE+ee2nzEtZwdVcxup1uWGfyfKj0cDsbxfak+oMubDTb3ycQlyCAnVPKoybvxqpsTG+TKDXObDz8SBCF1A==",
- "requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^1.0.2",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "string_decoder": {
- "version": "1.1.1",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "@parcel/hash": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-qbR1evXfjR4t0LhY3z32nrGnPh32vsuafS6rrS4JOJyD7mbOsHUKsT1Vkggh3R5Jv0sMtuRqlYngK59WO/Yzbg==",
- "requires": {
- "detect-libc": "^1.0.3",
- "xxhash-wasm": "^0.4.1"
- }
- },
- "@parcel/logger": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-gUbEN0iTM0E8Vb0qhLev/AcHyKc3McVWOSZQDC31CQ0DpPY8KPVmDR4tEL+hC0YEl6ekpG2c41F5XpH2mzTawg==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/events": "2.0.0-rc.0"
- }
- },
- "@parcel/markdown-ansi": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-ipR71hKCpqq9aXaPCordBPETYP/QyrN2t2Ra7tPPCvNful44i0JqWakPeSrDO1HJT1s1GI1lGpIk+ytc/5PCCg==",
- "requires": {
- "chalk": "^4.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@parcel/namer-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-voQC1VQzkZqU2cJJ7hS8mN/TlpxLURYBSK1qERT0+zCVuQR1z+5HX+pwTXet7HdnI6+A5FSq2F5B7fj4KMRMqQ==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/node-libs-browser": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-QQVvT0qRdbu1Q8FDiqlrby+4EqjJW24mckKOGiLsDzT134/XGiG8psgYm1HOsrsqgN1psetTbZRs49yfIs4Zog==",
- "requires": {
- "assert": "^2.0.0",
- "browserify-zlib": "^0.2.0",
- "buffer": "^5.5.0",
- "console-browserify": "^1.2.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.12.0",
- "domain-browser": "^3.5.0",
- "events": "^3.1.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "^1.0.0",
- "process": "^0.11.10",
- "punycode": "^1.4.1",
- "querystring-es3": "^0.2.1",
- "readable-stream": "^3.6.0",
- "stream-http": "^3.1.0",
- "string_decoder": "^1.3.0",
- "timers-browserify": "^2.0.11",
- "tty-browserify": "^0.0.1",
- "url": "^0.11.0",
- "util": "^0.12.3",
- "vm-browserify": "^1.1.2"
- },
- "dependencies": {
- "domain-browser": {
- "version": "3.5.0",
- "integrity": "sha512-zrzUu6auyZWRexjCEPJnfWc30Hupxh2lJZOJAF3qa2bCuD4O/55t0FvQt3ZMhEw++gjNkwdkOVZh8yA32w/Vfw=="
- }
- }
- },
- "@parcel/node-resolver-core": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-Xl8XNT13SgzjTxPzthUcyodz5PIaXixaZQrkKUBIdVuoohQkBqzs9U8p38pRXuM65xesGVLpjGKZWICAwViM2Q==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/node-libs-browser": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "micromatch": "^3.0.4",
- "nullthrows": "^1.1.1",
- "querystring": "^0.2.0"
- },
- "dependencies": {
- "braces": {
- "version": "2.3.2",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "is-number": {
- "version": "3.0.0",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
- }
- },
- "@parcel/optimizer-cssnano": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-Sr7aXsYJt05hfAsBv8JKYtbNVD/GbO7RoMVrZw+Gd3a2uwLyMRjnOIyDp9+L06U/LQIKAMBJt+bToDBoWYPl3A==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "cssnano": "^5.0.5",
- "postcss": "^8.3.0"
- },
- "dependencies": {
- "postcss": {
- "version": "8.3.6",
- "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
- "requires": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map-js": "^0.6.2"
- }
- }
- }
- },
- "@parcel/optimizer-htmlnano": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-ItYNuT/CxEwSKo3hFHUZfWa8+LgqwfnmUdpFfyf5vrEXqM8o/LZUukR69m8nZGSaKspfR/c4H/UQxpYKmsJfIQ==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "htmlnano": "^1.0.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4",
- "svgo": "^2.3.0"
- }
- },
- "@parcel/optimizer-svgo": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-mokwpZt5Ki169t/wVXXfXcYsdn0oN4WFoo5lr0ihZujDwPcuYg2Ygpdktd+g6nAxznXrN7rhpXKpTSnpJjdTdA==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "svgo": "^2.3.0"
- }
- },
- "@parcel/optimizer-terser": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-Xnu/6NP5B8kOgeXFjq1DzAdaMj3mWCop75235ZFfM7EMLFVH1qn0OZnJPK1THO4CZ2vElOknO1BW25gqNCoE4A==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "terser": "^5.2.0"
- }
- },
- "@parcel/package-manager": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-QA1B7FViEMB0CpEeEV1oCqIDFHDReYWL38NnwWesLiewIAeIZHLCHqN35ClCK84F8NnCUp9uMymDv61rwJlq9A==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "@parcel/workers": "2.0.0-rc.0",
- "command-exists": "^1.2.6",
- "cross-spawn": "^6.0.4",
- "nullthrows": "^1.1.1",
- "semver": "^5.4.1",
- "split2": "^3.1.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/packager-css": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-X+H2QrnHtUdXY7pLCaU+FnYVHW/W2x7bMfIpxdEaqz9QNvmpivHfmQ+Ifda7WwyIg66KHeG55RiODv6qi6bsgg==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "postcss": "^8.3.0"
- },
- "dependencies": {
- "postcss": {
- "version": "8.3.6",
- "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
- "requires": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map-js": "^0.6.2"
- }
- }
- }
- },
- "@parcel/packager-html": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-xYMUmDBRjcCafItklOPz0dllIQkDSdSocdRpPF2apLyms8QU8EQ7JzOAVSpI+I2OyQbHYzMjTssFTJbqywz2zA==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4"
- }
- },
- "@parcel/packager-js": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-12+kqcdW55WuMNRRu5unYWDnEDyw24WSJZiRaA+UH3oYkYF8MrK3BRrTbv4a6X2sH4iGA/4FznXEWc1mzWgl6Q==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "globals": "^13.2.0",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/packager-raw": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-9R0OIreEqDQxj8coMhqDBdqGpJMsQo1gHimLWw/pcYQFLQDSM2eqxGIt0NdB2ZbESltbkfyOl5BdfjuR7iUOyQ==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0"
- }
- },
- "@parcel/plugin": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-dCfnWnkoqsPijEHKhisENDiGBUUCLuZfjPkVGqMcKBpLhv6bnh3ivmXyC9bcJBZJ8BV9Ytltj+ooOyFOMQRJnQ==",
- "requires": {
- "@parcel/types": "2.0.0-rc.0"
- }
- },
- "@parcel/reporter-cli": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-szynnxoWewnALI9zdwD5d4ZlvY95xDRliza/TnzKqYHHFtFcfER6DXiznSgZ9sMXILZ0S1xZrXiagATpQUpxnQ==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "chalk": "^4.1.0",
- "filesize": "^6.1.0",
- "nullthrows": "^1.1.1",
- "ora": "^5.2.0",
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "term-size": "^2.2.1",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@parcel/reporter-dev-server": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-upA2rugECBsLb8JzG8A7iNrl7EYYNpnNwuW/o4x6aDWYSa3bdx0XI/1K2+9zHxj5V5bj3n0mDH6qw65f25ykEg==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "connect": "^3.7.0",
- "ejs": "^2.6.1",
- "http-proxy-middleware": "^1.0.0",
- "nullthrows": "^1.1.1",
- "serve-handler": "^6.0.0",
- "ws": "^7.0.0"
- }
- },
- "@parcel/resolver-default": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-b79IUkDIVQ4LGuFsWWCdSqrXrU6bPR+AouMb1vH4Dbu8ljdqAdVHs3fu5TnAHBY2o0cXhm1KD3ecH7iEz/h8EA==",
- "requires": {
- "@parcel/node-resolver-core": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0"
- }
- },
- "@parcel/runtime-browser-hmr": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-PTljXkNp4ZH9iOIgEg3EpdSPqrPfPssOGUE3W4tTvE6r/DfweqhiyQCHL7XWbFaG4uXJACko8WVqJAtXadcUDQ==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0"
- }
- },
- "@parcel/runtime-js": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-L+7umxrp0VrOJB6FooGmDvxbXGseVXibeHqluMsRpN0tmh3bwxhPbWl2KGhtxvWCFVADKHtZo9sBIcnTU4Dp/Q==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1"
- }
- },
- "@parcel/runtime-react-refresh": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-KuIz9vI6zWcA7IOAYR8ldCby7DnqhtZwR5LG3GU0oH4QUckUdheH5Pi35qg0wpFy2N9KSRRbNarXps4WQ0IJvg==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "react-refresh": "^0.9.0"
- },
- "dependencies": {
- "react-refresh": {
- "version": "0.9.0",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ=="
- }
- }
- },
- "@parcel/source-map": {
- "version": "2.0.0-rc.6",
- "integrity": "sha512-qtXLd9dbxWx/ybe1dduAzAGzb7iTSQv3imNZo7pVyEtSaCcphg+rTmY8/Fg3MQqqu7of/2+tEqNAGMz8nOJyUA==",
- "requires": {
- "detect-libc": "^1.0.3",
- "globby": "^11.0.3"
- }
- },
- "@parcel/transformer-babel": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-z0SapRmPycI1sQ4h+Gs+i14bzv97VCz3q1moTzsD8DhkPPuFRBXS7N/cxmRIGqXt8P0qaffJ+gsf4jN0ji3JWg==",
- "requires": {
- "@babel/core": "^7.12.0",
- "@babel/generator": "^7.9.0",
- "@babel/helper-compilation-targets": "^7.8.4",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@parcel/babel-ast-utils": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "browserslist": "^4.6.6",
- "core-js": "^3.2.1",
- "nullthrows": "^1.1.1",
- "semver": "^5.7.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/transformer-css": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-KJ/Xc1GqirUSr8BZ/UoPMcwXaDFqtc/E9bGfPGdWiPND/R4x24GHPtY1IsT7V4BBQ1hiO4Yw8C8jl1BgheWS+w==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "postcss": "^8.3.0",
- "postcss-value-parser": "^4.1.0",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "postcss": {
- "version": "8.3.6",
- "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
- "requires": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map-js": "^0.6.2"
- }
- },
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/transformer-html": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-jGzgxDiN7YrsosG9kwGeGSEz+gCUvl1tP4EJIx4PY401bYOlr31+ppR/7aGWQ+BxmsG4SL7QTxU4KZ42TE7gEQ==",
- "requires": {
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4",
- "posthtml-parser": "^0.9.0",
- "posthtml-render": "^2.0.6",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/transformer-js": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-zmp2ha7fnIBCG7d56MBneXjZxhOBcJLXpO+3rpiwGoic2fQdcNk702QHGBmfqnZW4u/pebGZpolj/wUqtP0bcQ==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/utils": "2.0.0-rc.0",
- "@swc/helpers": "^0.2.11",
- "browserslist": "^4.6.6",
- "detect-libc": "^1.0.3",
- "micromatch": "^4.0.2",
- "nullthrows": "^1.1.1",
- "regenerator-runtime": "^0.13.7",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/transformer-json": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-nTGPI5gyDP166FjDafzOw8WhBOqq9T95j3Q7qSmdXQ3og6Tm5pzN92YDsAXhcaIkRhJeof5eRG3Q1XsoGR0n9g==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "json5": "^2.1.0"
- },
- "dependencies": {
- "json5": {
- "version": "2.2.0",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "requires": {
- "minimist": "^1.2.5"
- }
- }
- }
- },
- "@parcel/transformer-postcss": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-VqYBjLP1wmBrUFkazUvN7O4XYD61NCAtvKfTuH6P4eer8+GbeSFeYiG5vpXpbleRk2u9o2aJ5iyzY0Rie8ogiA==",
- "requires": {
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "clone": "^2.1.1",
- "css-modules-loader-core": "^1.1.0",
- "nullthrows": "^1.1.1",
- "postcss-modules": "^3.2.2",
- "postcss-value-parser": "^4.1.0",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/transformer-posthtml": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-RcpCUNNm70V+HeR3l6onhLeflZAwytgmVdb8TDFkTkoZ7GVZ2qdkMuYBhz4aTnLZZm+/Fjh8kRJMkIFYOLx1mA==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "nullthrows": "^1.1.1",
- "posthtml": "^0.16.4",
- "posthtml-parser": "^0.9.0",
- "posthtml-render": "^2.0.6",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "@parcel/transformer-raw": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-yyu1y0ViatnY05JdU8uqA1iypcdYx9qrt0ZliJZYT5WGb5eYZXtc500sk6x7Mpch35RiQzIjUFg6oBvgCnTqAw==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0"
- }
- },
- "@parcel/transformer-react-refresh-wrap": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-pwF00jhJ+H108ZhZY/L/wOklDNC91+Slv/INN0avFa3c1xBceDLEb7363mZzvRJThaFChxwya7siuuohKc0xqw==",
- "requires": {
- "@parcel/plugin": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "react-refresh": "^0.9.0"
- },
- "dependencies": {
- "react-refresh": {
- "version": "0.9.0",
- "integrity": "sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ=="
- }
- }
- },
- "@parcel/types": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-v1/pS/benX/ekED8FC5kcKfUJffuPcvllzuZKaBlV5rsMwlRbMtdWfRfJ+ibdEIqjvJRtflt84p88Oo725SMQA==",
- "requires": {
- "@parcel/cache": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/package-manager": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "@parcel/workers": "2.0.0-rc.0",
- "utility-types": "^3.10.0"
- }
- },
- "@parcel/utils": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-4W5HT3zILVH0c8W1SMu6jPYtjEy7qh2IOSDR2KiUlT1jFF1OOjd4iQFAEYvHP0iBr1mdiSwXEdkEMhm4hR9xYA==",
- "requires": {
- "@iarna/toml": "^2.2.0",
- "@parcel/codeframe": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/hash": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/markdown-ansi": "2.0.0-rc.0",
- "@parcel/source-map": "2.0.0-rc.6",
- "ansi-html": "^0.0.7",
- "chalk": "^4.1.0",
- "clone": "^2.1.1",
- "fast-glob": "3.1.1",
- "fastest-levenshtein": "^1.0.8",
- "is-glob": "^4.0.0",
- "is-url": "^1.2.2",
- "json5": "^1.0.1",
- "lru-cache": "^6.0.0",
- "micromatch": "^3.0.4",
- "node-forge": "^0.10.0",
- "nullthrows": "^1.1.1",
- "open": "^7.0.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "fill-range": {
- "version": "4.0.0",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "is-number": {
- "version": "3.0.0",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
- }
- },
- "@parcel/watcher": {
- "version": "2.0.0-alpha.10",
- "integrity": "sha512-8uA7Tmx/1XvmUdGzksg0+oN7uj24pXFFnKJqZr3L3mgYjdrL7CMs3PRIHv1k3LUz/hNRsb/p3qxztSkWz1IGZA==",
- "requires": {
- "node-addon-api": "^3.0.2",
- "node-gyp-build": "^4.2.3"
- }
- },
- "@parcel/workers": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-HYRr8wg+PwRpZJDFpAZ0te6jVJKQlg4QkfH9nV0u9BktBVs/fmRWH/t4qYZz2c4W2zF+xIe8EfZbkafeETH67Q==",
- "requires": {
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/types": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "chrome-trace-event": "^1.0.2",
- "nullthrows": "^1.1.1"
- }
- },
- "@swc/helpers": {
- "version": "0.2.13",
- "integrity": "sha512-HxfZHtTgDlME7fH+KIwBrm1B1+2iB3UpbcSbPCZzDAHxZ3z+qfjflHverm33sXrdyQYx4s3J7r6ot76433mwEg=="
- },
- "@trysound/sax": {
- "version": "0.1.1",
- "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow=="
- },
- "@types/async-retry": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.2.1.tgz",
- "integrity": "sha512-yMQ6CVgICWtyFNBqJT3zqOc+TnqqEPLo4nKJNPFwcialiylil38Ie6q1ENeFTjvaLOkVim9K5LisHgAKJWidGQ=="
- },
- "@types/hast": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
- "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/http-proxy": {
- "version": "1.17.7",
- "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/lru-cache": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-4.1.1.tgz",
- "integrity": "sha512-8mNEUG6diOrI6pMqOHrHPDBB1JsrpedeMK9AWGzVCQ7StRRribiT9BRvUmF8aUws9iBbVlgVekOT5Sgzc1MTKw=="
- },
- "@types/mdast": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
- "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/node": {
- "version": "16.7.10",
- "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA=="
- },
- "@types/node-fetch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.3.2.tgz",
- "integrity": "sha512-yW0EOebSsQme9yKu09XbdDfle4/SmWZMK4dfteWcSLCYNQQcF+YOv0kIrvm+9pO11/ghA4E6A+RNQqvYj4Nr3A==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/parse5": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
- "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw=="
- },
- "@types/prop-types": {
- "version": "15.7.4",
- "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==",
- "dev": true
- },
- "@types/react": {
- "version": "17.0.20",
- "integrity": "sha512-wWZrPlihslrPpcKyCSlmIlruakxr57/buQN1RjlIeaaTWDLtJkTtRW429MoQJergvVKc4IWBpRhWw7YNh/7GVA==",
- "dev": true,
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/scheduler": {
- "version": "0.16.2",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "@types/unist": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
- "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
- },
- "@vercel/fetch": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@vercel/fetch/-/fetch-6.1.1.tgz",
- "integrity": "sha512-nddCkgpA0aVIqOlzh+qVlzDNcQq0cSnqefM+x6SciGI4GCvVZeaZ7WEowgX8I/HwBAq8Uj5Bdnd+r0+sYsJsig==",
- "requires": {
- "@types/async-retry": "1.2.1",
- "@vercel/fetch-cached-dns": "^2.0.2",
- "@vercel/fetch-retry": "^5.0.2",
- "agentkeepalive": "3.4.1",
- "debug": "3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "@vercel/fetch-cached-dns": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@vercel/fetch-cached-dns/-/fetch-cached-dns-2.0.2.tgz",
- "integrity": "sha512-gDqKEV8CeY2YmCdZpP1rn3tFK1L07Vw2+HYkCK8zpRHOVGr/sP8yhBsW+C/yqGVj0i9z/rIvqIHe5emvRvxwgw==",
- "requires": {
- "@types/node-fetch": "2.3.2",
- "@zeit/dns-cached-resolve": "2.1.2"
- }
- },
- "@vercel/fetch-retry": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@vercel/fetch-retry/-/fetch-retry-5.0.3.tgz",
- "integrity": "sha512-DIIoBY92r+sQ6iHSf5WjKiYvkdsDIMPWKYATlE0KcUAj2RV6SZK9UWpUzBRKsofXqedOqpVjrI0IE6AWL7JRtg==",
- "requires": {
- "async-retry": "^1.3.1",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "@zeit/dns-cached-resolve": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@zeit/dns-cached-resolve/-/dns-cached-resolve-2.1.2.tgz",
- "integrity": "sha512-A/5gbBskKPETTBqHwvlaW1Ri2orO62yqoFoXdxna1SQ7A/lXjpWgpJ1wdY3IQEcz5LydpS4sJ8SzI2gFyyLEhg==",
- "requires": {
- "@types/async-retry": "1.2.1",
- "@types/lru-cache": "4.1.1",
- "@types/node": "10.12.18",
- "async-retry": "1.2.3",
- "lru-cache": "5.1.1"
- },
- "dependencies": {
- "@types/node": {
- "version": "10.12.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
- "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ=="
- },
- "async-retry": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz",
- "integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==",
- "requires": {
- "retry": "0.12.0"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- }
- }
- },
- "abab": {
- "version": "2.0.5",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "abortcontroller-polyfill": {
- "version": "1.7.3",
- "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q=="
- },
- "acorn": {
- "version": "6.4.2",
- "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ=="
- },
- "acorn-globals": {
- "version": "4.3.4",
- "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
- "requires": {
- "acorn": "^6.0.1",
- "acorn-walk": "^6.0.1"
- }
- },
- "acorn-walk": {
- "version": "6.2.0",
- "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA=="
- },
- "agentkeepalive": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.4.1.tgz",
- "integrity": "sha512-MPIwsZU9PP9kOrZpyu2042kYA8Fdt/AedQYkYXucHgF9QoD9dXVp0ypuGnHXSR0hTstBxdt85Xkh4JolYfK5wg==",
- "requires": {
- "humanize-ms": "^1.2.1"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "alphanum-sort": {
- "version": "1.0.2",
- "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
- },
- "anser": {
- "version": "1.4.9",
- "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA=="
- },
- "ansi-html": {
- "version": "0.0.7",
- "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4="
- },
- "ansi-regex": {
- "version": "5.0.0",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
- },
- "ansi-styles": {
- "version": "3.2.1",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
- },
- "arr-flatten": {
- "version": "1.1.0",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
- },
- "arr-union": {
- "version": "3.1.0",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
- },
- "array-equal": {
- "version": "1.0.0",
- "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM="
- },
- "array-union": {
- "version": "2.1.0",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
- },
- "array-unique": {
- "version": "0.3.2",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
- },
- "asn1": {
- "version": "0.2.4",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "asn1.js": {
- "version": "5.4.1",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- }
- }
- },
- "assert": {
- "version": "2.0.0",
- "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
- "requires": {
- "es6-object-assign": "^1.1.0",
- "is-nan": "^1.2.1",
- "object-is": "^1.0.1",
- "util": "^0.12.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- },
- "assign-symbols": {
- "version": "1.0.0",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
- },
- "ast-types": {
- "version": "0.13.2",
- "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA=="
- },
- "astral-regex": {
- "version": "2.0.0",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
- },
- "astring": {
- "version": "1.7.5",
- "integrity": "sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA=="
- },
- "async-limiter": {
- "version": "1.0.1",
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
- },
- "async-retry": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
- "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
- "requires": {
- "retry": "0.13.1"
- }
- },
- "asynckit": {
- "version": "0.4.0",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "atob": {
- "version": "2.1.2",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
- },
- "available-typed-arrays": {
- "version": "1.0.5",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
- },
- "aws-sign2": {
- "version": "0.7.0",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.11.0",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
- },
- "bail": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
- "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ=="
- },
- "balanced-match": {
- "version": "1.0.2",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "base": {
- "version": "0.11.2",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "base-x": {
- "version": "3.0.8",
- "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "base64-js": {
- "version": "1.5.1",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "big.js": {
- "version": "5.2.2",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
- },
- "binary-extensions": {
- "version": "2.2.0",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
- },
- "bl": {
- "version": "4.1.0",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "bn.js": {
- "version": "5.2.0",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw=="
- },
- "boolbase": {
- "version": "1.0.0",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "brorand": {
- "version": "1.1.0",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
- },
- "browser-process-hrtime": {
- "version": "1.0.0",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
- },
- "browserify-aes": {
- "version": "1.2.0",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "browserify-cipher": {
- "version": "1.0.1",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "requires": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
- }
- },
- "browserify-des": {
- "version": "1.0.2",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "requires": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "browserify-rsa": {
- "version": "4.1.0",
- "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "requires": {
- "bn.js": "^5.0.0",
- "randombytes": "^2.0.1"
- }
- },
- "browserify-sign": {
- "version": "4.2.1",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
- "requires": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
- "create-hash": "^1.2.0",
- "create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
- "inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- }
- },
- "browserify-zlib": {
- "version": "0.2.0",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "requires": {
- "pako": "~1.0.5"
- }
- },
- "browserslist": {
- "version": "4.16.6",
- "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
- "requires": {
- "caniuse-lite": "^1.0.30001219",
- "colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.723",
- "escalade": "^3.1.1",
- "node-releases": "^1.1.71"
- }
- },
- "buffer": {
- "version": "5.6.0",
- "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
- }
- },
- "buffer-from": {
- "version": "1.1.2",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "buffer-xor": {
- "version": "1.0.3",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
- },
- "builtin-status-codes": {
- "version": "3.0.0",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
- },
- "bun-framework-next": {
- "version": "0.0.0-18",
- "resolved": "https://registry.npmjs.org/bun-framework-next/-/bun-framework-next-0.0.0-18.tgz",
- "integrity": "sha512-ZOlRzbZKCeGiE379TOnW38xtg6nSYZBwube0ZfjIn3ZWk8cQbArMm9G0BUvBSIVvSuiACDtYn3LLxebTFgRezA==",
- "dev": true,
- "requires": {
- "react-is": "^17.0.2"
- }
- },
- "bytes": {
- "version": "3.1.0",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
- },
- "cache-base": {
- "version": "1.0.1",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "caniuse-api": {
- "version": "3.0.0",
- "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
- "requires": {
- "browserslist": "^4.0.0",
- "caniuse-lite": "^1.0.0",
- "lodash.memoize": "^4.1.2",
- "lodash.uniq": "^4.5.0"
- }
- },
- "caniuse-lite": {
- "version": "1.0.30001254",
- "integrity": "sha512-GxeHOvR0LFMYPmFGA+NiTOt9uwYDxB3h154tW2yBYwfz2EMX3i1IBgr6gmJGfU0K8KQsqPa5XqLD8zVdP5lUzA=="
- },
- "caseless": {
- "version": "0.12.0",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "chalk": {
- "version": "2.4.2",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="
- },
- "character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
- },
- "character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
- },
- "cheerio": {
- "version": "1.0.0-rc.10",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
- "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
- "requires": {
- "cheerio-select": "^1.5.0",
- "dom-serializer": "^1.3.2",
- "domhandler": "^4.2.0",
- "htmlparser2": "^6.1.0",
- "parse5": "^6.0.1",
- "parse5-htmlparser2-tree-adapter": "^6.0.1",
- "tslib": "^2.2.0"
- },
- "dependencies": {
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- }
- }
- },
- "cheerio-select": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
- "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
- "requires": {
- "css-select": "^4.1.3",
- "css-what": "^5.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.7.0"
- }
- },
- "chokidar": {
- "version": "3.5.1",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.3.1",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- }
- },
- "chrome-trace-event": {
- "version": "1.0.3",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
- },
- "cipher-base": {
- "version": "1.0.4",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "class-utils": {
- "version": "0.3.6",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "classnames": {
- "version": "2.2.6",
- "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
- },
- "cli-cursor": {
- "version": "3.1.0",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cli-spinners": {
- "version": "2.6.0",
- "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q=="
- },
- "clone": {
- "version": "2.1.2",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
- },
- "collection-visit": {
- "version": "1.0.0",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "colord": {
- "version": "2.7.0",
- "integrity": "sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q=="
- },
- "colorette": {
- "version": "1.3.0",
- "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w=="
- },
- "combined-stream": {
- "version": "1.0.8",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "comma-separated-tokens": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
- "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
- },
- "command-exists": {
- "version": "1.2.9",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
- },
- "commander": {
- "version": "7.2.0",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
- },
- "commondir": {
- "version": "1.0.1",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
- },
- "component-emitter": {
- "version": "1.3.0",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
- },
- "concat-map": {
- "version": "0.0.1",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "connect": {
- "version": "3.7.0",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "requires": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "console-browserify": {
- "version": "1.2.0",
- "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
- },
- "constants-browserify": {
- "version": "1.0.0",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
- },
- "content-disposition": {
- "version": "0.5.2",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
- },
- "convert-source-map": {
- "version": "1.8.0",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "requires": {
- "safe-buffer": "~5.1.1"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- }
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
- },
- "core-js": {
- "version": "3.17.2",
- "integrity": "sha512-XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA=="
- },
- "core-util-is": {
- "version": "1.0.2",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "create-ecdh": {
- "version": "4.0.4",
- "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.5.3"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- }
- }
- },
- "create-hash": {
- "version": "1.2.0",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "create-hmac": {
- "version": "1.1.7",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "cross-spawn": {
- "version": "6.0.5",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "crypto-browserify": {
- "version": "3.12.0",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "requires": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
- }
- },
- "css-color-names": {
- "version": "1.0.1",
- "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA=="
- },
- "css-declaration-sorter": {
- "version": "6.1.1",
- "integrity": "sha512-BZ1aOuif2Sb7tQYY1GeCjG7F++8ggnwUkH5Ictw0mrdpqpEd+zWmcPdstnH2TItlb74FqR0DrVEieon221T/1Q==",
- "requires": {
- "timsort": "^0.3.0"
- }
- },
- "css-modules-loader-core": {
- "version": "1.1.0",
- "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=",
- "requires": {
- "icss-replace-symbols": "1.1.0",
- "postcss": "6.0.1",
- "postcss-modules-extract-imports": "1.1.0",
- "postcss-modules-local-by-default": "1.2.0",
- "postcss-modules-scope": "1.1.0",
- "postcss-modules-values": "1.3.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "2.2.1",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "chalk": {
- "version": "1.1.3",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "6.0.1",
- "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=",
- "requires": {
- "chalk": "^1.1.3",
- "source-map": "^0.5.6",
- "supports-color": "^3.2.3"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "3.2.3",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "css-select": {
- "version": "4.1.3",
- "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^5.0.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.6.0",
- "nth-check": "^2.0.0"
- }
- },
- "css-selector-tokenizer": {
- "version": "0.7.3",
- "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
- "requires": {
- "cssesc": "^3.0.0",
- "fastparse": "^1.1.2"
- }
- },
- "css-tree": {
- "version": "1.1.3",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "requires": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "css-what": {
- "version": "5.0.1",
- "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg=="
- },
- "css.escape": {
- "version": "1.5.1",
- "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
- },
- "cssesc": {
- "version": "3.0.0",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
- },
- "cssnano": {
- "version": "5.0.8",
- "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==",
- "requires": {
- "cssnano-preset-default": "^5.1.4",
- "is-resolvable": "^1.1.0",
- "lilconfig": "^2.0.3",
- "yaml": "^1.10.2"
- }
- },
- "cssnano-preset-default": {
- "version": "5.1.4",
- "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==",
- "requires": {
- "css-declaration-sorter": "^6.0.3",
- "cssnano-utils": "^2.0.1",
- "postcss-calc": "^8.0.0",
- "postcss-colormin": "^5.2.0",
- "postcss-convert-values": "^5.0.1",
- "postcss-discard-comments": "^5.0.1",
- "postcss-discard-duplicates": "^5.0.1",
- "postcss-discard-empty": "^5.0.1",
- "postcss-discard-overridden": "^5.0.1",
- "postcss-merge-longhand": "^5.0.2",
- "postcss-merge-rules": "^5.0.2",
- "postcss-minify-font-values": "^5.0.1",
- "postcss-minify-gradients": "^5.0.2",
- "postcss-minify-params": "^5.0.1",
- "postcss-minify-selectors": "^5.1.0",
- "postcss-normalize-charset": "^5.0.1",
- "postcss-normalize-display-values": "^5.0.1",
- "postcss-normalize-positions": "^5.0.1",
- "postcss-normalize-repeat-style": "^5.0.1",
- "postcss-normalize-string": "^5.0.1",
- "postcss-normalize-timing-functions": "^5.0.1",
- "postcss-normalize-unicode": "^5.0.1",
- "postcss-normalize-url": "^5.0.2",
- "postcss-normalize-whitespace": "^5.0.1",
- "postcss-ordered-values": "^5.0.2",
- "postcss-reduce-initial": "^5.0.1",
- "postcss-reduce-transforms": "^5.0.1",
- "postcss-svgo": "^5.0.2",
- "postcss-unique-selectors": "^5.0.1"
- }
- },
- "cssnano-preset-simple": {
- "version": "3.0.0",
- "integrity": "sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==",
- "requires": {
- "caniuse-lite": "^1.0.30001202"
- }
- },
- "cssnano-simple": {
- "version": "3.0.0",
- "integrity": "sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==",
- "requires": {
- "cssnano-preset-simple": "^3.0.0"
- }
- },
- "cssnano-utils": {
- "version": "2.0.1",
- "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ=="
- },
- "csso": {
- "version": "4.2.0",
- "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
- "requires": {
- "css-tree": "^1.1.2"
- }
- },
- "cssom": {
- "version": "0.3.8",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
- },
- "cssstyle": {
- "version": "1.4.0",
- "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
- "requires": {
- "cssom": "0.3.x"
- }
- },
- "csstype": {
- "version": "3.0.8",
- "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==",
- "dev": true
- },
- "dashdash": {
- "version": "1.14.1",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "data-uri-to-buffer": {
- "version": "3.0.1",
- "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
- },
- "data-urls": {
- "version": "1.1.0",
- "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
- "requires": {
- "abab": "^2.0.0",
- "whatwg-mimetype": "^2.2.0",
- "whatwg-url": "^7.0.0"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "tr46": {
- "version": "1.0.1",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "whatwg-url": {
- "version": "7.1.0",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- }
- }
- },
- "date-fns": {
- "version": "2.23.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz",
- "integrity": "sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA=="
- },
- "debug": {
- "version": "4.3.2",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
- },
- "deep-is": {
- "version": "0.1.4",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
- },
- "defaults": {
- "version": "1.0.3",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "requires": {
- "clone": "^1.0.2"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.4",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
- }
- }
- },
- "define-properties": {
- "version": "1.1.3",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "requires": {
- "object-keys": "^1.0.12"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "depd": {
- "version": "1.1.2",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
- },
- "dequal": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz",
- "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug=="
- },
- "des.js": {
- "version": "1.0.1",
- "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
- "requires": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "detect-libc": {
- "version": "1.0.3",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
- },
- "diffie-hellman": {
- "version": "5.0.3",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "requires": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- }
- }
- },
- "dir-glob": {
- "version": "3.0.1",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "dom-serializer": {
- "version": "1.3.2",
- "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- }
- },
- "domain-browser": {
- "version": "4.19.0",
- "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ=="
- },
- "domelementtype": {
- "version": "2.2.0",
- "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
- },
- "domexception": {
- "version": "1.0.1",
- "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
- "requires": {
- "webidl-conversions": "^4.0.2"
- }
- },
- "domhandler": {
- "version": "4.2.2",
- "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
- "requires": {
- "domelementtype": "^2.2.0"
- }
- },
- "domutils": {
- "version": "2.8.0",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- }
- },
- "dotenv": {
- "version": "7.0.0",
- "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g=="
- },
- "dotenv-expand": {
- "version": "5.1.0",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA=="
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "ejs": {
- "version": "2.7.4",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA=="
- },
- "electron-to-chromium": {
- "version": "1.3.830",
- "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ=="
- },
- "elliptic": {
- "version": "6.5.4",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "requires": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- }
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "emojis-list": {
- "version": "3.0.0",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
- },
- "emphasize": {
- "version": "4.2.0",
- "integrity": "sha512-yGKvcFUHlBsUPwlxTlzKLR8+zhpbitkFOMCUxN8fTJng9bdH3WNzUGkhdaGdjndSUgqmMPBN7umfwnUdLz5Axg==",
- "requires": {
- "chalk": "^4.0.0",
- "highlight.js": "~10.4.0",
- "lowlight": "~1.17.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "encodeurl": {
- "version": "1.0.2",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
- },
- "encoding": {
- "version": "0.1.13",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "requires": {
- "iconv-lite": "^0.6.2"
- }
- },
- "entities": {
- "version": "2.2.0",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
- },
- "es-abstract": {
- "version": "1.18.5",
- "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==",
- "requires": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.3",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.3",
- "is-string": "^1.0.6",
- "object-inspect": "^1.11.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "es6-object-assign": {
- "version": "1.1.0",
- "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw="
- },
- "escalade": {
- "version": "3.1.1",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
- },
- "escape-html": {
- "version": "1.0.3",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
- },
- "escodegen": {
- "version": "1.14.3",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
- "requires": {
- "esprima": "^4.0.1",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "optional": true
- }
- }
- },
- "esm": {
- "version": "3.2.25",
- "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
- },
- "esprima": {
- "version": "4.0.1",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
- },
- "estraverse": {
- "version": "4.3.0",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
- },
- "esutils": {
- "version": "2.0.3",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
- },
- "etag": {
- "version": "1.8.1",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
- },
- "eventemitter3": {
- "version": "4.0.7",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
- },
- "events": {
- "version": "3.3.0",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
- },
- "evp_bytestokey": {
- "version": "1.0.3",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- },
- "ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "extend-shallow": {
- "version": "3.0.2",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "extglob": {
- "version": "2.0.4",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- }
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-glob": {
- "version": "3.1.1",
- "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==",
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.2"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
- },
- "fast-url-parser": {
- "version": "1.1.3",
- "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=",
- "requires": {
- "punycode": "^1.3.2"
- }
- },
- "fastest-levenshtein": {
- "version": "1.0.12",
- "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
- },
- "fastparse": {
- "version": "1.1.2",
- "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ=="
- },
- "fastq": {
- "version": "1.12.0",
- "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==",
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fault": {
- "version": "1.0.4",
- "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
- "requires": {
- "format": "^0.2.0"
- }
- },
- "filesize": {
- "version": "6.4.0",
- "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ=="
- },
- "fill-range": {
- "version": "7.0.1",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "finalhandler": {
- "version": "1.1.2",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "find-cache-dir": {
- "version": "3.3.1",
- "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "follow-redirects": {
- "version": "1.14.3",
- "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
- },
- "for-in": {
- "version": "1.0.2",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
- },
- "foreach": {
- "version": "2.0.5",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
- },
- "forever-agent": {
- "version": "0.6.1",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "form-data": {
- "version": "2.3.3",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "format": {
- "version": "0.2.2",
- "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
- },
- "fragment-cache": {
- "version": "0.2.1",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fsevents": {
- "version": "2.3.2",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "generic-names": {
- "version": "2.0.1",
- "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==",
- "requires": {
- "loader-utils": "^1.1.0"
- }
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
- },
- "get-intrinsic": {
- "version": "1.1.1",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
- }
- },
- "get-orientation": {
- "version": "1.1.2",
- "integrity": "sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==",
- "requires": {
- "stream-parser": "^0.3.1"
- }
- },
- "get-port": {
- "version": "4.2.0",
- "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw=="
- },
- "get-value": {
- "version": "2.0.6",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
- },
- "getpass": {
- "version": "0.1.7",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "github-slugger": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz",
- "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ=="
- },
- "glob": {
- "version": "7.1.7",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "glob-to-regexp": {
- "version": "0.4.1",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
- },
- "globals": {
- "version": "13.11.0",
- "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.0.4",
- "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.1.1",
- "ignore": "^5.1.4",
- "merge2": "^1.3.0",
- "slash": "^3.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.8",
- "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
- },
- "har-schema": {
- "version": "2.0.0",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
- },
- "har-validator": {
- "version": "5.1.5",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "has": {
- "version": "1.0.3",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "requires": {
- "ansi-regex": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- }
- }
- },
- "has-bigints": {
- "version": "1.0.1",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
- },
- "has-flag": {
- "version": "3.0.0",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "has-symbols": {
- "version": "1.0.2",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "has-value": {
- "version": "1.0.0",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "3.0.0",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hash-base": {
- "version": "3.1.0",
- "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "requires": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- }
- },
- "hash.js": {
- "version": "1.1.7",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "hast-to-hyperscript": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz",
- "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==",
- "requires": {
- "@types/unist": "^2.0.3",
- "comma-separated-tokens": "^1.0.0",
- "property-information": "^5.3.0",
- "space-separated-tokens": "^1.0.0",
- "style-to-object": "^0.3.0",
- "unist-util-is": "^4.0.0",
- "web-namespaces": "^1.0.0"
- }
- },
- "hast-util-from-parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz",
- "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==",
- "requires": {
- "@types/parse5": "^5.0.0",
- "hastscript": "^6.0.0",
- "property-information": "^5.0.0",
- "vfile": "^4.0.0",
- "vfile-location": "^3.2.0",
- "web-namespaces": "^1.0.0"
- }
- },
- "hast-util-parse-selector": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
- "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ=="
- },
- "hast-util-raw": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz",
- "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==",
- "requires": {
- "@types/hast": "^2.0.0",
- "hast-util-from-parse5": "^6.0.0",
- "hast-util-to-parse5": "^6.0.0",
- "html-void-elements": "^1.0.0",
- "parse5": "^6.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0",
- "vfile": "^4.0.0",
- "web-namespaces": "^1.0.0",
- "xtend": "^4.0.0",
- "zwitch": "^1.0.0"
- },
- "dependencies": {
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- }
- },
- "unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- }
- }
- },
- "hast-util-sanitize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz",
- "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==",
- "requires": {
- "@types/hast": "^2.0.0"
- }
- },
- "hast-util-to-parse5": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz",
- "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==",
- "requires": {
- "hast-to-hyperscript": "^9.0.0",
- "property-information": "^5.0.0",
- "web-namespaces": "^1.0.0",
- "xtend": "^4.0.0",
- "zwitch": "^1.0.0"
- }
- },
- "hast-util-to-string": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz",
- "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w=="
- },
- "hastscript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
- "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
- "requires": {
- "@types/hast": "^2.0.0",
- "comma-separated-tokens": "^1.0.0",
- "hast-util-parse-selector": "^2.0.0",
- "property-information": "^5.0.0",
- "space-separated-tokens": "^1.0.0"
- }
- },
- "he": {
- "version": "1.2.0",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
- },
- "highlight.js": {
- "version": "10.4.1",
- "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg=="
- },
- "hmac-drbg": {
- "version": "1.0.1",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "html-encoding-sniffer": {
- "version": "1.0.2",
- "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
- "requires": {
- "whatwg-encoding": "^1.0.1"
- }
- },
- "html-tags": {
- "version": "1.2.0",
- "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g="
- },
- "html-void-elements": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz",
- "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w=="
- },
- "htmlnano": {
- "version": "1.0.0",
- "integrity": "sha512-1lmF8MK6UZEEOtSusKn4/NJhJxw8vMb6lqie6Vmd80gxykPVstCqYGr4EYNlfkbLNQomQW++qHmnBDAe1XEytw==",
- "requires": {
- "cssnano": "^5.0.0",
- "postcss": "^8.2.9",
- "posthtml": "^0.15.2",
- "purgecss": "^4.0.0",
- "relateurl": "^0.2.7",
- "srcset": "^3.0.0",
- "svgo": "^2.3.0",
- "terser": "^5.6.1",
- "timsort": "^0.3.0",
- "uncss": "^0.17.3"
- },
- "dependencies": {
- "posthtml": {
- "version": "0.15.2",
- "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==",
- "requires": {
- "posthtml-parser": "^0.7.2",
- "posthtml-render": "^1.3.1"
- }
- },
- "posthtml-parser": {
- "version": "0.7.2",
- "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==",
- "requires": {
- "htmlparser2": "^6.0.0"
- }
- },
- "posthtml-render": {
- "version": "1.4.0",
- "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw=="
- }
- }
- },
- "htmlparser2": {
- "version": "6.1.0",
- "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- },
- "http-errors": {
- "version": "1.7.3",
- "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "http-proxy": {
- "version": "1.18.1",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
- "requires": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- }
- },
- "http-proxy-middleware": {
- "version": "1.3.1",
- "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==",
- "requires": {
- "@types/http-proxy": "^1.17.5",
- "http-proxy": "^1.18.1",
- "is-glob": "^4.0.1",
- "is-plain-obj": "^3.0.0",
- "micromatch": "^4.0.2"
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "https-browserify": {
- "version": "1.0.0",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
- },
- "humanize-ms": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
- "requires": {
- "ms": "^2.0.0"
- }
- },
- "iconv-lite": {
- "version": "0.6.3",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- },
- "icss-replace-symbols": {
- "version": "1.1.0",
- "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0="
- },
- "icss-utils": {
- "version": "4.1.1",
- "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
- "requires": {
- "postcss": "^7.0.14"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.36",
- "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "6.1.0",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
- },
- "iferr": {
- "version": "1.0.2",
- "integrity": "sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg=="
- },
- "ignore": {
- "version": "5.1.8",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw=="
- },
- "image-size": {
- "version": "1.0.0",
- "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==",
- "requires": {
- "queue": "6.0.2"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
- },
- "indexes-of": {
- "version": "1.0.1",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
- },
- "inflight": {
- "version": "1.0.6",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "inline-style-parser": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
- "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
- },
- "internal-slot": {
- "version": "1.0.3",
- "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
- "requires": {
- "get-intrinsic": "^1.1.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "is-absolute-url": {
- "version": "3.0.3",
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q=="
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
- },
- "is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "requires": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- }
- },
- "is-arguments": {
- "version": "1.1.1",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-bigint": {
- "version": "1.0.4",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-boolean-object": {
- "version": "1.1.2",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "is-callable": {
- "version": "1.2.4",
- "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-date-object": {
- "version": "1.0.5",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="
- },
- "is-descriptor": {
- "version": "1.0.2",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
- },
- "is-extendable": {
- "version": "1.0.1",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "is-generator-function": {
- "version": "1.0.10",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-glob": {
- "version": "4.0.1",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
- },
- "is-html": {
- "version": "1.1.0",
- "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=",
- "requires": {
- "html-tags": "^1.0.0"
- }
- },
- "is-interactive": {
- "version": "1.0.0",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
- },
- "is-json": {
- "version": "2.0.1",
- "integrity": "sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8="
- },
- "is-nan": {
- "version": "1.3.2",
- "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3"
- }
- },
- "is-negative-zero": {
- "version": "2.0.1",
- "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
- },
- "is-number": {
- "version": "7.0.0",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
- },
- "is-number-object": {
- "version": "1.0.6",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-plain-obj": {
- "version": "3.0.0",
- "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
- },
- "is-plain-object": {
- "version": "2.0.4",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-regex": {
- "version": "1.1.4",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-resolvable": {
- "version": "1.1.0",
- "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
- },
- "is-string": {
- "version": "1.0.7",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-symbol": {
- "version": "1.0.4",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-typed-array": {
- "version": "1.1.8",
- "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-abstract": "^1.18.5",
- "foreach": "^2.0.5",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
- },
- "is-url": {
- "version": "1.2.4",
- "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
- },
- "is-windows": {
- "version": "1.0.2",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
- },
- "is-wsl": {
- "version": "2.2.0",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "isexe": {
- "version": "2.0.0",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "isobject": {
- "version": "3.0.1",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
- },
- "isomorphic-fetch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz",
- "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==",
- "requires": {
- "node-fetch": "^2.6.1",
- "whatwg-fetch": "^3.4.1"
- }
- },
- "isstream": {
- "version": "0.1.2",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "jest-worker": {
- "version": "27.0.0-next.5",
- "integrity": "sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==",
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "8.1.1",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "jsbn": {
- "version": "0.1.1",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "jsdom": {
- "version": "14.1.0",
- "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==",
- "requires": {
- "abab": "^2.0.0",
- "acorn": "^6.0.4",
- "acorn-globals": "^4.3.0",
- "array-equal": "^1.0.0",
- "cssom": "^0.3.4",
- "cssstyle": "^1.1.1",
- "data-urls": "^1.1.0",
- "domexception": "^1.0.1",
- "escodegen": "^1.11.0",
- "html-encoding-sniffer": "^1.0.2",
- "nwsapi": "^2.1.3",
- "parse5": "5.1.0",
- "pn": "^1.1.0",
- "request": "^2.88.0",
- "request-promise-native": "^1.0.5",
- "saxes": "^3.1.9",
- "symbol-tree": "^3.2.2",
- "tough-cookie": "^2.5.0",
- "w3c-hr-time": "^1.0.1",
- "w3c-xmlserializer": "^1.1.2",
- "webidl-conversions": "^4.0.2",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^7.0.0",
- "ws": "^6.1.2",
- "xml-name-validator": "^3.0.0"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "tr46": {
- "version": "1.0.1",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "whatwg-url": {
- "version": "7.1.0",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "ws": {
- "version": "6.2.2",
- "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
- "requires": {
- "async-limiter": "~1.0.0"
- }
- }
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
- },
- "json-schema": {
- "version": "0.2.3",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "json-source-map": {
- "version": "0.6.1",
- "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg=="
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "json5": {
- "version": "1.0.1",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "jsprim": {
- "version": "1.4.1",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
- },
- "levn": {
- "version": "0.3.0",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "lilconfig": {
- "version": "2.0.3",
- "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg=="
- },
- "lmdb-store": {
- "version": "1.6.7",
- "integrity": "sha512-q9q7zNhuFWjSD0fDmyB5hiQkOY3UUJ6LPjhs+W/zJdleRLOLPFR6bAh9nERHGkmEA49sZtZRwFPCwPWGM8qdzA==",
- "requires": {
- "mkdirp": "^1.0.4",
- "msgpackr": "^1.3.7",
- "nan": "^2.14.2",
- "node-gyp-build": "^4.2.3",
- "ordered-binary": "^1.0.0",
- "weak-lru-cache": "^1.0.0"
- },
- "dependencies": {
- "mkdirp": {
- "version": "1.0.4",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
- }
- }
- },
- "loader-utils": {
- "version": "1.4.0",
- "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^1.0.1"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash.camelcase": {
- "version": "4.3.0",
- "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
- },
- "lodash.clone": {
- "version": "4.5.0",
- "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
- },
- "lodash.memoize": {
- "version": "4.1.2",
- "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
- },
- "lodash.sortby": {
- "version": "4.7.0",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
- },
- "lodash.uniq": {
- "version": "4.5.0",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
- },
- "log-symbols": {
- "version": "4.1.0",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "loose-envify": {
- "version": "1.4.0",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "lowlight": {
- "version": "1.17.0",
- "integrity": "sha512-vmtBgYKD+QVNy7tIa7ulz5d//Il9R4MooOVh4nkOf9R9Cb/Dk5TXMSTieg/vDulkBkIWj59/BIlyFQxT9X1oAQ==",
- "requires": {
- "fault": "^1.0.0",
- "highlight.js": "~10.4.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "make-dir": {
- "version": "3.1.0",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
- },
- "map-visit": {
- "version": "1.0.0",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "md5.js": {
- "version": "1.3.5",
- "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "mdast-util-definitions": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz",
- "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==",
- "requires": {
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- }
- },
- "unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- }
- }
- },
- "mdast-util-from-markdown": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
- "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
- "requires": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^2.0.0",
- "micromark": "~2.11.0",
- "parse-entities": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- },
- "dependencies": {
- "mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w=="
- }
- }
- },
- "mdast-util-to-hast": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz",
- "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==",
- "requires": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "mdast-util-definitions": "^4.0.0",
- "mdurl": "^1.0.0",
- "unist-builder": "^2.0.0",
- "unist-util-generated": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- },
- "dependencies": {
- "unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- }
- },
- "unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- }
- }
- },
- "mdast-util-to-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz",
- "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA=="
- },
- "mdn-data": {
- "version": "2.0.14",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
- },
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
- },
- "merge-stream": {
- "version": "2.0.0",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
- },
- "merge2": {
- "version": "1.4.1",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
- },
- "micromark": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
- "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
- "requires": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
- }
- },
- "micromatch": {
- "version": "4.0.4",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- }
- },
- "miller-rabin": {
- "version": "4.0.1",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- }
- }
- },
- "mime-db": {
- "version": "1.33.0",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
- },
- "mime-types": {
- "version": "2.1.18",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "requires": {
- "mime-db": "~1.33.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
- },
- "minimalistic-assert": {
- "version": "1.0.1",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
- },
- "minimatch": {
- "version": "3.0.4",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "mixin-deep": {
- "version": "1.3.2",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "msgpackr": {
- "version": "1.4.3",
- "integrity": "sha512-QxNu1m6L8ZlAZn3bMAkGxCJTs6nLPcBt1j+ku/ksF2leEDAX2aM2srCZCL80HwwkWokzm1et16Oo8MnRkxIN4A==",
- "optional": true,
- "requires": {
- "msgpackr-extract": "^1.0.13"
- }
- },
- "msgpackr-extract": {
- "version": "1.0.13",
- "integrity": "sha512-JlQPllMLETiuQ5Vv3IAz+4uOpd1GZPOoCHv9P5ka5P5gkTssm/ejv0WwS4xAfB9B3vDwrExRwuU8v3HRQtJk2Q==",
- "optional": true,
- "requires": {
- "nan": "^2.14.2",
- "node-gyp-build": "^4.2.3"
- }
- },
- "nan": {
- "version": "2.15.0",
- "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ=="
- },
- "nanoid": {
- "version": "3.1.25",
- "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q=="
- },
- "nanomatch": {
- "version": "1.2.13",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "native-url": {
- "version": "0.3.4",
- "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==",
- "requires": {
- "querystring": "^0.2.0"
- }
- },
- "ncp": {
- "version": "2.0.0",
- "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M="
- },
- "next": {
- "version": "11.1.2",
- "integrity": "sha512-azEYL0L+wFjv8lstLru3bgvrzPvK0P7/bz6B/4EJ9sYkXeW8r5Bjh78D/Ol7VOg0EIPz0CXoe72hzAlSAXo9hw==",
- "requires": {
- "@babel/runtime": "7.15.3",
- "@hapi/accept": "5.0.2",
- "@next/env": "11.1.2",
- "@next/polyfill-module": "11.1.2",
- "@next/react-dev-overlay": "11.1.2",
- "@next/react-refresh-utils": "11.1.2",
- "@next/swc-darwin-arm64": "11.1.2",
- "@next/swc-darwin-x64": "11.1.2",
- "@next/swc-linux-x64-gnu": "11.1.2",
- "@next/swc-win32-x64-msvc": "11.1.2",
- "@node-rs/helper": "1.2.1",
- "assert": "2.0.0",
- "ast-types": "0.13.2",
- "browserify-zlib": "0.2.0",
- "browserslist": "4.16.6",
- "buffer": "5.6.0",
- "caniuse-lite": "^1.0.30001228",
- "chalk": "2.4.2",
- "chokidar": "3.5.1",
- "constants-browserify": "1.0.0",
- "crypto-browserify": "3.12.0",
- "cssnano-simple": "3.0.0",
- "domain-browser": "4.19.0",
- "encoding": "0.1.13",
- "etag": "1.8.1",
- "find-cache-dir": "3.3.1",
- "get-orientation": "1.1.2",
- "https-browserify": "1.0.0",
- "image-size": "1.0.0",
- "jest-worker": "27.0.0-next.5",
- "native-url": "0.3.4",
- "node-fetch": "2.6.1",
- "node-html-parser": "1.4.9",
- "node-libs-browser": "^2.2.1",
- "os-browserify": "0.3.0",
- "p-limit": "3.1.0",
- "path-browserify": "1.0.1",
- "pnp-webpack-plugin": "1.6.4",
- "postcss": "8.2.15",
- "process": "0.11.10",
- "querystring-es3": "0.2.1",
- "raw-body": "2.4.1",
- "react-is": "17.0.2",
- "react-refresh": "0.8.3",
- "stream-browserify": "3.0.0",
- "stream-http": "3.1.1",
- "string_decoder": "1.3.0",
- "styled-jsx": "4.0.1",
- "timers-browserify": "2.0.12",
- "tty-browserify": "0.0.1",
- "use-subscription": "1.5.1",
- "util": "0.12.4",
- "vm-browserify": "1.1.2",
- "watchpack": "2.1.1"
- }
- },
- "nice-try": {
- "version": "1.0.5",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
- },
- "node-addon-api": {
- "version": "3.2.1",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
- },
- "node-fetch": {
- "version": "2.6.1",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
- },
- "node-forge": {
- "version": "0.10.0",
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
- },
- "node-gyp-build": {
- "version": "4.2.3",
- "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg=="
- },
- "node-html-parser": {
- "version": "1.4.9",
- "integrity": "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==",
- "requires": {
- "he": "1.2.0"
- }
- },
- "node-libs-browser": {
- "version": "2.2.1",
- "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
- "requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^3.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.1",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.11.0",
- "vm-browserify": "^1.0.1"
- },
- "dependencies": {
- "assert": {
- "version": "1.5.0",
- "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
- "requires": {
- "object-assign": "^4.1.1",
- "util": "0.10.3"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
- },
- "util": {
- "version": "0.10.3",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "requires": {
- "inherits": "2.0.1"
- }
- }
- }
- },
- "buffer": {
- "version": "4.9.2",
- "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "domain-browser": {
- "version": "1.2.0",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
- },
- "inherits": {
- "version": "2.0.3",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "path-browserify": {
- "version": "0.0.1",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ=="
- },
- "readable-stream": {
- "version": "2.3.7",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "stream-browserify": {
- "version": "2.0.2",
- "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "stream-http": {
- "version": "2.8.3",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "tty-browserify": {
- "version": "0.0.0",
- "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
- },
- "util": {
- "version": "0.11.1",
- "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
- "requires": {
- "inherits": "2.0.3"
- }
- }
- }
- },
- "node-releases": {
- "version": "1.1.75",
- "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw=="
- },
- "normalize-path": {
- "version": "3.0.0",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
- },
- "normalize-url": {
- "version": "6.1.0",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
- },
- "nth-check": {
- "version": "2.0.0",
- "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
- "requires": {
- "boolbase": "^1.0.0"
- }
- },
- "nullthrows": {
- "version": "1.1.1",
- "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="
- },
- "nwsapi": {
- "version": "2.2.0",
- "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
- },
- "oauth-sign": {
- "version": "0.9.0",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
- "object-assign": {
- "version": "4.1.1",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "object-copy": {
- "version": "0.1.0",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-inspect": {
- "version": "1.11.0",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg=="
- },
- "object-is": {
- "version": "1.1.5",
- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "object-keys": {
- "version": "1.1.1",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
- },
- "object-visit": {
- "version": "1.0.1",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.assign": {
- "version": "4.1.2",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3",
- "has-symbols": "^1.0.1",
- "object-keys": "^1.1.1"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "7.4.2",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "requires": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "ora": {
- "version": "5.4.1",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
- "requires": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "ordered-binary": {
- "version": "1.1.0",
- "integrity": "sha512-ZCES27KVhWfm/k/R6sXcC0zRyNl/XHOWSPDMPxkImeUGZ2JAlc2uTWMi9RsmTD8TNbVQJbttzrta1oXPS+Nu4A==",
- "requires": {
- "esm": "^3.2.25"
- }
- },
- "os-browserify": {
- "version": "0.3.0",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
- },
- "p-limit": {
- "version": "3.1.0",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "requires": {
- "p-limit": "^2.2.0"
- },
- "dependencies": {
- "p-limit": {
- "version": "2.3.0",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "requires": {
- "p-try": "^2.0.0"
- }
- }
- }
- },
- "p-try": {
- "version": "2.2.0",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
- },
- "pako": {
- "version": "1.0.11",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
- },
- "parcel": {
- "version": "2.0.0-rc.0",
- "integrity": "sha512-40brGCIJO+KPbFNduM9qGbi2GoZw3CeEV+Kgs3Vfxr2XfR9jkqjD4lzfDY/mnE3gAbsa+5pGdiB+JrOmnzSo5A==",
- "requires": {
- "@parcel/config-default": "2.0.0-rc.0",
- "@parcel/core": "2.0.0-rc.0",
- "@parcel/diagnostic": "2.0.0-rc.0",
- "@parcel/events": "2.0.0-rc.0",
- "@parcel/fs": "2.0.0-rc.0",
- "@parcel/logger": "2.0.0-rc.0",
- "@parcel/package-manager": "2.0.0-rc.0",
- "@parcel/reporter-cli": "2.0.0-rc.0",
- "@parcel/reporter-dev-server": "2.0.0-rc.0",
- "@parcel/utils": "2.0.0-rc.0",
- "chalk": "^4.1.0",
- "commander": "^7.0.0",
- "get-port": "^4.2.0",
- "v8-compile-cache": "^2.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "parse-asn1": {
- "version": "5.1.6",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "requires": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
- "parse5": {
- "version": "5.1.0",
- "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ=="
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
- "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
- "requires": {
- "parse5": "^6.0.1"
- },
- "dependencies": {
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- }
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "pascalcase": {
- "version": "0.1.1",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
- },
- "path-browserify": {
- "version": "1.0.1",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
- },
- "path-exists": {
- "version": "4.0.0",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "path-is-inside": {
- "version": "1.0.2",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
- },
- "path-key": {
- "version": "2.0.1",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- },
- "path-to-regexp": {
- "version": "2.2.1",
- "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ=="
- },
- "path-type": {
- "version": "4.0.0",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
- },
- "pbkdf2": {
- "version": "3.1.2",
- "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
- "picomatch": {
- "version": "2.3.0",
- "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw=="
- },
- "pkg-dir": {
- "version": "4.2.0",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "requires": {
- "find-up": "^4.0.0"
- }
- },
- "platform": {
- "version": "1.3.6",
- "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
- },
- "pn": {
- "version": "1.1.0",
- "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA=="
- },
- "pnp-webpack-plugin": {
- "version": "1.6.4",
- "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==",
- "requires": {
- "ts-pnp": "^1.1.6"
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
- },
- "postcss": {
- "version": "8.2.15",
- "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
- "requires": {
- "colorette": "^1.2.2",
- "nanoid": "^3.1.23",
- "source-map": "^0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "postcss-calc": {
- "version": "8.0.0",
- "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==",
- "requires": {
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.0.2"
- }
- },
- "postcss-colormin": {
- "version": "5.2.0",
- "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==",
- "requires": {
- "browserslist": "^4.16.6",
- "caniuse-api": "^3.0.0",
- "colord": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-convert-values": {
- "version": "5.0.1",
- "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==",
- "requires": {
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-discard-comments": {
- "version": "5.0.1",
- "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg=="
- },
- "postcss-discard-duplicates": {
- "version": "5.0.1",
- "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA=="
- },
- "postcss-discard-empty": {
- "version": "5.0.1",
- "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw=="
- },
- "postcss-discard-overridden": {
- "version": "5.0.1",
- "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q=="
- },
- "postcss-merge-longhand": {
- "version": "5.0.2",
- "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==",
- "requires": {
- "css-color-names": "^1.0.1",
- "postcss-value-parser": "^4.1.0",
- "stylehacks": "^5.0.1"
- }
- },
- "postcss-merge-rules": {
- "version": "5.0.2",
- "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==",
- "requires": {
- "browserslist": "^4.16.6",
- "caniuse-api": "^3.0.0",
- "cssnano-utils": "^2.0.1",
- "postcss-selector-parser": "^6.0.5",
- "vendors": "^1.0.3"
- }
- },
- "postcss-minify-font-values": {
- "version": "5.0.1",
- "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==",
- "requires": {
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-minify-gradients": {
- "version": "5.0.2",
- "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==",
- "requires": {
- "colord": "^2.6",
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-minify-params": {
- "version": "5.0.1",
- "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==",
- "requires": {
- "alphanum-sort": "^1.0.2",
- "browserslist": "^4.16.0",
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0",
- "uniqs": "^2.0.0"
- }
- },
- "postcss-minify-selectors": {
- "version": "5.1.0",
- "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==",
- "requires": {
- "alphanum-sort": "^1.0.2",
- "postcss-selector-parser": "^6.0.5"
- }
- },
- "postcss-modules": {
- "version": "3.2.2",
- "integrity": "sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==",
- "requires": {
- "generic-names": "^2.0.1",
- "icss-replace-symbols": "^1.1.0",
- "lodash.camelcase": "^4.3.0",
- "postcss": "^7.0.32",
- "postcss-modules-extract-imports": "^2.0.0",
- "postcss-modules-local-by-default": "^3.0.2",
- "postcss-modules-scope": "^2.2.0",
- "postcss-modules-values": "^3.0.0",
- "string-hash": "^1.1.1"
- },
- "dependencies": {
- "postcss": {
- "version": "7.0.36",
- "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "postcss-modules-extract-imports": {
- "version": "2.0.0",
- "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
- "requires": {
- "postcss": "^7.0.5"
- }
- },
- "postcss-modules-local-by-default": {
- "version": "3.0.3",
- "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
- "requires": {
- "icss-utils": "^4.1.1",
- "postcss": "^7.0.32",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-modules-scope": {
- "version": "2.2.0",
- "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
- "requires": {
- "postcss": "^7.0.6",
- "postcss-selector-parser": "^6.0.0"
- }
- },
- "postcss-modules-values": {
- "version": "3.0.0",
- "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
- "requires": {
- "icss-utils": "^4.0.0",
- "postcss": "^7.0.6"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "6.1.0",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "postcss-modules-extract-imports": {
- "version": "1.1.0",
- "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
- "requires": {
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "postcss-modules-local-by-default": {
- "version": "1.2.0",
- "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
- "requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "postcss-modules-scope": {
- "version": "1.1.0",
- "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
- "requires": {
- "css-selector-tokenizer": "^0.7.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "postcss-modules-values": {
- "version": "1.3.0",
- "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
- "requires": {
- "icss-replace-symbols": "^1.1.0",
- "postcss": "^6.0.1"
- },
- "dependencies": {
- "postcss": {
- "version": "6.0.23",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "postcss-normalize-charset": {
- "version": "5.0.1",
- "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg=="
- },
- "postcss-normalize-display-values": {
- "version": "5.0.1",
- "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==",
- "requires": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-positions": {
- "version": "5.0.1",
- "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==",
- "requires": {
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-repeat-style": {
- "version": "5.0.1",
- "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==",
- "requires": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-string": {
- "version": "5.0.1",
- "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==",
- "requires": {
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-timing-functions": {
- "version": "5.0.1",
- "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==",
- "requires": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-unicode": {
- "version": "5.0.1",
- "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==",
- "requires": {
- "browserslist": "^4.16.0",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-url": {
- "version": "5.0.2",
- "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==",
- "requires": {
- "is-absolute-url": "^3.0.3",
- "normalize-url": "^6.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-normalize-whitespace": {
- "version": "5.0.1",
- "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==",
- "requires": {
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-ordered-values": {
- "version": "5.0.2",
- "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==",
- "requires": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-reduce-initial": {
- "version": "5.0.1",
- "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==",
- "requires": {
- "browserslist": "^4.16.0",
- "caniuse-api": "^3.0.0"
- }
- },
- "postcss-reduce-transforms": {
- "version": "5.0.1",
- "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==",
- "requires": {
- "cssnano-utils": "^2.0.1",
- "postcss-value-parser": "^4.1.0"
- }
- },
- "postcss-selector-parser": {
- "version": "6.0.6",
- "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
- "requires": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- }
- },
- "postcss-svgo": {
- "version": "5.0.2",
- "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==",
- "requires": {
- "postcss-value-parser": "^4.1.0",
- "svgo": "^2.3.0"
- }
- },
- "postcss-unique-selectors": {
- "version": "5.0.1",
- "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==",
- "requires": {
- "alphanum-sort": "^1.0.2",
- "postcss-selector-parser": "^6.0.5",
- "uniqs": "^2.0.0"
- }
- },
- "postcss-value-parser": {
- "version": "4.1.0",
- "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
- },
- "posthtml": {
- "version": "0.16.5",
- "integrity": "sha512-1qOuPsywVlvymhTFIBniDXwUDwvlDri5KUQuBqjmCc8Jj4b/HDSVWU//P6rTWke5rzrk+vj7mms2w8e1vD0nnw==",
- "requires": {
- "posthtml-parser": "^0.10.0",
- "posthtml-render": "^3.0.0"
- },
- "dependencies": {
- "entities": {
- "version": "3.0.1",
- "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="
- },
- "htmlparser2": {
- "version": "7.1.1",
- "integrity": "sha512-hZb0lfG0hbhR/hB879zbBr8Opv0Be9Zp+JYHgqTw5epF++aotu/zmMTPLy/60iJyR1MaD/3pYRp7xYteXsZMEA==",
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.8.0",
- "entities": "^3.0.1"
- }
- },
- "posthtml-parser": {
- "version": "0.10.1",
- "integrity": "sha512-i7w2QEHqiGtsvNNPty0Mt/+ERch7wkgnFh3+JnBI2VgDbGlBqKW9eDVd3ENUhE1ujGFe3e3E/odf7eKhvLUyDg==",
- "requires": {
- "htmlparser2": "^7.1.1"
- }
- },
- "posthtml-render": {
- "version": "3.0.0",
- "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
- "requires": {
- "is-json": "^2.0.1"
- }
- }
- }
- },
- "posthtml-parser": {
- "version": "0.9.1",
- "integrity": "sha512-sF8X2cuNQMrb9wdr1GYV8X4DdJhk2lvavLV3PRsVunYNKdU/DT+w2iTgTijgpzWm9xcEsV/sz6mFAl7sGvnjFQ==",
- "requires": {
- "htmlparser2": "^6.0.0"
- }
- },
- "posthtml-render": {
- "version": "2.0.6",
- "integrity": "sha512-AvjM4yfEtjhbpZdtLOWfnezgojEtgeejSxrjTAvfr5phXjPcZQyB5QiOvYeU+rrTF0u+eqqlJrs8HS3nrPexGQ==",
- "requires": {
- "is-json": "^2.0.1"
- }
- },
- "prelude-ls": {
- "version": "1.1.2",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
- },
- "prismjs": {
- "version": "1.24.1",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz",
- "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow=="
- },
- "process": {
- "version": "0.11.10",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "property-information": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
- "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
- "requires": {
- "xtend": "^4.0.0"
- }
- },
- "psl": {
- "version": "1.8.0",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
- },
- "public-encrypt": {
- "version": "4.0.3",
- "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1",
- "safe-buffer": "^5.1.2"
- },
- "dependencies": {
- "bn.js": {
- "version": "4.12.0",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- }
- }
- },
- "punycode": {
- "version": "1.4.1",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- },
- "purgecss": {
- "version": "4.0.3",
- "integrity": "sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw==",
- "requires": {
- "commander": "^6.0.0",
- "glob": "^7.0.0",
- "postcss": "^8.2.1",
- "postcss-selector-parser": "^6.0.2"
- },
- "dependencies": {
- "commander": {
- "version": "6.2.1",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="
- }
- }
- },
- "qs": {
- "version": "6.5.2",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
- },
- "querystring": {
- "version": "0.2.1",
- "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg=="
- },
- "querystring-es3": {
- "version": "0.2.1",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
- },
- "queue": {
- "version": "6.0.2",
- "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
- "requires": {
- "inherits": "~2.0.3"
- }
- },
- "queue-microtask": {
- "version": "1.2.3",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
- },
- "randombytes": {
- "version": "2.1.0",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "randomfill": {
- "version": "1.0.4",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
- "range-parser": {
- "version": "1.2.0",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
- },
- "raw-body": {
- "version": "2.4.1",
- "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==",
- "requires": {
- "bytes": "3.1.0",
- "http-errors": "1.7.3",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.24",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- }
- }
- },
- "react": {
- "version": "17.0.2",
- "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
- "react-dom": {
- "version": "17.0.2",
- "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "scheduler": "^0.20.2"
- }
- },
- "react-is": {
- "version": "17.0.2",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
- },
- "react-refresh": {
- "version": "0.8.3",
- "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
- },
- "readable-stream": {
- "version": "3.6.0",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.5.0",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "refractor": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.4.0.tgz",
- "integrity": "sha512-dBeD02lC5eytm9Gld2Mx0cMcnR+zhSnsTfPpWqFaMgUMJfC9A6bcN3Br/NaXrnBJcuxnLFR90k1jrkaSyV8umg==",
- "requires": {
- "hastscript": "^6.0.0",
- "parse-entities": "^2.0.0",
- "prismjs": "~1.24.0"
- }
- },
- "regenerator-runtime": {
- "version": "0.13.9",
- "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
- },
- "regex-not": {
- "version": "1.0.2",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "rehype-parse": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz",
- "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==",
- "requires": {
- "hast-util-from-parse5": "^6.0.0",
- "parse5": "^6.0.0"
- },
- "dependencies": {
- "parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- }
- }
- },
- "rehype-raw": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-5.1.0.tgz",
- "integrity": "sha512-MDvHAb/5mUnif2R+0IPCYJU8WjHa9UzGtM/F4AVy5GixPlDZ1z3HacYy4xojDU+uBa+0X/3PIfyQI26/2ljJNA==",
- "requires": {
- "hast-util-raw": "^6.1.0"
- }
- },
- "rehype-sanitize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-4.0.0.tgz",
- "integrity": "sha512-ZCr/iQRr4JeqPjun5i9CHHILVY7i45VnLu1CkkibDrSyFQ7dTLSvw8OIQpHhS4RSh9h/9GidxFw1bRb0LOxIag==",
- "requires": {
- "hast-util-sanitize": "^3.0.0"
- },
- "dependencies": {
- "hast-util-sanitize": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz",
- "integrity": "sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA==",
- "requires": {
- "xtend": "^4.0.0"
- }
- }
- }
- },
- "relateurl": {
- "version": "0.2.7",
- "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk="
- },
- "remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
- "requires": {
- "mdast-util-from-markdown": "^0.8.0"
- }
- },
- "remark-rehype": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz",
- "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==",
- "requires": {
- "mdast-util-to-hast": "^10.2.0"
- }
- },
- "repeat-element": {
- "version": "1.1.4",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ=="
- },
- "repeat-string": {
- "version": "1.6.1",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
- },
- "request": {
- "version": "2.88.2",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "mime-db": {
- "version": "1.49.0",
- "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
- },
- "mime-types": {
- "version": "2.1.32",
- "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
- "requires": {
- "mime-db": "1.49.0"
- }
- }
- }
- },
- "request-promise-core": {
- "version": "1.1.4",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "requires": {
- "lodash": "^4.17.19"
- }
- },
- "request-promise-native": {
- "version": "1.0.9",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "requires": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- }
- },
- "requires-port": {
- "version": "1.0.0",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
- },
- "resolve-url": {
- "version": "0.2.1",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
- },
- "restore-cursor": {
- "version": "3.1.0",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "ret": {
- "version": "0.1.15",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
- },
- "retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="
- },
- "reusify": {
- "version": "1.0.4",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
- },
- "rimraf": {
- "version": "3.0.2",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "ripemd160": {
- "version": "2.0.2",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "safe-regex": {
- "version": "1.1.0",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "saxes": {
- "version": "3.1.11",
- "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
- "requires": {
- "xmlchars": "^2.1.1"
- }
- },
- "scheduler": {
- "version": "0.20.2",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "requires": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "serve-handler": {
- "version": "6.1.3",
- "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==",
- "requires": {
- "bytes": "3.0.0",
- "content-disposition": "0.5.2",
- "fast-url-parser": "1.1.3",
- "mime-types": "2.1.18",
- "minimatch": "3.0.4",
- "path-is-inside": "1.0.2",
- "path-to-regexp": "2.2.1",
- "range-parser": "1.2.0"
- },
- "dependencies": {
- "bytes": {
- "version": "3.0.0",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
- }
- }
- },
- "set-value": {
- "version": "2.0.1",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- }
- }
- },
- "setimmediate": {
- "version": "1.0.5",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
- },
- "setprototypeof": {
- "version": "1.1.1",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
- },
- "sha.js": {
- "version": "2.4.11",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
- },
- "shell-quote": {
- "version": "1.7.2",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
- },
- "side-channel": {
- "version": "1.0.4",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.3",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "slash": {
- "version": "3.0.0",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
- },
- "slice-ansi": {
- "version": "4.0.0",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- }
- }
- },
- "snapdragon": {
- "version": "0.8.2",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- },
- "ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "source-map": {
- "version": "0.5.7",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "source-map": {
- "version": "0.8.0-beta.0",
- "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
- "requires": {
- "whatwg-url": "^7.0.0"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- },
- "tr46": {
- "version": "1.0.1",
- "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "whatwg-url": {
- "version": "7.1.0",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- }
- }
- },
- "source-map-js": {
- "version": "0.6.2",
- "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug=="
- },
- "source-map-resolve": {
- "version": "0.5.3",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-support": {
- "version": "0.5.19",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- }
- }
- },
- "source-map-url": {
- "version": "0.4.1",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw=="
- },
- "space-separated-tokens": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
- "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
- },
- "split-string": {
- "version": "3.1.0",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "split2": {
- "version": "3.2.2",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "requires": {
- "readable-stream": "^3.0.0"
- }
- },
- "srcset": {
- "version": "3.0.1",
- "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ=="
- },
- "sshpk": {
- "version": "1.16.1",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "stable": {
- "version": "0.1.8",
- "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
- },
- "stacktrace-parser": {
- "version": "0.1.10",
- "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
- "requires": {
- "type-fest": "^0.7.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.7.1",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="
- }
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
- }
- }
- },
- "statuses": {
- "version": "1.5.0",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
- },
- "stealthy-require": {
- "version": "1.1.1",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
- },
- "stream-browserify": {
- "version": "3.0.0",
- "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
- "requires": {
- "inherits": "~2.0.4",
- "readable-stream": "^3.5.0"
- }
- },
- "stream-http": {
- "version": "3.1.1",
- "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==",
- "requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.6.0",
- "xtend": "^4.0.2"
- }
- },
- "stream-parser": {
- "version": "0.3.1",
- "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
- "requires": {
- "debug": "2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- }
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
- "string-hash": {
- "version": "1.1.3",
- "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs="
- },
- "string-width": {
- "version": "4.2.2",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.4",
- "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.4",
- "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "style-to-object": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz",
- "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==",
- "requires": {
- "inline-style-parser": "0.1.1"
- }
- },
- "styled-jsx": {
- "version": "4.0.1",
- "integrity": "sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==",
- "requires": {
- "@babel/plugin-syntax-jsx": "7.14.5",
- "@babel/types": "7.15.0",
- "convert-source-map": "1.7.0",
- "loader-utils": "1.2.3",
- "source-map": "0.7.3",
- "string-hash": "1.1.3",
- "stylis": "3.5.4",
- "stylis-rule-sheet": "0.0.10"
- },
- "dependencies": {
- "@babel/types": {
- "version": "7.15.0",
- "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.14.9",
- "to-fast-properties": "^2.0.0"
- }
- },
- "convert-source-map": {
- "version": "1.7.0",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
- "emojis-list": {
- "version": "2.1.0",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
- },
- "loader-utils": {
- "version": "1.2.3",
- "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^2.0.0",
- "json5": "^1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "source-map": {
- "version": "0.7.3",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
- }
- }
- },
- "stylehacks": {
- "version": "5.0.1",
- "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==",
- "requires": {
- "browserslist": "^4.16.0",
- "postcss-selector-parser": "^6.0.4"
- }
- },
- "stylis": {
- "version": "3.5.4",
- "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q=="
- },
- "stylis-rule-sheet": {
- "version": "0.0.10",
- "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw=="
- },
- "supports-color": {
- "version": "5.5.0",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "svgo": {
- "version": "2.5.0",
- "integrity": "sha512-FSdBOOo271VyF/qZnOn1PgwCdt1v4Dx0Sey+U1jgqm1vqRYjPGdip0RGrFW6ItwtkBB8rHgHk26dlVr0uCs82Q==",
- "requires": {
- "@trysound/sax": "0.1.1",
- "colorette": "^1.3.0",
- "commander": "^7.2.0",
- "css-select": "^4.1.3",
- "css-tree": "^1.1.3",
- "csso": "^4.2.0",
- "stable": "^0.1.8"
- }
- },
- "swr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/swr/-/swr-1.0.1.tgz",
- "integrity": "sha512-EPQAxSjoD4IaM49rpRHK0q+/NzcwoT8c0/Ylu/u3/6mFj/CWnQVjNJ0MV2Iuw/U+EJSd2TX5czdAwKPYZIG0YA==",
- "requires": {
- "dequal": "2.0.2"
- }
- },
- "symbol-tree": {
- "version": "3.2.4",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
- },
- "term-size": {
- "version": "2.2.1",
- "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="
- },
- "terser": {
- "version": "5.7.2",
- "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==",
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.7.2",
- "source-map-support": "~0.5.19"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "source-map": {
- "version": "0.7.3",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
- }
- }
- },
- "timers-browserify": {
- "version": "2.0.12",
- "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
- "requires": {
- "setimmediate": "^1.0.4"
- }
- },
- "timsort": {
- "version": "0.3.0",
- "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
- },
- "to-arraybuffer": {
- "version": "1.0.1",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
- },
- "to-object-path": {
- "version": "0.3.0",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.0",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
- },
- "tough-cookie": {
- "version": "2.5.0",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- }
- }
- },
- "tr46": {
- "version": "2.1.0",
- "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
- "requires": {
- "punycode": "^2.1.1"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- }
- }
- },
- "trough": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
- "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA=="
- },
- "ts-pnp": {
- "version": "1.2.0",
- "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw=="
- },
- "tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
- },
- "tty-browserify": {
- "version": "0.0.1",
- "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
- "type-check": {
- "version": "0.3.2",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
- },
- "typescript": {
- "version": "4.4.2",
- "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
- "dev": true
- },
- "unbox-primitive": {
- "version": "1.0.1",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
- "requires": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "uncss": {
- "version": "0.17.3",
- "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==",
- "requires": {
- "commander": "^2.20.0",
- "glob": "^7.1.4",
- "is-absolute-url": "^3.0.1",
- "is-html": "^1.1.0",
- "jsdom": "^14.1.0",
- "lodash": "^4.17.15",
- "postcss": "^7.0.17",
- "postcss-selector-parser": "6.0.2",
- "request": "^2.88.0"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "postcss": {
- "version": "7.0.36",
- "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- }
- },
- "postcss-selector-parser": {
- "version": "6.0.2",
- "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
- "requires": {
- "cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "supports-color": {
- "version": "6.1.0",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "unified": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
- "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
- "requires": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
- },
- "dependencies": {
- "is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
- }
- }
- },
- "union-value": {
- "version": "1.0.1",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "0.1.1",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- }
- }
- },
- "uniq": {
- "version": "1.0.1",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
- },
- "uniqs": {
- "version": "2.0.0",
- "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI="
- },
- "unist-builder": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz",
- "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw=="
- },
- "unist-util-generated": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz",
- "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg=="
- },
- "unist-util-is": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
- "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg=="
- },
- "unist-util-position": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz",
- "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA=="
- },
- "unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "requires": {
- "@types/unist": "^2.0.2"
- }
- },
- "unist-util-visit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
- "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^4.0.0"
- },
- "dependencies": {
- "unist-util-is": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
- "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ=="
- }
- }
- },
- "unist-util-visit-parents": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
- "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "dependencies": {
- "unist-util-is": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
- "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ=="
- }
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
- },
- "unset-value": {
- "version": "1.0.0",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
- }
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "requires": {
- "punycode": "^2.1.0"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- }
- }
- },
- "urix": {
- "version": "0.1.0",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
- },
- "url": {
- "version": "0.11.0",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
- "requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- },
- "dependencies": {
- "punycode": {
- "version": "1.3.2",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
- },
- "querystring": {
- "version": "0.2.0",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
- }
- }
- },
- "use": {
- "version": "3.1.1",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
- },
- "use-subscription": {
- "version": "1.5.1",
- "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==",
- "requires": {
- "object-assign": "^4.1.1"
- }
- },
- "util": {
- "version": "0.12.4",
- "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
- "requires": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "safe-buffer": "^5.1.2",
- "which-typed-array": "^1.1.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "utility-types": {
- "version": "3.10.0",
- "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg=="
- },
- "utils-merge": {
- "version": "1.0.1",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
- },
- "uuid": {
- "version": "3.4.0",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- },
- "v8-compile-cache": {
- "version": "2.3.0",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA=="
- },
- "vendors": {
- "version": "1.0.4",
- "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w=="
- },
- "verror": {
- "version": "1.10.0",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "vfile": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
- "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
- "requires": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- },
- "dependencies": {
- "is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
- }
- }
- },
- "vfile-location": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz",
- "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA=="
- },
- "vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- }
- },
- "vm-browserify": {
- "version": "1.1.2",
- "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
- },
- "w3c-hr-time": {
- "version": "1.0.2",
- "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
- "requires": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "w3c-xmlserializer": {
- "version": "1.1.2",
- "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
- "requires": {
- "domexception": "^1.0.1",
- "webidl-conversions": "^4.0.2",
- "xml-name-validator": "^3.0.0"
- }
- },
- "watchpack": {
- "version": "2.1.1",
- "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
- "requires": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "requires": {
- "defaults": "^1.0.3"
- }
- },
- "weak-lru-cache": {
- "version": "1.1.0",
- "integrity": "sha512-Z7oN8OXQRYVB+ElsIQLw4ntkMnwxpYefO3umpbtOKp841s9De0F4UFIh9bDK6rgcPz7KAJ2p4mraE9nvWBA73g==",
- "requires": {
- "esm": "^3.2.25"
- }
- },
- "web-namespaces": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
- "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw=="
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
- },
- "whatwg-encoding": {
- "version": "1.0.5",
- "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
- "requires": {
- "iconv-lite": "0.4.24"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.24",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- }
- }
- },
- "whatwg-fetch": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
- "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
- },
- "whatwg-mimetype": {
- "version": "2.3.0",
- "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
- },
- "whatwg-url": {
- "version": "9.1.0",
- "integrity": "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==",
- "requires": {
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
- },
- "dependencies": {
- "webidl-conversions": {
- "version": "6.1.0",
- "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
- }
- }
- },
- "which": {
- "version": "1.3.1",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-typed-array": {
- "version": "1.1.7",
- "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-abstract": "^1.18.5",
- "foreach": "^2.0.5",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.7"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "ws": {
- "version": "7.5.4",
- "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg=="
- },
- "xml-name-validator": {
- "version": "3.0.0",
- "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
- },
- "xmlchars": {
- "version": "2.2.0",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
- },
- "xtend": {
- "version": "4.0.2",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
- },
- "xxhash-wasm": {
- "version": "0.4.2",
- "integrity": "sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA=="
- },
- "yallist": {
- "version": "4.0.0",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "yaml": {
- "version": "1.10.2",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
- },
- "yocto-queue": {
- "version": "0.1.0",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
- },
- "zwitch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
- "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw=="
- }
- }
-}
diff --git a/examples/hello-next/pages/api/hello.tsx b/examples/hello-next/pages/api/hello.tsx
deleted file mode 100644
index df63de88f..000000000
--- a/examples/hello-next/pages/api/hello.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
-
-export default function handler(req, res) {
- res.status(200).json({ name: 'John Doe' })
-}
diff --git a/examples/hello-next/pages/foo/bar/third.tsx b/examples/hello-next/pages/foo/bar/third.tsx
deleted file mode 100644
index e1df24bc1..000000000
--- a/examples/hello-next/pages/foo/bar/third.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import Link from "next/link";
-
-export default function Baz({}) {
- return (
- <div style={{ padding: 16 }}>
- <h1>Third</h1>
- <ul>
- <li>
- <Link href="/">
- <a>Root page</a>
- </Link>
- </li>
- <li>
- <Link href="/second">
- <a>Second page</a>
- </Link>
- </li>
- <li>
- <Link href="/posts/123">
- <a>Post page 123</a>
- </Link>
- </li>
- </ul>
- </div>
- );
-}
diff --git a/examples/hello-next/pages/posts/[id].tsx b/examples/hello-next/pages/posts/[id].tsx
deleted file mode 100644
index bf795ae83..000000000
--- a/examples/hello-next/pages/posts/[id].tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { useRouter } from "next/router";
-import Link from "next/link";
-
-export default function Post({}) {
- const router = useRouter();
-
- return (
- <div style={{ padding: 16 }}>
- <h1>Post: {router.query.id}</h1>
- <ul>
- <li>
- <Link href="/">
- <a>Root page</a>
- </Link>
- </li>
- </ul>
- </div>
- );
-}
diff --git a/examples/lotta-modules/index.js b/examples/lotta-modules/index.js
deleted file mode 100644
index e8ea94ca2..000000000
--- a/examples/lotta-modules/index.js
+++ /dev/null
@@ -1 +0,0 @@
-import "@babel/standalone/babel";
diff --git a/examples/lotta-modules/package.json b/examples/lotta-modules/package.json
deleted file mode 100644
index f336c9c44..000000000
--- a/examples/lotta-modules/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "lotta-modules",
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "@babel/standalone": "^7.15.3",
- "lodash": "^4.17.21",
- "three.js": "^0.77.1",
- "underscore": "^1.13.1",
- "webpack": "^5.56.0"
- },
- "type": "module",
- "browserslist": [
- "last 1 version"
- ],
- "scripts": {
- "generate": "cp node_modules/three/three.js node_modules/three/three1.js; cp node_modules/three/three.js node_modules/three/three2.js; cp node_modules/three/three.js node_modules/three/three3.js; cp node_modules/three/three.js node_modules/three/three4.js; cp node_modules/three/three.js node_modules/three/three5.js; cp node_modules/three/three.js node_modules/three/three6.js; cp node_modules/three/three.js node_modules/three/three7.js; cp node_modules/three/three.js node_modules/three/three8.js; cp node_modules/three/three.js node_modules/three/three9.js; cp node_modules/three/three.js node_modules/three/three10.js",
- "bench": "hyperfine \"bun bun ./index.js\" \"GOMAXPROCS=1 bun bun ./index.js\" \"esbuild --bundle ./index.js --platform=browser --format=esm > /dev/null\" \"swc ./node_modules/three/three1.js ./node_modules/three/three2.js ./node_modules/three/three3.js ./node_modules/three/three4.js ./node_modules/three/three5.js ./node_modules/three/three6.js ./node_modules/three/three7.js ./node_modules/three/three8.js ./node_modules/three/three9.js ./node_modules/three/three10.js -C \"module.type=es6\" --no-swcrc -s false -o /tmp/out.swc.js\" \"node_modules/.bin/parcel build --no-optimize --no-source-maps --no-content-hash --no-cache --no-autoinstall ./index.js\" --prepare=\"rm -rf dist *.bun .parcel-cache;\"",
- "bench-sync": "hyperfine \"GOMAXPROCS=1 bun bun ./index.js\" \"GOMAXPROCS=1 esbuild --bundle ./index.js --platform=browser --format=esm > /dev/null\" \"swc ./node_modules/three/three1.js ./node_modules/three/three2.js ./node_modules/three/three3.js ./node_modules/three/three4.js ./node_modules/three/three5.js ./node_modules/three/three6.js ./node_modules/three/three7.js ./node_modules/three/three8.js ./node_modules/three/three9.js ./node_modules/three/three10.js -C \"module.type=es6\" --sync --no-swcrc -s false -o /tmp/out.swc.js\" --prepare=\"rm -rf *.bun\" ",
- "bench-all": "hyperfine \"bun bun ./index.js\" \"esbuild --bundle ./index.js --platform=browser --format=esm > /dev/null\" \"esbuild --bundle ./index.js --platform=browser --format=esm > /dev/null\" \"swc ./node_modules/three/three1.js ./node_modules/three/three2.js ./node_modules/three/three3.js ./node_modules/three/three4.js ./node_modules/three/three5.js ./node_modules/three/three6.js ./node_modules/three/three7.js ./node_modules/three/three8.js ./node_modules/three/three9.js ./node_modules/three/three10.js -C \"module.type=es6\" --no-swcrc -s false -o /tmp/out.swc.js\" \"GOMAXPROCS=1 bun bun ./index.js\" \"GOMAXPROCS=1 esbuild --bundle ./index.js --platform=browser --format=esm > /dev/null\" \"swc ./node_modules/three/three1.js ./node_modules/three/three2.js ./node_modules/three/three3.js ./node_modules/three/three4.js ./node_modules/three/three5.js ./node_modules/three/three6.js ./node_modules/three/three7.js ./node_modules/three/three8.js ./node_modules/three/three9.js ./node_modules/three/three10.js -C \"module.type=es6\" --sync --no-swcrc -s false -o /tmp/out.swc.js\" --prepare=\"rm -rf *.bun\"",
- "postinstall": "generate"
- },
- "devDependencies": {
- "@babel/core": "^7.15.5",
- "@babel/preset-env": "^7.15.6",
- "@parcel/core": "^2.0.0-rc.0",
- "babel-loader": "^8.2.2",
- "parcel": "^2.0.0-rc.0",
- "webpack-cli": "^4.8.0"
- }
-}
diff --git a/examples/lotta-modules/public/index.html b/examples/lotta-modules/public/index.html
deleted file mode 100644
index bb6a38234..000000000
--- a/examples/lotta-modules/public/index.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
- <head> </head>
- <body>
- <script src="/index.js"></script>
- </body>
-</html>
diff --git a/examples/hello-next/.eslintrc.json b/examples/next/.eslintrc.json
index bffb357a7..bffb357a7 100644
--- a/examples/hello-next/.eslintrc.json
+++ b/examples/next/.eslintrc.json
diff --git a/examples/hello-next/.gitignore b/examples/next/.gitignore
index 1437c53f7..87e56100f 100644
--- a/examples/hello-next/.gitignore
+++ b/examples/next/.gitignore
@@ -32,3 +32,11 @@ yarn-error.log*
# vercel
.vercel
+
+**/*.trace
+**/*.zip
+**/*.tar.gz
+**/*.tgz
+**/*.log
+package-lock.json
+**/*.bun \ No newline at end of file
diff --git a/examples/next/.npmignore b/examples/next/.npmignore
new file mode 100644
index 000000000..dc84c8da3
--- /dev/null
+++ b/examples/next/.npmignore
@@ -0,0 +1,42 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
+
+**/*.trace
+**/*.zip
+**/*.tar.gz
+**/*.tgz
+**/*.log
+package-lock.json
+**/*.bun
diff --git a/examples/hello-next/README.md b/examples/next/README.md
index b12f3e33e..b12f3e33e 100644
--- a/examples/hello-next/README.md
+++ b/examples/next/README.md
diff --git a/examples/hello-next/components/Title.tsx b/examples/next/components/Title.tsx
index 73963663a..73963663a 100644
--- a/examples/hello-next/components/Title.tsx
+++ b/examples/next/components/Title.tsx
diff --git a/examples/hello-next/components/subtitle.tsx b/examples/next/components/subtitle.tsx
index 1fda3db60..1fda3db60 100644
--- a/examples/hello-next/components/subtitle.tsx
+++ b/examples/next/components/subtitle.tsx
diff --git a/examples/next/gitignore b/examples/next/gitignore
new file mode 100644
index 000000000..87e56100f
--- /dev/null
+++ b/examples/next/gitignore
@@ -0,0 +1,42 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
+
+**/*.trace
+**/*.zip
+**/*.tar.gz
+**/*.tgz
+**/*.log
+package-lock.json
+**/*.bun \ No newline at end of file
diff --git a/examples/hello-next/next-env.d.ts b/examples/next/next-env.d.ts
index 9bc3dd46b..9bc3dd46b 100644
--- a/examples/hello-next/next-env.d.ts
+++ b/examples/next/next-env.d.ts
diff --git a/examples/hello-next/next.config.js b/examples/next/next.config.js
index c161436ab..c161436ab 100644
--- a/examples/hello-next/next.config.js
+++ b/examples/next/next.config.js
diff --git a/examples/hello-next/package.json b/examples/next/package.json
index f838f1e65..93b09dc04 100644
--- a/examples/hello-next/package.json
+++ b/examples/next/package.json
@@ -1,20 +1,21 @@
{
- "name": "hello-next",
- "version": "1.0.0",
+ "name": "@bun-examples/next",
+ "version": "0.0.32",
"main": "index.js",
- "license": "MIT",
"dependencies": {
- "date-fns": "^2.23.0",
- "isomorphic-fetch": "^3.0.0",
"next": "11.1.2",
"react": "^17.0.2",
"react-dom": "^17.0.2",
- "react-is": "^17.0.2",
- "whatwg-url": "^9.1.0"
+ "react-is": "^17.0.2"
},
"devDependencies": {
"@types/react": "^17.0.19",
"bun-framework-next": "^0.0.0-21",
"typescript": "^4.3.5"
+ },
+ "bun-create": {
+ "postinstall": [
+ "bun bun --use next"
+ ]
}
}
diff --git a/examples/hello-next/pages/_app.tsx b/examples/next/pages/_app.tsx
index 2fc3e0700..2fc3e0700 100644
--- a/examples/hello-next/pages/_app.tsx
+++ b/examples/next/pages/_app.tsx
diff --git a/examples/hello-next/pages/index.tsx b/examples/next/pages/index.tsx
index 9101ed8c7..11903e8e5 100644
--- a/examples/hello-next/pages/index.tsx
+++ b/examples/next/pages/index.tsx
@@ -20,7 +20,7 @@ export default function Home({}) {
<main className={styles.main}>
<h1 className={styles.title}>
- Welcome!!to <a href="https://nextjs.org">Next.js!</a>
+ Welcome to <a href="https://nextjs.org">Next.js!</a>
</h1>
<p className={styles.description}>
@@ -37,14 +37,6 @@ export default function Home({}) {
</Link>
<a
- onClick={() => router.push("/foo/bar/third")}
- className={styles.card}
- >
- <h2>Third Page &rarr;</h2>
- <p>button, router.push()</p>
- </a>
-
- <a
href="https://github.com/vercel/next.js/tree/master/examples"
className={styles.card}
>
diff --git a/examples/hello-next/pages/second.tsx b/examples/next/pages/second.tsx
index 0e7b5a5cf..0e7b5a5cf 100644
--- a/examples/hello-next/pages/second.tsx
+++ b/examples/next/pages/second.tsx
diff --git a/examples/hello-next/public/favicon.ico b/examples/next/public/favicon.ico
index 718d6fea4..718d6fea4 100644
--- a/examples/hello-next/public/favicon.ico
+++ b/examples/next/public/favicon.ico
Binary files differ
diff --git a/examples/hello-next/public/vercel.svg b/examples/next/public/vercel.svg
index fbf0e25a6..fbf0e25a6 100644
--- a/examples/hello-next/public/vercel.svg
+++ b/examples/next/public/vercel.svg
diff --git a/examples/hello-next/styles/Home.module.css b/examples/next/styles/Home.module.css
index 539fb3eaf..c181f0153 100644
--- a/examples/hello-next/styles/Home.module.css
+++ b/examples/next/styles/Home.module.css
@@ -1,5 +1,3 @@
-@import url("./2.css");
-
.container {
min-height: 99vh;
padding: 0 0.5rem;
diff --git a/examples/hello-next/styles/globals.css b/examples/next/styles/globals.css
index 1abf383f1..e5e2dcc23 100644
--- a/examples/hello-next/styles/globals.css
+++ b/examples/next/styles/globals.css
@@ -14,8 +14,3 @@ a {
* {
box-sizing: border-box;
}
-
-body {
- background-image: url(https://wompampsupport.azureedge.net/fetchimage?siteId=7575&v=2&jpgQuality=100&width=700&url=https%3A%2F%2Fi.kym-cdn.com%2Fentries%2Ficons%2Foriginal%2F000%2F013%2F564%2Fdoge.jpg);
- background-size: cover;
-}
diff --git a/examples/hello-next/tsconfig.json b/examples/next/tsconfig.json
index 7af6240a5..7af6240a5 100644
--- a/examples/hello-next/tsconfig.json
+++ b/examples/next/tsconfig.json
diff --git a/examples/react/.gitignore b/examples/react/.gitignore
new file mode 100644
index 000000000..ee1e49b71
--- /dev/null
+++ b/examples/react/.gitignore
@@ -0,0 +1,32 @@
+**/*.trace
+**/*.zip
+**/*.tar.gz
+**/*.tgz
+**/*.log
+
+package-lock.json
+**/*.bun
+
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/examples/hello-create-react-app/.gitignore b/examples/react/.npmignore
index 4d29575de..9b5538ebc 100644
--- a/examples/hello-create-react-app/.gitignore
+++ b/examples/react/.npmignore
@@ -1,3 +1,11 @@
+**/*.trace
+**/*.zip
+**/*.tar.gz
+**/*.tgz
+**/*.log
+package-lock.json
+**/*.bun
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
diff --git a/examples/hello-create-react-app/README.md b/examples/react/README.md
index 02aac3f6e..02aac3f6e 100644
--- a/examples/hello-create-react-app/README.md
+++ b/examples/react/README.md
diff --git a/examples/react/gitignore b/examples/react/gitignore
new file mode 100644
index 000000000..ee1e49b71
--- /dev/null
+++ b/examples/react/gitignore
@@ -0,0 +1,32 @@
+**/*.trace
+**/*.zip
+**/*.tar.gz
+**/*.tgz
+**/*.log
+
+package-lock.json
+**/*.bun
+
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/examples/hello-create-react-app/package.json b/examples/react/package.json
index 43f60301a..45d7a64ba 100644
--- a/examples/hello-create-react-app/package.json
+++ b/examples/react/package.json
@@ -1,14 +1,12 @@
{
- "name": "hello-create-react-app",
- "version": "0.1.0",
- "private": true,
+ "name": "@bun-examples/react",
+ "version": "0.0.28",
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
- "react-scripts": "4.0.3",
"web-vitals": "^1.0.1"
},
"scripts": {
@@ -36,6 +34,12 @@
]
},
"devDependencies": {
- "typescript": "^4.4.2"
+ "typescript": "^4.4.2",
+ "react-refresh": "^0.10.0"
+ },
+ "bun-create": {
+ "postinstall": [
+ "bun bun ./src/index.jsx"
+ ]
}
}
diff --git a/examples/hello-create-react-app/public/favicon.ico b/examples/react/public/favicon.ico
index a11777cc4..a11777cc4 100644
--- a/examples/hello-create-react-app/public/favicon.ico
+++ b/examples/react/public/favicon.ico
Binary files differ
diff --git a/examples/hello-create-react-app/public/index.html b/examples/react/public/index.html
index e933c5650..e933c5650 100644
--- a/examples/hello-create-react-app/public/index.html
+++ b/examples/react/public/index.html
diff --git a/examples/hello-create-react-app/public/logo192.png b/examples/react/public/logo192.png
index fc44b0a37..fc44b0a37 100644
--- a/examples/hello-create-react-app/public/logo192.png
+++ b/examples/react/public/logo192.png
Binary files differ
diff --git a/examples/hello-create-react-app/public/logo512.png b/examples/react/public/logo512.png
index a4e47a654..a4e47a654 100644
--- a/examples/hello-create-react-app/public/logo512.png
+++ b/examples/react/public/logo512.png
Binary files differ
diff --git a/examples/hello-create-react-app/public/manifest.json b/examples/react/public/manifest.json
index 080d6c77a..080d6c77a 100644
--- a/examples/hello-create-react-app/public/manifest.json
+++ b/examples/react/public/manifest.json
diff --git a/examples/hello-create-react-app/public/robots.txt b/examples/react/public/robots.txt
index e9e57dc4d..e9e57dc4d 100644
--- a/examples/hello-create-react-app/public/robots.txt
+++ b/examples/react/public/robots.txt
diff --git a/examples/hello-create-react-app/src/App.css b/examples/react/src/App.css
index 74b5e0534..74b5e0534 100644
--- a/examples/hello-create-react-app/src/App.css
+++ b/examples/react/src/App.css
diff --git a/examples/hello-create-react-app/src/App.jsx b/examples/react/src/App.jsx
index a675d389d..a675d389d 100644
--- a/examples/hello-create-react-app/src/App.jsx
+++ b/examples/react/src/App.jsx
diff --git a/examples/hello-create-react-app/src/App.test.js b/examples/react/src/App.test.js
index 1f03afeec..1f03afeec 100644
--- a/examples/hello-create-react-app/src/App.test.js
+++ b/examples/react/src/App.test.js
diff --git a/examples/hello-create-react-app/src/index.css b/examples/react/src/index.css
index ec2585e8c..ec2585e8c 100644
--- a/examples/hello-create-react-app/src/index.css
+++ b/examples/react/src/index.css
diff --git a/examples/hello-create-react-app/src/index.jsx b/examples/react/src/index.jsx
index 26419cdcb..26419cdcb 100644
--- a/examples/hello-create-react-app/src/index.jsx
+++ b/examples/react/src/index.jsx
diff --git a/examples/hello-create-react-app/src/logo.svg b/examples/react/src/logo.svg
index 9dfc1c058..9dfc1c058 100644
--- a/examples/hello-create-react-app/src/logo.svg
+++ b/examples/react/src/logo.svg
diff --git a/examples/hello-create-react-app/src/reportWebVitals.js b/examples/react/src/reportWebVitals.js
index 5253d3ad9..5253d3ad9 100644
--- a/examples/hello-create-react-app/src/reportWebVitals.js
+++ b/examples/react/src/reportWebVitals.js
diff --git a/examples/hello-create-react-app/src/setupTests.js b/examples/react/src/setupTests.js
index 8f2609b7b..8f2609b7b 100644
--- a/examples/hello-create-react-app/src/setupTests.js
+++ b/examples/react/src/setupTests.js
diff --git a/fixtures_example.com.html.gz b/fixtures_example.com.html.gz
deleted file mode 100644
index 247043b6d..000000000
--- a/fixtures_example.com.html.gz
+++ /dev/null
Binary files differ
diff --git a/misctools/.gitignore b/misctools/.gitignore
new file mode 100644
index 000000000..41cdc1338
--- /dev/null
+++ b/misctools/.gitignore
@@ -0,0 +1,3 @@
+*.tgz
+tgz
+readlink-getfd
diff --git a/misctools/fetch.zig b/misctools/fetch.zig
new file mode 100644
index 000000000..59bd3320a
--- /dev/null
+++ b/misctools/fetch.zig
@@ -0,0 +1,185 @@
+const std = @import("std");
+usingnamespace @import("../src/global.zig");
+const clap = @import("../src/deps/zig-clap/clap.zig");
+
+const HTTPClient = @import("../src/http_client.zig");
+const URL = @import("../src/query_string_map.zig").URL;
+const Headers = @import("../src/javascript/jsc/webcore/response.zig").Headers;
+const Method = @import("../src/http/method.zig").Method;
+const ColonListType = @import("../src/cli/colon_list_type.zig").ColonListType;
+const HeadersTuple = ColonListType(string, noop_resolver);
+const path_handler = @import("../src/resolver/resolve_path.zig");
+
+fn noop_resolver(in: string) !string {
+ return in;
+}
+
+const VERSION = "0.0.0";
+
+const params = [_]clap.Param(clap.Help){
+ clap.parseParam("-v, --verbose Show headers & status code") catch unreachable,
+ clap.parseParam("-H, --header <STR>... Add a header") catch unreachable,
+ clap.parseParam("-r, --max-redirects <STR> Maximum number of redirects to follow (default: 128)") catch unreachable,
+ clap.parseParam("-b, --body <STR> HTTP request body as a string") catch unreachable,
+ clap.parseParam("-f, --file <STR> File path to load as body") catch unreachable,
+ clap.parseParam("--no-gzip Disable gzip") catch unreachable,
+ clap.parseParam("--no-deflate Disable deflate") catch unreachable,
+ clap.parseParam("--no-compression Disable gzip & deflate") catch unreachable,
+ clap.parseParam("--version Print the version and exit") catch unreachable,
+ clap.parseParam("--turbo Skip sending TLS shutdown signals") catch unreachable,
+ clap.parseParam("<POS>... ") catch unreachable,
+};
+
+const MethodNames = std.ComptimeStringMap(Method, .{
+ .{ "GET", Method.GET },
+ .{ "get", Method.GET },
+
+ .{ "POST", Method.POST },
+ .{ "post", Method.POST },
+
+ .{ "PUT", Method.PUT },
+ .{ "put", Method.PUT },
+
+ .{ "PATCH", Method.PATCH },
+ .{ "patch", Method.PATCH },
+
+ .{ "OPTIONS", Method.OPTIONS },
+ .{ "options", Method.OPTIONS },
+
+ .{ "HEAD", Method.HEAD },
+ .{ "head", Method.HEAD },
+});
+
+var file_path_buf: [std.fs.MAX_PATH_BYTES + 1]u8 = undefined;
+var cwd_buf: [std.fs.MAX_PATH_BYTES + 1]u8 = undefined;
+
+pub const Arguments = struct {
+ url: URL,
+ method: Method,
+ verbose: bool = false,
+ headers: Headers.Entries,
+ headers_buf: string,
+ body: string = "",
+ turbo: bool = false,
+
+ pub fn parse(allocator: *std.mem.Allocator) !Arguments {
+ var diag = clap.Diagnostic{};
+
+ var args = clap.parse(clap.Help, &params, .{
+ .diagnostic = &diag,
+ .allocator = allocator,
+ }) catch |err| {
+ // Report useful error and exit
+ diag.report(Output.errorWriter(), err) catch {};
+ return err;
+ };
+
+ var positionals = args.positionals();
+ var raw_args: std.ArrayListUnmanaged(string) = undefined;
+
+ if (positionals.len > 0) {
+ raw_args = .{ .capacity = positionals.len, .items = @intToPtr([*][]const u8, @ptrToInt(positionals.ptr))[0..positionals.len] };
+ } else {
+ raw_args = .{};
+ }
+
+ if (args.flag("--version")) {
+ try Output.writer().writeAll(VERSION);
+ std.os.exit(0);
+ }
+
+ var method = Method.GET;
+ var url: URL = .{};
+ var body_string: string = args.option("--body") orelse "";
+
+ if (args.option("--file")) |file_path| {
+ if (file_path.len > 0) {
+ var cwd = try std.process.getCwd(&cwd_buf);
+ var parts = [_]string{std.mem.span(file_path)};
+ var absolute_path = path_handler.joinAbsStringBuf(cwd, &file_path_buf, &parts, .auto);
+ file_path_buf[absolute_path.len] = 0;
+ file_path_buf[absolute_path.len + 1] = 0;
+ var absolute_path_len = absolute_path.len;
+ var absolute_path_ = file_path_buf[0..absolute_path_len :0];
+
+ var body_file = std.fs.openFileAbsoluteZ(absolute_path_, .{ .read = true }) catch |err| {
+ Output.printErrorln("<r><red>{s}<r> opening file {s}", .{ @errorName(err), absolute_path });
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ var file_contents = body_file.readToEndAlloc(allocator, try body_file.getEndPos()) catch |err| {
+ Output.printErrorln("<r><red>{s}<r> reading file {s}", .{ @errorName(err), absolute_path });
+ Output.flush();
+ std.os.exit(1);
+ };
+ body_string = file_contents;
+ }
+ }
+
+ {
+ var raw_arg_i: usize = 0;
+ while (raw_arg_i < raw_args.items.len) : (raw_arg_i += 1) {
+ const arg = raw_args.items[raw_arg_i];
+ if (MethodNames.get(std.mem.span(arg))) |method_| {
+ method = method_;
+ _ = raw_args.swapRemove(raw_arg_i);
+ }
+ }
+
+ if (raw_args.items.len == 0) {
+ Output.prettyErrorln("<r><red>error<r><d>:<r> <b>Missing URL<r>\n\nExample:\n<r><b>fetch GET https://example.com<r>\n\n<b>fetch example.com/foo<r>\n\n", .{});
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ const url_position = raw_args.items.len - 1;
+ url = URL.parse(raw_args.swapRemove(url_position));
+ if (!url.isAbsolute()) {
+ Output.prettyErrorln("<r><red>error<r><d>:<r> <b>Invalid URL<r>\n\nExample:\n<r><b>fetch GET https://example.com<r>\n\n<b>fetch example.com/foo<r>\n\n", .{});
+ Output.flush();
+ std.os.exit(1);
+ }
+ }
+
+ return Arguments{
+ .url = url,
+ .method = method,
+ .verbose = args.flag("--verbose"),
+ .headers = .{},
+ .headers_buf = "",
+ .body = body_string,
+ .turbo = args.flag("--turbo"),
+ };
+ }
+};
+
+pub fn main() anyerror!void {
+ var stdout_ = std.io.getStdOut();
+ var stderr_ = std.io.getStdErr();
+ var output_source = Output.Source.init(stdout_, stderr_);
+ Output.Source.set(&output_source);
+ defer Output.flush();
+
+ var args = try Arguments.parse(default_allocator);
+ var client = HTTPClient.init(default_allocator, args.method, args.url, args.headers, args.headers_buf);
+ client.verbose = args.verbose;
+ client.disable_shutdown = args.turbo;
+
+ var body_out_str = try MutableString.init(default_allocator, 1024);
+ var response = try client.send(args.body, &body_out_str);
+
+ switch (response.status_code) {
+ 200, 302 => {},
+ else => {
+ if (!client.verbose) {
+ Output.prettyErrorln("{}", .{response});
+ }
+ },
+ }
+
+ Output.flush();
+ Output.disableBuffering();
+ try Output.writer().writeAll(body_out_str.list.items);
+ Output.enableBuffering();
+}
diff --git a/misctools/publish-examples.js b/misctools/publish-examples.js
new file mode 100644
index 000000000..b774e234f
--- /dev/null
+++ b/misctools/publish-examples.js
@@ -0,0 +1,150 @@
+const fs = require("fs");
+const path = require("path");
+const { execSync } = require("child_process");
+
+const exec = (cmd, opts = {}) => {
+ console.log("$", cmd);
+ return execSync(cmd, {
+ ...opts,
+ env: { CI: "true", ...process.env, ...(opts.env || {}) },
+ });
+};
+
+const DRY_RUN = !!process.env.DRY_RUN;
+
+var count = 0;
+
+const examplesFolderEntries = fs.readdirSync(
+ path.join(process.cwd(), "examples"),
+ { withFileTypes: true }
+);
+
+const packageNames = [];
+
+for (let folder of examplesFolderEntries) {
+ if (!folder.isDirectory()) continue;
+ const absolute = path.resolve(process.cwd(), "examples", folder.name);
+
+ let packageJSONText;
+
+ try {
+ packageJSONText = fs.readFileSync(
+ path.join(absolute, "package.json"),
+ "utf8"
+ );
+ } catch {
+ continue;
+ }
+
+ let packageJSON = JSON.parse(packageJSONText);
+
+ if (!packageJSON.name) continue;
+ if (!packageJSON.name.startsWith("@bun-examples")) continue;
+
+ var version = "0.0.1";
+ try {
+ const _versions = exec(`npm view ${packageJSON.name} versions --json`)
+ .toString()
+ .trim();
+
+ if (_versions.length > 0) {
+ const versionsArray = JSON.parse(_versions);
+ version = versionsArray[versionsArray.length - 1];
+ }
+ } catch (exception) {
+ console.error(exception);
+ }
+ var retryCount = 5;
+
+ // Never commit lockfiles
+ try {
+ fs.rmSync(path.join(absolute, "package-lock.json"));
+ } catch (exception) {}
+
+ try {
+ fs.rmSync(path.join(absolute, "yarn.lock"));
+ } catch (exception) {}
+
+ try {
+ fs.rmSync(path.join(absolute, "pnpm-lock.yaml"));
+ } catch (exception) {}
+
+ try {
+ fs.copyFileSync(
+ path.join(absolute, ".gitignore"),
+ path.join(absolute, "gitignore")
+ );
+ } catch (exception) {}
+
+ restart: while (retryCount-- > 0) {
+ packageJSON.version = version;
+ if ("private" in packageJSON) delete packageJSON.private;
+ if ("license" in packageJSON) delete packageJSON.license;
+
+ fs.writeFileSync(
+ path.join(absolute, "package.json"),
+ JSON.stringify(packageJSON, null, 2)
+ );
+ exec(`npm version patch --force`, { cwd: absolute });
+
+ packageJSON = JSON.parse(
+ fs.readFileSync(path.join(absolute, "package.json"), "utf8")
+ );
+ version = packageJSON.version;
+
+ try {
+ exec(
+ `npm publish ${
+ DRY_RUN ? "--dry-run" : ""
+ } --access public --registry https://registry.npmjs.org/`,
+ { cwd: absolute }
+ );
+ packageNames.push([
+ packageJSON.name,
+ {
+ version: packageJSON.version,
+ description: packageJSON.description || "",
+ },
+ ]);
+ count++;
+ break;
+ } catch (exception) {
+ continue restart;
+ }
+ }
+}
+
+if (packageNames.length > 0) {
+ const packageJSON = {
+ name: "bun-examples-all",
+ private: false,
+ version: `0.0.${Date.now()}`,
+ description: "All bun-examples",
+ examples: Object.fromEntries(packageNames),
+ };
+ const dir = path.join(process.cwd(), "examples/bun-examples-all");
+ try {
+ fs.rmSync(dir, {
+ recursive: true,
+ force: true,
+ });
+ } catch (exception) {}
+
+ try {
+ fs.mkdirSync(dir, {
+ recursive: true,
+ });
+ } catch (exception) {}
+ fs.writeFileSync(
+ path.join(dir, "package.json"),
+ JSON.stringify(packageJSON, null, 2)
+ );
+ exec(
+ `npm publish ${
+ DRY_RUN ? "--dry-run" : ""
+ } --access public --registry https://registry.npmjs.org/`,
+ { cwd: dir }
+ );
+}
+
+console.log(`Published ${count} packages`);
diff --git a/misctools/tgz.zig b/misctools/tgz.zig
new file mode 100644
index 000000000..ef7a2ee45
--- /dev/null
+++ b/misctools/tgz.zig
@@ -0,0 +1,82 @@
+const std = @import("std");
+
+const path_handler = @import("../src/resolver/resolve_path.zig");
+usingnamespace @import("../src/global.zig");
+
+const Archive = @import("../src/libarchive/libarchive.zig").Archive;
+const Zlib = @import("../src/zlib.zig");
+
+const RecognizedExtensions = std.ComptimeStringMap(void, .{
+ .{ ".tgz", void{} },
+ .{ ".tar", void{} },
+ .{ ".gz", void{} },
+});
+
+var buf: [32 * 1024 * 1024]u8 = undefined;
+
+// zig build-exe -Drelease-fast --main-pkg-path ../ ./tgz.zig ../src/deps/zlib/libz.a ../src/deps/libarchive.a -lc -liconv
+// zig build-exe -Drelease-fast --main-pkg-path ../ ./tgz.zig ../src/deps/zlib/libz.a ../src/deps/libarchive.a -lc -liconv
+pub fn main() anyerror!void {
+ var stdout_ = std.io.getStdOut();
+ var stderr_ = std.io.getStdErr();
+ var output_source = Output.Source.init(stdout_, stderr_);
+ Output.Source.set(&output_source);
+ defer Output.flush();
+ var args = try std.process.argsAlloc(std.heap.c_allocator);
+ if (args.len < 2) {
+ Output.prettyErrorln("<r><b>usage<r>: tgz ./tar.gz", .{});
+ Output.flush();
+ std.os.abort();
+ }
+
+ var tarball_path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+ var basename = std.fs.path.basename(std.mem.span(args[args.len - 1]));
+ while (RecognizedExtensions.has(std.fs.path.extension(basename))) {
+ basename = basename[0 .. basename.len - std.fs.path.extension(basename).len];
+ }
+
+ var parts = [_][]const u8{
+ std.mem.span(args[args.len - 1]),
+ };
+
+ const tarball_path = path_handler.joinAbsStringBuf(try std.process.getCwdAlloc(std.heap.c_allocator), &tarball_path_buf, &parts, .auto);
+ Output.prettyErrorln("Tarball Path: {s}", .{tarball_path});
+ var folder = basename;
+
+ // var dir = try std.fs.cwd().makeOpenPath(folder, .{ .iterate = true });
+
+ var tarball = try std.fs.openFileAbsolute(tarball_path, .{ .read = true });
+
+ var tarball_buf_list = std.ArrayListUnmanaged(u8){};
+
+ var file_size = try tarball.getEndPos();
+ var file_buf: []u8 = undefined;
+
+ if (file_size < buf.len) {
+ file_buf = buf[0..try tarball.readAll(&buf)];
+ } else {
+ file_buf = try tarball.readToEndAlloc(
+ std.heap.c_allocator,
+ file_size,
+ );
+ }
+
+ if (std.mem.eql(u8, std.fs.path.extension(tarball_path), ".gz") or std.mem.eql(u8, std.fs.path.extension(tarball_path), ".tgz")) {
+ tarball_buf_list = std.ArrayListUnmanaged(u8){ .capacity = file_buf.len, .items = file_buf };
+ var gunzip = try Zlib.ZlibReaderArrayList.init(file_buf, &tarball_buf_list, std.heap.c_allocator);
+ try gunzip.readAll();
+ gunzip.deinit();
+ Output.prettyErrorln("Decompressed {d} -> {d}\n", .{ file_buf.len, tarball_buf_list.items.len });
+ } else {
+ tarball_buf_list = std.ArrayListUnmanaged(u8){ .capacity = file_buf.len, .items = file_buf };
+ }
+
+ try Archive.extractToDisk(
+ file_buf,
+ folder,
+ null,
+ 1,
+ false,
+ false,
+ );
+}
diff --git a/package.json b/package.json
index 23453625a..1af3af0d6 100644
--- a/package.json
+++ b/package.json
@@ -13,5 +13,6 @@
"devDependencies": {
"@types/node": "^16.9.2",
"@types/puppeteer": "^5.4.4"
- }
+ },
+ "version": "0.0.0"
}
diff --git a/src/allocators.zig b/src/allocators.zig
index 2025c4961..8d1788f51 100644
--- a/src/allocators.zig
+++ b/src/allocators.zig
@@ -272,6 +272,11 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type
return constStrToU8(slice);
}
+ pub fn appendMutable(self: *Self, comptime AppendType: type, _value: AppendType) ![]u8 {
+ const appended = try @call(.{ .modifier = .always_inline }, append, .{ self, AppendType, _value });
+ return constStrToU8(appended);
+ }
+
pub fn append(self: *Self, comptime AppendType: type, _value: AppendType) ![]const u8 {
mutex.lock();
defer mutex.unlock();
@@ -302,7 +307,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type
) ![]const u8 {
const value_len: usize = brk: {
switch (comptime AppendType) {
- []const u8, []u8 => {
+ []const u8, []u8, [:0]const u8, [:0]u8 => {
break :brk _value.len;
},
else => {
@@ -322,7 +327,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type
backing_buf_used += value_len;
switch (AppendType) {
- []const u8, []u8 => {
+ []const u8, []u8, [:0]const u8, [:0]u8 => {
std.mem.copy(u8, backing_buf[start .. backing_buf_used - 1], _value);
backing_buf[backing_buf_used - 1] = 0;
},
@@ -341,7 +346,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type
var value_buf = try self.allocator.alloc(u8, value_len);
switch (comptime AppendType) {
- []const u8, []u8 => {
+ []const u8, []u8, [:0]const u8, [:0]u8 => {
std.mem.copy(u8, value_buf, _value);
},
else => {
diff --git a/src/c.zig b/src/c.zig
index 1c288a0ef..b5027196a 100644
--- a/src/c.zig
+++ b/src/c.zig
@@ -127,7 +127,7 @@ pub fn moveFileZSlow(from_dir: std.os.fd_t, filename: [*:0]const u8, to_dir: std
}
pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, destination: [*:0]const u8) !void {
- const stat = try std.os.fstat(in_handle);
+ const stat_ = try std.os.fstat(in_handle);
// delete if exists, don't care if it fails. it may fail due to the file not existing
// delete here because we run into weird truncation issues if we do not
// ftruncate() instead didn't work.
@@ -136,8 +136,8 @@ pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, dest
const out_handle = try std.os.openatZ(to_dir, destination, std.os.O_WRONLY | std.os.O_CREAT | std.os.O_CLOEXEC, 022);
defer std.os.close(out_handle);
if (comptime Enviroment.isLinux) {
- _ = std.os.system.fallocate(out_handle, 0, 0, @intCast(i64, stat.size));
- _ = try std.os.sendfile(out_handle, in_handle, 0, @intCast(usize, stat.size), &[_]std.c.iovec_const{}, &[_]std.c.iovec_const{}, 0);
+ _ = std.os.system.fallocate(out_handle, 0, 0, @intCast(i64, stat_.size));
+ _ = try std.os.sendfile(out_handle, in_handle, 0, @intCast(usize, stat_.size), &[_]std.c.iovec_const{}, &[_]std.c.iovec_const{}, 0);
} else {
if (comptime Enviroment.isMac) {
// if this fails, it doesn't matter
@@ -145,7 +145,7 @@ pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, dest
preallocate_file(
out_handle,
@intCast(std.os.off_t, 0),
- @intCast(std.os.off_t, stat.size),
+ @intCast(std.os.off_t, stat_.size),
) catch {};
}
@@ -161,6 +161,6 @@ pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, dest
}
}
- _ = fchmod(out_handle, stat.mode);
- _ = fchown(out_handle, stat.uid, stat.gid);
+ _ = fchmod(out_handle, stat_.mode);
+ _ = fchown(out_handle, stat_.uid, stat_.gid);
}
diff --git a/src/cache.zig b/src/cache.zig
index 8bd1221f7..707bb8da4 100644
--- a/src/cache.zig
+++ b/src/cache.zig
@@ -17,8 +17,6 @@ const ImportRecord = import_record.ImportRecord;
pub const FsCacheEntry = struct {
contents: string,
fd: StoredFileDescriptorType = 0,
- // Null means its not usable
- mod_key: ?fs.FileSystem.Implementation.ModKey = null,
pub fn deinit(entry: *FsCacheEntry, allocator: *std.mem.Allocator) void {
if (entry.contents.len > 0) {
@@ -66,11 +64,10 @@ pub const Fs = struct {
) !Entry {
var rfs = _fs.fs;
- var file_handle: std.fs.File = if (_file_handle) |__file| std.fs.File{ .handle = __file } else undefined;
-
- if (_file_handle == null) {
- file_handle = try std.fs.openFileAbsoluteZ(path, .{ .read = true });
- }
+ const file_handle: std.fs.File = if (_file_handle) |__file|
+ std.fs.File{ .handle = __file }
+ else
+ try std.fs.openFileAbsoluteZ(path, .{ .read = true });
defer {
if (rfs.needToCloseFiles() and _file_handle == null) {
@@ -78,42 +75,15 @@ pub const Fs = struct {
}
}
- // If the file's modification key hasn't changed since it was cached, assume
- // the contents of the file are also the same and skip reading the file.
- var mod_key: ?fs.FileSystem.Implementation.ModKey = rfs.modKeyWithFile(path, file_handle) catch |err| handler: {
- switch (err) {
- error.FileNotFound, error.AccessDenied => {
- return err;
- },
- else => {
- if (isDebug) {
- Output.printError("modkey error: {s}", .{@errorName(err)});
- }
- break :handler null;
- },
+ const file = rfs.readFileWithHandle(path, null, file_handle, true, shared) catch |err| {
+ if (comptime isDebug) {
+ Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) });
}
+ return err;
};
- var file: fs.File = undefined;
- if (mod_key) |modk| {
- file = rfs.readFileWithHandle(path, modk.size, file_handle, true, shared) catch |err| {
- if (isDebug) {
- Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) });
- }
- return err;
- };
- } else {
- file = rfs.readFileWithHandle(path, null, file_handle, true, shared) catch |err| {
- if (isDebug) {
- Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) });
- }
- return err;
- };
- }
-
return Entry{
.contents = file.contents,
- .mod_key = mod_key,
.fd = if (FeatureFlags.store_file_descriptors) file_handle.handle else 0,
};
}
@@ -156,42 +126,15 @@ pub const Fs = struct {
}
}
- // If the file's modification key hasn't changed since it was cached, assume
- // the contents of the file are also the same and skip reading the file.
- var mod_key: ?fs.FileSystem.Implementation.ModKey = rfs.modKeyWithFile(path, file_handle) catch |err| handler: {
- switch (err) {
- error.FileNotFound, error.AccessDenied => {
- return err;
- },
- else => {
- if (isDebug) {
- Output.printError("modkey error: {s}", .{@errorName(err)});
- }
- break :handler null;
- },
+ const file = rfs.readFileWithHandle(path, null, file_handle, use_shared_buffer, &c.shared_buffer) catch |err| {
+ if (isDebug) {
+ Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) });
}
+ return err;
};
- var file: fs.File = undefined;
- if (mod_key) |modk| {
- file = rfs.readFileWithHandle(path, modk.size, file_handle, use_shared_buffer, &c.shared_buffer) catch |err| {
- if (isDebug) {
- Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) });
- }
- return err;
- };
- } else {
- file = rfs.readFileWithHandle(path, null, file_handle, use_shared_buffer, &c.shared_buffer) catch |err| {
- if (isDebug) {
- Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) });
- }
- return err;
- };
- }
-
return Entry{
.contents = file.contents,
- .mod_key = mod_key,
.fd = if (FeatureFlags.store_file_descriptors) file_handle.handle else 0,
};
}
diff --git a/src/cli.zig b/src/cli.zig
index e26d94f6d..f6c7217af 100644
--- a/src/cli.zig
+++ b/src/cli.zig
@@ -32,6 +32,8 @@ const BunCommand = @import("./cli/bun_command.zig").BunCommand;
const DevCommand = @import("./cli/dev_command.zig").DevCommand;
const DiscordCommand = @import("./cli/discord_command.zig").DiscordCommand;
const BuildCommand = @import("./cli/build_command.zig").BuildCommand;
+const CreateCommand = @import("./cli/create_command.zig").CreateCommand;
+const CreateListExamplesCommand = @import("./cli/create_command.zig").CreateListExamplesCommand;
const RunCommand = @import("./cli/run_command.zig").RunCommand;
var start_time: i128 = undefined;
@@ -62,39 +64,7 @@ pub const Cli = struct {
};
const LoaderMatcher = strings.ExactSizeMatcher(4);
-pub fn ColonListType(comptime t: type, value_resolver: anytype) type {
- return struct {
- pub fn init(allocator: *std.mem.Allocator, count: usize) !@This() {
- var keys = try allocator.alloc(string, count);
- var values = try allocator.alloc(t, count);
-
- return @This(){ .keys = keys, .values = values };
- }
- keys: []string,
- values: []t,
-
- pub fn load(self: *@This(), input: []const string) !void {
- for (input) |str, i| {
- // Support either ":" or "=" as the separator, preferring whichever is first.
- // ":" is less confusing IMO because that syntax is used with flags
- // but "=" is what esbuild uses and I want this to be somewhat familiar for people using esbuild
- const midpoint = std.math.min(strings.indexOfChar(str, ':') orelse std.math.maxInt(usize), strings.indexOfChar(str, '=') orelse std.math.maxInt(usize));
- if (midpoint == std.math.maxInt(usize)) {
- return error.InvalidSeparator;
- }
-
- self.keys[i] = str[0..midpoint];
- self.values[i] = try value_resolver(str[midpoint + 1 .. str.len]);
- }
- }
-
- pub fn resolve(allocator: *std.mem.Allocator, input: []const string) !@This() {
- var list = try init(allocator, input.len);
- try list.load(input);
- return list;
- }
- };
-}
+const ColonListType = @import("./cli/colon_list_type.zig").ColonListType;
pub const LoaderColonList = ColonListType(Api.Loader, Arguments.loader_resolver);
pub const DefineColonList = ColonListType(string, Arguments.noop_resolver);
@@ -197,7 +167,10 @@ pub const Arguments = struct {
pub fn parse(allocator: *std.mem.Allocator, comptime cmd: Command.Tag) !Api.TransformOptions {
var diag = clap.Diagnostic{};
- var args = clap.parse(clap.Help, &params, .{ .diagnostic = &diag }) catch |err| {
+ var args = clap.parse(clap.Help, &params, .{
+ .diagnostic = &diag,
+ .allocator = allocator,
+ }) catch |err| {
// Report useful error and exit
diag.report(Output.errorWriter(), err) catch {};
return err;
@@ -469,10 +442,11 @@ const HelpCommand = struct {
const dirname = std.fs.path.basename(cwd);
if (FeatureFlags.dev_only) {
const fmt =
- \\> <r> <b><green>dev <r><d> ./a.ts ./b.jsx<r> Start a Bun Dev Server
- \\> <r> <b><magenta>bun <r><d> ./a.ts ./b.jsx<r> Bundle dependencies of input files into a <r><magenta>.bun<r>
- \\> <r> <b><blue>discord<r> Open Bun's Discord server
- \\> <r> <b><d>help <r> Print this help menu
+ \\> <r> <b><green>dev <r><d> ./a.ts ./b.jsx<r> Start a Bun Dev Server
+ \\> <r> <b><magenta>bun <r><d> ./a.ts ./b.jsx<r> Bundle dependencies of input files into a <r><magenta>.bun<r>
+ \\> <r> <b><cyan>create <r><d> next ./app<r> Start a new project from a template <d>(shorthand: c)<r>
+ \\> <r> <b><blue>discord <r> Open Bun's Discord server
+ \\> <r> <b><d>help <r> Print this help menu
\\
;
@@ -485,6 +459,7 @@ const HelpCommand = struct {
\\> <r> <b><white>init<r> Setup Bun in \"{s}\"
\\> <r> <b><green>dev <r><d> ./a.ts ./b.jsx<r> Start a Bun Dev Server
\\<d>*<r> <b><cyan>build <r><d> ./a.ts ./b.jsx<r> Make JavaScript-like code runnable & bundle CSS
+ \\> <r> <b><cyan>create<r><d> next<r> Use a template from https://github.com/jarred-sumner/bun/tree/main/examples<r>
\\> <r> <b><magenta>bun <r><d> ./a.ts ./b.jsx<r> Bundle dependencies of input files into a <r><magenta>.bun<r>
\\> <r> <green>run <r><d> ./a.ts <r> Run a JavaScript-like file with Bun.js
\\> <r> <b><blue>discord<r> Open Bun's Discord server
@@ -544,7 +519,10 @@ pub const Command = struct {
pub fn create(allocator: *std.mem.Allocator, log: *logger.Log, comptime command: Command.Tag) anyerror!Context {
return Command.Context{
- .args = try Arguments.parse(allocator, command),
+ .args = if (comptime command != Command.Tag.CreateCommand)
+ try Arguments.parse(allocator, command)
+ else
+ std.mem.zeroes(Api.TransformOptions),
.log = log,
.start_time = start_time,
.allocator = allocator,
@@ -561,7 +539,10 @@ pub const Command = struct {
return .AutoCommand;
}
- const next_arg = (args_iter.next(allocator) orelse return .AutoCommand) catch unreachable;
+ var next_arg = (args_iter.next(allocator) orelse return .AutoCommand) catch unreachable;
+ while (next_arg[0] == '-') {
+ next_arg = (args_iter.next(allocator) orelse return .AutoCommand) catch unreachable;
+ }
const first_arg_name = std.mem.span(next_arg);
const RootCommandMatcher = strings.ExactSizeMatcher(8);
@@ -571,6 +552,7 @@ pub const Command = struct {
RootCommandMatcher.case("init") => .InitCommand,
RootCommandMatcher.case("bun") => .BunCommand,
RootCommandMatcher.case("discord") => .DiscordCommand,
+ RootCommandMatcher.case("c"), RootCommandMatcher.case("create") => .CreateCommand,
RootCommandMatcher.case("b"), RootCommandMatcher.case("build") => .BuildCommand,
RootCommandMatcher.case("r"), RootCommandMatcher.case("run") => .RunCommand,
@@ -585,6 +567,7 @@ pub const Command = struct {
RootCommandMatcher.case("bun") => .BunCommand,
RootCommandMatcher.case("discord") => .DiscordCommand,
RootCommandMatcher.case("d"), RootCommandMatcher.case("dev") => .DevCommand,
+ RootCommandMatcher.case("c"), RootCommandMatcher.case("create") => .CreateCommand,
RootCommandMatcher.case("help") => .HelpCommand,
else => .AutoCommand,
@@ -617,6 +600,32 @@ pub const Command = struct {
try BuildCommand.exec(ctx);
},
+ .CreateCommand => {
+ const ctx = try Command.Context.create(allocator, log, .CreateCommand);
+ var positionals: [2]string = undefined;
+ var positional_i: usize = 0;
+
+ var args = try std.process.argsAlloc(allocator);
+
+ if (args.len > 2) {
+ var remainder = args[2..];
+ var remainder_i: usize = 0;
+ var i: usize = 0;
+ while (remainder_i < remainder.len and positional_i < positionals.len) : (remainder_i += 1) {
+ var slice = std.mem.trim(u8, std.mem.span(remainder[remainder_i]), " \t\n;");
+ if (slice.len > 0) {
+ positionals[positional_i] = slice;
+ positional_i += 1;
+ }
+ }
+ }
+ var positionals_ = positionals[0..positional_i];
+
+ switch (positionals_.len) {
+ 0...1 => try CreateListExamplesCommand.exec(ctx),
+ else => try CreateCommand.exec(ctx, positionals_),
+ }
+ },
.RunCommand => {
const ctx = try Command.Context.create(allocator, log, .RunCommand);
@@ -661,5 +670,6 @@ pub const Command = struct {
RunCommand,
AutoCommand,
HelpCommand,
+ CreateCommand,
};
};
diff --git a/src/cli/colon_list_type.zig b/src/cli/colon_list_type.zig
new file mode 100644
index 000000000..bb243feff
--- /dev/null
+++ b/src/cli/colon_list_type.zig
@@ -0,0 +1,36 @@
+usingnamespace @import("../global.zig");
+const std = @import("std");
+
+pub fn ColonListType(comptime t: type, value_resolver: anytype) type {
+ return struct {
+ pub fn init(allocator: *std.mem.Allocator, count: usize) !@This() {
+ var keys = try allocator.alloc(string, count);
+ var values = try allocator.alloc(t, count);
+
+ return @This(){ .keys = keys, .values = values };
+ }
+ keys: []string,
+ values: []t,
+
+ pub fn load(self: *@This(), input: []const string) !void {
+ for (input) |str, i| {
+ // Support either ":" or "=" as the separator, preferring whichever is first.
+ // ":" is less confusing IMO because that syntax is used with flags
+ // but "=" is what esbuild uses and I want this to be somewhat familiar for people using esbuild
+ const midpoint = std.math.min(strings.indexOfChar(str, ':') orelse std.math.maxInt(usize), strings.indexOfChar(str, '=') orelse std.math.maxInt(usize));
+ if (midpoint == std.math.maxInt(usize)) {
+ return error.InvalidSeparator;
+ }
+
+ self.keys[i] = str[0..midpoint];
+ self.values[i] = try value_resolver(str[midpoint + 1 .. str.len]);
+ }
+ }
+
+ pub fn resolve(allocator: *std.mem.Allocator, input: []const string) !@This() {
+ var list = try init(allocator, input.len);
+ try list.load(input);
+ return list;
+ }
+ };
+}
diff --git a/src/cli/create.sh b/src/cli/create.sh
new file mode 100644
index 000000000..dc8ebd708
--- /dev/null
+++ b/src/cli/create.sh
@@ -0,0 +1 @@
+git add -A . > /dev/null 2>&1; git commit -am "Initial Commit" > /dev/null 2>&1; \ No newline at end of file
diff --git a/src/cli/create_command.zig b/src/cli/create_command.zig
new file mode 100644
index 000000000..a96d48624
--- /dev/null
+++ b/src/cli/create_command.zig
@@ -0,0 +1,1600 @@
+usingnamespace @import("../global.zig");
+const std = @import("std");
+
+const lex = @import("../js_lexer.zig");
+const logger = @import("../logger.zig");
+const alloc = @import("../alloc.zig");
+const options = @import("../options.zig");
+const js_parser = @import("../js_parser.zig");
+const js_ast = @import("../js_ast.zig");
+const linker = @import("../linker.zig");
+usingnamespace @import("../ast/base.zig");
+usingnamespace @import("../defines.zig");
+const panicky = @import("../panic_handler.zig");
+const allocators = @import("../allocators.zig");
+const sync = @import(".././sync.zig");
+const Api = @import("../api/schema.zig").Api;
+const resolve_path = @import("../resolver/resolve_path.zig");
+const configureTransformOptionsForBun = @import("../javascript/jsc/config.zig").configureTransformOptionsForBun;
+const Command = @import("../cli.zig").Command;
+const bundler = @import("../bundler.zig");
+const NodeModuleBundle = @import("../node_module_bundle.zig").NodeModuleBundle;
+const fs = @import("../fs.zig");
+const URL = @import("../query_string_map.zig").URL;
+const HTTPClient = @import("../http_client.zig");
+const ParseJSON = @import("../json_parser.zig").ParseJSON;
+const Archive = @import("../libarchive/libarchive.zig").Archive;
+const Zlib = @import("../zlib.zig");
+const JSPrinter = @import("../js_printer.zig");
+const DotEnv = @import("../env_loader.zig");
+const NPMClient = @import("../which_npm_client.zig").NPMClient;
+const which = @import("../which.zig").which;
+const clap = @import("clap");
+const Lock = @import("../lock.zig").Lock;
+
+const CopyFile = @import("../copy_file.zig");
+var bun_path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+
+const libgit2_basename = switch (std.builtin.os.tag) {
+ .linux => "libgit2.so.26",
+ .macos => "libgit2.dylib",
+ .windows => "libgit2.dll",
+ else => "libgit2.so",
+};
+
+const global_libgit2_paths = switch (std.builtin.os.tag) {
+ .macos => if (Environment.isAarch64)
+ &[][:0]const u8{
+ "/opt/homebrew/lib/libgit2.dylib",
+ "/opt/homebrew/libgit2/lib/libgit2.dylib",
+ "/usr/local/lib/libgit2.dylib",
+ "/usr/local/opt/libgit2/lib/libgit2.dylib",
+ }
+ else
+ &[_][:0]const u8{
+ "/usr/local/lib/libgit2.dylib",
+ "/usr/local/opt/libgit2/lib/libgit2.dylib",
+ },
+
+ else => &[_][:0]const u8{},
+};
+
+// the standard library function for this returns false when statically linking
+fn getSelfExeSharedLibPaths(allocator: *std.mem.Allocator) error{OutOfMemory}![][:0]u8 {
+ const List = std.ArrayList([:0]u8);
+ const os = std.os;
+ const Allocator = std.mem.Allocator;
+ const builtin = std.builtin;
+ const mem = std.mem;
+
+ switch (builtin.os.tag) {
+ .linux,
+ .freebsd,
+ .netbsd,
+ .dragonfly,
+ .openbsd,
+ => {
+ var paths = List.init(allocator);
+ errdefer {
+ const slice = paths.toOwnedSlice();
+ for (slice) |item| {
+ allocator.free(item);
+ }
+ allocator.free(slice);
+ }
+ try os.dl_iterate_phdr(&paths, error{OutOfMemory}, struct {
+ fn callback(info: *os.dl_phdr_info, size: usize, list: *List) !void {
+ _ = size;
+ const name = info.dlpi_name orelse return;
+ if (name[0] == '/') {
+ const item = try list.allocator.dupeZ(u8, mem.spanZ(name));
+ errdefer list.allocator.free(item);
+ try list.append(item);
+ }
+ }
+ }.callback);
+ return paths.toOwnedSlice();
+ },
+ .macos, .ios, .watchos, .tvos => {
+ var paths = List.init(allocator);
+ errdefer {
+ const slice = paths.toOwnedSlice();
+ for (slice) |item| {
+ allocator.free(item);
+ }
+ allocator.free(slice);
+ }
+ const img_count = std.c._dyld_image_count();
+ var i: u32 = 0;
+ while (i < img_count) : (i += 1) {
+ const name = std.c._dyld_get_image_name(i);
+ const item = try allocator.dupeZ(u8, mem.spanZ(name));
+ errdefer allocator.free(item);
+ try paths.append(item);
+ }
+ return paths.toOwnedSlice();
+ },
+ // revisit if Haiku implements dl_iterat_phdr (https://dev.haiku-os.org/ticket/15743)
+ .haiku => {
+ var paths = List.init(allocator);
+ errdefer {
+ const slice = paths.toOwnedSlice();
+ for (slice) |item| {
+ allocator.free(item);
+ }
+ allocator.free(slice);
+ }
+
+ var b = "/boot/system/runtime_loader";
+ const item = try allocator.dupeZ(u8, mem.spanZ(b));
+ errdefer allocator.free(item);
+ try paths.append(item);
+
+ return paths.toOwnedSlice();
+ },
+ else => @compileError("getSelfExeSharedLibPaths unimplemented for this target"),
+ }
+}
+
+const skip_dirs = &[_]string{ "node_modules", ".git" };
+const skip_files = &[_]string{
+ "package-lock.json",
+ "yarn.lock",
+ "pnpm-lock.yaml",
+};
+
+const never_conflict = &[_]string{
+ "README.md",
+ "gitignore",
+ ".gitignore",
+ ".git/",
+};
+
+const npm_task_args = &[_]string{
+ "exec",
+};
+
+var bun_path: ?[:0]const u8 = null;
+fn execTask(allocator: *std.mem.Allocator, task_: string, cwd: string, PATH: string, npm_client: NPMClient) void {
+ const task = std.mem.trim(u8, task_, " \n\r\t");
+ if (task.len == 0) return;
+
+ var splitter = std.mem.split(u8, task, " ");
+ var count: usize = 0;
+ while (splitter.next() != null) {
+ count += 1;
+ }
+
+ const npm_args = 2;
+ const total = count + npm_args;
+ var argv = allocator.alloc(string, total) catch return;
+ defer allocator.free(argv);
+
+ argv[0] = npm_client.bin;
+ argv[1] = npm_task_args[0];
+
+ {
+ var i: usize = 2;
+
+ splitter = std.mem.split(u8, task, " ");
+ while (splitter.next()) |split| {
+ argv[i] = split;
+ i += 1;
+ }
+ }
+
+ if (strings.startsWith(task, "bun ")) {
+ // TODO: use self exe
+ if (bun_path orelse which(&bun_path_buf, PATH, cwd, "bun")) |bun_path_| {
+ bun_path = bun_path_;
+ argv = argv[npm_args..];
+ argv[0] = std.mem.span(bun_path_);
+ }
+ }
+
+ Output.pretty("\n<r><d>$<b>", .{});
+ for (argv) |arg, i| {
+ if (i > argv.len - 1) {
+ Output.print(" {s} ", .{arg});
+ } else {
+ Output.print(" {s}", .{arg});
+ }
+ }
+ Output.pretty("<r>", .{});
+ Output.print("\n", .{});
+ Output.flush();
+
+ Output.disableBuffering();
+ defer Output.enableBuffering();
+
+ var proc = std.ChildProcess.init(argv, allocator) catch return;
+ defer proc.deinit();
+ proc.stdin_behavior = .Inherit;
+ proc.stdout_behavior = .Inherit;
+ proc.stderr_behavior = .Inherit;
+ proc.cwd = cwd;
+ _ = proc.spawnAndWait() catch undefined;
+}
+
+// We don't want to allocate memory each time
+// But we cannot print over an existing buffer or weird stuff will happen
+// so we keep two and switch between them
+pub const ProgressBuf = struct {
+ var bufs: [2][1024]u8 = [2][1024]u8{
+ @as([1024]u8, undefined),
+ @as([1024]u8, undefined),
+ };
+
+ var buf_index: usize = 0;
+
+ pub fn print(comptime fmt: string, args: anytype) !string {
+ buf_index += 1;
+ return try std.fmt.bufPrint(std.mem.span(&bufs[buf_index % 2]), fmt, args);
+ }
+};
+
+const CreateOptions = struct {
+ npm_client: ?NPMClient.Tag = null,
+ skip_install: bool = false,
+ overwrite: bool = false,
+ skip_git: bool = false,
+ verbose: bool = false,
+
+ const params = [_]clap.Param(clap.Help){
+ clap.parseParam("--help Print this menu") catch unreachable,
+ clap.parseParam("--npm Use npm for tasks & install") catch unreachable,
+ clap.parseParam("--yarn Use yarn for tasks & install") catch unreachable,
+ clap.parseParam("--pnpm Use pnpm for tasks & install") catch unreachable,
+ clap.parseParam("--force Overwrite existing files") catch unreachable,
+ clap.parseParam("--no-install Don't install node_modules") catch unreachable,
+ clap.parseParam("--no-git Don't create a git repository") catch unreachable,
+ clap.parseParam("--verbose Too many logs") catch unreachable,
+ clap.parseParam("<POS>... ") catch unreachable,
+ };
+
+ pub fn parse(allocator: *std.mem.Allocator, comptime print_flags_only: bool) !CreateOptions {
+ var diag = clap.Diagnostic{};
+
+ var args = clap.parse(clap.Help, &params, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| {
+ // Report useful error and exit
+ diag.report(Output.errorWriter(), err) catch {};
+ return err;
+ };
+
+ if (args.flag("--help") or comptime print_flags_only) {
+ if (comptime print_flags_only) {
+ clap.help(Output.writer(), params[1..]) catch {};
+ return undefined;
+ }
+
+ Output.prettyln("<r><b>bun create<r> flags:\n", .{});
+ Output.flush();
+ clap.help(Output.writer(), params[1..]) catch {};
+ Output.flush();
+ std.os.exit(0);
+ }
+
+ var opts = CreateOptions{};
+ if (args.flag("--npm")) {
+ opts.npm_client = NPMClient.Tag.npm;
+ }
+
+ if (args.flag("--yarn")) {
+ opts.npm_client = NPMClient.Tag.yarn;
+ }
+
+ if (args.flag("--pnpm")) {
+ opts.npm_client = NPMClient.Tag.pnpm;
+ }
+
+ opts.verbose = args.flag("--verbose");
+ opts.skip_install = args.flag("--no-install");
+ opts.skip_git = args.flag("--no-git");
+ opts.overwrite = args.flag("--force");
+
+ return opts;
+ }
+};
+
+const BUN_CREATE_DIR = ".bun-create";
+var home_dir_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+pub const CreateCommand = struct {
+ var client: HTTPClient = undefined;
+
+ pub fn exec(ctx: Command.Context, positionals: []const []const u8) !void {
+ var create_options = try CreateOptions.parse(ctx.allocator, false);
+
+ var filesystem = try fs.FileSystem.init1(ctx.allocator, null);
+ var env_loader: DotEnv.Loader = brk: {
+ var map = try ctx.allocator.create(DotEnv.Map);
+ map.* = DotEnv.Map.init(ctx.allocator);
+
+ break :brk DotEnv.Loader.init(map, ctx.allocator);
+ };
+
+ env_loader.loadProcess();
+
+ const template = brk: {
+ var positional = positionals[0];
+
+ if (!std.fs.path.isAbsolute(positional)) {
+ outer: {
+ if (env_loader.map.get("BUN_CREATE_DIR")) |home_dir| {
+ var parts = [_]string{ home_dir, positional };
+ var outdir_path = filesystem.absBuf(&parts, &home_dir_buf);
+ home_dir_buf[outdir_path.len] = 0;
+ var outdir_path_ = home_dir_buf[0..outdir_path.len :0];
+ std.fs.accessAbsoluteZ(outdir_path_, .{}) catch break :outer;
+ if (create_options.verbose) {
+ Output.prettyErrorln("reading from {s}", .{outdir_path});
+ }
+ break :brk outdir_path;
+ }
+ }
+
+ outer: {
+ var parts = [_]string{ filesystem.top_level_dir, BUN_CREATE_DIR, positional };
+ var outdir_path = filesystem.absBuf(&parts, &home_dir_buf);
+ home_dir_buf[outdir_path.len] = 0;
+ var outdir_path_ = home_dir_buf[0..outdir_path.len :0];
+ std.fs.accessAbsoluteZ(outdir_path_, .{}) catch break :outer;
+ if (create_options.verbose) {
+ Output.prettyErrorln("reading from {s}", .{outdir_path});
+ }
+ break :brk outdir_path;
+ }
+
+ outer: {
+ if (env_loader.map.get("HOME")) |home_dir| {
+ var parts = [_]string{ home_dir, BUN_CREATE_DIR, positional };
+ var outdir_path = filesystem.absBuf(&parts, &home_dir_buf);
+ home_dir_buf[outdir_path.len] = 0;
+ var outdir_path_ = home_dir_buf[0..outdir_path.len :0];
+ std.fs.accessAbsoluteZ(outdir_path_, .{}) catch break :outer;
+ if (create_options.verbose) {
+ Output.prettyErrorln("reading from {s}", .{outdir_path});
+ }
+ break :brk outdir_path;
+ }
+ }
+ }
+
+ break :brk positional;
+ };
+ const dirname = positionals[1];
+ var filename_writer = filesystem.dirname_store;
+ const destination = try filesystem.dirname_store.append([]const u8, resolve_path.joinAbs(filesystem.top_level_dir, .auto, dirname));
+
+ var progress = std.Progress{};
+ var node = try progress.start(try ProgressBuf.print("Loading {s}", .{template}), 0);
+ progress.supports_ansi_escape_codes = Output.enable_ansi_colors;
+
+ // alacritty is fast
+ if (env_loader.map.get("ALACRITTY_LOG") != null) {
+ progress.refresh_rate_ns = std.time.ns_per_ms * 8;
+
+ if (create_options.verbose) {
+ Output.prettyErrorln("your using alacritty", .{});
+ }
+ }
+
+ defer {
+ progress.refresh();
+ }
+
+ var package_json_contents: MutableString = undefined;
+ var package_json_file: std.fs.File = undefined;
+
+ const is_remote_template = !std.fs.path.isAbsolute(template);
+
+ if (create_options.verbose) {
+ Output.prettyErrorln("is_remote_template {d}", .{@boolToInt(is_remote_template)});
+ }
+
+ if (is_remote_template) {
+ var tarball_bytes: MutableString = Example.fetch(ctx, template, &progress, node) catch |err| {
+ switch (err) {
+ error.HTTPForbidden, error.ExampleNotFound => {
+ node.end();
+ progress.refresh();
+
+ Output.prettyError("\n<r><red>error:<r> <b>\"{s}\"<r> was not found. Here are templates you can use:\n\n", .{
+ template,
+ });
+ Output.flush();
+
+ const examples = try Example.fetchAllLocalAndRemote(ctx, null, &env_loader, filesystem);
+ Example.print(examples.items, dirname);
+ Output.flush();
+ std.os.exit(1);
+ },
+ else => {
+ return err;
+ },
+ }
+ };
+
+ node.name = try ProgressBuf.print("Decompressing {s}", .{template});
+ node.setCompletedItems(0);
+ node.setEstimatedTotalItems(0);
+
+ progress.refresh();
+
+ var file_buf = try ctx.allocator.alloc(u8, 16384);
+
+ var tarball_buf_list = std.ArrayListUnmanaged(u8){ .capacity = file_buf.len, .items = file_buf };
+ var gunzip = try Zlib.ZlibReaderArrayList.init(tarball_bytes.list.items, &tarball_buf_list, ctx.allocator);
+ try gunzip.readAll();
+ gunzip.deinit();
+
+ node.name = try ProgressBuf.print("Extracting {s}", .{template});
+ node.setCompletedItems(0);
+ node.setEstimatedTotalItems(0);
+
+ progress.refresh();
+
+ var pluckers = [_]Archive.Plucker{
+ try Archive.Plucker.init("package.json", 2048, ctx.allocator),
+ try Archive.Plucker.init("GETTING_STARTED", 512, ctx.allocator),
+ };
+
+ var archive_context = Archive.Context{
+ .pluckers = &pluckers,
+ .all_files = undefined,
+ .overwrite_list = std.StringArrayHashMap(void).init(ctx.allocator),
+ };
+
+ if (!create_options.overwrite) {
+ try Archive.getOverwritingFileList(
+ tarball_buf_list.items,
+ destination,
+ &archive_context,
+ @TypeOf(filesystem.dirname_store),
+ filesystem.dirname_store,
+ 1,
+ );
+
+ inline for (never_conflict) |never_conflict_path| {
+ _ = archive_context.overwrite_list.swapRemove(never_conflict_path);
+ }
+
+ if (archive_context.overwrite_list.count() > 0) {
+ node.end();
+ progress.refresh();
+
+ // Thank you create-react-app for this copy (and idea)
+ Output.prettyErrorln(
+ "<r><red>error<r><d>: <r>The directory <b><blue>{s}<r>/ contains files that could conflict:\n\n",
+ .{
+ std.fs.path.basename(destination),
+ },
+ );
+ for (archive_context.overwrite_list.keys()) |path| {
+ if (strings.endsWith(path, std.fs.path.sep_str)) {
+ Output.prettyError("<r> <blue>{s}<r>", .{path[0 .. std.math.max(path.len, 1) - 1]});
+ Output.prettyErrorln(std.fs.path.sep_str, .{});
+ } else {
+ Output.prettyErrorln("<r> {s}", .{path});
+ }
+ }
+ Output.flush();
+ std.os.exit(1);
+ }
+ }
+
+ const extracted_file_count = try Archive.extractToDisk(
+ tarball_buf_list.items,
+ destination,
+ &archive_context,
+ void,
+ void{},
+ 1,
+ false,
+ false,
+ );
+
+ var plucker = pluckers[0];
+
+ if (!plucker.found or plucker.fd == 0) {
+ node.end();
+
+ Output.prettyErrorln("package.json not found. This package is corrupt. Please try again or file an issue if it keeps happening.", .{});
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ node.name = "Updating package.json";
+ progress.refresh();
+
+ package_json_contents = plucker.contents;
+ package_json_file = std.fs.File{ .handle = plucker.fd };
+ } else {
+ var template_parts = [_]string{template};
+
+ node.name = "Copying files";
+ progress.refresh();
+
+ const template_dir = std.fs.openDirAbsolute(filesystem.abs(&template_parts), .{ .iterate = true }) catch |err| {
+ node.end();
+ progress.refresh();
+
+ Output.prettyErrorln("<r><red>{s}<r>: opening dir {s}", .{ @errorName(err), template });
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ std.fs.deleteTreeAbsolute(destination) catch {};
+ const destination_dir = std.fs.cwd().makeOpenPath(destination, .{ .iterate = true }) catch |err| {
+ node.end();
+
+ progress.refresh();
+
+ Output.prettyErrorln("<r><red>{s}<r>: creating dir {s}", .{ @errorName(err), destination });
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ const Walker = @import("../walker_skippable.zig");
+ var walker_ = try Walker.walk(template_dir, ctx.allocator, skip_files, skip_dirs);
+ defer walker_.deinit();
+
+ var count: usize = 0;
+
+ const FileCopier = struct {
+ pub fn copy(
+ destination_dir_: std.fs.Dir,
+ walker: *Walker,
+ node_: *std.Progress.Node,
+ progress_: *std.Progress,
+ ) !void {
+ while (try walker.next()) |entry| {
+ // TODO: make this not walk these folders entirely
+ // rather than checking each file path.....
+ if (entry.kind != .File) continue;
+
+ var outfile = destination_dir_.createFile(entry.path, .{}) catch brk: {
+ if (std.fs.path.dirname(entry.path)) |entry_dirname| {
+ destination_dir_.makePath(entry_dirname) catch {};
+ }
+ break :brk destination_dir_.createFile(entry.path, .{}) catch |err| {
+ node_.end();
+
+ progress_.refresh();
+
+ Output.prettyErrorln("<r><red>{s}<r>: copying file {s}", .{ @errorName(err), entry.path });
+ Output.flush();
+ std.os.exit(1);
+ };
+ };
+ defer outfile.close();
+ defer node_.completeOne();
+
+ var infile = try entry.dir.openFile(entry.basename, .{ .read = true });
+ defer infile.close();
+
+ // Assumption: you only really care about making sure something that was executable is still executable
+ const stat = infile.stat() catch continue;
+ _ = C.fchmod(outfile.handle, stat.mode);
+
+ CopyFile.copy(infile.handle, outfile.handle) catch {
+ entry.dir.copyFile(entry.basename, destination_dir_, entry.path, .{}) catch |err| {
+ node_.end();
+
+ progress_.refresh();
+
+ Output.prettyErrorln("<r><red>{s}<r>: copying file {s}", .{ @errorName(err), entry.path });
+ Output.flush();
+ std.os.exit(1);
+ };
+ };
+ }
+ }
+ };
+
+ try FileCopier.copy(destination_dir, &walker_, node, &progress);
+
+ package_json_file = destination_dir.openFile("package.json", .{ .read = true, .write = true }) catch |err| {
+ node.end();
+
+ progress.refresh();
+
+ Output.prettyErrorln("Failed to open package.json due to error <r><red>{s}", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ };
+ const stat = package_json_file.stat() catch |err| {
+ node.end();
+
+ progress.refresh();
+
+ Output.prettyErrorln("Failed to stat package.json due to error <r><red>{s}", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ if (stat.kind != .File or stat.size == 0) {
+ node.end();
+
+ progress.refresh();
+
+ Output.prettyErrorln("package.json must be a file with content", .{});
+ Output.flush();
+ std.os.exit(1);
+ }
+ package_json_contents = try MutableString.init(ctx.allocator, stat.size);
+ package_json_contents.list.expandToCapacity();
+
+ _ = package_json_file.preadAll(package_json_contents.list.items, 0) catch |err| {
+ node.end();
+
+ progress.refresh();
+
+ Output.prettyErrorln("Error reading package.json: <r><red>{s}", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ };
+ // The printer doesn't truncate, so we must do so manually
+ std.os.ftruncate(package_json_file.handle, 0) catch {};
+
+ js_ast.Expr.Data.Store.create(default_allocator);
+ js_ast.Stmt.Data.Store.create(default_allocator);
+ }
+
+ node.end();
+ progress.refresh();
+
+ var source = logger.Source.initPathString("package.json", package_json_contents.list.items);
+ var package_json_expr = ParseJSON(&source, ctx.log, ctx.allocator) catch |err| {
+ Output.prettyErrorln("package.json failed to parse with error: {s}", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ if (ctx.log.errors > 0) {
+ if (Output.enable_ansi_colors) {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true);
+ } else {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), false);
+ }
+
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ if (package_json_expr.asProperty("name")) |name_expr| {
+ if (name_expr.expr.data != .e_string) {
+ Output.prettyErrorln("package.json failed to parse correctly. its missing a name. it shouldnt be missing a name.", .{});
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ var basename = std.fs.path.basename(destination);
+ name_expr.expr.data.e_string.utf8 = @intToPtr([*]u8, @ptrToInt(basename.ptr))[0..basename.len];
+ } else {
+ Output.prettyErrorln("package.json failed to parse correctly. its missing a name. it shouldnt be missing a name.", .{});
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ package_json_expr.data.e_object.is_single_line = false;
+
+ var preinstall_tasks = std.mem.zeroes(std.ArrayListUnmanaged([]const u8));
+ var postinstall_tasks = std.mem.zeroes(std.ArrayListUnmanaged([]const u8));
+
+ var has_dependencies: bool = false;
+
+ {
+ var i: usize = 0;
+ var property_i: usize = 0;
+ while (i < package_json_expr.data.e_object.properties.len) : (i += 1) {
+ const property = package_json_expr.data.e_object.properties[i];
+ const key = property.key.?.asString(ctx.allocator).?;
+
+ has_dependencies = has_dependencies or
+ ((strings.eqlComptime(key, "dependencies") or
+ strings.eqlComptime(key, "devDependencies") or
+ std.mem.indexOf(u8, key, "optionalDependencies") != null or
+ strings.eqlComptime(key, "peerDependencies")) and
+ (property.value.?.data == .e_object and property.value.?.data.e_object.properties.len > 0));
+
+ if (key.len == 0 or !strings.eqlComptime(key, "bun-create")) {
+ package_json_expr.data.e_object.properties[property_i] = property;
+ property_i += 1;
+ continue;
+ }
+
+ var value = property.value.?;
+ if (value.asProperty("postinstall")) |postinstall| {
+ switch (postinstall.expr.data) {
+ .e_string => |single_task| {
+ try postinstall_tasks.append(
+ ctx.allocator,
+ try single_task.string(ctx.allocator),
+ );
+ },
+ .e_array => |tasks| {
+ for (tasks.items) |task| {
+ if (task.asString(ctx.allocator)) |task_entry| {
+ try postinstall_tasks.append(
+ ctx.allocator,
+ task_entry,
+ );
+ }
+ }
+ },
+ else => {},
+ }
+ }
+
+ if (value.asProperty("preinstall")) |preinstall| {
+ switch (preinstall.expr.data) {
+ .e_string => |single_task| {
+ try preinstall_tasks.append(
+ ctx.allocator,
+ try single_task.string(ctx.allocator),
+ );
+ },
+ .e_array => |tasks| {
+ for (tasks.items) |task| {
+ if (task.asString(ctx.allocator)) |task_entry| {
+ try preinstall_tasks.append(
+ ctx.allocator,
+ task_entry,
+ );
+ }
+ }
+ },
+ else => {},
+ }
+ }
+ }
+ package_json_expr.data.e_object.properties = package_json_expr.data.e_object.properties[0..property_i];
+ }
+
+ if (create_options.verbose) {
+ Output.prettyErrorln("Has dependencies? {d}", .{@boolToInt(has_dependencies)});
+ }
+
+ var package_json_writer = JSPrinter.NewFileWriter(package_json_file);
+
+ _ = JSPrinter.printJSON(@TypeOf(package_json_writer), package_json_writer, package_json_expr, &source) catch |err| {
+ Output.prettyErrorln("package.json failed to write due to error {s}", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ {
+ var parent_dir = try std.fs.openDirAbsolute(destination, .{});
+ defer parent_dir.close();
+ std.os.linkat(parent_dir.fd, "gitignore", parent_dir.fd, ".gitignore", 0) catch {};
+ std.os.unlinkat(
+ parent_dir.fd,
+ "gitignore",
+ 0,
+ ) catch {};
+ std.os.unlinkat(
+ parent_dir.fd,
+ ".npmignore",
+ 0,
+ ) catch {};
+ }
+
+ const PATH = env_loader.map.get("PATH") orelse "";
+
+ var npm_client_: ?NPMClient = null;
+ create_options.skip_install = create_options.skip_install or !has_dependencies;
+
+ if (!create_options.skip_git) {
+ if (!create_options.skip_install) {
+ GitHandler.spawn(destination, PATH, create_options.verbose);
+ } else {
+ if (create_options.verbose) {
+ create_options.skip_git = GitHandler.run(destination, PATH, true) catch false;
+ } else {
+ create_options.skip_git = GitHandler.run(destination, PATH, false) catch false;
+ }
+ }
+ }
+
+ if (!create_options.skip_install) {
+ if (env_loader.map.get("NPM_CLIENT")) |npm_client_bin| {
+ npm_client_ = NPMClient{ .tag = .npm, .bin = npm_client_bin };
+ } else if (PATH.len > 0) {
+ var realpath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+
+ if (create_options.npm_client) |tag| {
+ if (which(&realpath_buf, PATH, destination, @tagName(tag))) |bin| {
+ npm_client_ = NPMClient{ .tag = tag, .bin = try ctx.allocator.dupe(u8, bin) };
+ }
+ } else if (try NPMClient.detect(ctx.allocator, &realpath_buf, PATH, destination, true)) |npmclient| {
+ npm_client_ = NPMClient{
+ .bin = try ctx.allocator.dupe(u8, npmclient.bin),
+ .tag = npmclient.tag,
+ };
+ }
+ }
+ }
+
+ if (npm_client_ != null and preinstall_tasks.items.len > 0) {
+ for (preinstall_tasks.items) |task, i| {
+ execTask(ctx.allocator, task, destination, PATH, npm_client_.?);
+ }
+ }
+
+ if (npm_client_) |npm_client| {
+ const start_time = std.time.nanoTimestamp();
+ const install_args_ = [_]string{ npm_client.bin, "install", "--loglevel=error", "--no-fund", "--no-audit" };
+ const len: usize = switch (npm_client.tag) {
+ .npm => install_args_.len,
+ else => 2,
+ };
+
+ const install_args = install_args_[0..len];
+ Output.flush();
+ Output.pretty("\n<r><d>$ <b><cyan>{s}<r><d> install", .{@tagName(npm_client.tag)});
+ var writer = Output.writer();
+
+ if (install_args.len > 2) {
+ for (install_args[2..]) |arg| {
+ Output.pretty(" ", .{});
+ Output.pretty("{s}", .{arg});
+ }
+ }
+
+ Output.pretty("<r>\n", .{});
+ Output.flush();
+
+ var process = try std.ChildProcess.init(install_args, ctx.allocator);
+ process.cwd = destination;
+
+ defer {
+ Output.printErrorln("\n", .{});
+ Output.printStartEnd(start_time, std.time.nanoTimestamp());
+ Output.prettyError(" <r><d>{s} install<r>\n", .{@tagName(npm_client.tag)});
+ Output.flush();
+
+ Output.print("\n", .{});
+ Output.flush();
+ }
+ defer process.deinit();
+
+ var term = try process.spawnAndWait();
+
+ _ = process.kill() catch undefined;
+ } else if (!create_options.skip_install) {
+ progress.log("Failed to detect npm client. Tried pnpm, yarn, and npm.\n", .{});
+ }
+
+ if (npm_client_ != null and !create_options.skip_install and postinstall_tasks.items.len > 0) {
+ for (postinstall_tasks.items) |task, i| {
+ execTask(ctx.allocator, task, destination, PATH, npm_client_.?);
+ }
+ }
+
+ if (!create_options.skip_install and !create_options.skip_git) {
+ create_options.skip_git = !GitHandler.wait();
+ }
+
+ Output.printError("\n", .{});
+ Output.printStartEnd(ctx.start_time, std.time.nanoTimestamp());
+ Output.prettyErrorln(" <r><d>bun create {s}<r>", .{template});
+ Output.flush();
+
+ if (!create_options.skip_install) {
+ Output.pretty(
+ \\
+ \\<r><d>-----<r>
+ \\
+ , .{});
+ }
+
+ if (!create_options.skip_git and !create_options.skip_install) {
+ Output.pretty(
+ \\
+ \\<d>A local git repository was created for you and dependencies were installed automatically.<r>
+ \\
+ , .{});
+ } else if (!create_options.skip_git) {
+ Output.pretty(
+ \\
+ \\<d>A local git repository was created for you.<r>
+ \\
+ , .{});
+ } else if (!create_options.skip_install) {
+ Output.pretty(
+ \\
+ \\<d>Dependencies were installed automatically.<r>
+ \\
+ , .{});
+ }
+
+ Output.pretty(
+ \\
+ \\<b>Created <green>{s}<r> project successfully
+ \\
+ \\<d>#<r><b> To get started, run:<r>
+ \\
+ \\ <b><cyan>cd {s}<r>
+ \\ <b><cyan>bun<r>
+ \\
+ , .{
+ std.fs.path.basename(template),
+ filesystem.relativeTo(destination),
+ });
+
+ Output.flush();
+ }
+};
+const Commands = .{
+ &[_]string{""},
+ &[_]string{""},
+ &[_]string{""},
+};
+const picohttp = @import("picohttp");
+
+const PackageDownloadThread = struct {
+ thread: std.Thread,
+ client: HTTPClient,
+ tarball_url: string,
+ allocator: *std.mem.Allocator,
+ buffer: MutableString,
+ done: std.atomic.Atomic(u32),
+ response: picohttp.Response = undefined,
+
+ pub fn threadHandler(this: *PackageDownloadThread) !void {
+ this.done.store(0, .Release);
+ this.response = try this.client.send("", &this.buffer);
+ this.done.store(1, .Release);
+ std.Thread.Futex.wake(&this.done, 1);
+ }
+
+ pub fn spawn(allocator: *std.mem.Allocator, tarball_url: string, progress_node: *std.Progress.Node) !*PackageDownloadThread {
+ var download = try allocator.create(PackageDownloadThread);
+ download.* = PackageDownloadThread{
+ .allocator = allocator,
+ .client = HTTPClient.init(allocator, .GET, URL.parse(tarball_url), .{}, ""),
+ .tarball_url = tarball_url,
+ .buffer = try MutableString.init(allocator, 1024),
+ .done = std.atomic.Atomic(u32).init(0),
+ .thread = undefined,
+ };
+
+ if (Output.enable_ansi_colors) {
+ download.client.progress_node = progress_node;
+ }
+
+ download.thread = try std.Thread.spawn(.{}, threadHandler, .{download});
+
+ return download;
+ }
+};
+
+pub const DownloadedExample = struct {
+ tarball_bytes: MutableString,
+ example: Example,
+};
+
+pub const Example = struct {
+ name: string,
+ version: string,
+ description: string,
+ local: bool = false,
+
+ var client: HTTPClient = undefined;
+ const examples_url: string = "https://registry.npmjs.org/bun-examples-all/latest";
+ var url: URL = undefined;
+ pub const timeout: u32 = 6000;
+
+ var app_name_buf: [512]u8 = undefined;
+ pub fn print(examples: []const Example, default_app_name: ?string) void {
+ for (examples) |example, i| {
+ var app_name = default_app_name orelse (std.fmt.bufPrint(&app_name_buf, "./{s}-app", .{example.name[0..std.math.min(example.name.len, 492)]}) catch unreachable);
+
+ if (example.description.len > 0) {
+ Output.pretty(" <r># {s}<r>\n <b>bun create <cyan>{s}<r><b> {s}<r>\n<d> \n\n", .{
+ example.description,
+ example.name,
+ app_name,
+ });
+ } else {
+ Output.pretty(" <r><b>bun create <cyan>{s}<r><b> {s}<r>\n\n", .{
+ example.name,
+ app_name,
+ });
+ }
+ }
+ }
+
+ pub fn fetchAllLocalAndRemote(ctx: Command.Context, node: ?*std.Progress.Node, env_loader: *DotEnv.Loader, filesystem: *fs.FileSystem) !std.ArrayList(Example) {
+ const remote_examples = try Example.fetchAll(ctx, node);
+ if (node) |node_| node_.end();
+
+ var examples = std.ArrayList(Example).fromOwnedSlice(ctx.allocator, remote_examples);
+ {
+ var folders = [3]std.fs.Dir{ std.fs.Dir{ .fd = 0 }, std.fs.Dir{ .fd = 0 }, std.fs.Dir{ .fd = 0 } };
+ if (env_loader.map.get("BUN_CREATE_DIR")) |home_dir| {
+ var parts = [_]string{home_dir};
+ var outdir_path = filesystem.absBuf(&parts, &home_dir_buf);
+ folders[0] = std.fs.openDirAbsolute(outdir_path, .{ .iterate = true }) catch std.fs.Dir{ .fd = 0 };
+ }
+
+ {
+ var parts = [_]string{ filesystem.top_level_dir, BUN_CREATE_DIR };
+ var outdir_path = filesystem.absBuf(&parts, &home_dir_buf);
+ folders[1] = std.fs.openDirAbsolute(outdir_path, .{ .iterate = true }) catch std.fs.Dir{ .fd = 0 };
+ }
+
+ if (env_loader.map.get("HOME")) |home_dir| {
+ var parts = [_]string{ home_dir, BUN_CREATE_DIR };
+ var outdir_path = filesystem.absBuf(&parts, &home_dir_buf);
+ folders[2] = std.fs.openDirAbsolute(outdir_path, .{ .iterate = true }) catch std.fs.Dir{ .fd = 0 };
+ }
+
+ // subfolders with package.json
+ for (folders) |folder_| {
+ if (folder_.fd != 0) {
+ const folder: std.fs.Dir = folder_;
+ var iter = folder.iterate();
+
+ loop: while (iter.next() catch null) |entry_| {
+ const entry: std.fs.Dir.Entry = entry_;
+
+ switch (entry.kind) {
+ .Directory => {
+ inline for (skip_dirs) |skip_dir| {
+ if (strings.eqlComptime(entry.name, skip_dir)) {
+ continue :loop;
+ }
+ }
+
+ std.mem.copy(u8, &home_dir_buf, entry.name);
+ home_dir_buf[entry.name.len] = std.fs.path.sep;
+ std.mem.copy(u8, home_dir_buf[entry.name.len + 1 ..], "package.json");
+ home_dir_buf[entry.name.len + 1 + "package.json".len] = 0;
+
+ var path: [:0]u8 = home_dir_buf[0 .. entry.name.len + 1 + "package.json".len :0];
+
+ folder.accessZ(path, .{
+ .read = true,
+ }) catch continue :loop;
+
+ try examples.append(
+ Example{
+ .name = try filesystem.filename_store.append(@TypeOf(entry.name), entry.name),
+ .version = "",
+ .local = true,
+ .description = "",
+ },
+ );
+ continue :loop;
+ },
+ else => continue,
+ }
+ }
+ }
+ }
+ }
+
+ return examples;
+ }
+
+ pub fn fetch(ctx: Command.Context, name: string, refresher: *std.Progress, progress: *std.Progress.Node) !MutableString {
+ progress.name = "Fetching package.json";
+ refresher.refresh();
+
+ const example_start = std.time.nanoTimestamp();
+ var url_buf: [1024]u8 = undefined;
+ var mutable = try MutableString.init(ctx.allocator, 2048);
+
+ url = URL.parse(try std.fmt.bufPrint(&url_buf, "https://registry.npmjs.org/@bun-examples/{s}/latest", .{name}));
+ client = HTTPClient.init(ctx.allocator, .GET, url, .{}, "");
+ client.timeout = timeout;
+ client.progress_node = progress;
+ var response = try client.send("", &mutable);
+
+ switch (response.status_code) {
+ 404 => return error.ExampleNotFound,
+ 403 => return error.HTTPForbidden,
+ 429 => return error.HTTPTooManyRequests,
+ 499...599 => return error.NPMIsDown,
+ 200 => {},
+ else => return error.HTTPError,
+ }
+
+ progress.name = "Parsing package.json";
+ refresher.refresh();
+ js_ast.Expr.Data.Store.create(default_allocator);
+ js_ast.Stmt.Data.Store.create(default_allocator);
+
+ var source = logger.Source.initPathString("package.json", mutable.list.items);
+ var expr = ParseJSON(&source, ctx.log, ctx.allocator) catch |err| {
+ progress.end();
+ refresher.refresh();
+
+ if (ctx.log.errors > 0) {
+ if (Output.enable_ansi_colors) {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true);
+ } else {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), false);
+ }
+ Output.flush();
+ std.os.exit(1);
+ } else {
+ Output.prettyErrorln("Error parsing package: <r><red>{s}<r>", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ }
+ };
+
+ if (ctx.log.errors > 0) {
+ progress.end();
+ refresher.refresh();
+
+ if (Output.enable_ansi_colors) {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true);
+ } else {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), false);
+ }
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ const tarball_url: string = brk: {
+ if (expr.asProperty("dist")) |q| {
+ if (q.expr.asProperty("tarball")) |p| {
+ if (p.expr.asString(ctx.allocator)) |s| {
+ if (s.len > 0 and (strings.startsWith(s, "https://") or strings.startsWith(s, "http://"))) {
+ break :brk s;
+ }
+ }
+ }
+ }
+
+ progress.end();
+ refresher.refresh();
+
+ Output.prettyErrorln("package.json is missing tarball url. This is an internal error!", .{});
+ Output.flush();
+ std.os.exit(1);
+ };
+
+ progress.name = "Downloading tarball";
+ refresher.refresh();
+
+ var thread: *PackageDownloadThread = try PackageDownloadThread.spawn(ctx.allocator, tarball_url, progress);
+ refresher.maybeRefresh();
+
+ while (thread.done.load(.Acquire) == 0) {
+ std.Thread.Futex.wait(&thread.done, 1, std.time.ns_per_ms * 10000) catch {};
+ }
+
+ refresher.maybeRefresh();
+
+ if (thread.response.status_code != 200) {
+ progress.end();
+ refresher.refresh();
+ Output.prettyErrorln("Error fetching tarball: <r><red>{d}<r>", .{thread.response.status_code});
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ refresher.refresh();
+ thread.thread.join();
+
+ return thread.buffer;
+ }
+
+ pub fn fetchAll(ctx: Command.Context, progress_node: ?*std.Progress.Node) ![]Example {
+ url = URL.parse(examples_url);
+ client = HTTPClient.init(ctx.allocator, .GET, url, .{}, "");
+ client.timeout = timeout;
+
+ if (Output.enable_ansi_colors) {
+ client.progress_node = progress_node;
+ }
+
+ var mutable: MutableString = try MutableString.init(ctx.allocator, 1024);
+ var response = client.send("", &mutable) catch |err| {
+ switch (err) {
+ error.WouldBlock => {
+ Output.prettyErrorln("Request timed out while trying to fetch examples list. Please try again", .{});
+ Output.flush();
+ std.os.exit(1);
+ },
+ else => {
+ Output.prettyErrorln("<r><red>{s}<r> while trying to fetch examples list. Please try again", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ },
+ }
+ };
+
+ if (response.status_code != 200) {
+ Output.prettyErrorln("<r><red>{d}<r> fetching examples :( {s}", .{ response.status_code, mutable.list.items });
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ js_ast.Expr.Data.Store.create(default_allocator);
+ js_ast.Stmt.Data.Store.create(default_allocator);
+ var source = logger.Source.initPathString("examples.json", mutable.list.items);
+ const examples_object = ParseJSON(&source, ctx.log, ctx.allocator) catch |err| {
+ if (ctx.log.errors > 0) {
+ if (Output.enable_ansi_colors) {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true);
+ } else {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), false);
+ }
+ std.os.exit(1);
+ Output.flush();
+ } else {
+ Output.prettyErrorln("Error parsing examples: <r><red>{s}<r>", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ }
+ };
+
+ if (ctx.log.errors > 0) {
+ if (Output.enable_ansi_colors) {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true);
+ } else {
+ try ctx.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), false);
+ }
+ Output.flush();
+ std.os.exit(1);
+ }
+
+ if (examples_object.asProperty("examples")) |q| {
+ if (q.expr.data == .e_object) {
+ var count: usize = 0;
+ for (q.expr.data.e_object.properties) |property| {
+ count += 1;
+ }
+
+ var list = try ctx.allocator.alloc(Example, count);
+ for (q.expr.data.e_object.properties) |property, i| {
+ const name = property.key.?.data.e_string.utf8;
+ list[i] = Example{
+ .name = if (std.mem.indexOfScalar(u8, name, '/')) |slash|
+ name[slash + 1 ..]
+ else
+ name,
+ .version = property.value.?.asProperty("version").?.expr.data.e_string.utf8,
+ .description = property.value.?.asProperty("description").?.expr.data.e_string.utf8,
+ };
+ }
+ return list;
+ }
+ }
+
+ Output.prettyErrorln("Corrupt examples data: expected object but received {s}", .{@tagName(examples_object.data)});
+ Output.flush();
+ std.os.exit(1);
+ }
+};
+
+pub const CreateListExamplesCommand = struct {
+ pub fn exec(ctx: Command.Context) !void {
+ var filesystem = try fs.FileSystem.init1(ctx.allocator, null);
+ var env_loader: DotEnv.Loader = brk: {
+ var map = try ctx.allocator.create(DotEnv.Map);
+ map.* = DotEnv.Map.init(ctx.allocator);
+
+ break :brk DotEnv.Loader.init(map, ctx.allocator);
+ };
+
+ env_loader.loadProcess();
+
+ const time = std.time.nanoTimestamp();
+ var progress = std.Progress{};
+ var node = try progress.start("Fetching manifest", 0);
+ progress.refresh();
+
+ const examples = try Example.fetchAllLocalAndRemote(ctx, node, &env_loader, filesystem);
+ Output.printStartEnd(time, std.time.nanoTimestamp());
+ Output.prettyln(" <d>Fetched manifest<r>", .{});
+ Output.prettyln("Welcome to Bun! Create a new project by pasting any of the following:\n\n", .{});
+ Output.flush();
+
+ Example.print(examples.items, null);
+
+ if (env_loader.map.get("HOME")) |homedir| {
+ Output.prettyln(
+ "<d>This command is completely optional. To add a new local template, create a folder in {s}/.bun-create/. To publish a new template, git clone https://github.com/jarred-sumner/bun, add a new folder to the \"examples\" folder, and submit a PR.<r>",
+ .{homedir},
+ );
+ } else {
+ Output.prettyln(
+ "<d>This command is completely optional. To add a new local template, create a folder in $HOME/.bun-create/. To publish a new template, git clone https://github.com/jarred-sumner/bun, add a new folder to the \"examples\" folder, and submit a PR.<r>",
+ .{},
+ );
+ }
+
+ Output.flush();
+ }
+};
+
+const GitHandler = struct {
+ var success: std.atomic.Atomic(u32) = undefined;
+ var thread: std.Thread = undefined;
+ pub fn spawn(
+ destination: string,
+ PATH: string,
+ verbose: bool,
+ ) void {
+ success = std.atomic.Atomic(u32).init(0);
+
+ thread = std.Thread.spawn(.{}, spawnThread, .{ destination, PATH, verbose }) catch |err| {
+ Output.prettyErrorln("<r><red>{s}<r>", .{@errorName(err)});
+ Output.flush();
+ std.os.exit(1);
+ };
+ }
+
+ fn spawnThread(
+ destination: string,
+ PATH: string,
+ verbose: bool,
+ ) void {
+ Output.Source.configureThread();
+ std.Thread.setName(thread, "git") catch {};
+ defer Output.flush();
+ const outcome = if (verbose)
+ run(destination, PATH, true) catch false
+ else
+ run(destination, PATH, false) catch false;
+
+ @fence(.Acquire);
+ success.store(
+ if (outcome)
+ 1
+ else
+ 2,
+ .Release,
+ );
+ std.Thread.Futex.wake(&success, 1);
+ }
+
+ pub fn wait() bool {
+ @fence(.Release);
+
+ while (success.load(.Acquire) == 0) {
+ std.Thread.Futex.wait(&success, 0, 1000) catch continue;
+ }
+
+ const outcome = success.load(.Acquire) == 1;
+ thread.join();
+ return outcome;
+ }
+
+ pub fn run(
+ destination: string,
+ PATH: string,
+ comptime verbose: bool,
+ ) !bool {
+ const git_start = std.time.nanoTimestamp();
+
+ // This feature flag is disabled.
+ // using libgit2 is slower than the CLI.
+ // [481.00ms] git
+ // [89.00ms] git
+ // if (comptime FeatureFlags.use_libgit2) {
+ // try_to_use_libgit2: {
+ // if (comptime Environment.isWindows) @compileError("TODO win32");
+
+ // // since we link libc, it always goes through dlopen unless windows
+ // const DlDynlib = std.DynLib;
+ // var libgit2_dylib: std.DynLib = brk: {
+ // for (global_libgit2_paths) |lib_path| {
+ // break :brk DlDynlib.openZ(lib_path) catch continue;
+ // }
+
+ // var lib_paths = getSelfExeSharedLibPaths(default_allocator) catch break :try_to_use_libgit2;
+
+ // // this is a list of every dynamically loaded library on the user's computer?
+ // for (lib_paths) |lib_path| {
+ // const basename = std.fs.path.basename(std.mem.span(lib_path));
+ // if (basename.len == (comptime libgit2_basename.len) and
+ // std.hash.Wyhash.hash(10, basename) == comptime std.hash.Wyhash.hash(10, libgit2_basename))
+ // {
+ // break :brk DlDynlib.openZ(lib_path) catch continue;
+ // }
+ // }
+ // break :try_to_use_libgit2;
+ // };
+
+ // const libgit2 = @import("../deps/libgit2.zig");
+ // var repo: ?*libgit2.git_repository = null;
+ // // https://libgit2.org/docs/examples/init/
+ // // Note: git_threads_init was renamed to git_libgit2_init
+ // // https://mail.gnome.org/archives/commits-list/2015-January/msg03703.html
+ // // ...in 2015 and that doc is still out of date
+
+ // const git_repository_init = libgit2_dylib.lookup(libgit2.git_repository_init, "git_repository_init") orelse break :try_to_use_libgit2;
+ // const git_repository_free = libgit2_dylib.lookup(libgit2.git_repository_free, "git_repository_free") orelse break :try_to_use_libgit2;
+ // const git_signature_free = libgit2_dylib.lookup(libgit2.git_signature_free, "git_signature_free") orelse break :try_to_use_libgit2;
+ // const git_signature_default = libgit2_dylib.lookup(libgit2.git_signature_default, "git_signature_default") orelse break :try_to_use_libgit2;
+ // const git_repository_index = libgit2_dylib.lookup(libgit2.git_repository_index, "git_repository_index") orelse break :try_to_use_libgit2;
+ // const git_index_read_tree = libgit2_dylib.lookup(libgit2.git_index_read_tree, "git_index_read_tree") orelse break :try_to_use_libgit2;
+ // const git_index_write_tree = libgit2_dylib.lookup(libgit2.git_index_write_tree, "git_index_write_tree") orelse break :try_to_use_libgit2;
+ // const git_index_write = libgit2_dylib.lookup(libgit2.git_index_write, "git_index_write") orelse break :try_to_use_libgit2;
+
+ // const git_index_add_all = libgit2_dylib.lookup(libgit2.git_index_add_all, "git_index_add_all") orelse break :try_to_use_libgit2;
+ // const git_tree_lookup = libgit2_dylib.lookup(libgit2.git_tree_lookup, "git_tree_lookup") orelse break :try_to_use_libgit2;
+ // const git_commit_create_v = libgit2_dylib.lookup(libgit2.git_commit_create_v, "git_commit_create_v") orelse break :try_to_use_libgit2;
+ // const git_index_free = libgit2_dylib.lookup(libgit2.git_index_free, "git_index_free") orelse break :try_to_use_libgit2;
+ // const git_tree_free = libgit2_dylib.lookup(libgit2.git_tree_free, "git_tree_free") orelse break :try_to_use_libgit2;
+ // const git_index_add_bypath = libgit2_dylib.lookup(libgit2.git_index_add_bypath, "git_index_add_bypath") orelse break :try_to_use_libgit2;
+ // const git_status_should_ignore = libgit2_dylib.lookup(libgit2.git_status_should_ignore, "git_status_should_ignore") orelse break :try_to_use_libgit2;
+
+ // var sig: ?*libgit2.git_signature = null;
+ // // var destination_z = destination.ptr[0..destination.len :0];
+ // // const original_cwd = std.os.getcwd(&bun_path_buf) catch break :try_to_use_libgit2;
+ // // bun_path_buf[original_cwd.len] = 0;
+ // // std.os.chdirZ(destination_z) catch {};
+ // // var origin_z = bun_path_buf[0..original_cwd.len :0];
+ // // defer std.os.chdirZ(origin_z) catch {};
+
+ // if (libgit2_dylib.lookup(libgit2.git_libgit2_init, "git_libgit2_init")) |git_libgit2_init| {
+ // std.debug.assert(git_libgit2_init() > -1);
+ // }
+
+ // var rc: c_int = 0;
+ // rc = git_repository_init(&repo, destination.ptr, 0);
+ // if (rc < 0) break :try_to_use_libgit2;
+ // var repo_ = repo orelse break :try_to_use_libgit2;
+ // // defer git_repository_free(repo_);
+
+ // rc = git_signature_default(&sig, repo_);
+ // // this fails if they never ran git config
+ // // the child process will fail too, so we just skip
+ // if (rc < 0) {
+ // return false;
+ // }
+ // // defer git_signature_free(sig.?);
+
+ // var index: ?*libgit2.git_index = null;
+ // var tree_id: libgit2.git_oid = undefined;
+ // var commit_id: libgit2.git_oid = undefined;
+ // var second_commit_id: libgit2.git_oid = undefined;
+ // var git_tree: *libgit2.git_tree = undefined;
+
+ // rc = git_repository_index(&index, repo_);
+ // if (rc < 0) break :try_to_use_libgit2;
+
+ // // // add gitignore file first
+ // // // technically, we should add every gitignore first but i'll leave that as a future TODO
+ // // if (files_list.containsAdapted(comptime std.hash.Wyhash.hash(0, "gitignore"), Archive.Context.U64Context{})) {
+ // // rc = git_index_add_bypath(index.?, ".gitignore");
+ // // if (rc < 0) break :try_to_use_libgit2;
+ // // } else if (files_list.containsAdapted(comptime std.hash.Wyhash.hash(0, ".gitignore"), Archive.Context.U64Context{})) {
+ // // rc = git_index_add_bypath(index.?, ".gitignore");
+ // // if (rc < 0) break :try_to_use_libgit2;
+ // // }
+
+ // var files = files_list.values();
+
+ // // without git
+ // // [6.00ms] bun create /Users/jarred/.bun-create/react2
+
+ // // with git:
+ // // [44.00ms] bun create /Users/jarred/.bun-create/react2
+
+ // var strs = std.mem.zeroes(libgit2.git_strarray);
+ // // var star = [_]u8{ '*', 0 };
+ // // var star_ptr: [*c]u8 = &star;
+ // strs.strings = files.ptr;
+ // strs.count = files.len;
+ // rc = git_index_add_all(index, &strs, libgit2.GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH, null, null);
+ // if (rc < 0) break :try_to_use_libgit2;
+
+ // // if (comptime verbose) {
+ // // for (files) |file| {
+ // // var ignored: c_int = 0;
+ // // rc = git_status_should_ignore(&ignored, repo_, file);
+ // // if (rc < 0) break :try_to_use_libgit2;
+ // // if (ignored > 0) {
+ // // Output.prettyErrorln("[libgit2]: ignored {s}", .{std.mem.sliceTo(file, 0)});
+ // // continue;
+ // // }
+
+ // // // this can fail for a variety of reasons
+ // // // if it does, better to get most of the files than stop
+ // // rc = git_index_add_bypath(index.?, file);
+ // // switch (rc) {
+ // // libgit2.GIT_OK => {
+ // // Output.prettyErrorln("[libgit2]: Added {s}", .{std.mem.sliceTo(file, 0)});
+ // // },
+ // // libgit2.GIT_ENOTFOUND => {
+ // // Output.prettyErrorln("[libgit2]: not found {s}", .{std.mem.sliceTo(file, 0)});
+ // // },
+ // // else => {
+ // // Output.prettyErrorln("[libgit2]: error {d} for {s}", .{ rc, std.mem.sliceTo(file, 0) });
+ // // },
+ // // }
+ // // }
+ // // } else {
+ // // for (files) |file| {
+ // // var ignored: c_int = 0;
+ // // rc = git_status_should_ignore(&ignored, repo_, file);
+ // // if (rc < 0) break :try_to_use_libgit2;
+ // // if (ignored > 0) continue;
+
+ // // // this can fail for a variety of reasons
+ // // // if it does, better to get most of the files than stop
+ // // _ = git_index_add_bypath(index.?, file);
+ // // }
+ // // }
+
+ // // if you don't call git_index_write, git status will look very strange.
+ // rc = git_index_write(index.?);
+ // if (rc < 0) break :try_to_use_libgit2;
+
+ // rc = git_index_write_tree(&tree_id, index);
+ // if (rc < 0) break :try_to_use_libgit2;
+
+ // rc = git_tree_lookup(&git_tree, repo_, &tree_id);
+ // if (rc < 0) break :try_to_use_libgit2;
+ // // defer git_tree_free(git_tree);
+
+ // rc = git_commit_create_v(
+ // &commit_id,
+ // repo_,
+ // "HEAD",
+ // sig.?,
+ // sig.?,
+ // null,
+ // "Initial commit (via bun create)",
+ // git_tree,
+ // 0,
+ // );
+ // if (rc < 0) break :try_to_use_libgit2;
+
+ // if (comptime verbose) {
+ // Output.prettyErrorln("git backend: libgit2", .{});
+ // }
+
+ // Output.prettyError("\n", .{});
+ // Output.printStartEnd(git_start, std.time.nanoTimestamp());
+ // Output.prettyError(" <d>git<r>\n", .{});
+
+ // // success!
+ // return true;
+ // }
+ // }
+
+ if (which(&bun_path_buf, PATH, destination, "git")) |git| {
+ const git_commands = .{
+ &[_]string{ std.mem.span(git), "init", "--quiet" },
+ &[_]string{ std.mem.span(git), "add", destination, "--ignore-errors" },
+ &[_]string{ std.mem.span(git), "commit", "-am", "\"Initial commit (via bun create)\"", "--quiet" },
+ };
+
+ if (comptime verbose) {
+ Output.prettyErrorln("git backend: {s}", .{git});
+ }
+
+ // same names, just comptime known values
+
+ inline for (comptime std.meta.fieldNames(@TypeOf(Commands))) |command_field| {
+ const command: []const string = @field(git_commands, command_field);
+ var process = try std.ChildProcess.init(command, default_allocator);
+ process.cwd = destination;
+ process.stdin_behavior = .Inherit;
+ process.stdout_behavior = .Inherit;
+ process.stderr_behavior = .Inherit;
+ defer process.deinit();
+
+ var term = try process.spawnAndWait();
+ _ = process.kill() catch undefined;
+ }
+
+ Output.prettyError("\n", .{});
+ Output.printStartEnd(git_start, std.time.nanoTimestamp());
+ Output.prettyError(" <d>git<r>\n", .{});
+ return true;
+ }
+
+ return false;
+ }
+};
diff --git a/src/copy_file.zig b/src/copy_file.zig
new file mode 100644
index 000000000..f60638f9f
--- /dev/null
+++ b/src/copy_file.zig
@@ -0,0 +1,50 @@
+const std = @import("std");
+const os = std.os;
+const math = std.math;
+
+const CopyFileError = error{SystemResources} || os.CopyFileRangeError || os.SendFileError;
+
+// Transfer all the data between two file descriptors in the most efficient way.
+// The copy starts at offset 0, the initial offsets are preserved.
+// No metadata is transferred over.
+pub fn copy(fd_in: os.fd_t, fd_out: os.fd_t) CopyFileError!void {
+ if (comptime std.Target.current.isDarwin()) {
+ const rc = os.system.fcopyfile(fd_in, fd_out, null, os.system.COPYFILE_DATA);
+ switch (os.errno(rc)) {
+ .SUCCESS => return,
+ .INVAL => unreachable,
+ .NOMEM => return error.SystemResources,
+ // The source file is not a directory, symbolic link, or regular file.
+ // Try with the fallback path before giving up.
+ .OPNOTSUPP => {},
+ else => |err| return os.unexpectedErrno(err),
+ }
+ }
+
+ if (comptime std.Target.current.os.tag == .linux) {
+ // Try copy_file_range first as that works at the FS level and is the
+ // most efficient method (if available).
+ var offset: u64 = 0;
+ cfr_loop: while (true) {
+ // The kernel checks the u64 value `offset+count` for overflow, use
+ // a 32 bit value so that the syscall won't return EINVAL except for
+ // impossibly large files (> 2^64-1 - 2^32-1).
+ const amt = try os.copy_file_range(fd_in, offset, fd_out, offset, math.maxInt(u32), 0);
+ // Terminate when no data was copied
+ if (amt == 0) break :cfr_loop;
+ offset += amt;
+ }
+ return;
+ }
+
+ // Sendfile is a zero-copy mechanism iff the OS supports it, otherwise the
+ // fallback code will copy the contents chunk by chunk.
+ const empty_iovec = [0]os.iovec_const{};
+ var offset: u64 = 0;
+ sendfile_loop: while (true) {
+ const amt = try os.sendfile(fd_out, fd_in, offset, 0, &empty_iovec, &empty_iovec, 0);
+ // Terminate when no data was copied
+ if (amt == 0) break :sendfile_loop;
+ offset += amt;
+ }
+}
diff --git a/src/deps/libarchive b/src/deps/libarchive
new file mode 160000
+Subproject dc321febde83dd0f31158e1be61a7aedda65e7a
diff --git a/src/deps/libgit2.zig b/src/deps/libgit2.zig
new file mode 100644
index 000000000..06943a99b
--- /dev/null
+++ b/src/deps/libgit2.zig
@@ -0,0 +1,2209 @@
+pub const GIT_FEATURE_THREADS: c_int = 1;
+pub const GIT_FEATURE_HTTPS: c_int = 2;
+pub const GIT_FEATURE_SSH: c_int = 4;
+pub const GIT_FEATURE_NSEC: c_int = 8;
+pub const git_feature_t = c_uint;
+pub const GIT_OPT_GET_MWINDOW_SIZE: c_int = 0;
+pub const GIT_OPT_SET_MWINDOW_SIZE: c_int = 1;
+pub const GIT_OPT_GET_MWINDOW_MAPPED_LIMIT: c_int = 2;
+pub const GIT_OPT_SET_MWINDOW_MAPPED_LIMIT: c_int = 3;
+pub const GIT_OPT_GET_SEARCH_PATH: c_int = 4;
+pub const GIT_OPT_SET_SEARCH_PATH: c_int = 5;
+pub const GIT_OPT_SET_CACHE_OBJECT_LIMIT: c_int = 6;
+pub const GIT_OPT_SET_CACHE_MAX_SIZE: c_int = 7;
+pub const GIT_OPT_ENABLE_CACHING: c_int = 8;
+pub const GIT_OPT_GET_CACHED_MEMORY: c_int = 9;
+pub const GIT_OPT_GET_TEMPLATE_PATH: c_int = 10;
+pub const GIT_OPT_SET_TEMPLATE_PATH: c_int = 11;
+pub const GIT_OPT_SET_SSL_CERT_LOCATIONS: c_int = 12;
+pub const GIT_OPT_SET_USER_AGENT: c_int = 13;
+pub const GIT_OPT_ENABLE_STRICT_OBJECT_CREATION: c_int = 14;
+pub const GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION: c_int = 15;
+pub const GIT_OPT_SET_SSL_CIPHERS: c_int = 16;
+pub const GIT_OPT_GET_USER_AGENT: c_int = 17;
+pub const GIT_OPT_ENABLE_OFS_DELTA: c_int = 18;
+pub const GIT_OPT_ENABLE_FSYNC_GITDIR: c_int = 19;
+pub const GIT_OPT_GET_WINDOWS_SHAREMODE: c_int = 20;
+pub const GIT_OPT_SET_WINDOWS_SHAREMODE: c_int = 21;
+pub const GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION: c_int = 22;
+pub const GIT_OPT_SET_ALLOCATOR: c_int = 23;
+pub const GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY: c_int = 24;
+pub const GIT_OPT_GET_PACK_MAX_OBJECTS: c_int = 25;
+pub const GIT_OPT_SET_PACK_MAX_OBJECTS: c_int = 26;
+pub const GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS: c_int = 27;
+pub const GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE: c_int = 28;
+pub const GIT_OPT_GET_MWINDOW_FILE_LIMIT: c_int = 29;
+pub const GIT_OPT_SET_MWINDOW_FILE_LIMIT: c_int = 30;
+pub const GIT_OPT_SET_ODB_PACKED_PRIORITY: c_int = 31;
+pub const GIT_OPT_SET_ODB_LOOSE_PRIORITY: c_int = 32;
+pub const GIT_OPT_GET_EXTENSIONS: c_int = 33;
+pub const GIT_OPT_SET_EXTENSIONS: c_int = 34;
+pub const git_libgit2_opt_t = c_uint;
+
+pub const git_off_t = i64;
+pub const git_time_t = i64;
+pub const git_object_size_t = u64;
+pub const git_buf = extern struct {
+ ptr: [*c]u8,
+ asize: usize,
+ size: usize,
+};
+pub const struct_git_oid = extern struct {
+ id: [20]u8,
+};
+pub const git_oid = struct_git_oid;
+pub const struct_git_oid_shorten = opaque {};
+pub const git_oid_shorten = struct_git_oid_shorten;
+pub const GIT_OBJECT_ANY: c_int = -2;
+pub const GIT_OBJECT_INVALID: c_int = -1;
+pub const GIT_OBJECT_COMMIT: c_int = 1;
+pub const GIT_OBJECT_TREE: c_int = 2;
+pub const GIT_OBJECT_BLOB: c_int = 3;
+pub const GIT_OBJECT_TAG: c_int = 4;
+pub const GIT_OBJECT_OFS_DELTA: c_int = 6;
+pub const GIT_OBJECT_REF_DELTA: c_int = 7;
+pub const git_object_t = c_int;
+pub const struct_git_odb = opaque {};
+pub const git_odb = struct_git_odb;
+pub const struct_git_odb_backend = opaque {};
+pub const git_odb_backend = struct_git_odb_backend;
+pub const struct_git_odb_object = opaque {};
+pub const git_odb_object = struct_git_odb_object;
+pub const git_odb_stream = struct_git_odb_stream;
+pub const struct_git_odb_stream = extern struct {
+ backend: *git_odb_backend,
+ mode: c_uint,
+ hash_ctx: *c_void,
+ declared_size: git_object_size_t,
+ received_bytes: git_object_size_t,
+ read: ?fn ([*c]git_odb_stream, [*c]u8, usize) callconv(.C) c_int,
+ write: ?fn ([*c]git_odb_stream, [*c]const u8, usize) callconv(.C) c_int,
+ finalize_write: ?fn ([*c]git_odb_stream, [*c]const git_oid) callconv(.C) c_int,
+ free: ?fn ([*c]git_odb_stream) callconv(.C) void,
+};
+pub const git_odb_writepack = struct_git_odb_writepack;
+pub const struct_git_indexer_progress = extern struct {
+ total_objects: c_uint,
+ indexed_objects: c_uint,
+ received_objects: c_uint,
+ local_objects: c_uint,
+ total_deltas: c_uint,
+ indexed_deltas: c_uint,
+ received_bytes: usize,
+};
+pub const git_indexer_progress = struct_git_indexer_progress;
+pub const struct_git_odb_writepack = extern struct {
+ backend: *git_odb_backend,
+ append: ?fn ([*c]git_odb_writepack, *const c_void, usize, [*c]git_indexer_progress) callconv(.C) c_int,
+ commit: ?fn ([*c]git_odb_writepack, [*c]git_indexer_progress) callconv(.C) c_int,
+ free: ?fn ([*c]git_odb_writepack) callconv(.C) void,
+};
+pub const struct_git_midx_writer = opaque {};
+pub const git_midx_writer = struct_git_midx_writer;
+pub const struct_git_refdb = opaque {};
+pub const git_refdb = struct_git_refdb;
+pub const struct_git_refdb_backend = opaque {};
+pub const git_refdb_backend = struct_git_refdb_backend;
+pub const struct_git_commit_graph = opaque {};
+pub const git_commit_graph = struct_git_commit_graph;
+pub const struct_git_commit_graph_writer = opaque {};
+pub const git_commit_graph_writer = struct_git_commit_graph_writer;
+pub const struct_git_repository = opaque {};
+pub const git_repository = struct_git_repository;
+pub const struct_git_worktree = opaque {};
+pub const git_worktree = struct_git_worktree;
+pub const struct_git_object = opaque {};
+pub const git_object = struct_git_object;
+pub const struct_git_revwalk = opaque {};
+pub const git_revwalk = struct_git_revwalk;
+pub const struct_git_tag = opaque {};
+pub const git_tag = struct_git_tag;
+pub const struct_git_blob = opaque {};
+pub const git_blob = struct_git_blob;
+pub const struct_git_commit = opaque {};
+pub const git_commit = struct_git_commit;
+pub const struct_git_tree_entry = opaque {};
+pub const git_tree_entry = struct_git_tree_entry;
+pub const struct_git_tree = opaque {};
+pub const git_tree = struct_git_tree;
+pub const struct_git_treebuilder = opaque {};
+pub const git_treebuilder = struct_git_treebuilder;
+pub const struct_git_index = opaque {};
+pub const git_index = struct_git_index;
+pub const struct_git_index_iterator = opaque {};
+pub const git_index_iterator = struct_git_index_iterator;
+pub const struct_git_index_conflict_iterator = opaque {};
+pub const git_index_conflict_iterator = struct_git_index_conflict_iterator;
+pub const struct_git_config = opaque {};
+pub const git_config = struct_git_config;
+pub const struct_git_config_backend = opaque {};
+pub const git_config_backend = struct_git_config_backend;
+pub const struct_git_reflog_entry = opaque {};
+pub const git_reflog_entry = struct_git_reflog_entry;
+pub const struct_git_reflog = opaque {};
+pub const git_reflog = struct_git_reflog;
+pub const struct_git_note = opaque {};
+pub const git_note = struct_git_note;
+pub const struct_git_packbuilder = opaque {};
+pub const git_packbuilder = struct_git_packbuilder;
+pub const struct_git_time = extern struct {
+ time: git_time_t,
+ offset: c_int,
+ sign: u8,
+};
+pub const git_time = struct_git_time;
+pub const struct_git_signature = extern struct {
+ name: [*c]u8,
+ email: [*c]u8,
+ when: git_time,
+};
+pub const git_signature = struct_git_signature;
+pub const struct_git_reference = opaque {};
+pub const git_reference = struct_git_reference;
+pub const struct_git_reference_iterator = opaque {};
+pub const git_reference_iterator = struct_git_reference_iterator;
+pub const struct_git_transaction = opaque {};
+pub const git_transaction = struct_git_transaction;
+pub const struct_git_annotated_commit = opaque {};
+pub const git_annotated_commit = struct_git_annotated_commit;
+pub const struct_git_status_list = opaque {};
+pub const git_status_list = struct_git_status_list;
+pub const struct_git_rebase = opaque {};
+pub const git_rebase = struct_git_rebase;
+pub const GIT_REFERENCE_INVALID: c_int = 0;
+pub const GIT_REFERENCE_DIRECT: c_int = 1;
+pub const GIT_REFERENCE_SYMBOLIC: c_int = 2;
+pub const GIT_REFERENCE_ALL: c_int = 3;
+pub const git_reference_t = c_uint;
+pub const GIT_BRANCH_LOCAL: c_int = 1;
+pub const GIT_BRANCH_REMOTE: c_int = 2;
+pub const GIT_BRANCH_ALL: c_int = 3;
+pub const git_branch_t = c_uint;
+pub const GIT_FILEMODE_UNREADABLE: c_int = 0;
+pub const GIT_FILEMODE_TREE: c_int = 16384;
+pub const GIT_FILEMODE_BLOB: c_int = 33188;
+pub const GIT_FILEMODE_BLOB_EXECUTABLE: c_int = 33261;
+pub const GIT_FILEMODE_LINK: c_int = 40960;
+pub const GIT_FILEMODE_COMMIT: c_int = 57344;
+pub const git_filemode_t = c_uint;
+pub const struct_git_refspec = opaque {};
+pub const git_refspec = struct_git_refspec;
+pub const struct_git_remote = opaque {};
+pub const git_remote = struct_git_remote;
+pub const struct_git_transport = opaque {};
+pub const git_transport = struct_git_transport;
+pub const struct_git_push = opaque {};
+pub const git_push = struct_git_push;
+pub const struct_git_remote_head = extern struct {
+ local: c_int,
+ oid: git_oid,
+ loid: git_oid,
+ name: [*c]u8,
+ symref_target: [*c]u8,
+};
+pub const git_remote_head = struct_git_remote_head;
+pub const git_transport_message_cb = ?fn ([*c]const u8, c_int, *c_void) callconv(.C) c_int;
+pub const GIT_REMOTE_COMPLETION_DOWNLOAD: c_int = 0;
+pub const GIT_REMOTE_COMPLETION_INDEXING: c_int = 1;
+pub const GIT_REMOTE_COMPLETION_ERROR: c_int = 2;
+pub const enum_git_remote_completion_t = c_uint;
+pub const git_remote_completion_t = enum_git_remote_completion_t;
+pub const struct_git_credential = extern struct {
+ credtype: git_credential_t,
+ free: ?fn ([*c]git_credential) callconv(.C) void,
+};
+pub const git_credential = struct_git_credential;
+pub const git_credential_acquire_cb = ?fn ([*c][*c]git_credential, [*c]const u8, [*c]const u8, c_uint, *c_void) callconv(.C) c_int;
+pub const GIT_CERT_NONE: c_int = 0;
+pub const GIT_CERT_X509: c_int = 1;
+pub const GIT_CERT_HOSTKEY_LIBSSH2: c_int = 2;
+pub const GIT_CERT_STRARRAY: c_int = 3;
+pub const enum_git_cert_t = c_uint;
+pub const git_cert_t = enum_git_cert_t;
+pub const struct_git_cert = extern struct {
+ cert_type: git_cert_t,
+};
+pub const git_cert = struct_git_cert;
+pub const git_transport_certificate_check_cb = ?fn ([*c]git_cert, c_int, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const git_indexer_progress_cb = ?fn ([*c]const git_indexer_progress, *c_void) callconv(.C) c_int;
+pub const git_packbuilder_progress = ?fn (c_int, u32, u32, *c_void) callconv(.C) c_int;
+pub const git_push_transfer_progress_cb = ?fn (c_uint, c_uint, usize, *c_void) callconv(.C) c_int;
+pub const git_push_update_reference_cb = ?fn ([*c]const u8, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const git_push_negotiation = ?fn ([*c][*c]const git_push_update, usize, *c_void) callconv(.C) c_int;
+pub const git_transport_cb = ?fn ([*c]*git_transport, *git_remote, *c_void) callconv(.C) c_int;
+pub const git_remote_ready_cb = ?fn (*git_remote, c_int, *c_void) callconv(.C) c_int;
+pub const git_url_resolve_cb = ?fn ([*c]git_buf, [*c]const u8, c_int, *c_void) callconv(.C) c_int;
+pub const struct_git_remote_callbacks = extern struct {
+ version: c_uint,
+ sideband_progress: git_transport_message_cb,
+ completion: ?fn (git_remote_completion_t, *c_void) callconv(.C) c_int,
+ credentials: git_credential_acquire_cb,
+ certificate_check: git_transport_certificate_check_cb,
+ transfer_progress: git_indexer_progress_cb,
+ update_tips: ?fn ([*c]const u8, [*c]const git_oid, [*c]const git_oid, *c_void) callconv(.C) c_int,
+ pack_progress: git_packbuilder_progress,
+ push_transfer_progress: git_push_transfer_progress_cb,
+ push_update_reference: git_push_update_reference_cb,
+ push_negotiation: git_push_negotiation,
+ transport: git_transport_cb,
+ remote_ready: git_remote_ready_cb,
+ payload: *c_void,
+ resolve_url: git_url_resolve_cb,
+};
+pub const git_remote_callbacks = struct_git_remote_callbacks;
+pub const struct_git_submodule = opaque {};
+pub const git_submodule = struct_git_submodule;
+pub const GIT_SUBMODULE_UPDATE_CHECKOUT: c_int = 1;
+pub const GIT_SUBMODULE_UPDATE_REBASE: c_int = 2;
+pub const GIT_SUBMODULE_UPDATE_MERGE: c_int = 3;
+pub const GIT_SUBMODULE_UPDATE_NONE: c_int = 4;
+pub const GIT_SUBMODULE_UPDATE_DEFAULT: c_int = 0;
+pub const git_submodule_update_t = c_uint;
+pub const GIT_SUBMODULE_IGNORE_UNSPECIFIED: c_int = -1;
+pub const GIT_SUBMODULE_IGNORE_NONE: c_int = 1;
+pub const GIT_SUBMODULE_IGNORE_UNTRACKED: c_int = 2;
+pub const GIT_SUBMODULE_IGNORE_DIRTY: c_int = 3;
+pub const GIT_SUBMODULE_IGNORE_ALL: c_int = 4;
+pub const git_submodule_ignore_t = c_int;
+pub const GIT_SUBMODULE_RECURSE_NO: c_int = 0;
+pub const GIT_SUBMODULE_RECURSE_YES: c_int = 1;
+pub const GIT_SUBMODULE_RECURSE_ONDEMAND: c_int = 2;
+pub const git_submodule_recurse_t = c_uint;
+pub const git_writestream = struct_git_writestream;
+pub const struct_git_writestream = extern struct {
+ write: ?fn ([*c]git_writestream, [*c]const u8, usize) callconv(.C) c_int,
+ close: ?fn ([*c]git_writestream) callconv(.C) c_int,
+ free: ?fn ([*c]git_writestream) callconv(.C) void,
+};
+pub const struct_git_mailmap = opaque {};
+pub const git_mailmap = struct_git_mailmap;
+pub const GIT_REPOSITORY_OPEN_NO_SEARCH: c_int = 1;
+pub const GIT_REPOSITORY_OPEN_CROSS_FS: c_int = 2;
+pub const GIT_REPOSITORY_OPEN_BARE: c_int = 4;
+pub const GIT_REPOSITORY_OPEN_NO_DOTGIT: c_int = 8;
+pub const GIT_REPOSITORY_OPEN_FROM_ENV: c_int = 16;
+pub const git_repository_open_flag_t = c_uint;
+pub const GIT_REPOSITORY_INIT_BARE: c_int = 1;
+pub const GIT_REPOSITORY_INIT_NO_REINIT: c_int = 2;
+pub const GIT_REPOSITORY_INIT_NO_DOTGIT_DIR: c_int = 4;
+pub const GIT_REPOSITORY_INIT_MKDIR: c_int = 8;
+pub const GIT_REPOSITORY_INIT_MKPATH: c_int = 16;
+pub const GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE: c_int = 32;
+pub const GIT_REPOSITORY_INIT_RELATIVE_GITLINK: c_int = 64;
+pub const git_repository_init_flag_t = c_uint;
+pub const GIT_REPOSITORY_INIT_SHARED_UMASK: c_int = 0;
+pub const GIT_REPOSITORY_INIT_SHARED_GROUP: c_int = 1533;
+pub const GIT_REPOSITORY_INIT_SHARED_ALL: c_int = 1535;
+pub const git_repository_init_mode_t = c_uint;
+pub const git_repository_init_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ mode: u32,
+ workdir_path: [*c]const u8,
+ description: [*c]const u8,
+ template_path: [*c]const u8,
+ initial_head: [*c]const u8,
+ origin_url: [*c]const u8,
+};
+pub const GIT_REPOSITORY_ITEM_GITDIR: c_int = 0;
+pub const GIT_REPOSITORY_ITEM_WORKDIR: c_int = 1;
+pub const GIT_REPOSITORY_ITEM_COMMONDIR: c_int = 2;
+pub const GIT_REPOSITORY_ITEM_INDEX: c_int = 3;
+pub const GIT_REPOSITORY_ITEM_OBJECTS: c_int = 4;
+pub const GIT_REPOSITORY_ITEM_REFS: c_int = 5;
+pub const GIT_REPOSITORY_ITEM_PACKED_REFS: c_int = 6;
+pub const GIT_REPOSITORY_ITEM_REMOTES: c_int = 7;
+pub const GIT_REPOSITORY_ITEM_CONFIG: c_int = 8;
+pub const GIT_REPOSITORY_ITEM_INFO: c_int = 9;
+pub const GIT_REPOSITORY_ITEM_HOOKS: c_int = 10;
+pub const GIT_REPOSITORY_ITEM_LOGS: c_int = 11;
+pub const GIT_REPOSITORY_ITEM_MODULES: c_int = 12;
+pub const GIT_REPOSITORY_ITEM_WORKTREES: c_int = 13;
+pub const GIT_REPOSITORY_ITEM__LAST: c_int = 14;
+pub const git_repository_item_t = c_uint;
+pub const git_repository_fetchhead_foreach_cb = ?fn ([*c]const u8, [*c]const u8, [*c]const git_oid, c_uint, *c_void) callconv(.C) c_int;
+pub const git_repository_mergehead_foreach_cb = ?fn ([*c]const git_oid, *c_void) callconv(.C) c_int;
+pub const GIT_REPOSITORY_STATE_NONE: c_int = 0;
+pub const GIT_REPOSITORY_STATE_MERGE: c_int = 1;
+pub const GIT_REPOSITORY_STATE_REVERT: c_int = 2;
+pub const GIT_REPOSITORY_STATE_REVERT_SEQUENCE: c_int = 3;
+pub const GIT_REPOSITORY_STATE_CHERRYPICK: c_int = 4;
+pub const GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE: c_int = 5;
+pub const GIT_REPOSITORY_STATE_BISECT: c_int = 6;
+pub const GIT_REPOSITORY_STATE_REBASE: c_int = 7;
+pub const GIT_REPOSITORY_STATE_REBASE_INTERACTIVE: c_int = 8;
+pub const GIT_REPOSITORY_STATE_REBASE_MERGE: c_int = 9;
+pub const GIT_REPOSITORY_STATE_APPLY_MAILBOX: c_int = 10;
+pub const GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE: c_int = 11;
+pub const git_repository_state_t = c_uint;
+pub const git_treebuilder_filter_cb = ?fn (*const git_tree_entry, *c_void) callconv(.C) c_int;
+pub const git_treewalk_cb = ?fn ([*c]const u8, *const git_tree_entry, *c_void) callconv(.C) c_int;
+pub const GIT_TREEWALK_PRE: c_int = 0;
+pub const GIT_TREEWALK_POST: c_int = 1;
+pub const git_treewalk_mode = c_uint;
+pub const GIT_TREE_UPDATE_UPSERT: c_int = 0;
+pub const GIT_TREE_UPDATE_REMOVE: c_int = 1;
+pub const git_tree_update_t = c_uint;
+pub const git_tree_update = extern struct {
+ action: git_tree_update_t,
+ id: git_oid,
+ filemode: git_filemode_t,
+ path: [*c]const u8,
+};
+pub const struct_git_strarray = extern struct {
+ strings: [*c][*c]u8,
+ count: usize,
+};
+pub const git_strarray = struct_git_strarray;
+pub const git_reference_foreach_cb = ?fn (*git_reference, *c_void) callconv(.C) c_int;
+pub const git_reference_foreach_name_cb = ?fn ([*c]const u8, *c_void) callconv(.C) c_int;
+pub const GIT_REFERENCE_FORMAT_NORMAL: c_int = 0;
+pub const GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL: c_int = 1;
+pub const GIT_REFERENCE_FORMAT_REFSPEC_PATTERN: c_int = 2;
+pub const GIT_REFERENCE_FORMAT_REFSPEC_SHORTHAND: c_int = 4;
+pub const git_reference_format_t = c_uint;
+pub const GIT_DIFF_NORMAL: c_int = 0;
+pub const GIT_DIFF_REVERSE: c_int = 1;
+pub const GIT_DIFF_INCLUDE_IGNORED: c_int = 2;
+pub const GIT_DIFF_RECURSE_IGNORED_DIRS: c_int = 4;
+pub const GIT_DIFF_INCLUDE_UNTRACKED: c_int = 8;
+pub const GIT_DIFF_RECURSE_UNTRACKED_DIRS: c_int = 16;
+pub const GIT_DIFF_INCLUDE_UNMODIFIED: c_int = 32;
+pub const GIT_DIFF_INCLUDE_TYPECHANGE: c_int = 64;
+pub const GIT_DIFF_INCLUDE_TYPECHANGE_TREES: c_int = 128;
+pub const GIT_DIFF_IGNORE_FILEMODE: c_int = 256;
+pub const GIT_DIFF_IGNORE_SUBMODULES: c_int = 512;
+pub const GIT_DIFF_IGNORE_CASE: c_int = 1024;
+pub const GIT_DIFF_INCLUDE_CASECHANGE: c_int = 2048;
+pub const GIT_DIFF_DISABLE_PATHSPEC_MATCH: c_int = 4096;
+pub const GIT_DIFF_SKIP_BINARY_CHECK: c_int = 8192;
+pub const GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS: c_int = 16384;
+pub const GIT_DIFF_UPDATE_INDEX: c_int = 32768;
+pub const GIT_DIFF_INCLUDE_UNREADABLE: c_int = 65536;
+pub const GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED: c_int = 131072;
+pub const GIT_DIFF_INDENT_HEURISTIC: c_int = 262144;
+pub const GIT_DIFF_IGNORE_BLANK_LINES: c_int = 524288;
+pub const GIT_DIFF_FORCE_TEXT: c_int = 1048576;
+pub const GIT_DIFF_FORCE_BINARY: c_int = 2097152;
+pub const GIT_DIFF_IGNORE_WHITESPACE: c_int = 4194304;
+pub const GIT_DIFF_IGNORE_WHITESPACE_CHANGE: c_int = 8388608;
+pub const GIT_DIFF_IGNORE_WHITESPACE_EOL: c_int = 16777216;
+pub const GIT_DIFF_SHOW_UNTRACKED_CONTENT: c_int = 33554432;
+pub const GIT_DIFF_SHOW_UNMODIFIED: c_int = 67108864;
+pub const GIT_DIFF_PATIENCE: c_int = 268435456;
+pub const GIT_DIFF_MINIMAL: c_int = 536870912;
+pub const GIT_DIFF_SHOW_BINARY: c_int = 1073741824;
+pub const git_diff_option_t = c_uint;
+pub const struct_git_diff = opaque {};
+pub const git_diff = struct_git_diff;
+pub const GIT_DIFF_FLAG_BINARY: c_int = 1;
+pub const GIT_DIFF_FLAG_NOT_BINARY: c_int = 2;
+pub const GIT_DIFF_FLAG_VALID_ID: c_int = 4;
+pub const GIT_DIFF_FLAG_EXISTS: c_int = 8;
+pub const git_diff_flag_t = c_uint;
+pub const GIT_DELTA_UNMODIFIED: c_int = 0;
+pub const GIT_DELTA_ADDED: c_int = 1;
+pub const GIT_DELTA_DELETED: c_int = 2;
+pub const GIT_DELTA_MODIFIED: c_int = 3;
+pub const GIT_DELTA_RENAMED: c_int = 4;
+pub const GIT_DELTA_COPIED: c_int = 5;
+pub const GIT_DELTA_IGNORED: c_int = 6;
+pub const GIT_DELTA_UNTRACKED: c_int = 7;
+pub const GIT_DELTA_TYPECHANGE: c_int = 8;
+pub const GIT_DELTA_UNREADABLE: c_int = 9;
+pub const GIT_DELTA_CONFLICTED: c_int = 10;
+pub const git_delta_t = c_uint;
+pub const git_diff_file = extern struct {
+ id: git_oid,
+ path: [*c]const u8,
+ size: git_object_size_t,
+ flags: u32,
+ mode: u16,
+ id_abbrev: u16,
+};
+pub const git_diff_delta = extern struct {
+ status: git_delta_t,
+ flags: u32,
+ similarity: u16,
+ nfiles: u16,
+ old_file: git_diff_file,
+ new_file: git_diff_file,
+};
+pub const git_diff_notify_cb = ?fn (*const git_diff, [*c]const git_diff_delta, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const git_diff_progress_cb = ?fn (*const git_diff, [*c]const u8, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const git_diff_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ ignore_submodules: git_submodule_ignore_t,
+ pathspec: git_strarray,
+ notify_cb: git_diff_notify_cb,
+ progress_cb: git_diff_progress_cb,
+ payload: *c_void,
+ context_lines: u32,
+ interhunk_lines: u32,
+ id_abbrev: u16,
+ max_size: git_off_t,
+ old_prefix: [*c]const u8,
+ new_prefix: [*c]const u8,
+};
+pub const git_diff_file_cb = ?fn ([*c]const git_diff_delta, f32, *c_void) callconv(.C) c_int;
+pub const GIT_DIFF_BINARY_NONE: c_int = 0;
+pub const GIT_DIFF_BINARY_LITERAL: c_int = 1;
+pub const GIT_DIFF_BINARY_DELTA: c_int = 2;
+pub const git_diff_binary_t = c_uint;
+pub const git_diff_binary_file = extern struct {
+ type: git_diff_binary_t,
+ data: [*c]const u8,
+ datalen: usize,
+ inflatedlen: usize,
+};
+pub const git_diff_binary = extern struct {
+ contains_data: c_uint,
+ old_file: git_diff_binary_file,
+ new_file: git_diff_binary_file,
+};
+pub const git_diff_binary_cb = ?fn ([*c]const git_diff_delta, [*c]const git_diff_binary, *c_void) callconv(.C) c_int;
+pub const git_diff_hunk = extern struct {
+ old_start: c_int,
+ old_lines: c_int,
+ new_start: c_int,
+ new_lines: c_int,
+ header_len: usize,
+ header: [128]u8,
+};
+pub const git_diff_hunk_cb = ?fn ([*c]const git_diff_delta, [*c]const git_diff_hunk, *c_void) callconv(.C) c_int;
+pub const GIT_DIFF_LINE_CONTEXT: c_int = 32;
+pub const GIT_DIFF_LINE_ADDITION: c_int = 43;
+pub const GIT_DIFF_LINE_DELETION: c_int = 45;
+pub const GIT_DIFF_LINE_CONTEXT_EOFNL: c_int = 61;
+pub const GIT_DIFF_LINE_ADD_EOFNL: c_int = 62;
+pub const GIT_DIFF_LINE_DEL_EOFNL: c_int = 60;
+pub const GIT_DIFF_LINE_FILE_HDR: c_int = 70;
+pub const GIT_DIFF_LINE_HUNK_HDR: c_int = 72;
+pub const GIT_DIFF_LINE_BINARY: c_int = 66;
+pub const git_diff_line_t = c_uint;
+pub const git_diff_line = extern struct {
+ origin: u8,
+ old_lineno: c_int,
+ new_lineno: c_int,
+ num_lines: c_int,
+ content_len: usize,
+ content_offset: git_off_t,
+ content: [*c]const u8,
+};
+pub const git_diff_line_cb = ?fn ([*c]const git_diff_delta, [*c]const git_diff_hunk, [*c]const git_diff_line, *c_void) callconv(.C) c_int;
+pub const GIT_DIFF_FIND_BY_CONFIG: c_int = 0;
+pub const GIT_DIFF_FIND_RENAMES: c_int = 1;
+pub const GIT_DIFF_FIND_RENAMES_FROM_REWRITES: c_int = 2;
+pub const GIT_DIFF_FIND_COPIES: c_int = 4;
+pub const GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED: c_int = 8;
+pub const GIT_DIFF_FIND_REWRITES: c_int = 16;
+pub const GIT_DIFF_BREAK_REWRITES: c_int = 32;
+pub const GIT_DIFF_FIND_AND_BREAK_REWRITES: c_int = 48;
+pub const GIT_DIFF_FIND_FOR_UNTRACKED: c_int = 64;
+pub const GIT_DIFF_FIND_ALL: c_int = 255;
+pub const GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE: c_int = 0;
+pub const GIT_DIFF_FIND_IGNORE_WHITESPACE: c_int = 4096;
+pub const GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE: c_int = 8192;
+pub const GIT_DIFF_FIND_EXACT_MATCH_ONLY: c_int = 16384;
+pub const GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY: c_int = 32768;
+pub const GIT_DIFF_FIND_REMOVE_UNMODIFIED: c_int = 65536;
+pub const git_diff_find_t = c_uint;
+pub const git_diff_similarity_metric = extern struct {
+ file_signature: ?fn ([*c]*c_void, [*c]const git_diff_file, [*c]const u8, *c_void) callconv(.C) c_int,
+ buffer_signature: ?fn ([*c]*c_void, [*c]const git_diff_file, [*c]const u8, usize, *c_void) callconv(.C) c_int,
+ free_signature: ?fn (*c_void, *c_void) callconv(.C) void,
+ similarity: ?fn ([*c]c_int, *c_void, *c_void, *c_void) callconv(.C) c_int,
+ payload: *c_void,
+};
+pub const git_diff_find_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ rename_threshold: u16,
+ rename_from_rewrite_threshold: u16,
+ copy_threshold: u16,
+ break_rewrite_threshold: u16,
+ rename_limit: usize,
+ metric: [*c]git_diff_similarity_metric,
+};
+pub const GIT_DIFF_FORMAT_PATCH: c_int = 1;
+pub const GIT_DIFF_FORMAT_PATCH_HEADER: c_int = 2;
+pub const GIT_DIFF_FORMAT_RAW: c_int = 3;
+pub const GIT_DIFF_FORMAT_NAME_ONLY: c_int = 4;
+pub const GIT_DIFF_FORMAT_NAME_STATUS: c_int = 5;
+pub const GIT_DIFF_FORMAT_PATCH_ID: c_int = 6;
+pub const git_diff_format_t = c_uint;
+pub const struct_git_diff_stats = opaque {};
+pub const git_diff_stats = struct_git_diff_stats;
+pub const GIT_DIFF_STATS_NONE: c_int = 0;
+pub const GIT_DIFF_STATS_FULL: c_int = 1;
+pub const GIT_DIFF_STATS_SHORT: c_int = 2;
+pub const GIT_DIFF_STATS_NUMBER: c_int = 4;
+pub const GIT_DIFF_STATS_INCLUDE_SUMMARY: c_int = 8;
+pub const git_diff_stats_format_t = c_uint;
+pub const struct_git_diff_patchid_options = extern struct {
+ version: c_uint,
+};
+pub const git_diff_patchid_options = struct_git_diff_patchid_options;
+pub const git_apply_delta_cb = ?fn ([*c]const git_diff_delta, *c_void) callconv(.C) c_int;
+pub const git_apply_hunk_cb = ?fn ([*c]const git_diff_hunk, *c_void) callconv(.C) c_int;
+pub const GIT_APPLY_CHECK: c_int = 1;
+pub const git_apply_flags_t = c_uint;
+pub const git_apply_options = extern struct {
+ version: c_uint,
+ delta_cb: git_apply_delta_cb,
+ hunk_cb: git_apply_hunk_cb,
+ payload: *c_void,
+ flags: c_uint,
+};
+pub const GIT_APPLY_LOCATION_WORKDIR: c_int = 0;
+pub const GIT_APPLY_LOCATION_INDEX: c_int = 1;
+pub const GIT_APPLY_LOCATION_BOTH: c_int = 2;
+pub const git_apply_location_t = c_uint;
+pub const GIT_ATTR_VALUE_UNSPECIFIED: c_int = 0;
+pub const GIT_ATTR_VALUE_TRUE: c_int = 1;
+pub const GIT_ATTR_VALUE_FALSE: c_int = 2;
+pub const GIT_ATTR_VALUE_STRING: c_int = 3;
+pub const git_attr_value_t = c_uint;
+pub const git_attr_options = extern struct {
+ version: c_uint,
+ flags: c_uint,
+ commit_id: [*c]git_oid,
+ attr_commit_id: git_oid,
+};
+pub const git_attr_foreach_cb = ?fn ([*c]const u8, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const GIT_BLOB_FILTER_CHECK_FOR_BINARY: c_int = 1;
+pub const GIT_BLOB_FILTER_NO_SYSTEM_ATTRIBUTES: c_int = 2;
+pub const GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD: c_int = 4;
+pub const GIT_BLOB_FILTER_ATTRIBUTES_FROM_COMMIT: c_int = 8;
+pub const git_blob_filter_flag_t = c_uint;
+pub const git_blob_filter_options = extern struct {
+ version: c_int,
+ flags: u32,
+ commit_id: [*c]git_oid,
+ attr_commit_id: git_oid,
+};
+pub const GIT_BLAME_NORMAL: c_int = 0;
+pub const GIT_BLAME_TRACK_COPIES_SAME_FILE: c_int = 1;
+pub const GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES: c_int = 2;
+pub const GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES: c_int = 4;
+pub const GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES: c_int = 8;
+pub const GIT_BLAME_FIRST_PARENT: c_int = 16;
+pub const GIT_BLAME_USE_MAILMAP: c_int = 32;
+pub const GIT_BLAME_IGNORE_WHITESPACE: c_int = 64;
+pub const git_blame_flag_t = c_uint;
+pub const struct_git_blame_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ min_match_characters: u16,
+ newest_commit: git_oid,
+ oldest_commit: git_oid,
+ min_line: usize,
+ max_line: usize,
+};
+pub const git_blame_options = struct_git_blame_options;
+pub const struct_git_blame_hunk = extern struct {
+ lines_in_hunk: usize,
+ final_commit_id: git_oid,
+ final_start_line_number: usize,
+ final_signature: [*c]git_signature,
+ orig_commit_id: git_oid,
+ orig_path: [*c]const u8,
+ orig_start_line_number: usize,
+ orig_signature: [*c]git_signature,
+ boundary: u8,
+};
+pub const git_blame_hunk = struct_git_blame_hunk;
+pub const struct_git_blame = opaque {};
+pub const git_blame = struct_git_blame;
+pub const struct_git_branch_iterator = opaque {};
+pub const git_branch_iterator = struct_git_branch_iterator;
+pub const GIT_CERT_SSH_MD5: c_int = 1;
+pub const GIT_CERT_SSH_SHA1: c_int = 2;
+pub const GIT_CERT_SSH_SHA256: c_int = 4;
+pub const GIT_CERT_SSH_RAW: c_int = 8;
+pub const git_cert_ssh_t = c_uint;
+pub const GIT_CERT_SSH_RAW_TYPE_UNKNOWN: c_int = 0;
+pub const GIT_CERT_SSH_RAW_TYPE_RSA: c_int = 1;
+pub const GIT_CERT_SSH_RAW_TYPE_DSS: c_int = 2;
+pub const GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256: c_int = 3;
+pub const GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384: c_int = 4;
+pub const GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521: c_int = 5;
+pub const GIT_CERT_SSH_RAW_TYPE_KEY_ED25519: c_int = 6;
+pub const git_cert_ssh_raw_type_t = c_uint;
+pub const git_cert_hostkey = extern struct {
+ parent: git_cert,
+ type: git_cert_ssh_t,
+ hash_md5: [16]u8,
+ hash_sha1: [20]u8,
+ hash_sha256: [32]u8,
+ raw_type: git_cert_ssh_raw_type_t,
+ hostkey: [*c]const u8,
+ hostkey_len: usize,
+};
+pub const git_cert_x509 = extern struct {
+ parent: git_cert,
+ data: *c_void,
+ len: usize,
+};
+pub const GIT_CHECKOUT_NONE: c_int = 0;
+pub const GIT_CHECKOUT_SAFE: c_int = 1;
+pub const GIT_CHECKOUT_FORCE: c_int = 2;
+pub const GIT_CHECKOUT_RECREATE_MISSING: c_int = 4;
+pub const GIT_CHECKOUT_ALLOW_CONFLICTS: c_int = 16;
+pub const GIT_CHECKOUT_REMOVE_UNTRACKED: c_int = 32;
+pub const GIT_CHECKOUT_REMOVE_IGNORED: c_int = 64;
+pub const GIT_CHECKOUT_UPDATE_ONLY: c_int = 128;
+pub const GIT_CHECKOUT_DONT_UPDATE_INDEX: c_int = 256;
+pub const GIT_CHECKOUT_NO_REFRESH: c_int = 512;
+pub const GIT_CHECKOUT_SKIP_UNMERGED: c_int = 1024;
+pub const GIT_CHECKOUT_USE_OURS: c_int = 2048;
+pub const GIT_CHECKOUT_USE_THEIRS: c_int = 4096;
+pub const GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH: c_int = 8192;
+pub const GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES: c_int = 262144;
+pub const GIT_CHECKOUT_DONT_OVERWRITE_IGNORED: c_int = 524288;
+pub const GIT_CHECKOUT_CONFLICT_STYLE_MERGE: c_int = 1048576;
+pub const GIT_CHECKOUT_CONFLICT_STYLE_DIFF3: c_int = 2097152;
+pub const GIT_CHECKOUT_DONT_REMOVE_EXISTING: c_int = 4194304;
+pub const GIT_CHECKOUT_DONT_WRITE_INDEX: c_int = 8388608;
+pub const GIT_CHECKOUT_DRY_RUN: c_int = 16777216;
+pub const GIT_CHECKOUT_UPDATE_SUBMODULES: c_int = 65536;
+pub const GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED: c_int = 131072;
+pub const git_checkout_strategy_t = c_uint;
+pub const GIT_CHECKOUT_NOTIFY_NONE: c_int = 0;
+pub const GIT_CHECKOUT_NOTIFY_CONFLICT: c_int = 1;
+pub const GIT_CHECKOUT_NOTIFY_DIRTY: c_int = 2;
+pub const GIT_CHECKOUT_NOTIFY_UPDATED: c_int = 4;
+pub const GIT_CHECKOUT_NOTIFY_UNTRACKED: c_int = 8;
+pub const GIT_CHECKOUT_NOTIFY_IGNORED: c_int = 16;
+pub const GIT_CHECKOUT_NOTIFY_ALL: c_int = 65535;
+pub const git_checkout_notify_t = c_uint;
+pub const git_checkout_perfdata = extern struct {
+ mkdir_calls: usize,
+ stat_calls: usize,
+ chmod_calls: usize,
+};
+pub const git_checkout_notify_cb = ?fn (git_checkout_notify_t, [*c]const u8, [*c]const git_diff_file, [*c]const git_diff_file, [*c]const git_diff_file, *c_void) callconv(.C) c_int;
+pub const git_checkout_progress_cb = ?fn ([*c]const u8, usize, usize, *c_void) callconv(.C) void;
+pub const git_checkout_perfdata_cb = ?fn ([*c]const git_checkout_perfdata, *c_void) callconv(.C) void;
+pub const struct_git_checkout_options = extern struct {
+ version: c_uint,
+ checkout_strategy: c_uint,
+ disable_filters: c_int,
+ dir_mode: c_uint,
+ file_mode: c_uint,
+ file_open_flags: c_int,
+ notify_flags: c_uint,
+ notify_cb: git_checkout_notify_cb,
+ notify_payload: *c_void,
+ progress_cb: git_checkout_progress_cb,
+ progress_payload: *c_void,
+ paths: git_strarray,
+ baseline: *git_tree,
+ baseline_index: *git_index,
+ target_directory: [*c]const u8,
+ ancestor_label: [*c]const u8,
+ our_label: [*c]const u8,
+ their_label: [*c]const u8,
+ perfdata_cb: git_checkout_perfdata_cb,
+ perfdata_payload: *c_void,
+};
+pub const git_checkout_options = struct_git_checkout_options;
+pub const struct_git_oidarray = extern struct {
+ ids: [*c]git_oid,
+ count: usize,
+};
+pub const git_oidarray = struct_git_oidarray;
+pub const struct_git_indexer = opaque {};
+pub const git_indexer = struct_git_indexer;
+pub const struct_git_indexer_options = extern struct {
+ version: c_uint,
+ progress_cb: git_indexer_progress_cb,
+ progress_cb_payload: *c_void,
+ verify: u8,
+};
+pub const git_indexer_options = struct_git_indexer_options;
+pub const git_index_time = extern struct {
+ seconds: i32,
+ nanoseconds: u32,
+};
+pub const struct_git_index_entry = extern struct {
+ ctime: git_index_time,
+ mtime: git_index_time,
+ dev: u32,
+ ino: u32,
+ mode: u32,
+ uid: u32,
+ gid: u32,
+ file_size: u32,
+ id: git_oid,
+ flags: u16,
+ flags_extended: u16,
+ path: [*c]const u8,
+};
+pub const git_index_entry = struct_git_index_entry;
+pub const GIT_INDEX_ENTRY_EXTENDED: c_int = 16384;
+pub const GIT_INDEX_ENTRY_VALID: c_int = 32768;
+pub const git_index_entry_flag_t = c_uint;
+pub const GIT_INDEX_ENTRY_INTENT_TO_ADD: c_int = 8192;
+pub const GIT_INDEX_ENTRY_SKIP_WORKTREE: c_int = 16384;
+pub const GIT_INDEX_ENTRY_EXTENDED_FLAGS: c_int = 24576;
+pub const GIT_INDEX_ENTRY_UPTODATE: c_int = 4;
+pub const git_index_entry_extended_flag_t = c_uint;
+pub const GIT_INDEX_CAPABILITY_IGNORE_CASE: c_int = 1;
+pub const GIT_INDEX_CAPABILITY_NO_FILEMODE: c_int = 2;
+pub const GIT_INDEX_CAPABILITY_NO_SYMLINKS: c_int = 4;
+pub const GIT_INDEX_CAPABILITY_FROM_OWNER: c_int = -1;
+pub const git_index_capability_t = c_int;
+pub const git_index_matched_path_cb = ?fn ([*c]const u8, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const GIT_INDEX_ADD_DEFAULT: c_int = 0;
+pub const GIT_INDEX_ADD_FORCE: c_int = 1;
+pub const GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH: c_int = 2;
+pub const GIT_INDEX_ADD_CHECK_PATHSPEC: c_int = 4;
+pub const git_index_add_option_t = c_uint;
+pub const GIT_INDEX_STAGE_ANY: c_int = -1;
+pub const GIT_INDEX_STAGE_NORMAL: c_int = 0;
+pub const GIT_INDEX_STAGE_ANCESTOR: c_int = 1;
+pub const GIT_INDEX_STAGE_OURS: c_int = 2;
+pub const GIT_INDEX_STAGE_THEIRS: c_int = 3;
+pub const git_index_stage_t = c_int;
+pub const git_merge_file_input = extern struct {
+ version: c_uint,
+ ptr: [*c]const u8,
+ size: usize,
+ path: [*c]const u8,
+ mode: c_uint,
+};
+pub const GIT_MERGE_FIND_RENAMES: c_int = 1;
+pub const GIT_MERGE_FAIL_ON_CONFLICT: c_int = 2;
+pub const GIT_MERGE_SKIP_REUC: c_int = 4;
+pub const GIT_MERGE_NO_RECURSIVE: c_int = 8;
+pub const git_merge_flag_t = c_uint;
+pub const GIT_MERGE_FILE_FAVOR_NORMAL: c_int = 0;
+pub const GIT_MERGE_FILE_FAVOR_OURS: c_int = 1;
+pub const GIT_MERGE_FILE_FAVOR_THEIRS: c_int = 2;
+pub const GIT_MERGE_FILE_FAVOR_UNION: c_int = 3;
+pub const git_merge_file_favor_t = c_uint;
+pub const GIT_MERGE_FILE_DEFAULT: c_int = 0;
+pub const GIT_MERGE_FILE_STYLE_MERGE: c_int = 1;
+pub const GIT_MERGE_FILE_STYLE_DIFF3: c_int = 2;
+pub const GIT_MERGE_FILE_SIMPLIFY_ALNUM: c_int = 4;
+pub const GIT_MERGE_FILE_IGNORE_WHITESPACE: c_int = 8;
+pub const GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE: c_int = 16;
+pub const GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL: c_int = 32;
+pub const GIT_MERGE_FILE_DIFF_PATIENCE: c_int = 64;
+pub const GIT_MERGE_FILE_DIFF_MINIMAL: c_int = 128;
+pub const git_merge_file_flag_t = c_uint;
+pub const git_merge_file_options = extern struct {
+ version: c_uint,
+ ancestor_label: [*c]const u8,
+ our_label: [*c]const u8,
+ their_label: [*c]const u8,
+ favor: git_merge_file_favor_t,
+ flags: u32,
+ marker_size: c_ushort,
+};
+pub const git_merge_file_result = extern struct {
+ automergeable: c_uint,
+ path: [*c]const u8,
+ mode: c_uint,
+ ptr: [*c]const u8,
+ len: usize,
+};
+pub const git_merge_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ rename_threshold: c_uint,
+ target_limit: c_uint,
+ metric: [*c]git_diff_similarity_metric,
+ recursion_limit: c_uint,
+ default_driver: [*c]const u8,
+ file_favor: git_merge_file_favor_t,
+ file_flags: u32,
+};
+pub const GIT_MERGE_ANALYSIS_NONE: c_int = 0;
+pub const GIT_MERGE_ANALYSIS_NORMAL: c_int = 1;
+pub const GIT_MERGE_ANALYSIS_UP_TO_DATE: c_int = 2;
+pub const GIT_MERGE_ANALYSIS_FASTFORWARD: c_int = 4;
+pub const GIT_MERGE_ANALYSIS_UNBORN: c_int = 8;
+pub const git_merge_analysis_t = c_uint;
+pub const GIT_MERGE_PREFERENCE_NONE: c_int = 0;
+pub const GIT_MERGE_PREFERENCE_NO_FASTFORWARD: c_int = 1;
+pub const GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY: c_int = 2;
+pub const git_merge_preference_t = c_uint;
+pub const git_cherrypick_options = extern struct {
+ version: c_uint,
+ mainline: c_uint,
+ merge_opts: git_merge_options,
+ checkout_opts: git_checkout_options,
+};
+pub const GIT_DIRECTION_FETCH: c_int = 0;
+pub const GIT_DIRECTION_PUSH: c_int = 1;
+pub const git_direction = c_uint;
+pub const GIT_CREDENTIAL_USERPASS_PLAINTEXT: c_int = 1;
+pub const GIT_CREDENTIAL_SSH_KEY: c_int = 2;
+pub const GIT_CREDENTIAL_SSH_CUSTOM: c_int = 4;
+pub const GIT_CREDENTIAL_DEFAULT: c_int = 8;
+pub const GIT_CREDENTIAL_SSH_INTERACTIVE: c_int = 16;
+pub const GIT_CREDENTIAL_USERNAME: c_int = 32;
+pub const GIT_CREDENTIAL_SSH_MEMORY: c_int = 64;
+pub const git_credential_t = c_uint;
+pub const struct_git_credential_userpass_plaintext = extern struct {
+ parent: git_credential,
+ username: [*c]u8,
+ password: [*c]u8,
+};
+pub const git_credential_userpass_plaintext = struct_git_credential_userpass_plaintext;
+pub const struct_git_credential_username = extern struct {
+ parent: git_credential,
+ username: [1]u8,
+};
+pub const git_credential_username = struct_git_credential_username;
+pub const git_credential_default = struct_git_credential;
+pub const struct_git_credential_ssh_key = extern struct {
+ parent: git_credential,
+ username: [*c]u8,
+ publickey: [*c]u8,
+ privatekey: [*c]u8,
+ passphrase: [*c]u8,
+};
+pub const git_credential_ssh_key = struct_git_credential_ssh_key;
+pub const struct__LIBSSH2_USERAUTH_KBDINT_PROMPT = opaque {};
+pub const LIBSSH2_USERAUTH_KBDINT_PROMPT = struct__LIBSSH2_USERAUTH_KBDINT_PROMPT;
+pub const struct__LIBSSH2_USERAUTH_KBDINT_RESPONSE = opaque {};
+pub const LIBSSH2_USERAUTH_KBDINT_RESPONSE = struct__LIBSSH2_USERAUTH_KBDINT_RESPONSE;
+pub const git_credential_ssh_interactive_cb = ?fn ([*c]const u8, c_int, [*c]const u8, c_int, c_int, *const LIBSSH2_USERAUTH_KBDINT_PROMPT, *LIBSSH2_USERAUTH_KBDINT_RESPONSE, [*c]*c_void) callconv(.C) void;
+pub const struct_git_credential_ssh_interactive = extern struct {
+ parent: git_credential,
+ username: [*c]u8,
+ prompt_callback: git_credential_ssh_interactive_cb,
+ payload: *c_void,
+};
+pub const git_credential_ssh_interactive = struct_git_credential_ssh_interactive;
+pub const struct__LIBSSH2_SESSION = opaque {};
+pub const LIBSSH2_SESSION = struct__LIBSSH2_SESSION;
+pub const git_credential_sign_cb = ?fn (*LIBSSH2_SESSION, [*c][*c]u8, [*c]usize, [*c]const u8, usize, [*c]*c_void) callconv(.C) c_int;
+pub const struct_git_credential_ssh_custom = extern struct {
+ parent: git_credential,
+ username: [*c]u8,
+ publickey: [*c]u8,
+ publickey_len: usize,
+ sign_callback: git_credential_sign_cb,
+ payload: *c_void,
+};
+pub const git_credential_ssh_custom = struct_git_credential_ssh_custom;
+pub const GIT_PACKBUILDER_ADDING_OBJECTS: c_int = 0;
+pub const GIT_PACKBUILDER_DELTAFICATION: c_int = 1;
+pub const git_packbuilder_stage_t = c_uint;
+pub const git_packbuilder_foreach_cb = ?fn (*c_void, usize, *c_void) callconv(.C) c_int;
+pub const GIT_PROXY_NONE: c_int = 0;
+pub const GIT_PROXY_AUTO: c_int = 1;
+pub const GIT_PROXY_SPECIFIED: c_int = 2;
+pub const git_proxy_t = c_uint;
+pub const git_proxy_options = extern struct {
+ version: c_uint,
+ type: git_proxy_t,
+ url: [*c]const u8,
+ credentials: git_credential_acquire_cb,
+ certificate_check: git_transport_certificate_check_cb,
+ payload: *c_void,
+};
+pub const GIT_REMOTE_CREATE_SKIP_INSTEADOF: c_int = 1;
+pub const GIT_REMOTE_CREATE_SKIP_DEFAULT_FETCHSPEC: c_int = 2;
+pub const git_remote_create_flags = c_uint;
+pub const struct_git_remote_create_options = extern struct {
+ version: c_uint,
+ repository: *git_repository,
+ name: [*c]const u8,
+ fetchspec: [*c]const u8,
+ flags: c_uint,
+};
+pub const git_remote_create_options = struct_git_remote_create_options;
+pub const git_push_update = extern struct {
+ src_refname: [*c]u8,
+ dst_refname: [*c]u8,
+ src: git_oid,
+ dst: git_oid,
+};
+pub const GIT_FETCH_PRUNE_UNSPECIFIED: c_int = 0;
+pub const GIT_FETCH_PRUNE: c_int = 1;
+pub const GIT_FETCH_NO_PRUNE: c_int = 2;
+pub const git_fetch_prune_t = c_uint;
+pub const GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED: c_int = 0;
+pub const GIT_REMOTE_DOWNLOAD_TAGS_AUTO: c_int = 1;
+pub const GIT_REMOTE_DOWNLOAD_TAGS_NONE: c_int = 2;
+pub const GIT_REMOTE_DOWNLOAD_TAGS_ALL: c_int = 3;
+pub const git_remote_autotag_option_t = c_uint;
+pub const git_fetch_options = extern struct {
+ version: c_int,
+ callbacks: git_remote_callbacks,
+ prune: git_fetch_prune_t,
+ update_fetchhead: c_int,
+ download_tags: git_remote_autotag_option_t,
+ proxy_opts: git_proxy_options,
+ custom_headers: git_strarray,
+};
+pub const git_push_options = extern struct {
+ version: c_uint,
+ pb_parallelism: c_uint,
+ callbacks: git_remote_callbacks,
+ proxy_opts: git_proxy_options,
+ custom_headers: git_strarray,
+};
+pub const GIT_CLONE_LOCAL_AUTO: c_int = 0;
+pub const GIT_CLONE_LOCAL: c_int = 1;
+pub const GIT_CLONE_NO_LOCAL: c_int = 2;
+pub const GIT_CLONE_LOCAL_NO_LINKS: c_int = 3;
+pub const git_clone_local_t = c_uint;
+pub const git_remote_create_cb = ?fn ([*c]*git_remote, *git_repository, [*c]const u8, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const git_repository_create_cb = ?fn (*git_repository, [*c]const u8, c_int, *c_void) callconv(.C) c_int;
+pub const struct_git_clone_options = extern struct {
+ version: c_uint,
+ checkout_opts: git_checkout_options,
+ fetch_opts: git_fetch_options,
+ bare: c_int,
+ local: git_clone_local_t,
+ checkout_branch: [*c]const u8,
+ repository_cb: git_repository_create_cb,
+ repository_cb_payload: *c_void,
+ remote_cb: git_remote_create_cb,
+ remote_cb_payload: *c_void,
+};
+pub const git_clone_options = struct_git_clone_options;
+pub const git_commit_create_cb = ?fn ([*c]git_oid, [*c]const git_signature, [*c]const git_signature, [*c]const u8, [*c]const u8, *const git_tree, usize, [*c]*const git_commit, *c_void) callconv(.C) c_int;
+pub const GIT_CONFIG_LEVEL_PROGRAMDATA: c_int = 1;
+pub const GIT_CONFIG_LEVEL_SYSTEM: c_int = 2;
+pub const GIT_CONFIG_LEVEL_XDG: c_int = 3;
+pub const GIT_CONFIG_LEVEL_GLOBAL: c_int = 4;
+pub const GIT_CONFIG_LEVEL_LOCAL: c_int = 5;
+pub const GIT_CONFIG_LEVEL_APP: c_int = 6;
+pub const GIT_CONFIG_HIGHEST_LEVEL: c_int = -1;
+pub const git_config_level_t = c_int;
+pub const struct_git_config_entry = extern struct {
+ name: [*c]const u8,
+ value: [*c]const u8,
+ include_depth: c_uint,
+ level: git_config_level_t,
+ free: ?fn ([*c]struct_git_config_entry) callconv(.C) void,
+ payload: *c_void,
+};
+pub const git_config_entry = struct_git_config_entry;
+pub const git_config_foreach_cb = ?fn ([*c]const git_config_entry, *c_void) callconv(.C) c_int;
+pub const struct_git_config_iterator = opaque {};
+pub const git_config_iterator = struct_git_config_iterator;
+pub const GIT_CONFIGMAP_FALSE: c_int = 0;
+pub const GIT_CONFIGMAP_TRUE: c_int = 1;
+pub const GIT_CONFIGMAP_INT32: c_int = 2;
+pub const GIT_CONFIGMAP_STRING: c_int = 3;
+pub const git_configmap_t = c_uint;
+pub const git_configmap = extern struct {
+ type: git_configmap_t,
+ str_match: [*c]const u8,
+ map_value: c_int,
+};
+pub const GIT_DESCRIBE_DEFAULT: c_int = 0;
+pub const GIT_DESCRIBE_TAGS: c_int = 1;
+pub const GIT_DESCRIBE_ALL: c_int = 2;
+pub const git_describe_strategy_t = c_uint;
+pub const struct_git_describe_options = extern struct {
+ version: c_uint,
+ max_candidates_tags: c_uint,
+ describe_strategy: c_uint,
+ pattern: [*c]const u8,
+ only_follow_first_parent: c_int,
+ show_commit_oid_as_fallback: c_int,
+};
+pub const git_describe_options = struct_git_describe_options;
+pub const git_describe_format_options = extern struct {
+ version: c_uint,
+ abbreviated_size: c_uint,
+ always_use_long_format: c_int,
+ dirty_suffix: [*c]const u8,
+};
+pub const struct_git_describe_result = opaque {};
+pub const git_describe_result = struct_git_describe_result;
+pub const GIT_OK: c_int = 0;
+pub const GIT_ERROR: c_int = -1;
+pub const GIT_ENOTFOUND: c_int = -3;
+pub const GIT_EEXISTS: c_int = -4;
+pub const GIT_EAMBIGUOUS: c_int = -5;
+pub const GIT_EBUFS: c_int = -6;
+pub const GIT_EUSER: c_int = -7;
+pub const GIT_EBAREREPO: c_int = -8;
+pub const GIT_EUNBORNBRANCH: c_int = -9;
+pub const GIT_EUNMERGED: c_int = -10;
+pub const GIT_ENONFASTFORWARD: c_int = -11;
+pub const GIT_EINVALIDSPEC: c_int = -12;
+pub const GIT_ECONFLICT: c_int = -13;
+pub const GIT_ELOCKED: c_int = -14;
+pub const GIT_EMODIFIED: c_int = -15;
+pub const GIT_EAUTH: c_int = -16;
+pub const GIT_ECERTIFICATE: c_int = -17;
+pub const GIT_EAPPLIED: c_int = -18;
+pub const GIT_EPEEL: c_int = -19;
+pub const GIT_EEOF: c_int = -20;
+pub const GIT_EINVALID: c_int = -21;
+pub const GIT_EUNCOMMITTED: c_int = -22;
+pub const GIT_EDIRECTORY: c_int = -23;
+pub const GIT_EMERGECONFLICT: c_int = -24;
+pub const GIT_PASSTHROUGH: c_int = -30;
+pub const GIT_ITEROVER: c_int = -31;
+pub const GIT_RETRY: c_int = -32;
+pub const GIT_EMISMATCH: c_int = -33;
+pub const GIT_EINDEXDIRTY: c_int = -34;
+pub const GIT_EAPPLYFAIL: c_int = -35;
+pub const git_error_code = c_int;
+pub const git_error = extern struct {
+ message: [*c]u8,
+ klass: c_int,
+};
+pub const GIT_ERROR_NONE: c_int = 0;
+pub const GIT_ERROR_NOMEMORY: c_int = 1;
+pub const GIT_ERROR_OS: c_int = 2;
+pub const GIT_ERROR_INVALID: c_int = 3;
+pub const GIT_ERROR_REFERENCE: c_int = 4;
+pub const GIT_ERROR_ZLIB: c_int = 5;
+pub const GIT_ERROR_REPOSITORY: c_int = 6;
+pub const GIT_ERROR_CONFIG: c_int = 7;
+pub const GIT_ERROR_REGEX: c_int = 8;
+pub const GIT_ERROR_ODB: c_int = 9;
+pub const GIT_ERROR_INDEX: c_int = 10;
+pub const GIT_ERROR_OBJECT: c_int = 11;
+pub const GIT_ERROR_NET: c_int = 12;
+pub const GIT_ERROR_TAG: c_int = 13;
+pub const GIT_ERROR_TREE: c_int = 14;
+pub const GIT_ERROR_INDEXER: c_int = 15;
+pub const GIT_ERROR_SSL: c_int = 16;
+pub const GIT_ERROR_SUBMODULE: c_int = 17;
+pub const GIT_ERROR_THREAD: c_int = 18;
+pub const GIT_ERROR_STASH: c_int = 19;
+pub const GIT_ERROR_CHECKOUT: c_int = 20;
+pub const GIT_ERROR_FETCHHEAD: c_int = 21;
+pub const GIT_ERROR_MERGE: c_int = 22;
+pub const GIT_ERROR_SSH: c_int = 23;
+pub const GIT_ERROR_FILTER: c_int = 24;
+pub const GIT_ERROR_REVERT: c_int = 25;
+pub const GIT_ERROR_CALLBACK: c_int = 26;
+pub const GIT_ERROR_CHERRYPICK: c_int = 27;
+pub const GIT_ERROR_DESCRIBE: c_int = 28;
+pub const GIT_ERROR_REBASE: c_int = 29;
+pub const GIT_ERROR_FILESYSTEM: c_int = 30;
+pub const GIT_ERROR_PATCH: c_int = 31;
+pub const GIT_ERROR_WORKTREE: c_int = 32;
+pub const GIT_ERROR_SHA1: c_int = 33;
+pub const GIT_ERROR_HTTP: c_int = 34;
+pub const GIT_ERROR_INTERNAL: c_int = 35;
+pub const git_error_t = c_uint;
+pub const GIT_FILTER_TO_WORKTREE: c_int = 0;
+pub const GIT_FILTER_SMUDGE: c_int = 0;
+pub const GIT_FILTER_TO_ODB: c_int = 1;
+pub const GIT_FILTER_CLEAN: c_int = 1;
+pub const git_filter_mode_t = c_uint;
+pub const GIT_FILTER_DEFAULT: c_int = 0;
+pub const GIT_FILTER_ALLOW_UNSAFE: c_int = 1;
+pub const GIT_FILTER_NO_SYSTEM_ATTRIBUTES: c_int = 2;
+pub const GIT_FILTER_ATTRIBUTES_FROM_HEAD: c_int = 4;
+pub const GIT_FILTER_ATTRIBUTES_FROM_COMMIT: c_int = 8;
+pub const git_filter_flag_t = c_uint;
+pub const git_filter_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ commit_id: [*c]git_oid,
+ attr_commit_id: git_oid,
+};
+pub const struct_git_filter = opaque {};
+pub const git_filter = struct_git_filter;
+pub const struct_git_filter_list = opaque {};
+pub const git_filter_list = struct_git_filter_list;
+pub const git_rebase_options = extern struct {
+ version: c_uint,
+ quiet: c_int,
+ inmemory: c_int,
+ rewrite_notes_ref: [*c]const u8,
+ merge_options: git_merge_options,
+ checkout_options: git_checkout_options,
+ commit_create_cb: git_commit_create_cb,
+ signing_cb: ?fn ([*c]git_buf, [*c]git_buf, [*c]const u8, *c_void) callconv(.C) c_int,
+ payload: *c_void,
+};
+pub const GIT_REBASE_OPERATION_PICK: c_int = 0;
+pub const GIT_REBASE_OPERATION_REWORD: c_int = 1;
+pub const GIT_REBASE_OPERATION_EDIT: c_int = 2;
+pub const GIT_REBASE_OPERATION_SQUASH: c_int = 3;
+pub const GIT_REBASE_OPERATION_FIXUP: c_int = 4;
+pub const GIT_REBASE_OPERATION_EXEC: c_int = 5;
+pub const git_rebase_operation_t = c_uint;
+pub const git_rebase_operation = extern struct {
+ type: git_rebase_operation_t,
+ id: git_oid,
+ exec: [*c]const u8,
+};
+pub const GIT_TRACE_NONE: c_int = 0;
+pub const GIT_TRACE_FATAL: c_int = 1;
+pub const GIT_TRACE_ERROR: c_int = 2;
+pub const GIT_TRACE_WARN: c_int = 3;
+pub const GIT_TRACE_INFO: c_int = 4;
+pub const GIT_TRACE_DEBUG: c_int = 5;
+pub const GIT_TRACE_TRACE: c_int = 6;
+pub const git_trace_level_t = c_uint;
+pub const git_trace_cb = ?fn (git_trace_level_t, [*c]const u8) callconv(.C) void;
+pub const git_revert_options = extern struct {
+ version: c_uint,
+ mainline: c_uint,
+ merge_opts: git_merge_options,
+ checkout_opts: git_checkout_options,
+};
+pub const GIT_REVSPEC_SINGLE: c_int = 1;
+pub const GIT_REVSPEC_RANGE: c_int = 2;
+pub const GIT_REVSPEC_MERGE_BASE: c_int = 4;
+pub const git_revspec_t = c_uint;
+pub const git_revspec = extern struct {
+ from: *git_object,
+ to: *git_object,
+ flags: c_uint,
+};
+pub const GIT_STASH_DEFAULT: c_int = 0;
+pub const GIT_STASH_KEEP_INDEX: c_int = 1;
+pub const GIT_STASH_INCLUDE_UNTRACKED: c_int = 2;
+pub const GIT_STASH_INCLUDE_IGNORED: c_int = 4;
+pub const git_stash_flags = c_uint;
+pub const GIT_STASH_APPLY_DEFAULT: c_int = 0;
+pub const GIT_STASH_APPLY_REINSTATE_INDEX: c_int = 1;
+pub const git_stash_apply_flags = c_uint;
+pub const GIT_STASH_APPLY_PROGRESS_NONE: c_int = 0;
+pub const GIT_STASH_APPLY_PROGRESS_LOADING_STASH: c_int = 1;
+pub const GIT_STASH_APPLY_PROGRESS_ANALYZE_INDEX: c_int = 2;
+pub const GIT_STASH_APPLY_PROGRESS_ANALYZE_MODIFIED: c_int = 3;
+pub const GIT_STASH_APPLY_PROGRESS_ANALYZE_UNTRACKED: c_int = 4;
+pub const GIT_STASH_APPLY_PROGRESS_CHECKOUT_UNTRACKED: c_int = 5;
+pub const GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED: c_int = 6;
+pub const GIT_STASH_APPLY_PROGRESS_DONE: c_int = 7;
+pub const git_stash_apply_progress_t = c_uint;
+pub const git_stash_apply_progress_cb = ?fn (git_stash_apply_progress_t, *c_void) callconv(.C) c_int;
+pub const struct_git_stash_apply_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ checkout_options: git_checkout_options,
+ progress_cb: git_stash_apply_progress_cb,
+ progress_payload: *c_void,
+};
+pub const git_stash_apply_options = struct_git_stash_apply_options;
+pub const git_stash_cb = ?fn (usize, [*c]const u8, [*c]const git_oid, *c_void) callconv(.C) c_int;
+pub const GIT_STATUS_CURRENT: c_int = 0;
+pub const GIT_STATUS_INDEX_NEW: c_int = 1;
+pub const GIT_STATUS_INDEX_MODIFIED: c_int = 2;
+pub const GIT_STATUS_INDEX_DELETED: c_int = 4;
+pub const GIT_STATUS_INDEX_RENAMED: c_int = 8;
+pub const GIT_STATUS_INDEX_TYPECHANGE: c_int = 16;
+pub const GIT_STATUS_WT_NEW: c_int = 128;
+pub const GIT_STATUS_WT_MODIFIED: c_int = 256;
+pub const GIT_STATUS_WT_DELETED: c_int = 512;
+pub const GIT_STATUS_WT_TYPECHANGE: c_int = 1024;
+pub const GIT_STATUS_WT_RENAMED: c_int = 2048;
+pub const GIT_STATUS_WT_UNREADABLE: c_int = 4096;
+pub const GIT_STATUS_IGNORED: c_int = 16384;
+pub const GIT_STATUS_CONFLICTED: c_int = 32768;
+pub const git_status_t = c_uint;
+pub const git_status_cb = ?fn ([*c]const u8, c_uint, *c_void) callconv(.C) c_int;
+pub const GIT_STATUS_SHOW_INDEX_AND_WORKDIR: c_int = 0;
+pub const GIT_STATUS_SHOW_INDEX_ONLY: c_int = 1;
+pub const GIT_STATUS_SHOW_WORKDIR_ONLY: c_int = 2;
+pub const git_status_show_t = c_uint;
+pub const GIT_STATUS_OPT_INCLUDE_UNTRACKED: c_int = 1;
+pub const GIT_STATUS_OPT_INCLUDE_IGNORED: c_int = 2;
+pub const GIT_STATUS_OPT_INCLUDE_UNMODIFIED: c_int = 4;
+pub const GIT_STATUS_OPT_EXCLUDE_SUBMODULES: c_int = 8;
+pub const GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS: c_int = 16;
+pub const GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH: c_int = 32;
+pub const GIT_STATUS_OPT_RECURSE_IGNORED_DIRS: c_int = 64;
+pub const GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX: c_int = 128;
+pub const GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR: c_int = 256;
+pub const GIT_STATUS_OPT_SORT_CASE_SENSITIVELY: c_int = 512;
+pub const GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY: c_int = 1024;
+pub const GIT_STATUS_OPT_RENAMES_FROM_REWRITES: c_int = 2048;
+pub const GIT_STATUS_OPT_NO_REFRESH: c_int = 4096;
+pub const GIT_STATUS_OPT_UPDATE_INDEX: c_int = 8192;
+pub const GIT_STATUS_OPT_INCLUDE_UNREADABLE: c_int = 16384;
+pub const GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED: c_int = 32768;
+pub const git_status_opt_t = c_uint;
+pub const git_status_options = extern struct {
+ version: c_uint,
+ show: git_status_show_t,
+ flags: c_uint,
+ pathspec: git_strarray,
+ baseline: *git_tree,
+};
+pub const git_status_entry = extern struct {
+ status: git_status_t,
+ head_to_index: [*c]git_diff_delta,
+ index_to_workdir: [*c]git_diff_delta,
+};
+pub const GIT_SUBMODULE_STATUS_IN_HEAD: c_int = 1;
+pub const GIT_SUBMODULE_STATUS_IN_INDEX: c_int = 2;
+pub const GIT_SUBMODULE_STATUS_IN_CONFIG: c_int = 4;
+pub const GIT_SUBMODULE_STATUS_IN_WD: c_int = 8;
+pub const GIT_SUBMODULE_STATUS_INDEX_ADDED: c_int = 16;
+pub const GIT_SUBMODULE_STATUS_INDEX_DELETED: c_int = 32;
+pub const GIT_SUBMODULE_STATUS_INDEX_MODIFIED: c_int = 64;
+pub const GIT_SUBMODULE_STATUS_WD_UNINITIALIZED: c_int = 128;
+pub const GIT_SUBMODULE_STATUS_WD_ADDED: c_int = 256;
+pub const GIT_SUBMODULE_STATUS_WD_DELETED: c_int = 512;
+pub const GIT_SUBMODULE_STATUS_WD_MODIFIED: c_int = 1024;
+pub const GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED: c_int = 2048;
+pub const GIT_SUBMODULE_STATUS_WD_WD_MODIFIED: c_int = 4096;
+pub const GIT_SUBMODULE_STATUS_WD_UNTRACKED: c_int = 8192;
+pub const git_submodule_status_t = c_uint;
+pub const git_submodule_cb = ?fn (*git_submodule, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const struct_git_submodule_update_options = extern struct {
+ version: c_uint,
+ checkout_opts: git_checkout_options,
+ fetch_opts: git_fetch_options,
+ allow_fetch: c_int,
+};
+pub const git_submodule_update_options = struct_git_submodule_update_options;
+pub const struct_git_worktree_add_options = extern struct {
+ version: c_uint,
+ lock: c_int,
+ ref: *git_reference,
+};
+pub const git_worktree_add_options = struct_git_worktree_add_options;
+pub const GIT_WORKTREE_PRUNE_VALID: c_int = 1;
+pub const GIT_WORKTREE_PRUNE_LOCKED: c_int = 2;
+pub const GIT_WORKTREE_PRUNE_WORKING_TREE: c_int = 4;
+pub const git_worktree_prune_t = c_uint;
+pub const struct_git_worktree_prune_options = extern struct {
+ version: c_uint,
+ flags: u32,
+};
+pub const git_worktree_prune_options = struct_git_worktree_prune_options;
+pub const struct_git_credential_userpass_payload = extern struct {
+ username: [*c]const u8,
+ password: [*c]const u8,
+};
+pub const git_credential_userpass_payload = struct_git_credential_userpass_payload;
+pub const git_attr_t = git_attr_value_t;
+pub const git_commit_signing_cb = ?fn ([*c]git_buf, [*c]git_buf, [*c]const u8, *c_void) callconv(.C) c_int;
+pub const git_cvar_map = git_configmap;
+pub const GIT_DIFF_FORMAT_EMAIL_NONE: c_int = 0;
+pub const GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER: c_int = 1;
+pub const git_diff_format_email_flags_t = c_uint;
+pub const git_diff_format_email_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ patch_no: usize,
+ total_patches: usize,
+ id: [*c]const git_oid,
+ summary: [*c]const u8,
+ body: [*c]const u8,
+ author: [*c]const git_signature,
+};
+pub const git_revparse_mode_t = git_revspec_t;
+pub const git_cred = git_credential;
+pub const git_cred_userpass_plaintext = git_credential_userpass_plaintext;
+pub const git_cred_username = git_credential_username;
+pub const git_cred_default = git_credential_default;
+pub const git_cred_ssh_key = git_credential_ssh_key;
+pub const git_cred_ssh_interactive = git_credential_ssh_interactive;
+pub const git_cred_ssh_custom = git_credential_ssh_custom;
+pub const git_cred_acquire_cb = git_credential_acquire_cb;
+pub const git_cred_sign_callback = git_credential_sign_cb;
+pub const git_cred_sign_cb = git_credential_sign_cb;
+pub const git_cred_ssh_interactive_callback = git_credential_ssh_interactive_cb;
+pub const git_cred_ssh_interactive_cb = git_credential_ssh_interactive_cb;
+pub const git_cred_userpass_payload = git_credential_userpass_payload;
+pub const git_trace_callback = git_trace_cb;
+pub const git_transfer_progress = git_indexer_progress;
+pub const git_transfer_progress_cb = git_indexer_progress_cb;
+pub const git_push_transfer_progress = git_push_transfer_progress_cb;
+pub const git_headlist_cb = ?fn ([*c]git_remote_head, *c_void) callconv(.C) c_int;
+pub const GIT_EMAIL_CREATE_DEFAULT: c_int = 0;
+pub const GIT_EMAIL_CREATE_OMIT_NUMBERS: c_int = 1;
+pub const GIT_EMAIL_CREATE_ALWAYS_NUMBER: c_int = 2;
+pub const GIT_EMAIL_CREATE_NO_RENAMES: c_int = 4;
+pub const git_email_create_flags_t = c_uint;
+pub const git_email_create_options = extern struct {
+ version: c_uint,
+ flags: u32,
+ diff_opts: git_diff_options,
+ diff_find_opts: git_diff_find_options,
+ subject_prefix: [*c]const u8,
+ start_number: usize,
+ reroll_number: usize,
+};
+pub const git_message_trailer = extern struct {
+ key: [*c]const u8,
+ value: [*c]const u8,
+};
+pub const git_message_trailer_array = extern struct {
+ trailers: [*c]git_message_trailer,
+ count: usize,
+ _trailer_block: [*c]u8,
+};
+pub const git_note_foreach_cb = ?fn ([*c]const git_oid, [*c]const git_oid, *c_void) callconv(.C) c_int;
+pub const struct_git_iterator = opaque {};
+pub const git_note_iterator = struct_git_iterator;
+pub const git_odb_foreach_cb = ?fn ([*c]const git_oid, *c_void) callconv(.C) c_int;
+pub const struct_git_odb_expand_id = extern struct {
+ id: git_oid,
+ length: c_ushort,
+ type: git_object_t,
+};
+pub const git_odb_expand_id = struct_git_odb_expand_id;
+pub const GIT_STREAM_RDONLY: c_int = 2;
+pub const GIT_STREAM_WRONLY: c_int = 4;
+pub const GIT_STREAM_RW: c_int = 6;
+pub const git_odb_stream_t = c_uint;
+pub const struct_git_patch = opaque {};
+pub const git_patch = struct_git_patch;
+pub const struct_git_pathspec = opaque {};
+pub const git_pathspec = struct_git_pathspec;
+pub const struct_git_pathspec_match_list = opaque {};
+pub const git_pathspec_match_list = struct_git_pathspec_match_list;
+pub const GIT_PATHSPEC_DEFAULT: c_int = 0;
+pub const GIT_PATHSPEC_IGNORE_CASE: c_int = 1;
+pub const GIT_PATHSPEC_USE_CASE: c_int = 2;
+pub const GIT_PATHSPEC_NO_GLOB: c_int = 4;
+pub const GIT_PATHSPEC_NO_MATCH_ERROR: c_int = 8;
+pub const GIT_PATHSPEC_FIND_FAILURES: c_int = 16;
+pub const GIT_PATHSPEC_FAILURES_ONLY: c_int = 32;
+pub const git_pathspec_flag_t = c_uint;
+pub const GIT_RESET_SOFT: c_int = 1;
+pub const GIT_RESET_MIXED: c_int = 2;
+pub const GIT_RESET_HARD: c_int = 3;
+pub const git_reset_t = c_uint;
+pub const GIT_SORT_NONE: c_int = 0;
+pub const GIT_SORT_TOPOLOGICAL: c_int = 1;
+pub const GIT_SORT_TIME: c_int = 2;
+pub const GIT_SORT_REVERSE: c_int = 4;
+pub const git_sort_t = c_uint;
+pub const git_revwalk_hide_cb = ?fn ([*c]const git_oid, *c_void) callconv(.C) c_int;
+pub const git_tag_foreach_cb = ?fn ([*c]const u8, [*c]git_oid, *c_void) callconv(.C) c_int;
+
+pub const git_libgit2_version = fn (major: [*c]c_int, minor: [*c]c_int, rev: [*c]c_int) callconv(.C) c_int;
+pub const git_libgit2_features = fn () callconv(.C) c_int;
+pub const git_libgit2_opts = fn (option: c_int, ...) callconv(.C) c_int;
+pub const git_buf_dispose = fn (buffer: [*c]git_buf) callconv(.C) void;
+pub const git_buf_grow = fn (buffer: [*c]git_buf, target_size: usize) callconv(.C) c_int;
+pub const git_buf_set = fn (buffer: [*c]git_buf, data: *const c_void, datalen: usize) callconv(.C) c_int;
+pub const git_buf_is_binary = fn (buf: [*c]const git_buf) callconv(.C) c_int;
+pub const git_buf_contains_nul = fn (buf: [*c]const git_buf) callconv(.C) c_int;
+pub const git_oid_fromstr = fn (out: [*c]git_oid, str: [*c]const u8) callconv(.C) c_int;
+pub const git_oid_fromstrp = fn (out: [*c]git_oid, str: [*c]const u8) callconv(.C) c_int;
+pub const git_oid_fromstrn = fn (out: [*c]git_oid, str: [*c]const u8, length: usize) callconv(.C) c_int;
+pub const git_oid_fromraw = fn (out: [*c]git_oid, raw: [*c]const u8) callconv(.C) c_int;
+pub const git_oid_fmt = fn (out: [*c]u8, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_nfmt = fn (out: [*c]u8, n: usize, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_pathfmt = fn (out: [*c]u8, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_tostr_s = fn (oid: [*c]const git_oid) callconv(.C) [*c]u8;
+pub const git_oid_tostr = fn (out: [*c]u8, n: usize, id: [*c]const git_oid) callconv(.C) [*c]u8;
+pub const git_oid_cpy = fn (out: [*c]git_oid, src: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_cmp = fn (a: [*c]const git_oid, b: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_equal = fn (a: [*c]const git_oid, b: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_ncmp = fn (a: [*c]const git_oid, b: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_oid_streq = fn (id: [*c]const git_oid, str: [*c]const u8) callconv(.C) c_int;
+pub const git_oid_strcmp = fn (id: [*c]const git_oid, str: [*c]const u8) callconv(.C) c_int;
+pub const git_oid_is_zero = fn (id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oid_shorten_new = fn (min_length: usize) callconv(.C) *git_oid_shorten;
+pub const git_oid_shorten_add = fn (os: *git_oid_shorten, text_id: [*c]const u8) callconv(.C) c_int;
+pub const git_oid_shorten_free = fn (os: *git_oid_shorten) callconv(.C) void;
+pub const git_repository_open = fn (out: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_open_from_worktree = fn (out: *git_repository, wt: *git_worktree) callconv(.C) c_int;
+pub const git_repository_wrap_odb = fn (out: *git_repository, odb: *git_odb) callconv(.C) c_int;
+pub const git_repository_discover = fn (out: [*c]git_buf, start_path: [*c]const u8, across_fs: c_int, ceiling_dirs: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_open_ext = fn (out: *git_repository, path: [*c]const u8, flags: c_uint, ceiling_dirs: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_open_bare = fn (out: *git_repository, bare_path: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_free = fn (repo: *git_repository) callconv(.C) void;
+pub const git_repository_init = fn (out: *?*git_repository, path: [*c]const u8, is_bare: c_uint) callconv(.C) c_int;
+pub const git_repository_init_options_init = fn (opts: ?*git_repository_init_options, version: c_uint) callconv(.C) c_int;
+pub const git_repository_init_ext = fn (out: ?*git_repository, repo_path: [*c]const u8, opts: ?*git_repository_init_options) callconv(.C) c_int;
+pub const git_repository_head = fn (out: [*c]*git_reference, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_head_for_worktree = fn (out: [*c]*git_reference, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_head_detached = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_head_detached_for_worktree = fn (repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_head_unborn = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_is_empty = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_item_path = fn (out: [*c]git_buf, repo: *const git_repository, item: git_repository_item_t) callconv(.C) c_int;
+pub const git_repository_path = fn (repo: *const git_repository) callconv(.C) [*c]const u8;
+pub const git_repository_workdir = fn (repo: *const git_repository) callconv(.C) [*c]const u8;
+pub const git_repository_commondir = fn (repo: *const git_repository) callconv(.C) [*c]const u8;
+pub const git_repository_set_workdir = fn (repo: *git_repository, workdir: [*c]const u8, update_gitlink: c_int) callconv(.C) c_int;
+pub const git_repository_is_bare = fn (repo: *const git_repository) callconv(.C) c_int;
+pub const git_repository_is_worktree = fn (repo: *const git_repository) callconv(.C) c_int;
+pub const git_repository_config = fn (out: [*c]*git_config, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_config_snapshot = fn (out: [*c]*git_config, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_odb = fn (out: [*c]*git_odb, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_refdb = fn (out: [*c]*git_refdb, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_index = fn (out: *?*git_index, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_message = fn (out: [*c]git_buf, repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_message_remove = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_state_cleanup = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_fetchhead_foreach = fn (repo: *git_repository, callback: git_repository_fetchhead_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_repository_mergehead_foreach = fn (repo: *git_repository, callback: git_repository_mergehead_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_repository_hashfile = fn (out: [*c]git_oid, repo: *git_repository, path: [*c]const u8, @"type": git_object_t, as_path: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_set_head = fn (repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_set_head_detached = fn (repo: *git_repository, commitish: [*c]const git_oid) callconv(.C) c_int;
+pub const git_repository_set_head_detached_from_annotated = fn (repo: *git_repository, commitish: *const git_annotated_commit) callconv(.C) c_int;
+pub const git_repository_detach_head = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_state = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_set_namespace = fn (repo: *git_repository, nmspace: [*c]const u8) callconv(.C) c_int;
+pub const git_repository_get_namespace = fn (repo: *git_repository) callconv(.C) [*c]const u8;
+pub const git_repository_is_shallow = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_repository_ident = fn (name: [*c][*c]const u8, email: [*c][*c]const u8, repo: *const git_repository) callconv(.C) c_int;
+pub const git_repository_set_ident = fn (repo: *git_repository, name: [*c]const u8, email: [*c]const u8) callconv(.C) c_int;
+pub const git_annotated_commit_from_ref = fn (out: [*c]*git_annotated_commit, repo: *git_repository, ref: *const git_reference) callconv(.C) c_int;
+pub const git_annotated_commit_from_fetchhead = fn (out: [*c]*git_annotated_commit, repo: *git_repository, branch_name: [*c]const u8, remote_url: [*c]const u8, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_annotated_commit_lookup = fn (out: [*c]*git_annotated_commit, repo: *git_repository, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_annotated_commit_from_revspec = fn (out: [*c]*git_annotated_commit, repo: *git_repository, revspec: [*c]const u8) callconv(.C) c_int;
+pub const git_annotated_commit_id = fn (commit: *const git_annotated_commit) callconv(.C) [*c]const git_oid;
+pub const git_annotated_commit_ref = fn (commit: *const git_annotated_commit) callconv(.C) [*c]const u8;
+pub const git_annotated_commit_free = fn (commit: *git_annotated_commit) callconv(.C) void;
+pub const git_object_lookup = fn (object: [*c]*git_object, repo: *git_repository, id: [*c]const git_oid, @"type": git_object_t) callconv(.C) c_int;
+pub const git_object_lookup_prefix = fn (object_out: [*c]*git_object, repo: *git_repository, id: [*c]const git_oid, len: usize, @"type": git_object_t) callconv(.C) c_int;
+pub const git_object_lookup_bypath = fn (out: [*c]*git_object, treeish: *const git_object, path: [*c]const u8, @"type": git_object_t) callconv(.C) c_int;
+pub const git_object_id = fn (obj: *const git_object) callconv(.C) [*c]const git_oid;
+pub const git_object_short_id = fn (out: [*c]git_buf, obj: *const git_object) callconv(.C) c_int;
+pub const git_object_type = fn (obj: *const git_object) callconv(.C) git_object_t;
+pub const git_object_owner = fn (obj: *const git_object) callconv(.C) *git_repository;
+pub const git_object_free = fn (object: *git_object) callconv(.C) void;
+pub const git_object_type2string = fn (@"type": git_object_t) callconv(.C) [*c]const u8;
+pub const git_object_string2type = fn (str: [*c]const u8) callconv(.C) git_object_t;
+pub const git_object_typeisloose = fn (@"type": git_object_t) callconv(.C) c_int;
+pub const git_object_peel = fn (peeled: [*c]*git_object, object: *const git_object, target_type: git_object_t) callconv(.C) c_int;
+pub const git_object_dup = fn (dest: [*c]*git_object, source: *git_object) callconv(.C) c_int;
+pub const git_tree_lookup = fn (out: [*c]*git_tree, repo: *git_repository, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_tree_lookup_prefix = fn (out: [*c]*git_tree, repo: *git_repository, id: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_tree_free = fn (tree: *git_tree) callconv(.C) void;
+pub const git_tree_id = fn (tree: *const git_tree) callconv(.C) [*c]const git_oid;
+pub const git_tree_owner = fn (tree: *const git_tree) callconv(.C) *git_repository;
+pub const git_tree_entrycount = fn (tree: *const git_tree) callconv(.C) usize;
+pub const git_tree_entry_byname = fn (tree: *const git_tree, filename: [*c]const u8) callconv(.C) *const git_tree_entry;
+pub const git_tree_entry_byindex = fn (tree: *const git_tree, idx: usize) callconv(.C) *const git_tree_entry;
+pub const git_tree_entry_byid = fn (tree: *const git_tree, id: [*c]const git_oid) callconv(.C) *const git_tree_entry;
+pub const git_tree_entry_bypath = fn (out: [*c]*git_tree_entry, root: *const git_tree, path: [*c]const u8) callconv(.C) c_int;
+pub const git_tree_entry_dup = fn (dest: [*c]*git_tree_entry, source: *const git_tree_entry) callconv(.C) c_int;
+pub const git_tree_entry_free = fn (entry: *git_tree_entry) callconv(.C) void;
+pub const git_tree_entry_name = fn (entry: *const git_tree_entry) callconv(.C) [*c]const u8;
+pub const git_tree_entry_id = fn (entry: *const git_tree_entry) callconv(.C) [*c]const git_oid;
+pub const git_tree_entry_type = fn (entry: *const git_tree_entry) callconv(.C) git_object_t;
+pub const git_tree_entry_filemode = fn (entry: *const git_tree_entry) callconv(.C) git_filemode_t;
+pub const git_tree_entry_filemode_raw = fn (entry: *const git_tree_entry) callconv(.C) git_filemode_t;
+pub const git_tree_entry_cmp = fn (e1: *const git_tree_entry, e2: *const git_tree_entry) callconv(.C) c_int;
+pub const git_tree_entry_to_object = fn (object_out: [*c]*git_object, repo: *git_repository, entry: *const git_tree_entry) callconv(.C) c_int;
+pub const git_treebuilder_new = fn (out: [*c]*git_treebuilder, repo: *git_repository, source: *const git_tree) callconv(.C) c_int;
+pub const git_treebuilder_clear = fn (bld: *git_treebuilder) callconv(.C) c_int;
+pub const git_treebuilder_entrycount = fn (bld: *git_treebuilder) callconv(.C) usize;
+pub const git_treebuilder_free = fn (bld: *git_treebuilder) callconv(.C) void;
+pub const git_treebuilder_get = fn (bld: *git_treebuilder, filename: [*c]const u8) callconv(.C) *const git_tree_entry;
+pub const git_treebuilder_insert = fn (out: [*c]*const git_tree_entry, bld: *git_treebuilder, filename: [*c]const u8, id: [*c]const git_oid, filemode: git_filemode_t) callconv(.C) c_int;
+pub const git_treebuilder_remove = fn (bld: *git_treebuilder, filename: [*c]const u8) callconv(.C) c_int;
+pub const git_treebuilder_filter = fn (bld: *git_treebuilder, filter: git_treebuilder_filter_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_treebuilder_write = fn (id: [*c]git_oid, bld: *git_treebuilder) callconv(.C) c_int;
+pub const git_tree_walk = fn (tree: *const git_tree, mode: git_treewalk_mode, callback: git_treewalk_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_tree_dup = fn (out: [*c]*git_tree, source: *git_tree) callconv(.C) c_int;
+pub const git_tree_create_updated = fn (out: [*c]git_oid, repo: *git_repository, baseline: *git_tree, nupdates: usize, updates: [*c]const git_tree_update) callconv(.C) c_int;
+pub const git_strarray_dispose = fn (array: [*c]git_strarray) callconv(.C) void;
+pub const git_strarray_copy = fn (tgt: [*c]git_strarray, src: [*c]const git_strarray) callconv(.C) c_int;
+pub const git_reference_lookup = fn (out: [*c]*git_reference, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_name_to_id = fn (out: [*c]git_oid, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_dwim = fn (out: [*c]*git_reference, repo: *git_repository, shorthand: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_symbolic_create_matching = fn (out: [*c]*git_reference, repo: *git_repository, name: [*c]const u8, target: [*c]const u8, force: c_int, current_value: [*c]const u8, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_symbolic_create = fn (out: [*c]*git_reference, repo: *git_repository, name: [*c]const u8, target: [*c]const u8, force: c_int, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_create = fn (out: [*c]*git_reference, repo: *git_repository, name: [*c]const u8, id: [*c]const git_oid, force: c_int, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_create_matching = fn (out: [*c]*git_reference, repo: *git_repository, name: [*c]const u8, id: [*c]const git_oid, force: c_int, current_id: [*c]const git_oid, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_target = fn (ref: *const git_reference) callconv(.C) [*c]const git_oid;
+pub const git_reference_target_peel = fn (ref: *const git_reference) callconv(.C) [*c]const git_oid;
+pub const git_reference_symbolic_target = fn (ref: *const git_reference) callconv(.C) [*c]const u8;
+pub const git_reference_type = fn (ref: *const git_reference) callconv(.C) git_reference_t;
+pub const git_reference_name = fn (ref: *const git_reference) callconv(.C) [*c]const u8;
+pub const git_reference_resolve = fn (out: [*c]*git_reference, ref: *const git_reference) callconv(.C) c_int;
+pub const git_reference_owner = fn (ref: *const git_reference) callconv(.C) *git_repository;
+pub const git_reference_symbolic_set_target = fn (out: [*c]*git_reference, ref: *git_reference, target: [*c]const u8, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_set_target = fn (out: [*c]*git_reference, ref: *git_reference, id: [*c]const git_oid, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_rename = fn (new_ref: [*c]*git_reference, ref: *git_reference, new_name: [*c]const u8, force: c_int, log_message: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_delete = fn (ref: *git_reference) callconv(.C) c_int;
+pub const git_reference_remove = fn (repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_list = fn (array: [*c]git_strarray, repo: *git_repository) callconv(.C) c_int;
+pub const git_reference_foreach = fn (repo: *git_repository, callback: git_reference_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_reference_foreach_name = fn (repo: *git_repository, callback: git_reference_foreach_name_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_reference_dup = fn (dest: [*c]*git_reference, source: *git_reference) callconv(.C) c_int;
+pub const git_reference_free = fn (ref: *git_reference) callconv(.C) void;
+pub const git_reference_cmp = fn (ref1: *const git_reference, ref2: *const git_reference) callconv(.C) c_int;
+pub const git_reference_iterator_new = fn (out: [*c]*git_reference_iterator, repo: *git_repository) callconv(.C) c_int;
+pub const git_reference_iterator_glob_new = fn (out: [*c]*git_reference_iterator, repo: *git_repository, glob: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_next = fn (out: [*c]*git_reference, iter: *git_reference_iterator) callconv(.C) c_int;
+pub const git_reference_next_name = fn (out: [*c][*c]const u8, iter: *git_reference_iterator) callconv(.C) c_int;
+pub const git_reference_iterator_free = fn (iter: *git_reference_iterator) callconv(.C) void;
+pub const git_reference_foreach_glob = fn (repo: *git_repository, glob: [*c]const u8, callback: git_reference_foreach_name_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_reference_has_log = fn (repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_ensure_log = fn (repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_is_branch = fn (ref: *const git_reference) callconv(.C) c_int;
+pub const git_reference_is_remote = fn (ref: *const git_reference) callconv(.C) c_int;
+pub const git_reference_is_tag = fn (ref: *const git_reference) callconv(.C) c_int;
+pub const git_reference_is_note = fn (ref: *const git_reference) callconv(.C) c_int;
+pub const git_reference_normalize_name = fn (buffer_out: [*c]u8, buffer_size: usize, name: [*c]const u8, flags: c_uint) callconv(.C) c_int;
+pub const git_reference_peel = fn (out: [*c]*git_object, ref: *const git_reference, @"type": git_object_t) callconv(.C) c_int;
+pub const git_reference_name_is_valid = fn (valid: [*c]c_int, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_shorthand = fn (ref: *const git_reference) callconv(.C) [*c]const u8;
+pub const git_diff_options_init = fn (opts: [*c]git_diff_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_find_options_init = fn (opts: [*c]git_diff_find_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_free = fn (diff: *git_diff) callconv(.C) void;
+pub const git_diff_tree_to_tree = fn (diff: [*c]*git_diff, repo: *git_repository, old_tree: *git_tree, new_tree: *git_tree, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_tree_to_index = fn (diff: [*c]*git_diff, repo: *git_repository, old_tree: *git_tree, index: *git_index, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_index_to_workdir = fn (diff: [*c]*git_diff, repo: *git_repository, index: *git_index, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_tree_to_workdir = fn (diff: [*c]*git_diff, repo: *git_repository, old_tree: *git_tree, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_tree_to_workdir_with_index = fn (diff: [*c]*git_diff, repo: *git_repository, old_tree: *git_tree, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_index_to_index = fn (diff: [*c]*git_diff, repo: *git_repository, old_index: *git_index, new_index: *git_index, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_merge = fn (onto: *git_diff, from: *const git_diff) callconv(.C) c_int;
+pub const git_diff_find_similar = fn (diff: *git_diff, options: [*c]const git_diff_find_options) callconv(.C) c_int;
+pub const git_diff_num_deltas = fn (diff: *const git_diff) callconv(.C) usize;
+pub const git_diff_num_deltas_of_type = fn (diff: *const git_diff, @"type": git_delta_t) callconv(.C) usize;
+pub const git_diff_get_delta = fn (diff: *const git_diff, idx: usize) callconv(.C) [*c]const git_diff_delta;
+pub const git_diff_is_sorted_icase = fn (diff: *const git_diff) callconv(.C) c_int;
+pub const git_diff_foreach = fn (diff: *git_diff, file_cb: git_diff_file_cb, binary_cb: git_diff_binary_cb, hunk_cb: git_diff_hunk_cb, line_cb: git_diff_line_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_diff_status_char = fn (status: git_delta_t) callconv(.C) u8;
+pub const git_diff_print = fn (diff: *git_diff, format: git_diff_format_t, print_cb: git_diff_line_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_diff_to_buf = fn (out: [*c]git_buf, diff: *git_diff, format: git_diff_format_t) callconv(.C) c_int;
+pub const git_diff_blobs = fn (old_blob: *const git_blob, old_as_path: [*c]const u8, new_blob: *const git_blob, new_as_path: [*c]const u8, options: [*c]const git_diff_options, file_cb: git_diff_file_cb, binary_cb: git_diff_binary_cb, hunk_cb: git_diff_hunk_cb, line_cb: git_diff_line_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_diff_blob_to_buffer = fn (old_blob: *const git_blob, old_as_path: [*c]const u8, buffer: [*c]const u8, buffer_len: usize, buffer_as_path: [*c]const u8, options: [*c]const git_diff_options, file_cb: git_diff_file_cb, binary_cb: git_diff_binary_cb, hunk_cb: git_diff_hunk_cb, line_cb: git_diff_line_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_diff_buffers = fn (old_buffer: *const c_void, old_len: usize, old_as_path: [*c]const u8, new_buffer: *const c_void, new_len: usize, new_as_path: [*c]const u8, options: [*c]const git_diff_options, file_cb: git_diff_file_cb, binary_cb: git_diff_binary_cb, hunk_cb: git_diff_hunk_cb, line_cb: git_diff_line_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_diff_from_buffer = fn (out: [*c]*git_diff, content: [*c]const u8, content_len: usize) callconv(.C) c_int;
+pub const git_diff_get_stats = fn (out: [*c]*git_diff_stats, diff: *git_diff) callconv(.C) c_int;
+pub const git_diff_stats_files_changed = fn (stats: *const git_diff_stats) callconv(.C) usize;
+pub const git_diff_stats_insertions = fn (stats: *const git_diff_stats) callconv(.C) usize;
+pub const git_diff_stats_deletions = fn (stats: *const git_diff_stats) callconv(.C) usize;
+pub const git_diff_stats_to_buf = fn (out: [*c]git_buf, stats: *const git_diff_stats, format: git_diff_stats_format_t, width: usize) callconv(.C) c_int;
+pub const git_diff_stats_free = fn (stats: *git_diff_stats) callconv(.C) void;
+pub const git_diff_patchid_options_init = fn (opts: [*c]git_diff_patchid_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_patchid = fn (out: [*c]git_oid, diff: *git_diff, opts: [*c]git_diff_patchid_options) callconv(.C) c_int;
+pub const git_apply_options_init = fn (opts: [*c]git_apply_options, version: c_uint) callconv(.C) c_int;
+pub const git_apply_to_tree = fn (out: [*c]*git_index, repo: *git_repository, preimage: *git_tree, diff: *git_diff, options: [*c]const git_apply_options) callconv(.C) c_int;
+pub const git_apply = fn (repo: *git_repository, diff: *git_diff, location: git_apply_location_t, options: [*c]const git_apply_options) callconv(.C) c_int;
+pub const git_attr_value = fn (attr: [*c]const u8) callconv(.C) git_attr_value_t;
+pub const git_attr_get = fn (value_out: [*c][*c]const u8, repo: *git_repository, flags: u32, path: [*c]const u8, name: [*c]const u8) callconv(.C) c_int;
+pub const git_attr_get_ext = fn (value_out: [*c][*c]const u8, repo: *git_repository, opts: [*c]git_attr_options, path: [*c]const u8, name: [*c]const u8) callconv(.C) c_int;
+pub const git_attr_get_many = fn (values_out: [*c][*c]const u8, repo: *git_repository, flags: u32, path: [*c]const u8, num_attr: usize, names: [*c][*c]const u8) callconv(.C) c_int;
+pub const git_attr_get_many_ext = fn (values_out: [*c][*c]const u8, repo: *git_repository, opts: [*c]git_attr_options, path: [*c]const u8, num_attr: usize, names: [*c][*c]const u8) callconv(.C) c_int;
+pub const git_attr_foreach = fn (repo: *git_repository, flags: u32, path: [*c]const u8, callback: git_attr_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_attr_foreach_ext = fn (repo: *git_repository, opts: [*c]git_attr_options, path: [*c]const u8, callback: git_attr_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_attr_cache_flush = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_attr_add_macro = fn (repo: *git_repository, name: [*c]const u8, values: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_lookup = fn (blob: [*c]*git_blob, repo: *git_repository, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_blob_lookup_prefix = fn (blob: [*c]*git_blob, repo: *git_repository, id: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_blob_free = fn (blob: *git_blob) callconv(.C) void;
+pub const git_blob_id = fn (blob: *const git_blob) callconv(.C) [*c]const git_oid;
+pub const git_blob_owner = fn (blob: *const git_blob) callconv(.C) *git_repository;
+pub const git_blob_rawcontent = fn (blob: *const git_blob) callconv(.C) *const c_void;
+pub const git_blob_rawsize = fn (blob: *const git_blob) callconv(.C) git_object_size_t;
+pub const git_blob_filter_options_init = fn (opts: [*c]git_blob_filter_options, version: c_uint) callconv(.C) c_int;
+pub const git_blob_filter = fn (out: [*c]git_buf, blob: *git_blob, as_path: [*c]const u8, opts: [*c]git_blob_filter_options) callconv(.C) c_int;
+pub const git_blob_create_from_workdir = fn (id: [*c]git_oid, repo: *git_repository, relative_path: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_create_from_disk = fn (id: [*c]git_oid, repo: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_create_from_stream = fn (out: [*c][*c]git_writestream, repo: *git_repository, hintpath: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_create_from_stream_commit = fn (out: [*c]git_oid, stream: [*c]git_writestream) callconv(.C) c_int;
+pub const git_blob_create_from_buffer = fn (id: [*c]git_oid, repo: *git_repository, buffer: *const c_void, len: usize) callconv(.C) c_int;
+pub const git_blob_is_binary = fn (blob: *const git_blob) callconv(.C) c_int;
+pub const git_blob_dup = fn (out: [*c]*git_blob, source: *git_blob) callconv(.C) c_int;
+pub const git_blame_options_init = fn (opts: [*c]git_blame_options, version: c_uint) callconv(.C) c_int;
+pub const git_blame_get_hunk_count = fn (blame: *git_blame) callconv(.C) u32;
+pub const git_blame_get_hunk_byindex = fn (blame: *git_blame, index: u32) callconv(.C) [*c]const git_blame_hunk;
+pub const git_blame_get_hunk_byline = fn (blame: *git_blame, lineno: usize) callconv(.C) [*c]const git_blame_hunk;
+pub const git_blame_file = fn (out: [*c]*git_blame, repo: *git_repository, path: [*c]const u8, options: [*c]git_blame_options) callconv(.C) c_int;
+pub const git_blame_buffer = fn (out: [*c]*git_blame, reference: *git_blame, buffer: [*c]const u8, buffer_len: usize) callconv(.C) c_int;
+pub const git_blame_free = fn (blame: *git_blame) callconv(.C) void;
+pub const git_branch_create = fn (out: [*c]*git_reference, repo: *git_repository, branch_name: [*c]const u8, target: *const git_commit, force: c_int) callconv(.C) c_int;
+pub const git_branch_create_from_annotated = fn (ref_out: [*c]*git_reference, repository: *git_repository, branch_name: [*c]const u8, commit: *const git_annotated_commit, force: c_int) callconv(.C) c_int;
+pub const git_branch_delete = fn (branch: *git_reference) callconv(.C) c_int;
+pub const git_branch_iterator_new = fn (out: [*c]*git_branch_iterator, repo: *git_repository, list_flags: git_branch_t) callconv(.C) c_int;
+pub const git_branch_next = fn (out: [*c]*git_reference, out_type: [*c]git_branch_t, iter: *git_branch_iterator) callconv(.C) c_int;
+pub const git_branch_iterator_free = fn (iter: *git_branch_iterator) callconv(.C) void;
+pub const git_branch_move = fn (out: [*c]*git_reference, branch: *git_reference, new_branch_name: [*c]const u8, force: c_int) callconv(.C) c_int;
+pub const git_branch_lookup = fn (out: [*c]*git_reference, repo: *git_repository, branch_name: [*c]const u8, branch_type: git_branch_t) callconv(.C) c_int;
+pub const git_branch_name = fn (out: [*c][*c]const u8, ref: *const git_reference) callconv(.C) c_int;
+pub const git_branch_upstream = fn (out: [*c]*git_reference, branch: *const git_reference) callconv(.C) c_int;
+pub const git_branch_set_upstream = fn (branch: *git_reference, branch_name: [*c]const u8) callconv(.C) c_int;
+pub const git_branch_upstream_name = fn (out: [*c]git_buf, repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_branch_is_head = fn (branch: *const git_reference) callconv(.C) c_int;
+pub const git_branch_is_checked_out = fn (branch: *const git_reference) callconv(.C) c_int;
+pub const git_branch_remote_name = fn (out: [*c]git_buf, repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_branch_upstream_remote = fn (buf: [*c]git_buf, repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_branch_upstream_merge = fn (buf: [*c]git_buf, repo: *git_repository, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_branch_name_is_valid = fn (valid: [*c]c_int, name: [*c]const u8) callconv(.C) c_int;
+pub const git_checkout_options_init = fn (opts: [*c]git_checkout_options, version: c_uint) callconv(.C) c_int;
+pub const git_checkout_head = fn (repo: *git_repository, opts: [*c]const git_checkout_options) callconv(.C) c_int;
+pub const git_checkout_index = fn (repo: *git_repository, index: *git_index, opts: [*c]const git_checkout_options) callconv(.C) c_int;
+pub const git_checkout_tree = fn (repo: *git_repository, treeish: *const git_object, opts: [*c]const git_checkout_options) callconv(.C) c_int;
+pub const git_oidarray_dispose = fn (array: [*c]git_oidarray) callconv(.C) void;
+pub const git_indexer_options_init = fn (opts: [*c]git_indexer_options, version: c_uint) callconv(.C) c_int;
+pub const git_indexer_new = fn (out: [*c]*git_indexer, path: [*c]const u8, mode: c_uint, odb: *git_odb, opts: [*c]git_indexer_options) callconv(.C) c_int;
+pub const git_indexer_append = fn (idx: *git_indexer, data: *const c_void, size: usize, stats: [*c]git_indexer_progress) callconv(.C) c_int;
+pub const git_indexer_commit = fn (idx: *git_indexer, stats: [*c]git_indexer_progress) callconv(.C) c_int;
+pub const git_indexer_hash = fn (idx: *const git_indexer) callconv(.C) [*c]const git_oid;
+pub const git_indexer_free = fn (idx: *git_indexer) callconv(.C) void;
+pub const git_index_open = fn (out: [*c]*git_index, index_path: [*c]const u8) callconv(.C) c_int;
+pub const git_index_new = fn (out: [*c]*git_index) callconv(.C) c_int;
+pub const git_index_free = fn (index: *git_index) callconv(.C) void;
+pub const git_index_owner = fn (index: *const git_index) callconv(.C) *git_repository;
+pub const git_index_caps = fn (index: *const git_index) callconv(.C) c_int;
+pub const git_index_set_caps = fn (index: *git_index, caps: c_int) callconv(.C) c_int;
+pub const git_index_version = fn (index: *git_index) callconv(.C) c_uint;
+pub const git_index_set_version = fn (index: *git_index, version: c_uint) callconv(.C) c_int;
+pub const git_index_read = fn (index: *git_index, force: c_int) callconv(.C) c_int;
+pub const git_index_write = fn (index: *git_index) callconv(.C) c_int;
+pub const git_index_path = fn (index: *const git_index) callconv(.C) [*c]const u8;
+pub const git_index_checksum = fn (index: *git_index) callconv(.C) [*c]const git_oid;
+pub const git_index_read_tree = fn (index: *git_index, tree: *const git_tree) callconv(.C) c_int;
+pub const git_index_write_tree = fn (out: [*c]git_oid, index: ?*git_index) callconv(.C) c_int;
+pub const git_index_write_tree_to = fn (out: [*c]git_oid, index: *git_index, repo: *git_repository) callconv(.C) c_int;
+pub const git_index_entrycount = fn (index: *const git_index) callconv(.C) usize;
+pub const git_index_clear = fn (index: *git_index) callconv(.C) c_int;
+pub const git_index_get_byindex = fn (index: *git_index, n: usize) callconv(.C) [*c]const git_index_entry;
+pub const git_index_get_bypath = fn (index: *git_index, path: [*c]const u8, stage: c_int) callconv(.C) [*c]const git_index_entry;
+pub const git_index_remove = fn (index: *git_index, path: [*c]const u8, stage: c_int) callconv(.C) c_int;
+pub const git_index_remove_directory = fn (index: *git_index, dir: [*c]const u8, stage: c_int) callconv(.C) c_int;
+pub const git_index_add = fn (index: *git_index, source_entry: [*c]const git_index_entry) callconv(.C) c_int;
+pub const git_index_entry_stage = fn (entry: [*c]const git_index_entry) callconv(.C) c_int;
+pub const git_index_entry_is_conflict = fn (entry: [*c]const git_index_entry) callconv(.C) c_int;
+pub const git_index_iterator_new = fn (iterator_out: [*c]*git_index_iterator, index: *git_index) callconv(.C) c_int;
+pub const git_index_iterator_next = fn (out: [*c][*c]const git_index_entry, iterator: *git_index_iterator) callconv(.C) c_int;
+pub const git_index_iterator_free = fn (iterator: *git_index_iterator) callconv(.C) void;
+pub const git_index_add_bypath = fn (index: *git_index, path: [*c]const u8) callconv(.C) c_int;
+pub const git_index_add_from_buffer = fn (index: ?*git_index, entry: [*c]const git_index_entry, buffer: *const c_void, len: usize) callconv(.C) c_int;
+pub const git_index_remove_bypath = fn (index: ?*git_index, path: [*c]const u8) callconv(.C) c_int;
+pub const git_index_add_all = fn (index: ?*git_index, pathspec: [*c]const git_strarray, flags: c_uint, callback: git_index_matched_path_cb, payload: ?*c_void) callconv(.C) c_int;
+pub const git_index_remove_all = fn (index: ?*git_index, pathspec: [*c]const git_strarray, callback: git_index_matched_path_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_index_update_all = fn (index: ?*git_index, pathspec: [*c]const git_strarray, callback: git_index_matched_path_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_index_find = fn (at_pos: [*c]usize, index: *git_index, path: [*c]const u8) callconv(.C) c_int;
+pub const git_index_find_prefix = fn (at_pos: [*c]usize, index: *git_index, prefix: [*c]const u8) callconv(.C) c_int;
+pub const git_index_conflict_add = fn (index: *git_index, ancestor_entry: [*c]const git_index_entry, our_entry: [*c]const git_index_entry, their_entry: [*c]const git_index_entry) callconv(.C) c_int;
+pub const git_index_conflict_get = fn (ancestor_out: [*c][*c]const git_index_entry, our_out: [*c][*c]const git_index_entry, their_out: [*c][*c]const git_index_entry, index: *git_index, path: [*c]const u8) callconv(.C) c_int;
+pub const git_index_conflict_remove = fn (index: *git_index, path: [*c]const u8) callconv(.C) c_int;
+pub const git_index_conflict_cleanup = fn (index: *git_index) callconv(.C) c_int;
+pub const git_index_has_conflicts = fn (index: *const git_index) callconv(.C) c_int;
+pub const git_index_conflict_iterator_new = fn (iterator_out: [*c]*git_index_conflict_iterator, index: *git_index) callconv(.C) c_int;
+pub const git_index_conflict_next = fn (ancestor_out: [*c][*c]const git_index_entry, our_out: [*c][*c]const git_index_entry, their_out: [*c][*c]const git_index_entry, iterator: *git_index_conflict_iterator) callconv(.C) c_int;
+pub const git_index_conflict_iterator_free = fn (iterator: *git_index_conflict_iterator) callconv(.C) void;
+pub const git_merge_file_input_init = fn (opts: [*c]git_merge_file_input, version: c_uint) callconv(.C) c_int;
+pub const git_merge_file_options_init = fn (opts: [*c]git_merge_file_options, version: c_uint) callconv(.C) c_int;
+pub const git_merge_options_init = fn (opts: [*c]git_merge_options, version: c_uint) callconv(.C) c_int;
+pub const git_merge_analysis = fn (analysis_out: [*c]git_merge_analysis_t, preference_out: [*c]git_merge_preference_t, repo: *git_repository, their_heads: [*c]*const git_annotated_commit, their_heads_len: usize) callconv(.C) c_int;
+pub const git_merge_analysis_for_ref = fn (analysis_out: [*c]git_merge_analysis_t, preference_out: [*c]git_merge_preference_t, repo: *git_repository, our_ref: *git_reference, their_heads: [*c]*const git_annotated_commit, their_heads_len: usize) callconv(.C) c_int;
+pub const git_merge_base = fn (out: [*c]git_oid, repo: *git_repository, one: [*c]const git_oid, two: [*c]const git_oid) callconv(.C) c_int;
+pub const git_merge_bases = fn (out: [*c]git_oidarray, repo: *git_repository, one: [*c]const git_oid, two: [*c]const git_oid) callconv(.C) c_int;
+pub const git_merge_base_many = fn (out: [*c]git_oid, repo: *git_repository, length: usize, input_array: [*c]const git_oid) callconv(.C) c_int;
+pub const git_merge_bases_many = fn (out: [*c]git_oidarray, repo: *git_repository, length: usize, input_array: [*c]const git_oid) callconv(.C) c_int;
+pub const git_merge_base_octopus = fn (out: [*c]git_oid, repo: *git_repository, length: usize, input_array: [*c]const git_oid) callconv(.C) c_int;
+pub const git_merge_file = fn (out: [*c]git_merge_file_result, ancestor: [*c]const git_merge_file_input, ours: [*c]const git_merge_file_input, theirs: [*c]const git_merge_file_input, opts: [*c]const git_merge_file_options) callconv(.C) c_int;
+pub const git_merge_file_from_index = fn (out: [*c]git_merge_file_result, repo: *git_repository, ancestor: [*c]const git_index_entry, ours: [*c]const git_index_entry, theirs: [*c]const git_index_entry, opts: [*c]const git_merge_file_options) callconv(.C) c_int;
+pub const git_merge_file_result_free = fn (result: [*c]git_merge_file_result) callconv(.C) void;
+pub const git_merge_trees = fn (out: [*c]*git_index, repo: *git_repository, ancestor_tree: *const git_tree, our_tree: *const git_tree, their_tree: *const git_tree, opts: [*c]const git_merge_options) callconv(.C) c_int;
+pub const git_merge_commits = fn (out: [*c]*git_index, repo: *git_repository, our_commit: *const git_commit, their_commit: *const git_commit, opts: [*c]const git_merge_options) callconv(.C) c_int;
+pub const git_merge = fn (repo: *git_repository, their_heads: [*c]*const git_annotated_commit, their_heads_len: usize, merge_opts: [*c]const git_merge_options, checkout_opts: [*c]const git_checkout_options) callconv(.C) c_int;
+pub const git_cherrypick_options_init = fn (opts: [*c]git_cherrypick_options, version: c_uint) callconv(.C) c_int;
+pub const git_cherrypick_commit = fn (out: [*c]*git_index, repo: *git_repository, cherrypick_commit: *git_commit, our_commit: *git_commit, mainline: c_uint, merge_options: [*c]const git_merge_options) callconv(.C) c_int;
+pub const git_cherrypick = fn (repo: *git_repository, commit: *git_commit, cherrypick_options: [*c]const git_cherrypick_options) callconv(.C) c_int;
+pub const git_refspec_parse = fn (refspec: [*c]*git_refspec, input: [*c]const u8, is_fetch: c_int) callconv(.C) c_int;
+pub const git_refspec_free = fn (refspec: *git_refspec) callconv(.C) void;
+pub const git_refspec_src = fn (refspec: *const git_refspec) callconv(.C) [*c]const u8;
+pub const git_refspec_dst = fn (refspec: *const git_refspec) callconv(.C) [*c]const u8;
+pub const git_refspec_string = fn (refspec: *const git_refspec) callconv(.C) [*c]const u8;
+pub const git_refspec_force = fn (refspec: *const git_refspec) callconv(.C) c_int;
+pub const git_refspec_direction = fn (spec: *const git_refspec) callconv(.C) git_direction;
+pub const git_refspec_src_matches = fn (refspec: *const git_refspec, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_refspec_dst_matches = fn (refspec: *const git_refspec, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_refspec_transform = fn (out: [*c]git_buf, spec: *const git_refspec, name: [*c]const u8) callconv(.C) c_int;
+pub const git_refspec_rtransform = fn (out: [*c]git_buf, spec: *const git_refspec, name: [*c]const u8) callconv(.C) c_int;
+pub const git_credential_free = fn (cred: [*c]git_credential) callconv(.C) void;
+pub const git_credential_has_username = fn (cred: [*c]git_credential) callconv(.C) c_int;
+pub const git_credential_get_username = fn (cred: [*c]git_credential) callconv(.C) [*c]const u8;
+pub const git_credential_userpass_plaintext_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, password: [*c]const u8) callconv(.C) c_int;
+pub const git_credential_default_new = fn (out: [*c][*c]git_credential) callconv(.C) c_int;
+pub const git_credential_username_new = fn (out: [*c][*c]git_credential, username: [*c]const u8) callconv(.C) c_int;
+pub const git_credential_ssh_key_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, publickey: [*c]const u8, privatekey: [*c]const u8, passphrase: [*c]const u8) callconv(.C) c_int;
+pub const git_credential_ssh_key_memory_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, publickey: [*c]const u8, privatekey: [*c]const u8, passphrase: [*c]const u8) callconv(.C) c_int;
+pub const git_credential_ssh_interactive_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, prompt_callback: git_credential_ssh_interactive_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_credential_ssh_key_from_agent = fn (out: [*c][*c]git_credential, username: [*c]const u8) callconv(.C) c_int;
+pub const git_credential_ssh_custom_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, publickey: [*c]const u8, publickey_len: usize, sign_callback: git_credential_sign_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_packbuilder_new = fn (out: [*c]*git_packbuilder, repo: *git_repository) callconv(.C) c_int;
+pub const git_packbuilder_set_threads = fn (pb: *git_packbuilder, n: c_uint) callconv(.C) c_uint;
+pub const git_packbuilder_insert = fn (pb: *git_packbuilder, id: [*c]const git_oid, name: [*c]const u8) callconv(.C) c_int;
+pub const git_packbuilder_insert_tree = fn (pb: *git_packbuilder, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_packbuilder_insert_commit = fn (pb: *git_packbuilder, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_packbuilder_insert_walk = fn (pb: *git_packbuilder, walk: *git_revwalk) callconv(.C) c_int;
+pub const git_packbuilder_insert_recur = fn (pb: *git_packbuilder, id: [*c]const git_oid, name: [*c]const u8) callconv(.C) c_int;
+pub const git_packbuilder_write_buf = fn (buf: [*c]git_buf, pb: *git_packbuilder) callconv(.C) c_int;
+pub const git_packbuilder_write = fn (pb: *git_packbuilder, path: [*c]const u8, mode: c_uint, progress_cb: git_indexer_progress_cb, progress_cb_payload: *c_void) callconv(.C) c_int;
+pub const git_packbuilder_hash = fn (pb: *git_packbuilder) callconv(.C) [*c]const git_oid;
+pub const git_packbuilder_foreach = fn (pb: *git_packbuilder, cb: git_packbuilder_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_packbuilder_object_count = fn (pb: *git_packbuilder) callconv(.C) usize;
+pub const git_packbuilder_written = fn (pb: *git_packbuilder) callconv(.C) usize;
+pub const git_packbuilder_set_callbacks = fn (pb: *git_packbuilder, progress_cb: git_packbuilder_progress, progress_cb_payload: *c_void) callconv(.C) c_int;
+pub const git_packbuilder_free = fn (pb: *git_packbuilder) callconv(.C) void;
+pub const git_proxy_options_init = fn (opts: [*c]git_proxy_options, version: c_uint) callconv(.C) c_int;
+pub const git_remote_create = fn (out: [*c]*git_remote, repo: *git_repository, name: [*c]const u8, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_create_options_init = fn (opts: [*c]git_remote_create_options, version: c_uint) callconv(.C) c_int;
+pub const git_remote_create_with_opts = fn (out: [*c]*git_remote, url: [*c]const u8, opts: [*c]const git_remote_create_options) callconv(.C) c_int;
+pub const git_remote_create_with_fetchspec = fn (out: [*c]*git_remote, repo: *git_repository, name: [*c]const u8, url: [*c]const u8, fetch: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_create_anonymous = fn (out: [*c]*git_remote, repo: *git_repository, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_create_detached = fn (out: [*c]*git_remote, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_lookup = fn (out: [*c]*git_remote, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_dup = fn (dest: [*c]*git_remote, source: *git_remote) callconv(.C) c_int;
+pub const git_remote_owner = fn (remote: *const git_remote) callconv(.C) *git_repository;
+pub const git_remote_name = fn (remote: *const git_remote) callconv(.C) [*c]const u8;
+pub const git_remote_url = fn (remote: *const git_remote) callconv(.C) [*c]const u8;
+pub const git_remote_pushurl = fn (remote: *const git_remote) callconv(.C) [*c]const u8;
+pub const git_remote_set_url = fn (repo: *git_repository, remote: [*c]const u8, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_set_pushurl = fn (repo: *git_repository, remote: [*c]const u8, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_set_instance_url = fn (remote: *git_remote, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_set_instance_pushurl = fn (remote: *git_remote, url: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_add_fetch = fn (repo: *git_repository, remote: [*c]const u8, refspec: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_get_fetch_refspecs = fn (array: [*c]git_strarray, remote: *const git_remote) callconv(.C) c_int;
+pub const git_remote_add_push = fn (repo: *git_repository, remote: [*c]const u8, refspec: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_get_push_refspecs = fn (array: [*c]git_strarray, remote: *const git_remote) callconv(.C) c_int;
+pub const git_remote_refspec_count = fn (remote: *const git_remote) callconv(.C) usize;
+pub const git_remote_get_refspec = fn (remote: *const git_remote, n: usize) callconv(.C) *const git_refspec;
+pub const git_remote_connect = fn (remote: *git_remote, direction: git_direction, callbacks: [*c]const git_remote_callbacks, proxy_opts: [*c]const git_proxy_options, custom_headers: [*c]const git_strarray) callconv(.C) c_int;
+pub const git_remote_ls = fn (out: [*c][*c][*c]const git_remote_head, size: [*c]usize, remote: *git_remote) callconv(.C) c_int;
+pub const git_remote_connected = fn (remote: *const git_remote) callconv(.C) c_int;
+pub const git_remote_stop = fn (remote: *git_remote) callconv(.C) c_int;
+pub const git_remote_disconnect = fn (remote: *git_remote) callconv(.C) c_int;
+pub const git_remote_free = fn (remote: *git_remote) callconv(.C) void;
+pub const git_remote_list = fn (out: [*c]git_strarray, repo: *git_repository) callconv(.C) c_int;
+pub const git_remote_init_callbacks = fn (opts: [*c]git_remote_callbacks, version: c_uint) callconv(.C) c_int;
+pub const git_fetch_options_init = fn (opts: [*c]git_fetch_options, version: c_uint) callconv(.C) c_int;
+pub const git_push_options_init = fn (opts: [*c]git_push_options, version: c_uint) callconv(.C) c_int;
+pub const git_remote_download = fn (remote: *git_remote, refspecs: [*c]const git_strarray, opts: [*c]const git_fetch_options) callconv(.C) c_int;
+pub const git_remote_upload = fn (remote: *git_remote, refspecs: [*c]const git_strarray, opts: [*c]const git_push_options) callconv(.C) c_int;
+pub const git_remote_update_tips = fn (remote: *git_remote, callbacks: [*c]const git_remote_callbacks, update_fetchhead: c_int, download_tags: git_remote_autotag_option_t, reflog_message: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_fetch = fn (remote: *git_remote, refspecs: [*c]const git_strarray, opts: [*c]const git_fetch_options, reflog_message: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_prune = fn (remote: *git_remote, callbacks: [*c]const git_remote_callbacks) callconv(.C) c_int;
+pub const git_remote_push = fn (remote: *git_remote, refspecs: [*c]const git_strarray, opts: [*c]const git_push_options) callconv(.C) c_int;
+pub const git_remote_stats = fn (remote: *git_remote) callconv(.C) [*c]const git_indexer_progress;
+pub const git_remote_autotag = fn (remote: *const git_remote) callconv(.C) git_remote_autotag_option_t;
+pub const git_remote_set_autotag = fn (repo: *git_repository, remote: [*c]const u8, value: git_remote_autotag_option_t) callconv(.C) c_int;
+pub const git_remote_prune_refs = fn (remote: *const git_remote) callconv(.C) c_int;
+pub const git_remote_rename = fn (problems: [*c]git_strarray, repo: *git_repository, name: [*c]const u8, new_name: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_name_is_valid = fn (valid: [*c]c_int, remote_name: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_delete = fn (repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_remote_default_branch = fn (out: [*c]git_buf, remote: *git_remote) callconv(.C) c_int;
+pub const git_clone_options_init = fn (opts: [*c]git_clone_options, version: c_uint) callconv(.C) c_int;
+pub const git_clone = fn (out: *git_repository, url: [*c]const u8, local_path: [*c]const u8, options: [*c]const git_clone_options) callconv(.C) c_int;
+pub const git_commit_lookup = fn (commit: [*c]*git_commit, repo: *git_repository, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_commit_lookup_prefix = fn (commit: [*c]*git_commit, repo: *git_repository, id: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_commit_free = fn (commit: *git_commit) callconv(.C) void;
+pub const git_commit_id = fn (commit: *const git_commit) callconv(.C) [*c]const git_oid;
+pub const git_commit_owner = fn (commit: *const git_commit) callconv(.C) *git_repository;
+pub const git_commit_message_encoding = fn (commit: *const git_commit) callconv(.C) [*c]const u8;
+pub const git_commit_message = fn (commit: *const git_commit) callconv(.C) [*c]const u8;
+pub const git_commit_message_raw = fn (commit: *const git_commit) callconv(.C) [*c]const u8;
+pub const git_commit_summary = fn (commit: *git_commit) callconv(.C) [*c]const u8;
+pub const git_commit_body = fn (commit: *git_commit) callconv(.C) [*c]const u8;
+pub const git_commit_time = fn (commit: *const git_commit) callconv(.C) git_time_t;
+pub const git_commit_time_offset = fn (commit: *const git_commit) callconv(.C) c_int;
+pub const git_commit_committer = fn (commit: *const git_commit) callconv(.C) [*c]const git_signature;
+pub const git_commit_author = fn (commit: *const git_commit) callconv(.C) [*c]const git_signature;
+pub const git_commit_committer_with_mailmap = fn (out: [*c]?*git_signature, commit: *const git_commit, mailmap: *const git_mailmap) callconv(.C) c_int;
+pub const git_commit_author_with_mailmap = fn (out: [*c]?*git_signature, commit: *const git_commit, mailmap: *const git_mailmap) callconv(.C) c_int;
+pub const git_commit_raw_header = fn (commit: *const git_commit) callconv(.C) [*c]const u8;
+pub const git_commit_tree = fn (tree_out: [*c]*git_tree, commit: *const git_commit) callconv(.C) c_int;
+pub const git_commit_tree_id = fn (commit: *const git_commit) callconv(.C) [*c]const git_oid;
+pub const git_commit_parentcount = fn (commit: *const git_commit) callconv(.C) c_uint;
+pub const git_commit_parent = fn (out: [*c]*git_commit, commit: *const git_commit, n: c_uint) callconv(.C) c_int;
+pub const git_commit_parent_id = fn (commit: *const git_commit, n: c_uint) callconv(.C) [*c]const git_oid;
+pub const git_commit_nth_gen_ancestor = fn (ancestor: [*c]*git_commit, commit: *const git_commit, n: c_uint) callconv(.C) c_int;
+pub const git_commit_header_field = fn (out: [*c]git_buf, commit: *const git_commit, field: [*c]const u8) callconv(.C) c_int;
+pub const git_commit_extract_signature = fn (signature: [*c]git_buf, signed_data: [*c]git_buf, repo: *git_repository, commit_id: [*c]git_oid, field: [*c]const u8) callconv(.C) c_int;
+pub const git_commit_create = fn (id: [*c]git_oid, repo: *git_repository, update_ref: [*c]const u8, author: [*c]const git_signature, committer: [*c]const git_signature, message_encoding: [*c]const u8, message: [*c]const u8, tree: *const git_tree, parent_count: usize, parents: [*c]*const git_commit) callconv(.C) c_int;
+pub const git_commit_create_v = fn (id: [*c]git_oid, repo: *git_repository, update_ref: [*c]const u8, author: [*c]const git_signature, committer: [*c]const git_signature, message_encoding: [*c]const u8, message: [*c]const u8, tree: *const git_tree, parent_count: usize, ...) callconv(.C) c_int;
+pub const git_commit_amend = fn (id: [*c]git_oid, commit_to_amend: *const git_commit, update_ref: [*c]const u8, author: [*c]const git_signature, committer: [*c]const git_signature, message_encoding: [*c]const u8, message: [*c]const u8, tree: *const git_tree) callconv(.C) c_int;
+pub const git_commit_create_buffer = fn (out: [*c]git_buf, repo: *git_repository, author: [*c]const git_signature, committer: [*c]const git_signature, message_encoding: [*c]const u8, message: [*c]const u8, tree: *const git_tree, parent_count: usize, parents: [*c]*const git_commit) callconv(.C) c_int;
+pub const git_commit_create_with_signature = fn (out: [*c]git_oid, repo: *git_repository, commit_content: [*c]const u8, signature: [*c]const u8, signature_field: [*c]const u8) callconv(.C) c_int;
+pub const git_commit_dup = fn (out: [*c]*git_commit, source: *git_commit) callconv(.C) c_int;
+pub const git_config_entry_free = fn ([*c]git_config_entry) callconv(.C) void;
+pub const git_config_find_global = fn (out: [*c]git_buf) callconv(.C) c_int;
+pub const git_config_find_xdg = fn (out: [*c]git_buf) callconv(.C) c_int;
+pub const git_config_find_system = fn (out: [*c]git_buf) callconv(.C) c_int;
+pub const git_config_find_programdata = fn (out: [*c]git_buf) callconv(.C) c_int;
+pub const git_config_open_default = fn (out: [*c]*git_config) callconv(.C) c_int;
+pub const git_config_new = fn (out: [*c]*git_config) callconv(.C) c_int;
+pub const git_config_add_file_ondisk = fn (cfg: *git_config, path: [*c]const u8, level: git_config_level_t, repo: *const git_repository, force: c_int) callconv(.C) c_int;
+pub const git_config_open_ondisk = fn (out: [*c]*git_config, path: [*c]const u8) callconv(.C) c_int;
+pub const git_config_open_level = fn (out: [*c]*git_config, parent: *const git_config, level: git_config_level_t) callconv(.C) c_int;
+pub const git_config_open_global = fn (out: [*c]*git_config, config: *git_config) callconv(.C) c_int;
+pub const git_config_snapshot = fn (out: [*c]*git_config, config: *git_config) callconv(.C) c_int;
+pub const git_config_free = fn (cfg: *git_config) callconv(.C) void;
+pub const git_config_get_entry = fn (out: [*c][*c]git_config_entry, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_int32 = fn (out: [*c]i32, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_int64 = fn (out: [*c]i64, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_bool = fn (out: [*c]c_int, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_path = fn (out: [*c]git_buf, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_string = fn (out: [*c][*c]const u8, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_string_buf = fn (out: [*c]git_buf, cfg: *const git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_get_multivar_foreach = fn (cfg: *const git_config, name: [*c]const u8, regexp: [*c]const u8, callback: git_config_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_config_multivar_iterator_new = fn (out: [*c]*git_config_iterator, cfg: *const git_config, name: [*c]const u8, regexp: [*c]const u8) callconv(.C) c_int;
+pub const git_config_next = fn (entry: [*c][*c]git_config_entry, iter: *git_config_iterator) callconv(.C) c_int;
+pub const git_config_iterator_free = fn (iter: *git_config_iterator) callconv(.C) void;
+pub const git_config_set_int32 = fn (cfg: *git_config, name: [*c]const u8, value: i32) callconv(.C) c_int;
+pub const git_config_set_int64 = fn (cfg: *git_config, name: [*c]const u8, value: i64) callconv(.C) c_int;
+pub const git_config_set_bool = fn (cfg: *git_config, name: [*c]const u8, value: c_int) callconv(.C) c_int;
+pub const git_config_set_string = fn (cfg: *git_config, name: [*c]const u8, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_set_multivar = fn (cfg: *git_config, name: [*c]const u8, regexp: [*c]const u8, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_delete_entry = fn (cfg: *git_config, name: [*c]const u8) callconv(.C) c_int;
+pub const git_config_delete_multivar = fn (cfg: *git_config, name: [*c]const u8, regexp: [*c]const u8) callconv(.C) c_int;
+pub const git_config_foreach = fn (cfg: *const git_config, callback: git_config_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_config_iterator_new = fn (out: [*c]*git_config_iterator, cfg: *const git_config) callconv(.C) c_int;
+pub const git_config_iterator_glob_new = fn (out: [*c]*git_config_iterator, cfg: *const git_config, regexp: [*c]const u8) callconv(.C) c_int;
+pub const git_config_foreach_match = fn (cfg: *const git_config, regexp: [*c]const u8, callback: git_config_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_config_get_mapped = fn (out: [*c]c_int, cfg: *const git_config, name: [*c]const u8, maps: [*c]const git_configmap, map_n: usize) callconv(.C) c_int;
+pub const git_config_lookup_map_value = fn (out: [*c]c_int, maps: [*c]const git_configmap, map_n: usize, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_parse_bool = fn (out: [*c]c_int, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_parse_int32 = fn (out: [*c]i32, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_parse_int64 = fn (out: [*c]i64, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_parse_path = fn (out: [*c]git_buf, value: [*c]const u8) callconv(.C) c_int;
+pub const git_config_backend_foreach_match = fn (backend: *git_config_backend, regexp: [*c]const u8, callback: git_config_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_config_lock = fn (tx: [*c]*git_transaction, cfg: *git_config) callconv(.C) c_int;
+pub const git_describe_options_init = fn (opts: [*c]git_describe_options, version: c_uint) callconv(.C) c_int;
+pub const git_describe_format_options_init = fn (opts: [*c]git_describe_format_options, version: c_uint) callconv(.C) c_int;
+pub const git_describe_commit = fn (result: [*c]*git_describe_result, committish: *git_object, opts: [*c]git_describe_options) callconv(.C) c_int;
+pub const git_describe_workdir = fn (out: [*c]*git_describe_result, repo: *git_repository, opts: [*c]git_describe_options) callconv(.C) c_int;
+pub const git_describe_format = fn (out: [*c]git_buf, result: *const git_describe_result, opts: [*c]const git_describe_format_options) callconv(.C) c_int;
+pub const git_describe_result_free = fn (result: *git_describe_result) callconv(.C) void;
+pub const git_error_last = fn () callconv(.C) [*c]const git_error;
+pub const git_error_clear = fn () callconv(.C) void;
+pub const git_error_set_str = fn (error_class: c_int, string: [*c]const u8) callconv(.C) c_int;
+pub const git_error_set_oom = fn () callconv(.C) void;
+pub const git_filter_list_load = fn (filters: [*c]*git_filter_list, repo: *git_repository, blob: *git_blob, path: [*c]const u8, mode: git_filter_mode_t, flags: u32) callconv(.C) c_int;
+pub const git_filter_list_load_ext = fn (filters: [*c]*git_filter_list, repo: *git_repository, blob: *git_blob, path: [*c]const u8, mode: git_filter_mode_t, opts: [*c]git_filter_options) callconv(.C) c_int;
+pub const git_filter_list_contains = fn (filters: *git_filter_list, name: [*c]const u8) callconv(.C) c_int;
+pub const git_filter_list_apply_to_buffer = fn (out: [*c]git_buf, filters: *git_filter_list, in: [*c]const u8, in_len: usize) callconv(.C) c_int;
+pub const git_filter_list_apply_to_file = fn (out: [*c]git_buf, filters: *git_filter_list, repo: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_filter_list_apply_to_blob = fn (out: [*c]git_buf, filters: *git_filter_list, blob: *git_blob) callconv(.C) c_int;
+pub const git_filter_list_stream_buffer = fn (filters: *git_filter_list, buffer: [*c]const u8, len: usize, target: [*c]git_writestream) callconv(.C) c_int;
+pub const git_filter_list_stream_file = fn (filters: *git_filter_list, repo: *git_repository, path: [*c]const u8, target: [*c]git_writestream) callconv(.C) c_int;
+pub const git_filter_list_stream_blob = fn (filters: *git_filter_list, blob: *git_blob, target: [*c]git_writestream) callconv(.C) c_int;
+pub const git_filter_list_free = fn (filters: *git_filter_list) callconv(.C) void;
+pub const git_rebase_options_init = fn (opts: [*c]git_rebase_options, version: c_uint) callconv(.C) c_int;
+pub const git_rebase_init = fn (out: [*c]*git_rebase, repo: *git_repository, branch: *const git_annotated_commit, upstream: *const git_annotated_commit, onto: *const git_annotated_commit, opts: [*c]const git_rebase_options) callconv(.C) c_int;
+pub const git_rebase_open = fn (out: [*c]*git_rebase, repo: *git_repository, opts: [*c]const git_rebase_options) callconv(.C) c_int;
+pub const git_rebase_orig_head_name = fn (rebase: *git_rebase) callconv(.C) [*c]const u8;
+pub const git_rebase_orig_head_id = fn (rebase: *git_rebase) callconv(.C) [*c]const git_oid;
+pub const git_rebase_onto_name = fn (rebase: *git_rebase) callconv(.C) [*c]const u8;
+pub const git_rebase_onto_id = fn (rebase: *git_rebase) callconv(.C) [*c]const git_oid;
+pub const git_rebase_operation_entrycount = fn (rebase: *git_rebase) callconv(.C) usize;
+pub const git_rebase_operation_current = fn (rebase: *git_rebase) callconv(.C) usize;
+pub const git_rebase_operation_byindex = fn (rebase: *git_rebase, idx: usize) callconv(.C) [*c]git_rebase_operation;
+pub const git_rebase_next = fn (operation: [*c][*c]git_rebase_operation, rebase: *git_rebase) callconv(.C) c_int;
+pub const git_rebase_inmemory_index = fn (index: [*c]*git_index, rebase: *git_rebase) callconv(.C) c_int;
+pub const git_rebase_commit = fn (id: [*c]git_oid, rebase: *git_rebase, author: [*c]const git_signature, committer: [*c]const git_signature, message_encoding: [*c]const u8, message: [*c]const u8) callconv(.C) c_int;
+pub const git_rebase_abort = fn (rebase: *git_rebase) callconv(.C) c_int;
+pub const git_rebase_finish = fn (rebase: *git_rebase, signature: [*c]const git_signature) callconv(.C) c_int;
+pub const git_rebase_free = fn (rebase: *git_rebase) callconv(.C) void;
+pub const git_trace_set = fn (level: git_trace_level_t, cb: git_trace_cb) callconv(.C) c_int;
+pub const git_revert_options_init = fn (opts: [*c]git_revert_options, version: c_uint) callconv(.C) c_int;
+pub const git_revert_commit = fn (out: [*c]*git_index, repo: *git_repository, revert_commit: *git_commit, our_commit: *git_commit, mainline: c_uint, merge_options: [*c]const git_merge_options) callconv(.C) c_int;
+pub const git_revert = fn (repo: *git_repository, commit: *git_commit, given_opts: [*c]const git_revert_options) callconv(.C) c_int;
+pub const git_revparse_single = fn (out: [*c]*git_object, repo: *git_repository, spec: [*c]const u8) callconv(.C) c_int;
+pub const git_revparse_ext = fn (object_out: [*c]*git_object, reference_out: [*c]*git_reference, repo: *git_repository, spec: [*c]const u8) callconv(.C) c_int;
+pub const git_revparse = fn (revspec: [*c]git_revspec, repo: *git_repository, spec: [*c]const u8) callconv(.C) c_int;
+pub const git_stash_save = fn (out: [*c]git_oid, repo: *git_repository, stasher: [*c]const git_signature, message: [*c]const u8, flags: u32) callconv(.C) c_int;
+pub const git_stash_apply_options_init = fn (opts: [*c]git_stash_apply_options, version: c_uint) callconv(.C) c_int;
+pub const git_stash_apply = fn (repo: *git_repository, index: usize, options: [*c]const git_stash_apply_options) callconv(.C) c_int;
+pub const git_stash_foreach = fn (repo: *git_repository, callback: git_stash_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_stash_drop = fn (repo: *git_repository, index: usize) callconv(.C) c_int;
+pub const git_stash_pop = fn (repo: *git_repository, index: usize, options: [*c]const git_stash_apply_options) callconv(.C) c_int;
+pub const git_status_options_init = fn (opts: [*c]git_status_options, version: c_uint) callconv(.C) c_int;
+pub const git_status_foreach = fn (repo: *git_repository, callback: git_status_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_status_foreach_ext = fn (repo: *git_repository, opts: [*c]const git_status_options, callback: git_status_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_status_file = fn (status_flags: [*c]c_uint, repo: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_status_list_new = fn (out: [*c]*git_status_list, repo: *git_repository, opts: [*c]const git_status_options) callconv(.C) c_int;
+pub const git_status_list_entrycount = fn (statuslist: *git_status_list) callconv(.C) usize;
+pub const git_status_byindex = fn (statuslist: *git_status_list, idx: usize) callconv(.C) [*c]const git_status_entry;
+pub const git_status_list_free = fn (statuslist: *git_status_list) callconv(.C) void;
+pub const git_status_should_ignore = fn (ignored: [*c]c_int, repo: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_submodule_update_options_init = fn (opts: [*c]git_submodule_update_options, version: c_uint) callconv(.C) c_int;
+pub const git_submodule_update = fn (submodule: *git_submodule, init: c_int, options: [*c]git_submodule_update_options) callconv(.C) c_int;
+pub const git_submodule_lookup = fn (out: [*c]*git_submodule, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_submodule_dup = fn (out: [*c]*git_submodule, source: *git_submodule) callconv(.C) c_int;
+pub const git_submodule_free = fn (submodule: *git_submodule) callconv(.C) void;
+pub const git_submodule_foreach = fn (repo: *git_repository, callback: git_submodule_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_submodule_add_setup = fn (out: [*c]*git_submodule, repo: *git_repository, url: [*c]const u8, path: [*c]const u8, use_gitlink: c_int) callconv(.C) c_int;
+pub const git_submodule_clone = fn (out: *git_repository, submodule: *git_submodule, opts: [*c]const git_submodule_update_options) callconv(.C) c_int;
+pub const git_submodule_add_finalize = fn (submodule: *git_submodule) callconv(.C) c_int;
+pub const git_submodule_add_to_index = fn (submodule: *git_submodule, write_index: c_int) callconv(.C) c_int;
+pub const git_submodule_owner = fn (submodule: *git_submodule) callconv(.C) *git_repository;
+pub const git_submodule_name = fn (submodule: *git_submodule) callconv(.C) [*c]const u8;
+pub const git_submodule_path = fn (submodule: *git_submodule) callconv(.C) [*c]const u8;
+pub const git_submodule_url = fn (submodule: *git_submodule) callconv(.C) [*c]const u8;
+pub const git_submodule_resolve_url = fn (out: [*c]git_buf, repo: *git_repository, url: [*c]const u8) callconv(.C) c_int;
+pub const git_submodule_branch = fn (submodule: *git_submodule) callconv(.C) [*c]const u8;
+pub const git_submodule_set_branch = fn (repo: *git_repository, name: [*c]const u8, branch: [*c]const u8) callconv(.C) c_int;
+pub const git_submodule_set_url = fn (repo: *git_repository, name: [*c]const u8, url: [*c]const u8) callconv(.C) c_int;
+pub const git_submodule_index_id = fn (submodule: *git_submodule) callconv(.C) [*c]const git_oid;
+pub const git_submodule_head_id = fn (submodule: *git_submodule) callconv(.C) [*c]const git_oid;
+pub const git_submodule_wd_id = fn (submodule: *git_submodule) callconv(.C) [*c]const git_oid;
+pub const git_submodule_ignore = fn (submodule: *git_submodule) callconv(.C) git_submodule_ignore_t;
+pub const git_submodule_set_ignore = fn (repo: *git_repository, name: [*c]const u8, ignore: git_submodule_ignore_t) callconv(.C) c_int;
+pub const git_submodule_update_strategy = fn (submodule: *git_submodule) callconv(.C) git_submodule_update_t;
+pub const git_submodule_set_update = fn (repo: *git_repository, name: [*c]const u8, update: git_submodule_update_t) callconv(.C) c_int;
+pub const git_submodule_fetch_recurse_submodules = fn (submodule: *git_submodule) callconv(.C) git_submodule_recurse_t;
+pub const git_submodule_set_fetch_recurse_submodules = fn (repo: *git_repository, name: [*c]const u8, fetch_recurse_submodules: git_submodule_recurse_t) callconv(.C) c_int;
+pub const git_submodule_init = fn (submodule: *git_submodule, overwrite: c_int) callconv(.C) c_int;
+pub const git_submodule_repo_init = fn (out: *git_repository, sm: *const git_submodule, use_gitlink: c_int) callconv(.C) c_int;
+pub const git_submodule_sync = fn (submodule: *git_submodule) callconv(.C) c_int;
+pub const git_submodule_open = fn (repo: *git_repository, submodule: *git_submodule) callconv(.C) c_int;
+pub const git_submodule_reload = fn (submodule: *git_submodule, force: c_int) callconv(.C) c_int;
+pub const git_submodule_status = fn (status: [*c]c_uint, repo: *git_repository, name: [*c]const u8, ignore: git_submodule_ignore_t) callconv(.C) c_int;
+pub const git_submodule_location = fn (location_status: [*c]c_uint, submodule: *git_submodule) callconv(.C) c_int;
+pub const git_worktree_list = fn (out: [*c]git_strarray, repo: *git_repository) callconv(.C) c_int;
+pub const git_worktree_lookup = fn (out: [*c]*git_worktree, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_worktree_open_from_repository = fn (out: [*c]*git_worktree, repo: *git_repository) callconv(.C) c_int;
+pub const git_worktree_free = fn (wt: *git_worktree) callconv(.C) void;
+pub const git_worktree_validate = fn (wt: *const git_worktree) callconv(.C) c_int;
+pub const git_worktree_add_options_init = fn (opts: [*c]git_worktree_add_options, version: c_uint) callconv(.C) c_int;
+pub const git_worktree_add = fn (out: [*c]*git_worktree, repo: *git_repository, name: [*c]const u8, path: [*c]const u8, opts: [*c]const git_worktree_add_options) callconv(.C) c_int;
+pub const git_worktree_lock = fn (wt: *git_worktree, reason: [*c]const u8) callconv(.C) c_int;
+pub const git_worktree_unlock = fn (wt: *git_worktree) callconv(.C) c_int;
+pub const git_worktree_is_locked = fn (reason: [*c]git_buf, wt: *const git_worktree) callconv(.C) c_int;
+pub const git_worktree_name = fn (wt: *const git_worktree) callconv(.C) [*c]const u8;
+pub const git_worktree_path = fn (wt: *const git_worktree) callconv(.C) [*c]const u8;
+pub const git_worktree_prune_options_init = fn (opts: [*c]git_worktree_prune_options, version: c_uint) callconv(.C) c_int;
+pub const git_worktree_is_prunable = fn (wt: *git_worktree, opts: [*c]git_worktree_prune_options) callconv(.C) c_int;
+pub const git_worktree_prune = fn (wt: *git_worktree, opts: [*c]git_worktree_prune_options) callconv(.C) c_int;
+pub const git_credential_userpass = fn (out: [*c][*c]git_credential, url: [*c]const u8, user_from_url: [*c]const u8, allowed_types: c_uint, payload: *c_void) callconv(.C) c_int;
+pub const git_blob_create_fromworkdir = fn (id: [*c]git_oid, repo: *git_repository, relative_path: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_create_fromdisk = fn (id: [*c]git_oid, repo: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_create_fromstream = fn (out: [*c][*c]git_writestream, repo: *git_repository, hintpath: [*c]const u8) callconv(.C) c_int;
+pub const git_blob_create_fromstream_commit = fn (out: [*c]git_oid, stream: [*c]git_writestream) callconv(.C) c_int;
+pub const git_blob_create_frombuffer = fn (id: [*c]git_oid, repo: *git_repository, buffer: *const c_void, len: usize) callconv(.C) c_int;
+pub const git_blob_filtered_content = fn (out: [*c]git_buf, blob: *git_blob, as_path: [*c]const u8, check_for_binary_data: c_int) callconv(.C) c_int;
+pub const git_filter_list_stream_data = fn (filters: *git_filter_list, data: [*c]git_buf, target: [*c]git_writestream) callconv(.C) c_int;
+pub const git_filter_list_apply_to_data = fn (out: [*c]git_buf, filters: *git_filter_list, in: [*c]git_buf) callconv(.C) c_int;
+pub const git_treebuilder_write_with_buffer = fn (oid: [*c]git_oid, bld: *git_treebuilder, tree: [*c]git_buf) callconv(.C) c_int;
+pub const git_buf_free = fn (buffer: [*c]git_buf) callconv(.C) void;
+pub const git_diff_format_email = fn (out: [*c]git_buf, diff: *git_diff, opts: [*c]const git_diff_format_email_options) callconv(.C) c_int;
+pub const git_diff_commit_as_email = fn (out: [*c]git_buf, repo: *git_repository, commit: *git_commit, patch_no: usize, total_patches: usize, flags: u32, diff_opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_diff_format_email_options_init = fn (opts: [*c]git_diff_format_email_options, version: c_uint) callconv(.C) c_int;
+pub const giterr_last = fn () callconv(.C) [*c]const git_error;
+pub const giterr_clear = fn () callconv(.C) void;
+pub const giterr_set_str = fn (error_class: c_int, string: [*c]const u8) callconv(.C) void;
+pub const giterr_set_oom = fn () callconv(.C) void;
+pub const git_index_add_frombuffer = fn (index: *git_index, entry: [*c]const git_index_entry, buffer: *const c_void, len: usize) callconv(.C) c_int;
+pub const git_object__size = fn (@"type": git_object_t) callconv(.C) usize;
+pub const git_remote_is_valid_name = fn (remote_name: [*c]const u8) callconv(.C) c_int;
+pub const git_reference_is_valid_name = fn (refname: [*c]const u8) callconv(.C) c_int;
+pub const git_tag_create_frombuffer = fn (oid: [*c]git_oid, repo: *git_repository, buffer: [*c]const u8, force: c_int) callconv(.C) c_int;
+pub const git_cred_free = fn (cred: [*c]git_credential) callconv(.C) void;
+pub const git_cred_has_username = fn (cred: [*c]git_credential) callconv(.C) c_int;
+pub const git_cred_get_username = fn (cred: [*c]git_credential) callconv(.C) [*c]const u8;
+pub const git_cred_userpass_plaintext_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, password: [*c]const u8) callconv(.C) c_int;
+pub const git_cred_default_new = fn (out: [*c][*c]git_credential) callconv(.C) c_int;
+pub const git_cred_username_new = fn (out: [*c][*c]git_credential, username: [*c]const u8) callconv(.C) c_int;
+pub const git_cred_ssh_key_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, publickey: [*c]const u8, privatekey: [*c]const u8, passphrase: [*c]const u8) callconv(.C) c_int;
+pub const git_cred_ssh_key_memory_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, publickey: [*c]const u8, privatekey: [*c]const u8, passphrase: [*c]const u8) callconv(.C) c_int;
+pub const git_cred_ssh_interactive_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, prompt_callback: git_credential_ssh_interactive_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_cred_ssh_key_from_agent = fn (out: [*c][*c]git_credential, username: [*c]const u8) callconv(.C) c_int;
+pub const git_cred_ssh_custom_new = fn (out: [*c][*c]git_credential, username: [*c]const u8, publickey: [*c]const u8, publickey_len: usize, sign_callback: git_credential_sign_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_cred_userpass = fn (out: [*c][*c]git_credential, url: [*c]const u8, user_from_url: [*c]const u8, allowed_types: c_uint, payload: *c_void) callconv(.C) c_int;
+pub const git_oid_iszero = fn (id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_oidarray_free = fn (array: [*c]git_oidarray) callconv(.C) void;
+pub const git_strarray_free = fn (array: [*c]git_strarray) callconv(.C) void;
+pub const git_blame_init_options = fn (opts: [*c]git_blame_options, version: c_uint) callconv(.C) c_int;
+pub const git_checkout_init_options = fn (opts: [*c]git_checkout_options, version: c_uint) callconv(.C) c_int;
+pub const git_cherrypick_init_options = fn (opts: [*c]git_cherrypick_options, version: c_uint) callconv(.C) c_int;
+pub const git_clone_init_options = fn (opts: [*c]git_clone_options, version: c_uint) callconv(.C) c_int;
+pub const git_describe_init_options = fn (opts: [*c]git_describe_options, version: c_uint) callconv(.C) c_int;
+pub const git_describe_init_format_options = fn (opts: [*c]git_describe_format_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_init_options = fn (opts: [*c]git_diff_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_find_init_options = fn (opts: [*c]git_diff_find_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_format_email_init_options = fn (opts: [*c]git_diff_format_email_options, version: c_uint) callconv(.C) c_int;
+pub const git_diff_patchid_init_options = fn (opts: [*c]git_diff_patchid_options, version: c_uint) callconv(.C) c_int;
+pub const git_fetch_init_options = fn (opts: [*c]git_fetch_options, version: c_uint) callconv(.C) c_int;
+pub const git_indexer_init_options = fn (opts: [*c]git_indexer_options, version: c_uint) callconv(.C) c_int;
+pub const git_merge_init_options = fn (opts: [*c]git_merge_options, version: c_uint) callconv(.C) c_int;
+pub const git_merge_file_init_input = fn (input: [*c]git_merge_file_input, version: c_uint) callconv(.C) c_int;
+pub const git_merge_file_init_options = fn (opts: [*c]git_merge_file_options, version: c_uint) callconv(.C) c_int;
+pub const git_proxy_init_options = fn (opts: [*c]git_proxy_options, version: c_uint) callconv(.C) c_int;
+pub const git_push_init_options = fn (opts: [*c]git_push_options, version: c_uint) callconv(.C) c_int;
+pub const git_rebase_init_options = fn (opts: [*c]git_rebase_options, version: c_uint) callconv(.C) c_int;
+pub const git_remote_create_init_options = fn (opts: [*c]git_remote_create_options, version: c_uint) callconv(.C) c_int;
+pub const git_repository_init_init_options = fn (opts: ?*git_repository_init_options, version: c_uint) callconv(.C) c_int;
+pub const git_revert_init_options = fn (opts: [*c]git_revert_options, version: c_uint) callconv(.C) c_int;
+pub const git_stash_apply_init_options = fn (opts: [*c]git_stash_apply_options, version: c_uint) callconv(.C) c_int;
+pub const git_status_init_options = fn (opts: [*c]git_status_options, version: c_uint) callconv(.C) c_int;
+pub const git_submodule_update_init_options = fn (opts: [*c]git_submodule_update_options, version: c_uint) callconv(.C) c_int;
+pub const git_worktree_add_init_options = fn (opts: [*c]git_worktree_add_options, version: c_uint) callconv(.C) c_int;
+pub const git_worktree_prune_init_options = fn (opts: [*c]git_worktree_prune_options, version: c_uint) callconv(.C) c_int;
+pub const git_email_create_from_diff = fn (out: [*c]git_buf, diff: *git_diff, patch_idx: usize, patch_count: usize, commit_id: [*c]const git_oid, summary: [*c]const u8, body: [*c]const u8, author: [*c]const git_signature, opts: [*c]const git_email_create_options) callconv(.C) c_int;
+pub const git_email_create_from_commit = fn (out: [*c]git_buf, commit: *git_commit, opts: [*c]const git_email_create_options) callconv(.C) c_int;
+pub const git_libgit2_init = fn () callconv(.C) c_int;
+pub const git_libgit2_shutdown = fn () callconv(.C) c_int;
+pub const git_graph_ahead_behind = fn (ahead: [*c]usize, behind: [*c]usize, repo: *git_repository, local: [*c]const git_oid, upstream: [*c]const git_oid) callconv(.C) c_int;
+pub const git_graph_descendant_of = fn (repo: *git_repository, commit: [*c]const git_oid, ancestor: [*c]const git_oid) callconv(.C) c_int;
+pub const git_graph_reachable_from_any = fn (repo: *git_repository, commit: [*c]const git_oid, descendant_array: [*c]const git_oid, length: usize) callconv(.C) c_int;
+pub const git_ignore_add_rule = fn (repo: *git_repository, rules: [*c]const u8) callconv(.C) c_int;
+pub const git_ignore_clear_internal_rules = fn (repo: *git_repository) callconv(.C) c_int;
+pub const git_ignore_path_is_ignored = fn (ignored: [*c]c_int, repo: *git_repository, path: [*c]const u8) callconv(.C) c_int;
+pub const git_mailmap_new = fn (out: [*c]*git_mailmap) callconv(.C) c_int;
+pub const git_mailmap_free = fn (mm: *git_mailmap) callconv(.C) void;
+pub const git_mailmap_add_entry = fn (mm: *git_mailmap, real_name: [*c]const u8, real_email: [*c]const u8, replace_name: [*c]const u8, replace_email: [*c]const u8) callconv(.C) c_int;
+pub const git_mailmap_from_buffer = fn (out: [*c]*git_mailmap, buf: [*c]const u8, len: usize) callconv(.C) c_int;
+pub const git_mailmap_from_repository = fn (out: [*c]*git_mailmap, repo: *git_repository) callconv(.C) c_int;
+pub const git_mailmap_resolve = fn (real_name: [*c][*c]const u8, real_email: [*c][*c]const u8, mm: *const git_mailmap, name: [*c]const u8, email: [*c]const u8) callconv(.C) c_int;
+pub const git_mailmap_resolve_signature = fn (out: [*c]?*git_signature, mm: *const git_mailmap, sig: [*c]const git_signature) callconv(.C) c_int;
+pub const git_message_prettify = fn (out: [*c]git_buf, message: [*c]const u8, strip_comments: c_int, comment_char: u8) callconv(.C) c_int;
+pub const git_message_trailers = fn (arr: [*c]git_message_trailer_array, message: [*c]const u8) callconv(.C) c_int;
+pub const git_message_trailer_array_free = fn (arr: [*c]git_message_trailer_array) callconv(.C) void;
+pub const git_note_iterator_new = fn (out: [*c]*git_note_iterator, repo: *git_repository, notes_ref: [*c]const u8) callconv(.C) c_int;
+pub const git_note_commit_iterator_new = fn (out: [*c]*git_note_iterator, notes_commit: *git_commit) callconv(.C) c_int;
+pub const git_note_iterator_free = fn (it: *git_note_iterator) callconv(.C) void;
+pub const git_note_next = fn (note_id: [*c]git_oid, annotated_id: [*c]git_oid, it: *git_note_iterator) callconv(.C) c_int;
+pub const git_note_read = fn (out: [*c]*git_note, repo: *git_repository, notes_ref: [*c]const u8, oid: [*c]const git_oid) callconv(.C) c_int;
+pub const git_note_commit_read = fn (out: [*c]*git_note, repo: *git_repository, notes_commit: *git_commit, oid: [*c]const git_oid) callconv(.C) c_int;
+pub const git_note_author = fn (note: *const git_note) callconv(.C) [*c]const git_signature;
+pub const git_note_committer = fn (note: *const git_note) callconv(.C) [*c]const git_signature;
+pub const git_note_message = fn (note: *const git_note) callconv(.C) [*c]const u8;
+pub const git_note_id = fn (note: *const git_note) callconv(.C) [*c]const git_oid;
+pub const git_note_create = fn (out: [*c]git_oid, repo: *git_repository, notes_ref: [*c]const u8, author: [*c]const git_signature, committer: [*c]const git_signature, oid: [*c]const git_oid, note: [*c]const u8, force: c_int) callconv(.C) c_int;
+pub const git_note_commit_create = fn (notes_commit_out: [*c]git_oid, notes_blob_out: [*c]git_oid, repo: *git_repository, parent: *git_commit, author: [*c]const git_signature, committer: [*c]const git_signature, oid: [*c]const git_oid, note: [*c]const u8, allow_note_overwrite: c_int) callconv(.C) c_int;
+pub const git_note_remove = fn (repo: *git_repository, notes_ref: [*c]const u8, author: [*c]const git_signature, committer: [*c]const git_signature, oid: [*c]const git_oid) callconv(.C) c_int;
+pub const git_note_commit_remove = fn (notes_commit_out: [*c]git_oid, repo: *git_repository, notes_commit: *git_commit, author: [*c]const git_signature, committer: [*c]const git_signature, oid: [*c]const git_oid) callconv(.C) c_int;
+pub const git_note_free = fn (note: *git_note) callconv(.C) void;
+pub const git_note_default_ref = fn (out: [*c]git_buf, repo: *git_repository) callconv(.C) c_int;
+pub const git_note_foreach = fn (repo: *git_repository, notes_ref: [*c]const u8, note_cb: git_note_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_odb_new = fn (out: [*c]*git_odb) callconv(.C) c_int;
+pub const git_odb_open = fn (out: [*c]*git_odb, objects_dir: [*c]const u8) callconv(.C) c_int;
+pub const git_odb_add_disk_alternate = fn (odb: *git_odb, path: [*c]const u8) callconv(.C) c_int;
+pub const git_odb_free = fn (db: *git_odb) callconv(.C) void;
+pub const git_odb_read = fn (out: [*c]*git_odb_object, db: *git_odb, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_odb_read_prefix = fn (out: [*c]*git_odb_object, db: *git_odb, short_id: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_odb_read_header = fn (len_out: [*c]usize, type_out: [*c]git_object_t, db: *git_odb, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_odb_exists = fn (db: *git_odb, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_odb_exists_prefix = fn (out: [*c]git_oid, db: *git_odb, short_id: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_odb_expand_ids = fn (db: *git_odb, ids: [*c]git_odb_expand_id, count: usize) callconv(.C) c_int;
+pub const git_odb_refresh = fn (db: *struct_git_odb) callconv(.C) c_int;
+pub const git_odb_foreach = fn (db: *git_odb, cb: git_odb_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_odb_write = fn (out: [*c]git_oid, odb: *git_odb, data: *const c_void, len: usize, @"type": git_object_t) callconv(.C) c_int;
+pub const git_odb_open_wstream = fn (out: [*c][*c]git_odb_stream, db: *git_odb, size: git_object_size_t, @"type": git_object_t) callconv(.C) c_int;
+pub const git_odb_stream_write = fn (stream: [*c]git_odb_stream, buffer: [*c]const u8, len: usize) callconv(.C) c_int;
+pub const git_odb_stream_finalize_write = fn (out: [*c]git_oid, stream: [*c]git_odb_stream) callconv(.C) c_int;
+pub const git_odb_stream_read = fn (stream: [*c]git_odb_stream, buffer: [*c]u8, len: usize) callconv(.C) c_int;
+pub const git_odb_stream_free = fn (stream: [*c]git_odb_stream) callconv(.C) void;
+pub const git_odb_open_rstream = fn (out: [*c][*c]git_odb_stream, len: [*c]usize, @"type": [*c]git_object_t, db: *git_odb, oid: [*c]const git_oid) callconv(.C) c_int;
+pub const git_odb_write_pack = fn (out: [*c][*c]git_odb_writepack, db: *git_odb, progress_cb: git_indexer_progress_cb, progress_payload: *c_void) callconv(.C) c_int;
+pub const git_odb_write_multi_pack_index = fn (db: *git_odb) callconv(.C) c_int;
+pub const git_odb_hash = fn (out: [*c]git_oid, data: *const c_void, len: usize, @"type": git_object_t) callconv(.C) c_int;
+pub const git_odb_hashfile = fn (out: [*c]git_oid, path: [*c]const u8, @"type": git_object_t) callconv(.C) c_int;
+pub const git_odb_object_dup = fn (dest: [*c]*git_odb_object, source: *git_odb_object) callconv(.C) c_int;
+pub const git_odb_object_free = fn (object: *git_odb_object) callconv(.C) void;
+pub const git_odb_object_id = fn (object: *git_odb_object) callconv(.C) [*c]const git_oid;
+pub const git_odb_object_data = fn (object: *git_odb_object) callconv(.C) *const c_void;
+pub const git_odb_object_size = fn (object: *git_odb_object) callconv(.C) usize;
+pub const git_odb_object_type = fn (object: *git_odb_object) callconv(.C) git_object_t;
+pub const git_odb_add_backend = fn (odb: *git_odb, backend: *git_odb_backend, priority: c_int) callconv(.C) c_int;
+pub const git_odb_add_alternate = fn (odb: *git_odb, backend: *git_odb_backend, priority: c_int) callconv(.C) c_int;
+pub const git_odb_num_backends = fn (odb: *git_odb) callconv(.C) usize;
+pub const git_odb_get_backend = fn (out: [*c]*git_odb_backend, odb: *git_odb, pos: usize) callconv(.C) c_int;
+pub const git_odb_set_commit_graph = fn (odb: *git_odb, cgraph: *git_commit_graph) callconv(.C) c_int;
+pub const git_odb_backend_pack = fn (out: [*c]*git_odb_backend, objects_dir: [*c]const u8) callconv(.C) c_int;
+pub const git_odb_backend_loose = fn (out: [*c]*git_odb_backend, objects_dir: [*c]const u8, compression_level: c_int, do_fsync: c_int, dir_mode: c_uint, file_mode: c_uint) callconv(.C) c_int;
+pub const git_odb_backend_one_pack = fn (out: [*c]*git_odb_backend, index_file: [*c]const u8) callconv(.C) c_int;
+pub const git_patch_owner = fn (patch: *const git_patch) callconv(.C) *git_repository;
+pub const git_patch_from_diff = fn (out: [*c]*git_patch, diff: *git_diff, idx: usize) callconv(.C) c_int;
+pub const git_patch_from_blobs = fn (out: [*c]*git_patch, old_blob: *const git_blob, old_as_path: [*c]const u8, new_blob: *const git_blob, new_as_path: [*c]const u8, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_patch_from_blob_and_buffer = fn (out: [*c]*git_patch, old_blob: *const git_blob, old_as_path: [*c]const u8, buffer: *const c_void, buffer_len: usize, buffer_as_path: [*c]const u8, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_patch_from_buffers = fn (out: [*c]*git_patch, old_buffer: *const c_void, old_len: usize, old_as_path: [*c]const u8, new_buffer: *const c_void, new_len: usize, new_as_path: [*c]const u8, opts: [*c]const git_diff_options) callconv(.C) c_int;
+pub const git_patch_free = fn (patch: *git_patch) callconv(.C) void;
+pub const git_patch_get_delta = fn (patch: *const git_patch) callconv(.C) [*c]const git_diff_delta;
+pub const git_patch_num_hunks = fn (patch: *const git_patch) callconv(.C) usize;
+pub const git_patch_line_stats = fn (total_context: [*c]usize, total_additions: [*c]usize, total_deletions: [*c]usize, patch: *const git_patch) callconv(.C) c_int;
+pub const git_patch_get_hunk = fn (out: [*c][*c]const git_diff_hunk, lines_in_hunk: [*c]usize, patch: *git_patch, hunk_idx: usize) callconv(.C) c_int;
+pub const git_patch_num_lines_in_hunk = fn (patch: *const git_patch, hunk_idx: usize) callconv(.C) c_int;
+pub const git_patch_get_line_in_hunk = fn (out: [*c][*c]const git_diff_line, patch: *git_patch, hunk_idx: usize, line_of_hunk: usize) callconv(.C) c_int;
+pub const git_patch_size = fn (patch: *git_patch, include_context: c_int, include_hunk_headers: c_int, include_file_headers: c_int) callconv(.C) usize;
+pub const git_patch_print = fn (patch: *git_patch, print_cb: git_diff_line_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_patch_to_buf = fn (out: [*c]git_buf, patch: *git_patch) callconv(.C) c_int;
+pub const git_pathspec_new = fn (out: [*c]*git_pathspec, pathspec: [*c]const git_strarray) callconv(.C) c_int;
+pub const git_pathspec_free = fn (ps: *git_pathspec) callconv(.C) void;
+pub const git_pathspec_matches_path = fn (ps: *const git_pathspec, flags: u32, path: [*c]const u8) callconv(.C) c_int;
+pub const git_pathspec_match_workdir = fn (out: [*c]*git_pathspec_match_list, repo: *git_repository, flags: u32, ps: *git_pathspec) callconv(.C) c_int;
+pub const git_pathspec_match_index = fn (out: [*c]*git_pathspec_match_list, index: *git_index, flags: u32, ps: *git_pathspec) callconv(.C) c_int;
+pub const git_pathspec_match_tree = fn (out: [*c]*git_pathspec_match_list, tree: *git_tree, flags: u32, ps: *git_pathspec) callconv(.C) c_int;
+pub const git_pathspec_match_diff = fn (out: [*c]*git_pathspec_match_list, diff: *git_diff, flags: u32, ps: *git_pathspec) callconv(.C) c_int;
+pub const git_pathspec_match_list_free = fn (m: *git_pathspec_match_list) callconv(.C) void;
+pub const git_pathspec_match_list_entrycount = fn (m: *const git_pathspec_match_list) callconv(.C) usize;
+pub const git_pathspec_match_list_entry = fn (m: *const git_pathspec_match_list, pos: usize) callconv(.C) [*c]const u8;
+pub const git_pathspec_match_list_diff_entry = fn (m: *const git_pathspec_match_list, pos: usize) callconv(.C) [*c]const git_diff_delta;
+pub const git_pathspec_match_list_failed_entrycount = fn (m: *const git_pathspec_match_list) callconv(.C) usize;
+pub const git_pathspec_match_list_failed_entry = fn (m: *const git_pathspec_match_list, pos: usize) callconv(.C) [*c]const u8;
+pub const git_refdb_new = fn (out: [*c]*git_refdb, repo: *git_repository) callconv(.C) c_int;
+pub const git_refdb_open = fn (out: [*c]*git_refdb, repo: *git_repository) callconv(.C) c_int;
+pub const git_refdb_compress = fn (refdb: *git_refdb) callconv(.C) c_int;
+pub const git_refdb_free = fn (refdb: *git_refdb) callconv(.C) void;
+pub const git_reflog_read = fn (out: [*c]*git_reflog, repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_reflog_write = fn (reflog: *git_reflog) callconv(.C) c_int;
+pub const git_reflog_append = fn (reflog: *git_reflog, id: [*c]const git_oid, committer: [*c]const git_signature, msg: [*c]const u8) callconv(.C) c_int;
+pub const git_reflog_rename = fn (repo: *git_repository, old_name: [*c]const u8, name: [*c]const u8) callconv(.C) c_int;
+pub const git_reflog_delete = fn (repo: *git_repository, name: [*c]const u8) callconv(.C) c_int;
+pub const git_reflog_entrycount = fn (reflog: *git_reflog) callconv(.C) usize;
+pub const git_reflog_entry_byindex = fn (reflog: *const git_reflog, idx: usize) callconv(.C) *const git_reflog_entry;
+pub const git_reflog_drop = fn (reflog: *git_reflog, idx: usize, rewrite_previous_entry: c_int) callconv(.C) c_int;
+pub const git_reflog_entry_id_old = fn (entry: *const git_reflog_entry) callconv(.C) [*c]const git_oid;
+pub const git_reflog_entry_id_new = fn (entry: *const git_reflog_entry) callconv(.C) [*c]const git_oid;
+pub const git_reflog_entry_committer = fn (entry: *const git_reflog_entry) callconv(.C) [*c]const git_signature;
+pub const git_reflog_entry_message = fn (entry: *const git_reflog_entry) callconv(.C) [*c]const u8;
+pub const git_reflog_free = fn (reflog: *git_reflog) callconv(.C) void;
+pub const git_reset = fn (repo: *git_repository, target: *const git_object, reset_type: git_reset_t, checkout_opts: [*c]const git_checkout_options) callconv(.C) c_int;
+pub const git_reset_from_annotated = fn (repo: *git_repository, commit: *const git_annotated_commit, reset_type: git_reset_t, checkout_opts: [*c]const git_checkout_options) callconv(.C) c_int;
+pub const git_reset_default = fn (repo: *git_repository, target: *const git_object, pathspecs: [*c]const git_strarray) callconv(.C) c_int;
+pub const git_revwalk_new = fn (out: [*c]*git_revwalk, repo: *git_repository) callconv(.C) c_int;
+pub const git_revwalk_reset = fn (walker: *git_revwalk) callconv(.C) c_int;
+pub const git_revwalk_push = fn (walk: *git_revwalk, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_revwalk_push_glob = fn (walk: *git_revwalk, glob: [*c]const u8) callconv(.C) c_int;
+pub const git_revwalk_push_head = fn (walk: *git_revwalk) callconv(.C) c_int;
+pub const git_revwalk_hide = fn (walk: *git_revwalk, commit_id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_revwalk_hide_glob = fn (walk: *git_revwalk, glob: [*c]const u8) callconv(.C) c_int;
+pub const git_revwalk_hide_head = fn (walk: *git_revwalk) callconv(.C) c_int;
+pub const git_revwalk_push_ref = fn (walk: *git_revwalk, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_revwalk_hide_ref = fn (walk: *git_revwalk, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_revwalk_next = fn (out: [*c]git_oid, walk: *git_revwalk) callconv(.C) c_int;
+pub const git_revwalk_sorting = fn (walk: *git_revwalk, sort_mode: c_uint) callconv(.C) c_int;
+pub const git_revwalk_push_range = fn (walk: *git_revwalk, range: [*c]const u8) callconv(.C) c_int;
+pub const git_revwalk_simplify_first_parent = fn (walk: *git_revwalk) callconv(.C) c_int;
+pub const git_revwalk_free = fn (walk: *git_revwalk) callconv(.C) void;
+pub const git_revwalk_repository = fn (walk: *git_revwalk) callconv(.C) *git_repository;
+pub const git_revwalk_add_hide_cb = fn (walk: *git_revwalk, hide_cb: git_revwalk_hide_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_signature_new = fn (out: [*c]?*git_signature, name: [*c]const u8, email: [*c]const u8, time: git_time_t, offset: c_int) callconv(.C) c_int;
+pub const git_signature_now = fn (out: [*c]?*git_signature, name: [*c]const u8, email: [*c]const u8) callconv(.C) c_int;
+pub const git_signature_default = fn (out: *?*git_signature, repo: *git_repository) callconv(.C) c_int;
+pub const git_signature_from_buffer = fn (out: [*c]?*git_signature, buf: [*c]const u8) callconv(.C) c_int;
+pub const git_signature_dup = fn (dest: [*c]?*git_signature, sig: [*c]const git_signature) callconv(.C) c_int;
+pub const git_signature_free = fn (sig: [*c]git_signature) callconv(.C) void;
+pub const git_tag_lookup = fn (out: [*c]*git_tag, repo: *git_repository, id: [*c]const git_oid) callconv(.C) c_int;
+pub const git_tag_lookup_prefix = fn (out: [*c]*git_tag, repo: *git_repository, id: [*c]const git_oid, len: usize) callconv(.C) c_int;
+pub const git_tag_free = fn (tag: *git_tag) callconv(.C) void;
+pub const git_tag_id = fn (tag: *const git_tag) callconv(.C) [*c]const git_oid;
+pub const git_tag_owner = fn (tag: *const git_tag) callconv(.C) *git_repository;
+pub const git_tag_target = fn (target_out: [*c]*git_object, tag: *const git_tag) callconv(.C) c_int;
+pub const git_tag_target_id = fn (tag: *const git_tag) callconv(.C) [*c]const git_oid;
+pub const git_tag_target_type = fn (tag: *const git_tag) callconv(.C) git_object_t;
+pub const git_tag_name = fn (tag: *const git_tag) callconv(.C) [*c]const u8;
+pub const git_tag_tagger = fn (tag: *const git_tag) callconv(.C) [*c]const git_signature;
+pub const git_tag_message = fn (tag: *const git_tag) callconv(.C) [*c]const u8;
+pub const git_tag_create = fn (oid: [*c]git_oid, repo: *git_repository, tag_name: [*c]const u8, target: *const git_object, tagger: [*c]const git_signature, message: [*c]const u8, force: c_int) callconv(.C) c_int;
+pub const git_tag_annotation_create = fn (oid: [*c]git_oid, repo: *git_repository, tag_name: [*c]const u8, target: *const git_object, tagger: [*c]const git_signature, message: [*c]const u8) callconv(.C) c_int;
+pub const git_tag_create_from_buffer = fn (oid: [*c]git_oid, repo: *git_repository, buffer: [*c]const u8, force: c_int) callconv(.C) c_int;
+pub const git_tag_create_lightweight = fn (oid: [*c]git_oid, repo: *git_repository, tag_name: [*c]const u8, target: *const git_object, force: c_int) callconv(.C) c_int;
+pub const git_tag_delete = fn (repo: *git_repository, tag_name: [*c]const u8) callconv(.C) c_int;
+pub const git_tag_list = fn (tag_names: [*c]git_strarray, repo: *git_repository) callconv(.C) c_int;
+pub const git_tag_list_match = fn (tag_names: [*c]git_strarray, pattern: [*c]const u8, repo: *git_repository) callconv(.C) c_int;
+pub const git_tag_foreach = fn (repo: *git_repository, callback: git_tag_foreach_cb, payload: *c_void) callconv(.C) c_int;
+pub const git_tag_peel = fn (tag_target_out: [*c]*git_object, tag: *const git_tag) callconv(.C) c_int;
+pub const git_tag_dup = fn (out: [*c]*git_tag, source: *git_tag) callconv(.C) c_int;
+pub const git_tag_name_is_valid = fn (valid: [*c]c_int, name: [*c]const u8) callconv(.C) c_int;
+pub const git_transaction_new = fn (out: [*c]*git_transaction, repo: *git_repository) callconv(.C) c_int;
+pub const git_transaction_lock_ref = fn (tx: *git_transaction, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_transaction_set_target = fn (tx: *git_transaction, refname: [*c]const u8, target: [*c]const git_oid, sig: [*c]const git_signature, msg: [*c]const u8) callconv(.C) c_int;
+pub const git_transaction_set_symbolic_target = fn (tx: *git_transaction, refname: [*c]const u8, target: [*c]const u8, sig: [*c]const git_signature, msg: [*c]const u8) callconv(.C) c_int;
+pub const git_transaction_set_reflog = fn (tx: *git_transaction, refname: [*c]const u8, reflog: *const git_reflog) callconv(.C) c_int;
+pub const git_transaction_remove = fn (tx: *git_transaction, refname: [*c]const u8) callconv(.C) c_int;
+pub const git_transaction_commit = fn (tx: *git_transaction) callconv(.C) c_int;
+pub const git_transaction_free = fn (tx: *git_transaction) callconv(.C) void;
diff --git a/src/deps/picohttp.zig b/src/deps/picohttp.zig
index cdd26b710..43f216cf4 100644
--- a/src/deps/picohttp.zig
+++ b/src/deps/picohttp.zig
@@ -1,7 +1,8 @@
const std = @import("std");
-const c = @cImport(@cInclude("picohttpparser.h"));
+const c = @import("picohttpparser.zig");
const ExactSizeMatcher = @import("../exact_size_matcher.zig").ExactSizeMatcher;
const Match = ExactSizeMatcher(2);
+const Output = @import("../global.zig").Output;
const fmt = std.fmt;
@@ -16,10 +17,18 @@ pub const Header = struct {
}
pub fn format(self: Header, comptime layout: []const u8, opts: fmt.FormatOptions, writer: anytype) !void {
- if (self.isMultiline()) {
- try fmt.format(writer, "{s}", .{self.value});
+ if (Output.enable_ansi_colors) {
+ if (self.isMultiline()) {
+ try fmt.format(writer, comptime Output.prettyFmt("<r><cyan>{s}", true), .{self.value});
+ } else {
+ try fmt.format(writer, comptime Output.prettyFmt("<r><cyan>{s}<r><d>: <r>{s}", true), .{ self.name, self.value });
+ }
} else {
- try fmt.format(writer, "{s}: {s}", .{ self.name, self.value });
+ if (self.isMultiline()) {
+ try fmt.format(writer, comptime Output.prettyFmt("<r><cyan>{s}", false), .{self.value});
+ } else {
+ try fmt.format(writer, comptime Output.prettyFmt("<r><cyan>{s}<r><d>: <r>{s}", false), .{ self.name, self.value });
+ }
}
}
@@ -143,7 +152,7 @@ pub const Response = struct {
);
return switch (rc) {
- -1 => error.BadResponse,
+ -1 => error.Malformed_HTTP_Response,
-2 => brk: {
offset.?.* += buf.len;
@@ -154,7 +163,7 @@ pub const Response = struct {
.status_code = @intCast(usize, status_code),
.status = status,
.headers = src[0..num_headers],
- .bytes_read = bytes_read,
+ .bytes_read = rc,
},
};
}
@@ -229,3 +238,5 @@ test "pico_http: parse headers" {
std.debug.print("{}\n", .{header});
}
}
+
+pub usingnamespace c;
diff --git a/src/deps/picohttpparser.zig b/src/deps/picohttpparser.zig
new file mode 100644
index 000000000..ea9ad9f3a
--- /dev/null
+++ b/src/deps/picohttpparser.zig
@@ -0,0 +1,21 @@
+pub usingnamespace @import("std").zig.c_builtins;
+
+pub const struct_phr_header = extern struct {
+ name: [*c]const u8,
+ name_len: usize,
+ value: [*c]const u8,
+ value_len: usize,
+};
+pub extern fn phr_parse_request(buf: [*c]const u8, len: usize, method: [*c][*c]const u8, method_len: [*c]usize, path: [*c][*c]const u8, path_len: [*c]usize, minor_version: [*c]c_int, headers: [*c]struct_phr_header, num_headers: [*c]usize, last_len: usize) c_int;
+pub extern fn phr_parse_response(_buf: [*c]const u8, len: usize, minor_version: [*c]c_int, status: [*c]c_int, msg: [*c][*c]const u8, msg_len: [*c]usize, headers: [*c]struct_phr_header, num_headers: [*c]usize, last_len: usize) c_int;
+pub extern fn phr_parse_headers(buf: [*c]const u8, len: usize, headers: [*c]struct_phr_header, num_headers: [*c]usize, last_len: usize) c_int;
+pub const struct_phr_chunked_decoder = extern struct {
+ bytes_left_in_chunk: usize,
+ consume_trailer: u8,
+ _hex_count: u8,
+ _state: u8,
+};
+pub extern fn phr_decode_chunked(decoder: *struct_phr_chunked_decoder, buf: [*]u8, bufsz: *usize) isize;
+pub extern fn phr_decode_chunked_is_in_data(decoder: *struct_phr_chunked_decoder) c_int;
+pub const phr_header = struct_phr_header;
+pub const phr_chunked_decoder = struct_phr_chunked_decoder;
diff --git a/src/deps/s2n-tls b/src/deps/s2n-tls
new file mode 160000
+Subproject 4c31c6e790f14b299bb16de550a2132666e69a6
diff --git a/src/deps/zig-clap/clap.zig b/src/deps/zig-clap/clap.zig
index e6bf56f08..907ece37f 100644
--- a/src/deps/zig-clap/clap.zig
+++ b/src/deps/zig-clap/clap.zig
@@ -63,6 +63,8 @@ pub fn Param(comptime Id: type) type {
/// Takes a string and parses it to a Param(Help).
/// This is the reverse of 'help' but for at single parameter only.
pub fn parseParam(line: []const u8) !Param(Help) {
+ @setEvalBranchQuota(9999);
+
var found_comma = false;
var it = mem.tokenize(u8, line, " \t");
var param_str = it.next() orelse return error.NoParamFound;
diff --git a/src/feature_flags.zig b/src/feature_flags.zig
index 777753561..1772cfb77 100644
--- a/src/feature_flags.zig
+++ b/src/feature_flags.zig
@@ -77,3 +77,22 @@ pub const force_macro = false;
pub const include_filename_in_jsx = false;
pub const verbose_analytics = false;
+
+pub const disable_compression_in_http_client = false;
+
+// Not sure why...
+// But this is slower!
+// ~/Build/throw
+// ❯ hyperfine "bun create react3 app --force --no-install" --prepare="rm -rf app"
+// Benchmark #1: bun create react3 app --force --no-install
+// Time (mean ± σ): 974.6 ms ± 6.8 ms [User: 170.5 ms, System: 798.3 ms]
+// Range (min … max): 960.8 ms … 984.6 ms 10 runs
+
+// ❯ mv /usr/local/opt/libgit2/lib/libgit2.dylib /usr/local/opt/libgit2/lib/libgit2.dylib.1
+
+// ~/Build/throw
+// ❯ hyperfine "bun create react3 app --force --no-install" --prepare="rm -rf app"
+// Benchmark #1: bun create react3 app --force --no-install
+// Time (mean ± σ): 306.7 ms ± 6.1 ms [User: 31.7 ms, System: 269.8 ms]
+// Range (min … max): 299.5 ms … 318.8 ms 10 runs
+pub const use_libgit2 = true;
diff --git a/src/global.zig b/src/global.zig
index 738b294b5..b55a64a8d 100644
--- a/src/global.zig
+++ b/src/global.zig
@@ -128,7 +128,14 @@ pub const Output = struct {
}
pub fn printElapsed(elapsed: f64) void {
- Output.prettyError("<r><d>[<b>{d:>.2}ms<r><d>]<r>", .{elapsed});
+ switch (elapsed) {
+ 0...1500 => {
+ Output.prettyError("<r><d>[<b>{d:>.2}ms<r><d>]<r>", .{elapsed});
+ },
+ else => {
+ Output.prettyError("<r><d>[<b>{d:>.2}s<r><d>]<r>", .{elapsed / 1000.0});
+ },
+ }
}
pub fn printStartEnd(start: i128, end: i128) void {
diff --git a/src/http.zig b/src/http.zig
index 5cc7376cb..4ceccfaa4 100644
--- a/src/http.zig
+++ b/src/http.zig
@@ -60,54 +60,7 @@ const ZigURL = @import("./query_string_map.zig").URL;
const HTTPStatusCode = u10;
const URLPath = @import("./http/url_path.zig");
-
-pub const Method = enum {
- GET,
- HEAD,
- PATCH,
- PUT,
- POST,
- OPTIONS,
- CONNECT,
- TRACE,
-
- pub fn which(str: []const u8) ?Method {
- if (str.len < 3) {
- return null;
- }
- const Match = strings.ExactSizeMatcher(2);
- // we already did the length check
- switch (Match.match(str[0..2])) {
- Match.case("GE"), Match.case("ge") => {
- return .GET;
- },
- Match.case("HE"), Match.case("he") => {
- return .HEAD;
- },
- Match.case("PA"), Match.case("pa") => {
- return .PATCH;
- },
- Match.case("PO"), Match.case("po") => {
- return .POST;
- },
- Match.case("PU"), Match.case("pu") => {
- return .PUT;
- },
- Match.case("OP"), Match.case("op") => {
- return .OPTIONS;
- },
- Match.case("CO"), Match.case("co") => {
- return .CONNECT;
- },
- Match.case("TR"), Match.case("tr") => {
- return .TRACE;
- },
- else => {
- return null;
- },
- }
- }
-};
+const Method = @import("./http/method.zig").Method;
pub const RequestContext = struct {
request: Request,
diff --git a/src/http/method.zig b/src/http/method.zig
new file mode 100644
index 000000000..f306e522e
--- /dev/null
+++ b/src/http/method.zig
@@ -0,0 +1,49 @@
+usingnamespace @import("../global.zig");
+
+pub const Method = enum {
+ GET,
+ HEAD,
+ PATCH,
+ PUT,
+ POST,
+ OPTIONS,
+ CONNECT,
+ TRACE,
+
+ pub fn which(str: []const u8) ?Method {
+ if (str.len < 3) {
+ return null;
+ }
+ const Match = strings.ExactSizeMatcher(2);
+ // we already did the length check
+ switch (Match.match(str[0..2])) {
+ Match.case("GE"), Match.case("ge") => {
+ return .GET;
+ },
+ Match.case("HE"), Match.case("he") => {
+ return .HEAD;
+ },
+ Match.case("PA"), Match.case("pa") => {
+ return .PATCH;
+ },
+ Match.case("PO"), Match.case("po") => {
+ return .POST;
+ },
+ Match.case("PU"), Match.case("pu") => {
+ return .PUT;
+ },
+ Match.case("OP"), Match.case("op") => {
+ return .OPTIONS;
+ },
+ Match.case("CO"), Match.case("co") => {
+ return .CONNECT;
+ },
+ Match.case("TR"), Match.case("tr") => {
+ return .TRACE;
+ },
+ else => {
+ return null;
+ },
+ }
+ }
+};
diff --git a/src/http_client.zig b/src/http_client.zig
index c14e5d1c2..bc1a82406 100644
--- a/src/http_client.zig
+++ b/src/http_client.zig
@@ -1,17 +1,18 @@
// @link "/Users/jarred/Code/bun/src/deps/zlib/libz.a"
-// @link "/Users/jarred/Code/bun/src/deps/picohttpparser.o"
-const picohttp = @import("picohttp");
+const picohttp = @import("./deps/picohttp.zig");
usingnamespace @import("./global.zig");
const std = @import("std");
const Headers = @import("./javascript/jsc/webcore/response.zig").Headers;
const URL = @import("./query_string_map.zig").URL;
-const Method = @import("./http.zig").Method;
-const iguanaTLS = @import("iguanaTLS");
+const Method = @import("./http/method.zig").Method;
+const iguanaTLS = @import("./deps/iguanaTLS/src/main.zig");
const Api = @import("./api/schema.zig").Api;
const Lock = @import("./lock.zig").Lock;
const HTTPClient = @This();
const SOCKET_FLAGS = os.SOCK_CLOEXEC;
+const S2n = @import("./s2n.zig");
+const Zlib = @import("./zlib.zig");
fn writeRequest(
comptime Writer: type,
@@ -40,6 +41,13 @@ url: URL,
allocator: *std.mem.Allocator,
verbose: bool = isTest,
tcp_client: tcp.Client = undefined,
+body_size: u32 = 0,
+read_count: u32 = 0,
+remaining_redirect_count: i8 = 127,
+redirect_buf: [2048]u8 = undefined,
+disable_shutdown: bool = false,
+timeout: u32 = 0,
+progress_node: ?*std.Progress.Node = null,
pub fn init(allocator: *std.mem.Allocator, method: Method, url: URL, header_entries: Headers.Entries, header_buf: string) HTTPClient {
return HTTPClient{
@@ -88,9 +96,11 @@ pub const Encoding = enum {
gzip,
deflate,
brotli,
+ chunked,
};
const content_encoding_hash = hashHeaderName("Content-Encoding");
+const transfer_encoding_header = hashHeaderName("Transfer-Encoding");
const host_header_name = "Host";
const content_length_header_name = "Content-Length";
@@ -98,15 +108,29 @@ const content_length_header_hash = hashHeaderName("Content-Length");
const connection_header = picohttp.Header{ .name = "Connection", .value = "close" };
const accept_header = picohttp.Header{ .name = "Accept", .value = "*/*" };
const accept_header_hash = hashHeaderName("Accept");
-const accept_encoding_header = picohttp.Header{ .name = "Accept-Encoding", .value = "deflate, gzip" };
+
+const accept_encoding_no_compression = "identity";
+const accept_encoding_compression = "deflate, gzip";
+const accept_encoding_header_compression = picohttp.Header{ .name = "Accept-Encoding", .value = accept_encoding_compression };
+const accept_encoding_header_no_compression = picohttp.Header{ .name = "Accept-Encoding", .value = accept_encoding_no_compression };
+
+const accept_encoding_header = if (FeatureFlags.disable_compression_in_http_client)
+ accept_encoding_header_no_compression
+else
+ accept_encoding_header_compression;
+
const accept_encoding_header_hash = hashHeaderName("Accept-Encoding");
+
const user_agent_header = picohttp.Header{ .name = "User-Agent", .value = "Bun.js " ++ Global.package_json_version };
const user_agent_header_hash = hashHeaderName("User-Agent");
+const location_header_hash = hashHeaderName("Location");
pub fn headerStr(this: *const HTTPClient, ptr: Api.StringPointer) string {
return this.header_buf[ptr.offset..][0..ptr.length];
}
+threadlocal var server_name_buf: [1024]u8 = undefined;
+
pub fn buildRequest(this: *const HTTPClient, body_len: usize) picohttp.Request {
var header_count: usize = 0;
var header_entries = this.header_entries.slice();
@@ -199,6 +223,14 @@ pub fn connect(
) !tcp.Client {
var client: tcp.Client = try tcp.Client.init(tcp.Domain.ip, .{ .close_on_exec = true });
const port = this.url.getPortAuto();
+ client.setNoDelay(true) catch {};
+ client.setReadBufferSize(http_req_buf.len) catch {};
+ client.setQuickACK(true) catch {};
+
+ if (this.timeout > 0) {
+ client.setReadTimeout(this.timeout) catch {};
+ client.setWriteTimeout(this.timeout) catch {};
+ }
// if (this.url.isLocalhost()) {
// try client.connect(
@@ -208,6 +240,7 @@ pub fn connect(
// } else if (this.url.isDomainName()) {
var stream = try std.net.tcpConnectToHost(default_allocator, this.url.hostname, port);
client.socket = std.x.os.Socket.from(stream.handle);
+
// }
// } else if (this.url.getIPv4Address()) |ip_addr| {
// try client.connect(std.x.os.Socket.Address(ip_addr, port));
@@ -222,19 +255,38 @@ pub fn connect(
threadlocal var http_req_buf: [65436]u8 = undefined;
-pub inline fn send(this: *HTTPClient, body: []const u8, body_out_str: *MutableString) !picohttp.Response {
- if (this.url.isHTTPS()) {
- return this.sendHTTPS(body, body_out_str);
- } else {
- return this.sendHTTP(body, body_out_str);
+pub fn send(this: *HTTPClient, body: []const u8, body_out_str: *MutableString) !picohttp.Response {
+ // this prevents stack overflow
+ redirect: while (this.remaining_redirect_count >= -1) {
+ if (this.url.isHTTPS()) {
+ return this.sendHTTPS(body, body_out_str) catch |err| {
+ switch (err) {
+ error.Redirect => {
+ this.remaining_redirect_count -= 1;
+ continue :redirect;
+ },
+ else => return err,
+ }
+ };
+ } else {
+ return this.sendHTTP(body, body_out_str) catch |err| {
+ switch (err) {
+ error.Redirect => {
+ this.remaining_redirect_count -= 1;
+ continue :redirect;
+ },
+ else => return err,
+ }
+ };
+ }
}
+
+ return error.TooManyRedirects;
}
pub fn sendHTTP(this: *HTTPClient, body: []const u8, body_out_str: *MutableString) !picohttp.Response {
this.tcp_client = try this.connect();
- defer {
- std.os.closeSocket(this.tcp_client.socket.fd);
- }
+ defer std.os.closeSocket(this.tcp_client.socket.fd);
var request = buildRequest(this, body.len);
if (this.verbose) {
Output.prettyErrorln("{s}", .{request});
@@ -255,12 +307,23 @@ pub fn sendHTTP(this: *HTTPClient, body: []const u8, body_out_str: *MutableStrin
var client_reader = this.tcp_client.reader(SOCKET_FLAGS);
- return this.processResponse(
- false,
- @TypeOf(client_reader),
- client_reader,
- body_out_str,
- );
+ if (this.progress_node == null) {
+ return this.processResponse(
+ false,
+ false,
+ @TypeOf(client_reader),
+ client_reader,
+ body_out_str,
+ );
+ } else {
+ return this.processResponse(
+ false,
+ true,
+ @TypeOf(client_reader),
+ client_reader,
+ body_out_str,
+ );
+ }
}
const ZlibPool = struct {
@@ -302,24 +365,28 @@ const ZlibPool = struct {
}
};
-pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime Client: type, client: Client, body_out_str: *MutableString) !picohttp.Response {
+pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime report_progress: bool, comptime Client: type, client: Client, body_out_str: *MutableString) !picohttp.Response {
var response: picohttp.Response = undefined;
-
+ var read_length: usize = 0;
{
- var req_buf_len: usize = 0;
+ var read_headers_up_to: usize = 0;
+
var req_buf_read: usize = std.math.maxInt(usize);
+ defer this.read_count += @intCast(u32, read_length);
- var response_length: usize = 0;
restart: while (req_buf_read != 0) {
- req_buf_read = try client.read(if (comptime is_https)
- &http_req_buf
- else
- http_req_buf[req_buf_len..]);
- req_buf_len += req_buf_read;
+ req_buf_read = try client.read(http_req_buf[read_length..]);
+ read_length += req_buf_read;
+ if (comptime report_progress) {
+ this.progress_node.?.activate();
+ this.progress_node.?.setCompletedItems(read_length);
+ this.progress_node.?.context.maybeRefresh();
+ }
- var request_buffer = http_req_buf[0..req_buf_len];
+ var request_buffer = http_req_buf[0..read_length];
+ read_headers_up_to = if (read_headers_up_to > read_length) read_length else read_headers_up_to;
- response = picohttp.Response.parseParts(request_buffer, &response_headers_buf, &response_length) catch |err| {
+ response = picohttp.Response.parseParts(request_buffer, &response_headers_buf, &read_headers_up_to) catch |err| {
switch (err) {
error.ShortRead => {
continue :restart;
@@ -336,17 +403,21 @@ pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime Clie
body_out_str.reset();
var content_length: u32 = 0;
var encoding = Encoding.identity;
+ var transfer_encoding = Encoding.identity;
- for (response.headers) |header| {
- if (this.verbose) {
- Output.prettyErrorln("Response: {s}", .{response});
- }
+ var location: string = "";
+
+ if (this.verbose) {
+ Output.prettyErrorln("Response: {s}", .{response});
+ }
+ for (response.headers) |header| {
switch (hashHeaderName(header.name)) {
content_length_header_hash => {
content_length = std.fmt.parseInt(u32, header.value, 10) catch 0;
try body_out_str.inflate(content_length);
body_out_str.list.expandToCapacity();
+ this.body_size = content_length;
},
content_encoding_hash => {
if (strings.eqlComptime(header.value, "gzip")) {
@@ -354,21 +425,160 @@ pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime Clie
} else if (strings.eqlComptime(header.value, "deflate")) {
encoding = Encoding.deflate;
} else if (!strings.eqlComptime(header.value, "identity")) {
- return error.UnsupportedEncoding;
+ return error.UnsupportedContentEncoding;
+ }
+ },
+ transfer_encoding_header => {
+ if (strings.eqlComptime(header.value, "gzip")) {
+ transfer_encoding = Encoding.gzip;
+ } else if (strings.eqlComptime(header.value, "deflate")) {
+ transfer_encoding = Encoding.deflate;
+ } else if (strings.eqlComptime(header.value, "identity")) {
+ transfer_encoding = Encoding.identity;
+ } else if (strings.eqlComptime(header.value, "chunked")) {
+ transfer_encoding = Encoding.chunked;
+ } else {
+ return error.UnsupportedTransferEncoding;
}
},
+ location_header_hash => {
+ location = header.value;
+ },
+
else => {},
}
}
+ if (location.len > 0 and this.remaining_redirect_count > 0) {
+ switch (response.status_code) {
+ 302, 301, 307, 308, 303 => {
+ if (strings.indexOf(location, "://")) |i| {
+ const protocol_name = location[0..i];
+ if (strings.eqlComptime(protocol_name, "http") or strings.eqlComptime(protocol_name, "https")) {} else {
+ return error.UnsupportedRedirectProtocol;
+ }
+
+ std.mem.copy(u8, &this.redirect_buf, location);
+ this.url = URL.parse(location);
+ } else {
+ const original_url = this.url;
+ this.url = URL.parse(std.fmt.bufPrint(
+ &this.redirect_buf,
+ "{s}://{s}{s}",
+ .{ original_url.displayProtocol(), original_url.displayHostname(), location },
+ ) catch return error.RedirectURLTooLong);
+ }
+
+ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303
+ if (response.status_code == 303) {
+ this.method = .GET;
+ }
+
+ return error.Redirect;
+ },
+ else => {},
+ }
+ }
+
+ if (transfer_encoding == Encoding.chunked) {
+ var decoder = std.mem.zeroes(picohttp.phr_chunked_decoder);
+ var buffer_: *MutableString = body_out_str;
+
+ switch (encoding) {
+ Encoding.gzip, Encoding.deflate => {
+ if (!ZlibPool.loaded) {
+ ZlibPool.instance = ZlibPool.init(default_allocator);
+ ZlibPool.loaded = true;
+ }
+
+ buffer_ = try ZlibPool.instance.get();
+ },
+ else => {},
+ }
+
+ var buffer = buffer_.*;
+
+ var last_read: usize = 0;
+ {
+ var remainder = http_req_buf[@intCast(usize, response.bytes_read)..read_length];
+ last_read = remainder.len;
+ try buffer.inflate(std.math.max(remainder.len, 2048));
+ buffer.list.expandToCapacity();
+ std.mem.copy(u8, buffer.list.items, remainder);
+ }
+
+ // set consume_trailer to 1 to discard the trailing header
+ // using content-encoding per chunk is not supported
+ decoder.consume_trailer = 1;
+
+ // these variable names are terrible
+ // it's copypasta from https://github.com/h2o/picohttpparser#phr_decode_chunked
+ // (but ported from C -> zig)
+ var rret: usize = 0;
+ var rsize: usize = last_read;
+ var pret: isize = picohttp.phr_decode_chunked(&decoder, buffer.list.items.ptr, &rsize);
+ var total_size = rsize;
+
+ while (pret == -2) {
+ if (buffer.list.items[total_size..].len < @intCast(usize, decoder.bytes_left_in_chunk)) {
+ try buffer.inflate(total_size + @intCast(usize, decoder.bytes_left_in_chunk));
+ buffer.list.expandToCapacity();
+ var slice = buffer.list.items[total_size..];
+ }
+
+ rret = try client.read(buffer.list.items[total_size..]);
+
+ if (rret == 0) {
+ return error.ChunkedEncodingError;
+ }
+
+ rsize = rret;
+ pret = picohttp.phr_decode_chunked(&decoder, buffer.list.items[total_size..].ptr, &rsize);
+ if (pret == -1) return error.ChunkedEncodingParseError;
+
+ total_size += rsize;
+
+ if (comptime report_progress) {
+ this.progress_node.?.activate();
+ this.progress_node.?.setCompletedItems(total_size);
+ this.progress_node.?.context.maybeRefresh();
+ }
+ }
+
+ buffer.list.shrinkRetainingCapacity(total_size);
+ buffer_.* = buffer;
+
+ switch (encoding) {
+ Encoding.gzip, Encoding.deflate => {
+ body_out_str.list.expandToCapacity();
+ defer ZlibPool.instance.put(buffer_) catch unreachable;
+ var reader = try Zlib.ZlibReaderArrayList.init(buffer.list.items, &body_out_str.list, default_allocator);
+ reader.readAll() catch |err| {
+ if (reader.errorMessage()) |msg| {
+ Output.prettyErrorln("<r><red>Zlib error<r>: <b>{s}<r>", .{msg});
+ Output.flush();
+ }
+ return err;
+ };
+ },
+ else => {},
+ }
+
+ if (comptime report_progress) {
+ this.progress_node.?.activate();
+ this.progress_node.?.setCompletedItems(body_out_str.list.items.len);
+ this.progress_node.?.context.maybeRefresh();
+ }
+
+ this.body_size = @intCast(u32, body_out_str.list.items.len);
+ return response;
+ }
+
if (content_length > 0) {
var remaining_content_length = content_length;
- var remainder = http_req_buf[@intCast(u32, response.bytes_read)..];
+ var remainder = http_req_buf[@intCast(usize, response.bytes_read)..read_length];
remainder = remainder[0..std.math.min(remainder.len, content_length)];
-
- const Zlib = @import("./zlib.zig");
-
- var buffer: *MutableString = body_out_str;
+ var buffer_: *MutableString = body_out_str;
switch (encoding) {
Encoding.gzip, Encoding.deflate => {
@@ -377,40 +587,54 @@ pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime Clie
ZlibPool.loaded = true;
}
- buffer = try ZlibPool.instance.get();
- if (buffer.list.capacity < remaining_content_length) {
- try buffer.list.ensureUnusedCapacity(buffer.allocator, remaining_content_length);
+ buffer_ = try ZlibPool.instance.get();
+ if (buffer_.list.capacity < remaining_content_length) {
+ try buffer_.list.ensureUnusedCapacity(buffer_.allocator, remaining_content_length);
}
- buffer.list.items = buffer.list.items.ptr[0..remaining_content_length];
+ buffer_.list.items = buffer_.list.items.ptr[0..remaining_content_length];
},
else => {},
}
+ var buffer = buffer_.*;
var body_size: usize = 0;
- if (comptime !is_https) {
- if (remainder.len > 0) {
- std.mem.copy(u8, buffer.list.items, remainder);
- body_size = @intCast(u32, remainder.len);
- remaining_content_length -= @intCast(u32, remainder.len);
- }
+ if (remainder.len > 0) {
+ std.mem.copy(u8, buffer.list.items, remainder);
+ body_size = remainder.len;
+ this.read_count += @intCast(u32, body_size);
+ remaining_content_length -= @intCast(u32, remainder.len);
}
while (remaining_content_length > 0) {
const size = @intCast(u32, try client.read(
buffer.list.items[body_size..],
));
+ this.read_count += size;
if (size == 0) break;
body_size += size;
remaining_content_length -= size;
+
+ if (comptime report_progress) {
+ this.progress_node.?.activate();
+ this.progress_node.?.setCompletedItems(body_size);
+ this.progress_node.?.context.maybeRefresh();
+ }
+ }
+
+ if (comptime report_progress) {
+ this.progress_node.?.activate();
+ this.progress_node.?.setCompletedItems(body_size);
+ this.progress_node.?.context.maybeRefresh();
}
buffer.list.shrinkRetainingCapacity(body_size);
+ buffer_.* = buffer;
switch (encoding) {
Encoding.gzip, Encoding.deflate => {
body_out_str.list.expandToCapacity();
- defer ZlibPool.instance.put(buffer) catch unreachable;
+ defer ZlibPool.instance.put(buffer_) catch unreachable;
var reader = try Zlib.ZlibReaderArrayList.init(buffer.list.items, &body_out_str.list, default_allocator);
reader.readAll() catch |err| {
if (reader.errorMessage()) |msg| {
@@ -424,36 +648,27 @@ pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime Clie
}
}
+ if (comptime report_progress) {
+ this.progress_node.?.activate();
+ this.progress_node.?.setCompletedItems(body_out_str.list.items.len);
+ this.progress_node.?.context.maybeRefresh();
+ }
+
return response;
}
pub fn sendHTTPS(this: *HTTPClient, body_str: []const u8, body_out_str: *MutableString) !picohttp.Response {
var connection = try this.connect();
+ S2n.boot(default_allocator);
+ const hostname = this.url.displayHostname();
+ std.mem.copy(u8, &server_name_buf, hostname);
+ server_name_buf[hostname.len] = 0;
+ var server_name = server_name_buf[0..hostname.len :0];
- var arena = std.heap.ArenaAllocator.init(this.allocator);
- defer arena.deinit();
-
- var rand = blk: {
- var seed: [std.rand.DefaultCsprng.secret_seed_length]u8 = undefined;
- try std.os.getrandom(&seed);
- break :blk &std.rand.DefaultCsprng.init(seed).random;
- };
-
- var client = try iguanaTLS.client_connect(
- .{
- .rand = rand,
- .temp_allocator = &arena.allocator,
- .reader = connection.reader(SOCKET_FLAGS),
- .writer = connection.writer(SOCKET_FLAGS),
- .cert_verifier = .none,
- .protocols = &[_][]const u8{"http/1.1"},
- },
- this.url.hostname,
- );
-
- defer {
- client.close_notify() catch {};
- }
+ var client = S2n.Connection.init(connection.socket.fd);
+ try client.start(server_name);
+ client.disable_shutdown = this.disable_shutdown;
+ defer client.close() catch {};
var request = buildRequest(this, body_str.len);
if (this.verbose) {
@@ -475,9 +690,11 @@ pub fn sendHTTPS(this: *HTTPClient, body_str: []const u8, body_out_str: *Mutable
try client_writer.writeAll(body);
}
- var reader = client.reader();
-
- return try this.processResponse(true, @TypeOf(&reader), &reader, body_out_str);
+ if (this.progress_node == null) {
+ return try this.processResponse(true, false, @TypeOf(&client), &client, body_out_str);
+ } else {
+ return try this.processResponse(true, true, @TypeOf(&client), &client, body_out_str);
+ }
}
// zig test src/http_client.zig --test-filter "sendHTTP - only" -lc -lc++ /Users/jarred/Code/bun/src/deps/zlib/libz.a /Users/jarred/Code/bun/src/deps/picohttpparser.o --cache-dir /Users/jarred/Code/bun/zig-cache --global-cache-dir /Users/jarred/.cache/zig --name bun --pkg-begin clap /Users/jarred/Code/bun/src/deps/zig-clap/clap.zig --pkg-end --pkg-begin picohttp /Users/jarred/Code/bun/src/deps/picohttp.zig --pkg-end --pkg-begin iguanaTLS /Users/jarred/Code/bun/src/deps/iguanaTLS/src/main.zig --pkg-end -I /Users/jarred/Code/bun/src/deps -I /Users/jarred/Code/bun/src/deps/mimalloc -I /usr/local/opt/icu4c/include -L src/deps/mimalloc -L /usr/local/opt/icu4c/lib --main-pkg-path /Users/jarred/Code/bun --enable-cache -femit-bin=zig-out/bin/test --test-no-exec
@@ -568,7 +785,6 @@ test "sendHTTPS - identity" {
try std.testing.expectEqualStrings(body_out_str.list.items, @embedFile("fixtures_example.com.html"));
}
-// zig test src/http_client.zig --test-filter "sendHTTPS - gzip" -lc -lc++ /Users/jarred/Code/bun/src/deps/zlib/libz.a /Users/jarred/Code/bun/src/deps/picohttpparser.o --cache-dir /Users/jarred/Code/bun/zig-cache --global-cache-dir /Users/jarred/.cache/zig --name bun --pkg-begin clap /Users/jarred/Code/bun/src/deps/zig-clap/clap.zig --pkg-end --pkg-begin picohttp /Users/jarred/Code/bun/src/deps/picohttp.zig --pkg-end --pkg-begin iguanaTLS /Users/jarred/Code/bun/src/deps/iguanaTLS/src/main.zig --pkg-end -I /Users/jarred/Code/bun/src/deps -I /Users/jarred/Code/bun/src/deps/mimalloc -I /usr/local/opt/icu4c/include -L src/deps/mimalloc -L /usr/local/opt/icu4c/lib --main-pkg-path /Users/jarred/Code/bun --enable-cache -femit-bin=zig-out/bin/test --test-no-exec
test "sendHTTPS - gzip" {
Output.initTest();
defer Output.flush();
@@ -596,4 +812,61 @@ test "sendHTTPS - gzip" {
try std.testing.expectEqualStrings(body_out_str.list.items, @embedFile("fixtures_example.com.html"));
}
+// zig test src/http_client.zig --test-filter "sendHTTPS - deflate" -lc -lc++ /Users/jarred/Code/bun/src/deps/zlib/libz.a /Users/jarred/Code/bun/src/deps/picohttpparser.o --cache-dir /Users/jarred/Code/bun/zig-cache --global-cache-dir /Users/jarred/.cache/zig --name bun --pkg-begin clap /Users/jarred/Code/bun/src/deps/zig-clap/clap.zig --pkg-end --pkg-begin picohttp /Users/jarred/Code/bun/src/deps/picohttp.zig --pkg-end --pkg-begin iguanaTLS /Users/jarred/Code/bun/src/deps/iguanaTLS/src/main.zig --pkg-end -I /Users/jarred/Code/bun/src/deps -I /Users/jarred/Code/bun/src/deps/mimalloc -I /usr/local/opt/icu4c/include -L src/deps/mimalloc -L /usr/local/opt/icu4c/lib --main-pkg-path /Users/jarred/Code/bun --enable-cache -femit-bin=zig-out/bin/test
+test "sendHTTPS - deflate" {
+ Output.initTest();
+ defer Output.flush();
+
+ var headers = try std.heap.c_allocator.create(Headers);
+ headers.* = Headers{
+ .entries = @TypeOf(headers.entries){},
+ .buf = @TypeOf(headers.buf){},
+ .used = 0,
+ .allocator = std.heap.c_allocator,
+ };
+
+ headers.appendHeader("Accept-Encoding", "deflate", false, false, false);
+
+ var client = HTTPClient.init(
+ std.heap.c_allocator,
+ .GET,
+ URL.parse("https://example.com/"),
+ headers.entries,
+ headers.buf.items,
+ );
+ var body_out_str = try MutableString.init(std.heap.c_allocator, 0);
+ var response = try client.sendHTTPS("", &body_out_str);
+ try std.testing.expectEqual(response.status_code, 200);
+ try std.testing.expectEqualStrings(body_out_str.list.items, @embedFile("fixtures_example.com.html"));
+}
+
// zig test src/http_client.zig --test-filter "sendHTTP" -lc -lc++ /Users/jarred/Code/bun/src/deps/zlib/libz.a /Users/jarred/Code/bun/src/deps/picohttpparser.o --cache-dir /Users/jarred/Code/bun/zig-cache --global-cache-dir /Users/jarred/.cache/zig --name bun --pkg-begin clap /Users/jarred/Code/bun/src/deps/zig-clap/clap.zig --pkg-end --pkg-begin picohttp /Users/jarred/Code/bun/src/deps/picohttp.zig --pkg-end --pkg-begin iguanaTLS /Users/jarred/Code/bun/src/deps/iguanaTLS/src/main.zig --pkg-end -I /Users/jarred/Code/bun/src/deps -I /Users/jarred/Code/bun/src/deps/mimalloc -I /usr/local/opt/icu4c/include -L src/deps/mimalloc -L /usr/local/opt/icu4c/lib --main-pkg-path /Users/jarred/Code/bun --enable-cache -femit-bin=zig-out/bin/test
+
+test "send - redirect" {
+ Output.initTest();
+ defer Output.flush();
+
+ var headers = try std.heap.c_allocator.create(Headers);
+ headers.* = Headers{
+ .entries = @TypeOf(headers.entries){},
+ .buf = @TypeOf(headers.buf){},
+ .used = 0,
+ .allocator = std.heap.c_allocator,
+ };
+
+ headers.appendHeader("Accept-Encoding", "gzip", false, false, false);
+
+ var client = HTTPClient.init(
+ std.heap.c_allocator,
+ .GET,
+ URL.parse("https://www.bun.sh/"),
+ headers.entries,
+ headers.buf.items,
+ );
+ try std.testing.expectEqualStrings(client.url.hostname, "www.bun.sh");
+ var body_out_str = try MutableString.init(std.heap.c_allocator, 0);
+ var response = try client.send("", &body_out_str);
+ try std.testing.expectEqual(response.status_code, 200);
+ try std.testing.expectEqual(client.url.hostname, "bun.sh");
+ try std.testing.expectEqualStrings(body_out_str.list.items, @embedFile("fixtures_example.com.html"));
+}
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig
index ff399990e..76be74d84 100644
--- a/src/javascript/jsc/webcore/response.zig
+++ b/src/javascript/jsc/webcore/response.zig
@@ -6,6 +6,8 @@ usingnamespace @import("../javascript.zig");
usingnamespace @import("../bindings/bindings.zig");
const ZigURL = @import("../../../query_string_map.zig").URL;
const HTTPClient = @import("../../../http_client.zig");
+const Method = @import("../../../http/method.zig").Method;
+
const picohttp = @import("picohttp");
pub const Response = struct {
pub const Class = NewClass(
@@ -500,7 +502,7 @@ pub const Fetch = struct {
defer js.JSStringRelease(string_ref);
var method_name_buf: [16]u8 = undefined;
var method_name = method_name_buf[0..js.JSStringGetUTF8CString(string_ref, &method_name_buf, method_name_buf.len)];
- http_client.method = http.Method.which(method_name) orelse http_client.method;
+ http_client.method = Method.which(method_name) orelse http_client.method;
}
}
},
diff --git a/src/js_printer.zig b/src/js_printer.zig
index 95e8ea22c..cc6f71fa7 100644
--- a/src/js_printer.zig
+++ b/src/js_printer.zig
@@ -81,11 +81,11 @@ pub const SourceMapChunk = struct {
pub const Options = struct {
transform_imports: bool = true,
- to_module_ref: js_ast.Ref,
+ to_module_ref: js_ast.Ref = js_ast.Ref.None,
require_ref: ?js_ast.Ref = null,
indent: usize = 0,
externals: []u32 = &[_]u32{},
- runtime_imports: runtime.Runtime.Imports,
+ runtime_imports: runtime.Runtime.Imports = runtime.Runtime.Imports{},
module_hash: u32 = 0,
source_path: ?fs.Path = null,
bundle_export_ref: ?js_ast.Ref = null,
@@ -219,6 +219,7 @@ pub fn NewPrinter(
comptime rewrite_esm_to_cjs: bool,
comptime bun: bool,
comptime is_inside_bundle: bool,
+ comptime is_json: bool,
) type {
return struct {
symbols: Symbol.Map,
@@ -506,7 +507,11 @@ pub fn NewPrinter(
}
}
- pub fn bestQuoteCharForString(p: *Printer, str: anytype, allow_backtick: bool) u8 {
+ pub fn bestQuoteCharForString(p: *Printer, str: anytype, allow_backtick_: bool) u8 {
+ if (comptime is_json) return '"';
+
+ const allow_backtick = allow_backtick_;
+
var single_cost: usize = 0;
var double_cost: usize = 0;
var backtick_cost: usize = 0;
@@ -867,6 +872,8 @@ pub fn NewPrinter(
}
pub inline fn canPrintIdentifier(p: *Printer, name: string) bool {
+ if (comptime is_json) return false;
+
if (comptime ascii_only) {
return js_lexer.isIdentifier(name) and !strings.containsNonBmpCodePoint(name);
} else {
@@ -889,8 +896,6 @@ pub fn NewPrinter(
pub fn printExpr(p: *Printer, expr: Expr, level: Level, _flags: ExprFlag) void {
p.addSourceMapping(expr.loc);
var flags = _flags;
- debugl("<printExpr>");
- defer debugl("</printExpr>");
switch (expr.data) {
.e_missing => {},
@@ -1321,7 +1326,10 @@ pub fn NewPrinter(
},
.e_object => |e| {
const n = p.writer.written;
- const wrap = p.stmt_start == n or p.arrow_expr_start == n;
+ const wrap = if (comptime is_json)
+ false
+ else
+ p.stmt_start == n or p.arrow_expr_start == n;
if (wrap) {
p.print("(");
@@ -1879,7 +1887,7 @@ pub fn NewPrinter(
// While each of those property keys are ASCII, a subset of ASCII is valid as the start of an identifier
// "=" and ":" are not valid
// So we need to check
- if (js_lexer.isIdentifier(key.utf8)) {
+ if ((comptime !is_json) and js_lexer.isIdentifier(key.utf8)) {
p.print(key.utf8);
} else {
allow_shorthand = false;
@@ -4087,7 +4095,7 @@ pub fn printAst(
comptime LinkerType: type,
linker: ?*LinkerType,
) !usize {
- const PrinterType = NewPrinter(false, Writer, LinkerType, false, false, false);
+ const PrinterType = NewPrinter(false, Writer, LinkerType, false, false, false, false);
var writer = _writer;
var printer = try PrinterType.init(
@@ -4122,6 +4130,39 @@ pub fn printAst(
return @intCast(usize, std.math.max(printer.writer.written, 0));
}
+pub fn printJSON(
+ comptime Writer: type,
+ _writer: Writer,
+ expr: Expr,
+ source: *const logger.Source,
+) !usize {
+ const PrinterType = NewPrinter(false, Writer, void, false, false, false, true);
+ var writer = _writer;
+ var s_expr = S.SExpr{ .value = expr };
+ var stmt = Stmt{ .loc = logger.Loc.Empty, .data = .{
+ .s_expr = &s_expr,
+ } };
+ var stmts = &[_]js_ast.Stmt{stmt};
+ var parts = &[_]js_ast.Part{.{ .stmts = stmts }};
+ const ast = Ast.initTest(parts);
+ var printer = try PrinterType.init(
+ writer,
+ &ast,
+ source,
+ std.mem.zeroes(Symbol.Map),
+ .{},
+ null,
+ );
+
+ printer.printExpr(expr, Level.lowest, ExprFlag{});
+ if (printer.writer.getError()) {} else |err| {
+ return err;
+ }
+ try printer.writer.done();
+
+ return @intCast(usize, std.math.max(printer.writer.written, 0));
+}
+
pub fn printCommonJS(
comptime Writer: type,
_writer: Writer,
@@ -4133,7 +4174,7 @@ pub fn printCommonJS(
comptime LinkerType: type,
linker: ?*LinkerType,
) !usize {
- const PrinterType = NewPrinter(false, Writer, LinkerType, true, false, false);
+ const PrinterType = NewPrinter(false, Writer, LinkerType, true, false, false, false);
var writer = _writer;
var printer = try PrinterType.init(
writer,
@@ -4191,7 +4232,7 @@ pub fn printCommonJSThreaded(
comptime getPos: fn (ctx: GetPosType) anyerror!u64,
end_off_ptr: *u32,
) !WriteResult {
- const PrinterType = NewPrinter(false, Writer, LinkerType, true, false, true);
+ const PrinterType = NewPrinter(false, Writer, LinkerType, true, false, true, false);
var writer = _writer;
var printer = try PrinterType.init(
writer,
diff --git a/src/libarchive/libarchive-bindings.zig b/src/libarchive/libarchive-bindings.zig
new file mode 100644
index 000000000..d449642ef
--- /dev/null
+++ b/src/libarchive/libarchive-bindings.zig
@@ -0,0 +1,628 @@
+pub const wchar_t = c_int;
+pub const la_int64_t = i64;
+pub const la_ssize_t = isize;
+pub const struct_archive = opaque {};
+pub const struct_archive_entry = opaque {};
+pub const archive = struct_archive;
+pub const archive_entry = struct_archive_entry;
+const mode_t = @import("std").c.mode_t;
+
+pub const FileType = enum(mode_t) {
+ regular = 0100000,
+ link = 0120000,
+ socket = 0140000,
+ character_oriented_device = 0020000,
+ block_oriented_device = 0060000,
+ directory = 0040000,
+ fifo = 0010000,
+};
+
+pub const SymlinkType = enum(c_int) {
+ none = 0,
+ file = 1,
+ directory = 2,
+};
+
+pub const ARCHIVE_VERSION_ONLY_STRING = "3.5.3dev";
+pub const ARCHIVE_VERSION_STRING = "libarchive " ++ ARCHIVE_VERSION_ONLY_STRING;
+pub const ARCHIVE_EOF = @as(c_int, 1);
+pub const ARCHIVE_OK = @as(c_int, 0);
+pub const ARCHIVE_RETRY = -@as(c_int, 10);
+pub const ARCHIVE_WARN = -@as(c_int, 20);
+pub const ARCHIVE_FAILED = -@as(c_int, 25);
+pub const ARCHIVE_FATAL = -@as(c_int, 30);
+pub const ARCHIVE_FILTER_NONE = @as(c_int, 0);
+pub const ARCHIVE_FILTER_GZIP = @as(c_int, 1);
+pub const ARCHIVE_FILTER_BZIP2 = @as(c_int, 2);
+pub const ARCHIVE_FILTER_COMPRESS = @as(c_int, 3);
+pub const ARCHIVE_FILTER_PROGRAM = @as(c_int, 4);
+pub const ARCHIVE_FILTER_LZMA = @as(c_int, 5);
+pub const ARCHIVE_FILTER_XZ = @as(c_int, 6);
+pub const ARCHIVE_FILTER_UU = @as(c_int, 7);
+pub const ARCHIVE_FILTER_RPM = @as(c_int, 8);
+pub const ARCHIVE_FILTER_LZIP = @as(c_int, 9);
+pub const ARCHIVE_FILTER_LRZIP = @as(c_int, 10);
+pub const ARCHIVE_FILTER_LZOP = @as(c_int, 11);
+pub const ARCHIVE_FILTER_GRZIP = @as(c_int, 12);
+pub const ARCHIVE_FILTER_LZ4 = @as(c_int, 13);
+pub const ARCHIVE_FILTER_ZSTD = @as(c_int, 14);
+pub const ARCHIVE_COMPRESSION_NONE = ARCHIVE_FILTER_NONE;
+pub const ARCHIVE_COMPRESSION_GZIP = ARCHIVE_FILTER_GZIP;
+pub const ARCHIVE_COMPRESSION_BZIP2 = ARCHIVE_FILTER_BZIP2;
+pub const ARCHIVE_COMPRESSION_COMPRESS = ARCHIVE_FILTER_COMPRESS;
+pub const ARCHIVE_COMPRESSION_PROGRAM = ARCHIVE_FILTER_PROGRAM;
+pub const ARCHIVE_COMPRESSION_LZMA = ARCHIVE_FILTER_LZMA;
+pub const ARCHIVE_COMPRESSION_XZ = ARCHIVE_FILTER_XZ;
+pub const ARCHIVE_COMPRESSION_UU = ARCHIVE_FILTER_UU;
+pub const ARCHIVE_COMPRESSION_RPM = ARCHIVE_FILTER_RPM;
+pub const ARCHIVE_COMPRESSION_LZIP = ARCHIVE_FILTER_LZIP;
+pub const ARCHIVE_COMPRESSION_LRZIP = ARCHIVE_FILTER_LRZIP;
+pub const ARCHIVE_FORMAT_BASE_MASK = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xff0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_CPIO = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x10000, .hexadecimal);
+pub const ARCHIVE_FORMAT_CPIO_POSIX = ARCHIVE_FORMAT_CPIO | @as(c_int, 1);
+pub const ARCHIVE_FORMAT_CPIO_BIN_LE = ARCHIVE_FORMAT_CPIO | @as(c_int, 2);
+pub const ARCHIVE_FORMAT_CPIO_BIN_BE = ARCHIVE_FORMAT_CPIO | @as(c_int, 3);
+pub const ARCHIVE_FORMAT_CPIO_SVR4_NOCRC = ARCHIVE_FORMAT_CPIO | @as(c_int, 4);
+pub const ARCHIVE_FORMAT_CPIO_SVR4_CRC = ARCHIVE_FORMAT_CPIO | @as(c_int, 5);
+pub const ARCHIVE_FORMAT_CPIO_AFIO_LARGE = ARCHIVE_FORMAT_CPIO | @as(c_int, 6);
+pub const ARCHIVE_FORMAT_CPIO_PWB = ARCHIVE_FORMAT_CPIO | @as(c_int, 7);
+pub const ARCHIVE_FORMAT_SHAR = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000, .hexadecimal);
+pub const ARCHIVE_FORMAT_SHAR_BASE = ARCHIVE_FORMAT_SHAR | @as(c_int, 1);
+pub const ARCHIVE_FORMAT_SHAR_DUMP = ARCHIVE_FORMAT_SHAR | @as(c_int, 2);
+pub const ARCHIVE_FORMAT_TAR = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x30000, .hexadecimal);
+pub const ARCHIVE_FORMAT_TAR_USTAR = ARCHIVE_FORMAT_TAR | @as(c_int, 1);
+pub const ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE = ARCHIVE_FORMAT_TAR | @as(c_int, 2);
+pub const ARCHIVE_FORMAT_TAR_PAX_RESTRICTED = ARCHIVE_FORMAT_TAR | @as(c_int, 3);
+pub const ARCHIVE_FORMAT_TAR_GNUTAR = ARCHIVE_FORMAT_TAR | @as(c_int, 4);
+pub const ARCHIVE_FORMAT_ISO9660 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x40000, .hexadecimal);
+pub const ARCHIVE_FORMAT_ISO9660_ROCKRIDGE = ARCHIVE_FORMAT_ISO9660 | @as(c_int, 1);
+pub const ARCHIVE_FORMAT_ZIP = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x50000, .hexadecimal);
+pub const ARCHIVE_FORMAT_EMPTY = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x60000, .hexadecimal);
+pub const ARCHIVE_FORMAT_AR = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x70000, .hexadecimal);
+pub const ARCHIVE_FORMAT_AR_GNU = ARCHIVE_FORMAT_AR | @as(c_int, 1);
+pub const ARCHIVE_FORMAT_AR_BSD = ARCHIVE_FORMAT_AR | @as(c_int, 2);
+pub const ARCHIVE_FORMAT_MTREE = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x80000, .hexadecimal);
+pub const ARCHIVE_FORMAT_RAW = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x90000, .hexadecimal);
+pub const ARCHIVE_FORMAT_XAR = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xA0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_LHA = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xB0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_CAB = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xC0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_RAR = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xD0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_7ZIP = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xE0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_WARC = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0xF0000, .hexadecimal);
+pub const ARCHIVE_FORMAT_RAR_V5 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x100000, .hexadecimal);
+pub const ARCHIVE_READ_FORMAT_CAPS_NONE = @as(c_int, 0);
+pub const ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA = @as(c_int, 1) << @as(c_int, 0);
+pub const ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA = @as(c_int, 1) << @as(c_int, 1);
+pub const ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED = -@as(c_int, 2);
+pub const ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW = -@as(c_int, 1);
+pub const ARCHIVE_EXTRACT_OWNER = @as(c_int, 0x0001);
+pub const ARCHIVE_EXTRACT_PERM = @as(c_int, 0x0002);
+pub const ARCHIVE_EXTRACT_TIME = @as(c_int, 0x0004);
+pub const ARCHIVE_EXTRACT_NO_OVERWRITE = @as(c_int, 0x0008);
+pub const ARCHIVE_EXTRACT_UNLINK = @as(c_int, 0x0010);
+pub const ARCHIVE_EXTRACT_ACL = @as(c_int, 0x0020);
+pub const ARCHIVE_EXTRACT_FFLAGS = @as(c_int, 0x0040);
+pub const ARCHIVE_EXTRACT_XATTR = @as(c_int, 0x0080);
+pub const ARCHIVE_EXTRACT_SECURE_SYMLINKS = @as(c_int, 0x0100);
+pub const ARCHIVE_EXTRACT_SECURE_NODOTDOT = @as(c_int, 0x0200);
+pub const ARCHIVE_EXTRACT_NO_AUTODIR = @as(c_int, 0x0400);
+pub const ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER = @as(c_int, 0x0800);
+pub const ARCHIVE_EXTRACT_SPARSE = @as(c_int, 0x1000);
+pub const ARCHIVE_EXTRACT_MAC_METADATA = @as(c_int, 0x2000);
+pub const ARCHIVE_EXTRACT_NO_HFS_COMPRESSION = @as(c_int, 0x4000);
+pub const ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x8000, .hexadecimal);
+pub const ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x10000, .hexadecimal);
+pub const ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000, .hexadecimal);
+pub const ARCHIVE_EXTRACT_SAFE_WRITES = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x40000, .hexadecimal);
+pub const ARCHIVE_READDISK_RESTORE_ATIME = @as(c_int, 0x0001);
+pub const ARCHIVE_READDISK_HONOR_NODUMP = @as(c_int, 0x0002);
+pub const ARCHIVE_READDISK_MAC_COPYFILE = @as(c_int, 0x0004);
+pub const ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS = @as(c_int, 0x0008);
+pub const ARCHIVE_READDISK_NO_XATTR = @as(c_int, 0x0010);
+pub const ARCHIVE_READDISK_NO_ACL = @as(c_int, 0x0020);
+pub const ARCHIVE_READDISK_NO_FFLAGS = @as(c_int, 0x0040);
+pub const ARCHIVE_MATCH_MTIME = @as(c_int, 0x0100);
+pub const ARCHIVE_MATCH_CTIME = @as(c_int, 0x0200);
+pub const ARCHIVE_MATCH_NEWER = @as(c_int, 0x0001);
+pub const ARCHIVE_MATCH_OLDER = @as(c_int, 0x0002);
+pub const ARCHIVE_MATCH_EQUAL = @as(c_int, 0x0010);
+
+pub extern fn archive_version_number() c_int;
+pub extern fn archive_version_string() [*c]const u8;
+pub extern fn archive_version_details() [*c]const u8;
+pub extern fn archive_zlib_version() [*c]const u8;
+pub extern fn archive_liblzma_version() [*c]const u8;
+pub extern fn archive_bzlib_version() [*c]const u8;
+pub extern fn archive_liblz4_version() [*c]const u8;
+pub extern fn archive_libzstd_version() [*c]const u8;
+
+pub const archive_read_callback = fn (*struct_archive, *c_void, [*c]*const c_void) callconv(.C) la_ssize_t;
+pub const archive_skip_callback = fn (*struct_archive, *c_void, la_int64_t) callconv(.C) la_int64_t;
+pub const archive_seek_callback = fn (*struct_archive, *c_void, la_int64_t, c_int) callconv(.C) la_int64_t;
+pub const archive_write_callback = fn (*struct_archive, *c_void, ?*const c_void, usize) callconv(.C) la_ssize_t;
+pub const archive_open_callback = fn (*struct_archive, *c_void) callconv(.C) c_int;
+pub const archive_close_callback = fn (*struct_archive, *c_void) callconv(.C) c_int;
+pub const archive_free_callback = fn (*struct_archive, *c_void) callconv(.C) c_int;
+pub const archive_switch_callback = fn (*struct_archive, *c_void, ?*c_void) callconv(.C) c_int;
+pub const archive_passphrase_callback = fn (*struct_archive, *c_void) callconv(.C) [*c]const u8;
+pub extern fn archive_read_new() *struct_archive;
+pub extern fn archive_read_support_compression_all(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_bzip2(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_compress(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_gzip(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_lzip(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_lzma(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_none(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_program(*struct_archive, command: [*c]const u8) c_int;
+pub extern fn archive_read_support_compression_program_signature(*struct_archive, [*c]const u8, ?*const c_void, usize) c_int;
+pub extern fn archive_read_support_compression_rpm(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_uu(*struct_archive) c_int;
+pub extern fn archive_read_support_compression_xz(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_all(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_by_code(*struct_archive, c_int) c_int;
+pub extern fn archive_read_support_filter_bzip2(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_compress(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_gzip(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_grzip(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_lrzip(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_lz4(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_lzip(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_lzma(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_lzop(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_none(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_program(*struct_archive, command: [*c]const u8) c_int;
+pub extern fn archive_read_support_filter_program_signature(*struct_archive, [*c]const u8, ?*const c_void, usize) c_int;
+pub extern fn archive_read_support_filter_rpm(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_uu(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_xz(*struct_archive) c_int;
+pub extern fn archive_read_support_filter_zstd(*struct_archive) c_int;
+pub extern fn archive_read_support_format_7zip(*struct_archive) c_int;
+pub extern fn archive_read_support_format_all(*struct_archive) c_int;
+pub extern fn archive_read_support_format_ar(*struct_archive) c_int;
+pub extern fn archive_read_support_format_by_code(*struct_archive, c_int) c_int;
+pub extern fn archive_read_support_format_cab(*struct_archive) c_int;
+pub extern fn archive_read_support_format_cpio(*struct_archive) c_int;
+pub extern fn archive_read_support_format_empty(*struct_archive) c_int;
+pub extern fn archive_read_support_format_gnutar(*struct_archive) c_int;
+pub extern fn archive_read_support_format_iso9660(*struct_archive) c_int;
+pub extern fn archive_read_support_format_lha(*struct_archive) c_int;
+pub extern fn archive_read_support_format_mtree(*struct_archive) c_int;
+pub extern fn archive_read_support_format_rar(*struct_archive) c_int;
+pub extern fn archive_read_support_format_rar5(*struct_archive) c_int;
+pub extern fn archive_read_support_format_raw(*struct_archive) c_int;
+pub extern fn archive_read_support_format_tar(*struct_archive) c_int;
+pub extern fn archive_read_support_format_warc(*struct_archive) c_int;
+pub extern fn archive_read_support_format_xar(*struct_archive) c_int;
+pub extern fn archive_read_support_format_zip(*struct_archive) c_int;
+pub extern fn archive_read_support_format_zip_streamable(*struct_archive) c_int;
+pub extern fn archive_read_support_format_zip_seekable(*struct_archive) c_int;
+pub extern fn archive_read_set_format(*struct_archive, c_int) c_int;
+pub extern fn archive_read_append_filter(*struct_archive, c_int) c_int;
+pub extern fn archive_read_append_filter_program(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_read_append_filter_program_signature(*struct_archive, [*c]const u8, ?*const c_void, usize) c_int;
+pub extern fn archive_read_set_open_callback(*struct_archive, ?archive_open_callback) c_int;
+pub extern fn archive_read_set_read_callback(*struct_archive, ?archive_read_callback) c_int;
+pub extern fn archive_read_set_seek_callback(*struct_archive, ?archive_seek_callback) c_int;
+pub extern fn archive_read_set_skip_callback(*struct_archive, ?archive_skip_callback) c_int;
+pub extern fn archive_read_set_close_callback(*struct_archive, ?archive_close_callback) c_int;
+pub extern fn archive_read_set_switch_callback(*struct_archive, ?archive_switch_callback) c_int;
+pub extern fn archive_read_set_callback_data(*struct_archive, ?*c_void) c_int;
+pub extern fn archive_read_set_callback_data2(*struct_archive, ?*c_void, c_uint) c_int;
+pub extern fn archive_read_add_callback_data(*struct_archive, ?*c_void, c_uint) c_int;
+pub extern fn archive_read_append_callback_data(*struct_archive, ?*c_void) c_int;
+pub extern fn archive_read_prepend_callback_data(*struct_archive, ?*c_void) c_int;
+pub extern fn archive_read_open1(*struct_archive) c_int;
+pub extern fn archive_read_open(*struct_archive, _client_data: ?*c_void, ?archive_open_callback, ?archive_read_callback, ?archive_close_callback) c_int;
+pub extern fn archive_read_open2(*struct_archive, _client_data: ?*c_void, ?archive_open_callback, ?archive_read_callback, ?archive_skip_callback, ?archive_close_callback) c_int;
+pub extern fn archive_read_open_filename(*struct_archive, _filename: [*c]const u8, _block_size: usize) c_int;
+pub extern fn archive_read_open_filenames(*struct_archive, _filenames: [*c][*c]const u8, _block_size: usize) c_int;
+pub extern fn archive_read_open_filename_w(*struct_archive, _filename: [*c]const wchar_t, _block_size: usize) c_int;
+pub extern fn archive_read_open_file(*struct_archive, _filename: [*c]const u8, _block_size: usize) c_int;
+pub extern fn archive_read_open_memory(*struct_archive, buff: ?*const c_void, size: usize) c_int;
+pub extern fn archive_read_open_memory2(a: *struct_archive, buff: ?*const c_void, size: usize, read_size: usize) c_int;
+pub extern fn archive_read_open_fd(*struct_archive, _fd: c_int, _block_size: usize) c_int;
+pub extern fn archive_read_open_FILE(*struct_archive, _file: [*c]FILE) c_int;
+pub extern fn archive_read_next_header(*struct_archive, [*c]*struct_archive_entry) c_int;
+pub extern fn archive_read_next_header2(*struct_archive, *struct_archive_entry) c_int;
+pub extern fn archive_read_header_position(*struct_archive) la_int64_t;
+pub extern fn archive_read_has_encrypted_entries(*struct_archive) c_int;
+pub extern fn archive_read_format_capabilities(*struct_archive) c_int;
+pub extern fn archive_read_data(*struct_archive, ?*c_void, usize) la_ssize_t;
+pub extern fn archive_seek_data(*struct_archive, la_int64_t, c_int) la_int64_t;
+pub extern fn archive_read_data_block(a: *struct_archive, buff: [*c]*const c_void, size: [*c]usize, offset: [*c]la_int64_t) c_int;
+pub extern fn archive_read_data_skip(*struct_archive) c_int;
+pub extern fn archive_read_data_into_fd(*struct_archive, fd: c_int) c_int;
+pub extern fn archive_read_set_format_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int;
+pub extern fn archive_read_set_filter_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int;
+pub extern fn archive_read_set_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int;
+pub extern fn archive_read_set_options(_a: *struct_archive, opts: [*c]const u8) c_int;
+pub extern fn archive_read_add_passphrase(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_read_set_passphrase_callback(*struct_archive, client_data: ?*c_void, ?archive_passphrase_callback) c_int;
+pub extern fn archive_read_extract(*struct_archive, *struct_archive_entry, flags: c_int) c_int;
+pub extern fn archive_read_extract2(*struct_archive, *struct_archive_entry, *struct_archive) c_int;
+pub extern fn archive_read_extract_set_progress_callback(*struct_archive, _progress_func: ?fn (?*c_void) callconv(.C) void, _user_data: ?*c_void) void;
+pub extern fn archive_read_extract_set_skip_file(*struct_archive, la_int64_t, la_int64_t) void;
+pub extern fn archive_read_close(*struct_archive) c_int;
+pub extern fn archive_read_free(*struct_archive) c_int;
+pub extern fn archive_read_finish(*struct_archive) c_int;
+pub extern fn archive_write_new() *struct_archive;
+pub extern fn archive_write_set_bytes_per_block(*struct_archive, bytes_per_block: c_int) c_int;
+pub extern fn archive_write_get_bytes_per_block(*struct_archive) c_int;
+pub extern fn archive_write_set_bytes_in_last_block(*struct_archive, bytes_in_last_block: c_int) c_int;
+pub extern fn archive_write_get_bytes_in_last_block(*struct_archive) c_int;
+pub extern fn archive_write_set_skip_file(*struct_archive, la_int64_t, la_int64_t) c_int;
+pub extern fn archive_write_set_compression_bzip2(*struct_archive) c_int;
+pub extern fn archive_write_set_compression_compress(*struct_archive) c_int;
+pub extern fn archive_write_set_compression_gzip(*struct_archive) c_int;
+pub extern fn archive_write_set_compression_lzip(*struct_archive) c_int;
+pub extern fn archive_write_set_compression_lzma(*struct_archive) c_int;
+pub extern fn archive_write_set_compression_none(*struct_archive) c_int;
+pub extern fn archive_write_set_compression_program(*struct_archive, cmd: [*c]const u8) c_int;
+pub extern fn archive_write_set_compression_xz(*struct_archive) c_int;
+pub extern fn archive_write_add_filter(*struct_archive, filter_code: c_int) c_int;
+pub extern fn archive_write_add_filter_by_name(*struct_archive, name: [*c]const u8) c_int;
+pub extern fn archive_write_add_filter_b64encode(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_bzip2(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_compress(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_grzip(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_gzip(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_lrzip(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_lz4(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_lzip(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_lzma(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_lzop(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_none(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_program(*struct_archive, cmd: [*c]const u8) c_int;
+pub extern fn archive_write_add_filter_uuencode(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_xz(*struct_archive) c_int;
+pub extern fn archive_write_add_filter_zstd(*struct_archive) c_int;
+pub extern fn archive_write_set_format(*struct_archive, format_code: c_int) c_int;
+pub extern fn archive_write_set_format_by_name(*struct_archive, name: [*c]const u8) c_int;
+pub extern fn archive_write_set_format_7zip(*struct_archive) c_int;
+pub extern fn archive_write_set_format_ar_bsd(*struct_archive) c_int;
+pub extern fn archive_write_set_format_ar_svr4(*struct_archive) c_int;
+pub extern fn archive_write_set_format_cpio(*struct_archive) c_int;
+pub extern fn archive_write_set_format_cpio_bin(*struct_archive) c_int;
+pub extern fn archive_write_set_format_cpio_newc(*struct_archive) c_int;
+pub extern fn archive_write_set_format_cpio_odc(*struct_archive) c_int;
+pub extern fn archive_write_set_format_cpio_pwb(*struct_archive) c_int;
+pub extern fn archive_write_set_format_gnutar(*struct_archive) c_int;
+pub extern fn archive_write_set_format_iso9660(*struct_archive) c_int;
+pub extern fn archive_write_set_format_mtree(*struct_archive) c_int;
+pub extern fn archive_write_set_format_mtree_classic(*struct_archive) c_int;
+pub extern fn archive_write_set_format_pax(*struct_archive) c_int;
+pub extern fn archive_write_set_format_pax_restricted(*struct_archive) c_int;
+pub extern fn archive_write_set_format_raw(*struct_archive) c_int;
+pub extern fn archive_write_set_format_shar(*struct_archive) c_int;
+pub extern fn archive_write_set_format_shar_dump(*struct_archive) c_int;
+pub extern fn archive_write_set_format_ustar(*struct_archive) c_int;
+pub extern fn archive_write_set_format_v7tar(*struct_archive) c_int;
+pub extern fn archive_write_set_format_warc(*struct_archive) c_int;
+pub extern fn archive_write_set_format_xar(*struct_archive) c_int;
+pub extern fn archive_write_set_format_zip(*struct_archive) c_int;
+pub extern fn archive_write_set_format_filter_by_ext(a: *struct_archive, filename: [*c]const u8) c_int;
+pub extern fn archive_write_set_format_filter_by_ext_def(a: *struct_archive, filename: [*c]const u8, def_ext: [*c]const u8) c_int;
+pub extern fn archive_write_zip_set_compression_deflate(*struct_archive) c_int;
+pub extern fn archive_write_zip_set_compression_store(*struct_archive) c_int;
+pub extern fn archive_write_open(*struct_archive, ?*c_void, ?archive_open_callback, ?archive_write_callback, ?archive_close_callback) c_int;
+pub extern fn archive_write_open2(*struct_archive, ?*c_void, ?archive_open_callback, ?archive_write_callback, ?archive_close_callback, ?archive_free_callback) c_int;
+pub extern fn archive_write_open_fd(*struct_archive, _fd: c_int) c_int;
+pub extern fn archive_write_open_filename(*struct_archive, _file: [*c]const u8) c_int;
+pub extern fn archive_write_open_filename_w(*struct_archive, _file: [*c]const wchar_t) c_int;
+pub extern fn archive_write_open_file(*struct_archive, _file: [*c]const u8) c_int;
+pub extern fn archive_write_open_FILE(*struct_archive, [*c]FILE) c_int;
+pub extern fn archive_write_open_memory(*struct_archive, _buffer: ?*c_void, _buffSize: usize, _used: [*c]usize) c_int;
+pub extern fn archive_write_header(*struct_archive, *struct_archive_entry) c_int;
+pub extern fn archive_write_data(*struct_archive, ?*const c_void, usize) la_ssize_t;
+pub extern fn archive_write_data_block(*struct_archive, ?*const c_void, usize, la_int64_t) la_ssize_t;
+pub extern fn archive_write_finish_entry(*struct_archive) c_int;
+pub extern fn archive_write_close(*struct_archive) c_int;
+pub extern fn archive_write_fail(*struct_archive) c_int;
+pub extern fn archive_write_free(*struct_archive) c_int;
+pub extern fn archive_write_finish(*struct_archive) c_int;
+pub extern fn archive_write_set_format_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int;
+pub extern fn archive_write_set_filter_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int;
+pub extern fn archive_write_set_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int;
+pub extern fn archive_write_set_options(_a: *struct_archive, opts: [*c]const u8) c_int;
+pub extern fn archive_write_set_passphrase(_a: *struct_archive, p: [*c]const u8) c_int;
+pub extern fn archive_write_set_passphrase_callback(*struct_archive, client_data: ?*c_void, ?archive_passphrase_callback) c_int;
+pub extern fn archive_write_disk_new() *struct_archive;
+pub extern fn archive_write_disk_set_skip_file(*struct_archive, la_int64_t, la_int64_t) c_int;
+pub extern fn archive_write_disk_set_options(*struct_archive, flags: c_int) c_int;
+pub extern fn archive_write_disk_set_standard_lookup(*struct_archive) c_int;
+pub extern fn archive_write_disk_set_group_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, [*c]const u8, la_int64_t) callconv(.C) la_int64_t, ?fn (?*c_void) callconv(.C) void) c_int;
+pub extern fn archive_write_disk_set_user_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, [*c]const u8, la_int64_t) callconv(.C) la_int64_t, ?fn (?*c_void) callconv(.C) void) c_int;
+pub extern fn archive_write_disk_gid(*struct_archive, [*c]const u8, la_int64_t) la_int64_t;
+pub extern fn archive_write_disk_uid(*struct_archive, [*c]const u8, la_int64_t) la_int64_t;
+pub extern fn archive_read_disk_new() *struct_archive;
+pub extern fn archive_read_disk_set_symlink_logical(*struct_archive) c_int;
+pub extern fn archive_read_disk_set_symlink_physical(*struct_archive) c_int;
+pub extern fn archive_read_disk_set_symlink_hybrid(*struct_archive) c_int;
+pub extern fn archive_read_disk_entry_from_file(*struct_archive, *struct_archive_entry, c_int, [*c]const struct_stat) c_int;
+pub extern fn archive_read_disk_gname(*struct_archive, la_int64_t) [*c]const u8;
+pub extern fn archive_read_disk_uname(*struct_archive, la_int64_t) [*c]const u8;
+pub extern fn archive_read_disk_set_standard_lookup(*struct_archive) c_int;
+pub extern fn archive_read_disk_set_gname_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, la_int64_t) callconv(.C) [*c]const u8, ?fn (?*c_void) callconv(.C) void) c_int;
+pub extern fn archive_read_disk_set_uname_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, la_int64_t) callconv(.C) [*c]const u8, ?fn (?*c_void) callconv(.C) void) c_int;
+pub extern fn archive_read_disk_open(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_read_disk_open_w(*struct_archive, [*c]const wchar_t) c_int;
+pub extern fn archive_read_disk_descend(*struct_archive) c_int;
+pub extern fn archive_read_disk_can_descend(*struct_archive) c_int;
+pub extern fn archive_read_disk_current_filesystem(*struct_archive) c_int;
+pub extern fn archive_read_disk_current_filesystem_is_synthetic(*struct_archive) c_int;
+pub extern fn archive_read_disk_current_filesystem_is_remote(*struct_archive) c_int;
+pub extern fn archive_read_disk_set_atime_restored(*struct_archive) c_int;
+pub extern fn archive_read_disk_set_behavior(*struct_archive, flags: c_int) c_int;
+pub extern fn archive_read_disk_set_matching(*struct_archive, _matching: *struct_archive, _excluded_func: ?fn (*struct_archive, ?*c_void, *struct_archive_entry) callconv(.C) void, _client_data: ?*c_void) c_int;
+pub extern fn archive_read_disk_set_metadata_filter_callback(*struct_archive, _metadata_filter_func: ?fn (*struct_archive, ?*c_void, *struct_archive_entry) callconv(.C) c_int, _client_data: ?*c_void) c_int;
+pub extern fn archive_free(*struct_archive) c_int;
+pub extern fn archive_filter_count(*struct_archive) c_int;
+pub extern fn archive_filter_bytes(*struct_archive, c_int) la_int64_t;
+pub extern fn archive_filter_code(*struct_archive, c_int) c_int;
+pub extern fn archive_filter_name(*struct_archive, c_int) [*c]const u8;
+pub extern fn archive_position_compressed(*struct_archive) la_int64_t;
+pub extern fn archive_position_uncompressed(*struct_archive) la_int64_t;
+pub extern fn archive_compression_name(*struct_archive) [*c]const u8;
+pub extern fn archive_compression(*struct_archive) c_int;
+pub extern fn archive_errno(*struct_archive) c_int;
+pub extern fn archive_error_string(*struct_archive) [*c]const u8;
+pub extern fn archive_format_name(*struct_archive) [*c]const u8;
+pub extern fn archive_format(*struct_archive) c_int;
+pub extern fn archive_clear_error(*struct_archive) void;
+pub extern fn archive_set_error(*struct_archive, _err: c_int, fmt: [*c]const u8, ...) void;
+pub extern fn archive_copy_error(dest: *struct_archive, src: *struct_archive) void;
+pub extern fn archive_file_count(*struct_archive) c_int;
+pub extern fn archive_match_new() *struct_archive;
+pub extern fn archive_match_free(*struct_archive) c_int;
+pub extern fn archive_match_excluded(*struct_archive, *struct_archive_entry) c_int;
+pub extern fn archive_match_path_excluded(*struct_archive, *struct_archive_entry) c_int;
+pub extern fn archive_match_set_inclusion_recursion(*struct_archive, c_int) c_int;
+pub extern fn archive_match_exclude_pattern(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_match_exclude_pattern_w(*struct_archive, [*c]const wchar_t) c_int;
+pub extern fn archive_match_exclude_pattern_from_file(*struct_archive, [*c]const u8, _nullSeparator: c_int) c_int;
+pub extern fn archive_match_exclude_pattern_from_file_w(*struct_archive, [*c]const wchar_t, _nullSeparator: c_int) c_int;
+pub extern fn archive_match_include_pattern(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_match_include_pattern_w(*struct_archive, [*c]const wchar_t) c_int;
+pub extern fn archive_match_include_pattern_from_file(*struct_archive, [*c]const u8, _nullSeparator: c_int) c_int;
+pub extern fn archive_match_include_pattern_from_file_w(*struct_archive, [*c]const wchar_t, _nullSeparator: c_int) c_int;
+pub extern fn archive_match_path_unmatched_inclusions(*struct_archive) c_int;
+pub extern fn archive_match_path_unmatched_inclusions_next(*struct_archive, [*c][*c]const u8) c_int;
+pub extern fn archive_match_path_unmatched_inclusions_next_w(*struct_archive, [*c][*c]const wchar_t) c_int;
+pub extern fn archive_match_time_excluded(*struct_archive, *struct_archive_entry) c_int;
+pub extern fn archive_match_include_time(*struct_archive, _flag: c_int, _sec: time_t, _nsec: c_long) c_int;
+pub extern fn archive_match_include_date(*struct_archive, _flag: c_int, _datestr: [*c]const u8) c_int;
+pub extern fn archive_match_include_date_w(*struct_archive, _flag: c_int, _datestr: [*c]const wchar_t) c_int;
+pub extern fn archive_match_include_file_time(*struct_archive, _flag: c_int, _pathname: [*c]const u8) c_int;
+pub extern fn archive_match_include_file_time_w(*struct_archive, _flag: c_int, _pathname: [*c]const wchar_t) c_int;
+pub extern fn archive_match_exclude_entry(*struct_archive, _flag: c_int, *struct_archive_entry) c_int;
+pub extern fn archive_match_owner_excluded(*struct_archive, *struct_archive_entry) c_int;
+pub extern fn archive_match_include_uid(*struct_archive, la_int64_t) c_int;
+pub extern fn archive_match_include_gid(*struct_archive, la_int64_t) c_int;
+pub extern fn archive_match_include_uname(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_match_include_uname_w(*struct_archive, [*c]const wchar_t) c_int;
+pub extern fn archive_match_include_gname(*struct_archive, [*c]const u8) c_int;
+pub extern fn archive_match_include_gname_w(*struct_archive, [*c]const wchar_t) c_int;
+pub extern fn archive_utility_string_sort([*c][*c]u8) c_int;
+
+pub extern fn archive_entry_clear(*struct_archive_entry) *struct_archive_entry;
+pub extern fn archive_entry_clone(*struct_archive_entry) *struct_archive_entry;
+pub extern fn archive_entry_free(*struct_archive_entry) void;
+pub extern fn archive_entry_new() *struct_archive_entry;
+pub extern fn archive_entry_new2(*struct_archive) *struct_archive_entry;
+pub extern fn archive_entry_atime(*struct_archive_entry) time_t;
+pub extern fn archive_entry_atime_nsec(*struct_archive_entry) c_long;
+pub extern fn archive_entry_atime_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_birthtime(*struct_archive_entry) time_t;
+pub extern fn archive_entry_birthtime_nsec(*struct_archive_entry) c_long;
+pub extern fn archive_entry_birthtime_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_ctime(*struct_archive_entry) time_t;
+pub extern fn archive_entry_ctime_nsec(*struct_archive_entry) c_long;
+pub extern fn archive_entry_ctime_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_dev(*struct_archive_entry) dev_t;
+pub extern fn archive_entry_dev_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_devmajor(*struct_archive_entry) dev_t;
+pub extern fn archive_entry_devminor(*struct_archive_entry) dev_t;
+pub extern fn archive_entry_filetype(*struct_archive_entry) mode_t;
+pub extern fn archive_entry_fflags(*struct_archive_entry, [*c]c_ulong, [*c]c_ulong) void;
+pub extern fn archive_entry_fflags_text(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_gid(*struct_archive_entry) la_int64_t;
+pub extern fn archive_entry_gname(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_gname_utf8(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_gname_w(*struct_archive_entry) [*c]const wchar_t;
+pub extern fn archive_entry_hardlink(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_hardlink_utf8(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_hardlink_w(*struct_archive_entry) [*c]const wchar_t;
+pub extern fn archive_entry_ino(*struct_archive_entry) la_int64_t;
+pub extern fn archive_entry_ino64(*struct_archive_entry) la_int64_t;
+pub extern fn archive_entry_ino_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_mode(*struct_archive_entry) mode_t;
+pub extern fn archive_entry_mtime(*struct_archive_entry) time_t;
+pub extern fn archive_entry_mtime_nsec(*struct_archive_entry) c_long;
+pub extern fn archive_entry_mtime_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_nlink(*struct_archive_entry) c_uint;
+pub extern fn archive_entry_pathname(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_pathname_utf8(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_pathname_w(*struct_archive_entry) [*c]const wchar_t;
+pub extern fn archive_entry_perm(*struct_archive_entry) mode_t;
+pub extern fn archive_entry_rdev(*struct_archive_entry) dev_t;
+pub extern fn archive_entry_rdevmajor(*struct_archive_entry) dev_t;
+pub extern fn archive_entry_rdevminor(*struct_archive_entry) dev_t;
+pub extern fn archive_entry_sourcepath(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_sourcepath_w(*struct_archive_entry) [*c]const wchar_t;
+pub extern fn archive_entry_size(*struct_archive_entry) la_int64_t;
+pub extern fn archive_entry_size_is_set(*struct_archive_entry) c_int;
+pub extern fn archive_entry_strmode(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_symlink(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_symlink_utf8(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_symlink_type(*struct_archive_entry) SymlinkType;
+pub extern fn archive_entry_symlink_w(*struct_archive_entry) [*c]const wchar_t;
+pub extern fn archive_entry_uid(*struct_archive_entry) la_int64_t;
+pub extern fn archive_entry_uname(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_uname_utf8(*struct_archive_entry) [*c]const u8;
+pub extern fn archive_entry_uname_w(*struct_archive_entry) [*c]const wchar_t;
+pub extern fn archive_entry_is_data_encrypted(*struct_archive_entry) c_int;
+pub extern fn archive_entry_is_metadata_encrypted(*struct_archive_entry) c_int;
+pub extern fn archive_entry_is_encrypted(*struct_archive_entry) c_int;
+pub extern fn archive_entry_set_atime(*struct_archive_entry, time_t, c_long) void;
+pub extern fn archive_entry_unset_atime(*struct_archive_entry) void;
+pub extern fn archive_entry_set_birthtime(*struct_archive_entry, time_t, c_long) void;
+pub extern fn archive_entry_unset_birthtime(*struct_archive_entry) void;
+pub extern fn archive_entry_set_ctime(*struct_archive_entry, time_t, c_long) void;
+pub extern fn archive_entry_unset_ctime(*struct_archive_entry) void;
+pub extern fn archive_entry_set_dev(*struct_archive_entry, dev_t) void;
+pub extern fn archive_entry_set_devmajor(*struct_archive_entry, dev_t) void;
+pub extern fn archive_entry_set_devminor(*struct_archive_entry, dev_t) void;
+pub extern fn archive_entry_set_filetype(*struct_archive_entry, c_uint) void;
+pub extern fn archive_entry_set_fflags(*struct_archive_entry, c_ulong, c_ulong) void;
+pub extern fn archive_entry_copy_fflags_text(*struct_archive_entry, [*c]const u8) [*c]const u8;
+pub extern fn archive_entry_copy_fflags_text_w(*struct_archive_entry, [*c]const wchar_t) [*c]const wchar_t;
+pub extern fn archive_entry_set_gid(*struct_archive_entry, la_int64_t) void;
+pub extern fn archive_entry_set_gname(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_set_gname_utf8(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_gname(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_gname_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_update_gname_utf8(*struct_archive_entry, [*c]const u8) c_int;
+pub extern fn archive_entry_set_hardlink(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_set_hardlink_utf8(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_hardlink(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_hardlink_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_update_hardlink_utf8(*struct_archive_entry, [*c]const u8) c_int;
+pub extern fn archive_entry_set_ino(*struct_archive_entry, la_int64_t) void;
+pub extern fn archive_entry_set_ino64(*struct_archive_entry, la_int64_t) void;
+pub extern fn archive_entry_set_link(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_set_link_utf8(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_link(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_link_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_update_link_utf8(*struct_archive_entry, [*c]const u8) c_int;
+pub extern fn archive_entry_set_mode(*struct_archive_entry, mode_t) void;
+pub extern fn archive_entry_set_mtime(*struct_archive_entry, time_t, c_long) void;
+pub extern fn archive_entry_unset_mtime(*struct_archive_entry) void;
+pub extern fn archive_entry_set_nlink(*struct_archive_entry, c_uint) void;
+pub extern fn archive_entry_set_pathname(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_set_pathname_utf8(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_pathname(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_pathname_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_update_pathname_utf8(*struct_archive_entry, [*c]const u8) c_int;
+pub extern fn archive_entry_set_perm(*struct_archive_entry, mode_t) void;
+pub extern fn archive_entry_set_rdev(*struct_archive_entry, dev_t) void;
+pub extern fn archive_entry_set_rdevmajor(*struct_archive_entry, dev_t) void;
+pub extern fn archive_entry_set_rdevminor(*struct_archive_entry, dev_t) void;
+pub extern fn archive_entry_set_size(*struct_archive_entry, la_int64_t) void;
+pub extern fn archive_entry_unset_size(*struct_archive_entry) void;
+pub extern fn archive_entry_copy_sourcepath(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_sourcepath_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_set_symlink(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_set_symlink_type(*struct_archive_entry, c_int) void;
+pub extern fn archive_entry_set_symlink_utf8(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_symlink(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_symlink_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_update_symlink_utf8(*struct_archive_entry, [*c]const u8) c_int;
+pub extern fn archive_entry_set_uid(*struct_archive_entry, la_int64_t) void;
+pub extern fn archive_entry_set_uname(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_set_uname_utf8(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_uname(*struct_archive_entry, [*c]const u8) void;
+pub extern fn archive_entry_copy_uname_w(*struct_archive_entry, [*c]const wchar_t) void;
+pub extern fn archive_entry_update_uname_utf8(*struct_archive_entry, [*c]const u8) c_int;
+pub extern fn archive_entry_set_is_data_encrypted(*struct_archive_entry, is_encrypted: u8) void;
+pub extern fn archive_entry_set_is_metadata_encrypted(*struct_archive_entry, is_encrypted: u8) void;
+pub const struct_stat = opaque {};
+pub extern fn archive_entry_stat(*struct_archive_entry) ?*const struct_stat;
+pub extern fn archive_entry_copy_stat(*struct_archive_entry, ?*const struct_stat) void;
+pub extern fn archive_entry_mac_metadata(*struct_archive_entry, [*c]usize) ?*const c_void;
+pub extern fn archive_entry_copy_mac_metadata(*struct_archive_entry, ?*const c_void, usize) void;
+pub extern fn archive_entry_digest(*struct_archive_entry, c_int) [*c]const u8;
+pub extern fn archive_entry_acl_clear(*struct_archive_entry) void;
+pub extern fn archive_entry_acl_add_entry(*struct_archive_entry, c_int, c_int, c_int, c_int, [*c]const u8) c_int;
+pub extern fn archive_entry_acl_add_entry_w(*struct_archive_entry, c_int, c_int, c_int, c_int, [*c]const wchar_t) c_int;
+pub extern fn archive_entry_acl_reset(*struct_archive_entry, c_int) c_int;
+pub extern fn archive_entry_acl_next(*struct_archive_entry, c_int, [*c]c_int, [*c]c_int, [*c]c_int, [*c]c_int, [*c][*c]const u8) c_int;
+pub extern fn archive_entry_acl_to_text_w(*struct_archive_entry, [*c]la_ssize_t, c_int) [*c]wchar_t;
+pub extern fn archive_entry_acl_to_text(*struct_archive_entry, [*c]la_ssize_t, c_int) [*c]u8;
+pub extern fn archive_entry_acl_from_text_w(*struct_archive_entry, [*c]const wchar_t, c_int) c_int;
+pub extern fn archive_entry_acl_from_text(*struct_archive_entry, [*c]const u8, c_int) c_int;
+pub extern fn archive_entry_acl_text_w(*struct_archive_entry, c_int) [*c]const wchar_t;
+pub extern fn archive_entry_acl_text(*struct_archive_entry, c_int) [*c]const u8;
+pub extern fn archive_entry_acl_types(*struct_archive_entry) c_int;
+pub extern fn archive_entry_acl_count(*struct_archive_entry, c_int) c_int;
+pub const struct_archive_acl = opaque {};
+pub extern fn archive_entry_acl(*struct_archive_entry) *struct_archive_acl;
+pub extern fn archive_entry_xattr_clear(*struct_archive_entry) void;
+pub extern fn archive_entry_xattr_add_entry(*struct_archive_entry, [*c]const u8, ?*const c_void, usize) void;
+pub extern fn archive_entry_xattr_count(*struct_archive_entry) c_int;
+pub extern fn archive_entry_xattr_reset(*struct_archive_entry) c_int;
+pub extern fn archive_entry_xattr_next(*struct_archive_entry, [*c][*c]const u8, [*c]?*const c_void, [*c]usize) c_int;
+pub extern fn archive_entry_sparse_clear(*struct_archive_entry) void;
+pub extern fn archive_entry_sparse_add_entry(*struct_archive_entry, la_int64_t, la_int64_t) void;
+pub extern fn archive_entry_sparse_count(*struct_archive_entry) c_int;
+pub extern fn archive_entry_sparse_reset(*struct_archive_entry) c_int;
+pub extern fn archive_entry_sparse_next(*struct_archive_entry, [*c]la_int64_t, [*c]la_int64_t) c_int;
+pub const struct_archive_entry_linkresolver = opaque {};
+pub extern fn archive_entry_linkresolver_new() *struct_archive_entry_linkresolver;
+pub extern fn archive_entry_linkresolver_set_strategy(*struct_archive_entry_linkresolver, c_int) void;
+pub extern fn archive_entry_linkresolver_free(*struct_archive_entry_linkresolver) void;
+pub extern fn archive_entry_linkify(*struct_archive_entry_linkresolver, [*c]*struct_archive_entry, [*c]*struct_archive_entry) void;
+pub extern fn archive_entry_partial_links(res: *struct_archive_entry_linkresolver, links: [*c]c_uint) *struct_archive_entry;
+
+pub const archive_acl = struct_archive_acl;
+pub const archive_entry_linkresolver = struct_archive_entry_linkresolver;
+
+pub const AE_SYMLINK_TYPE_UNDEFINED = @as(c_int, 0);
+pub const AE_SYMLINK_TYPE_FILE = @as(c_int, 1);
+pub const AE_SYMLINK_TYPE_DIRECTORY = @as(c_int, 2);
+pub const ARCHIVE_ENTRY_DIGEST_MD5 = @as(c_int, 0x00000001);
+pub const ARCHIVE_ENTRY_DIGEST_RMD160 = @as(c_int, 0x00000002);
+pub const ARCHIVE_ENTRY_DIGEST_SHA1 = @as(c_int, 0x00000003);
+pub const ARCHIVE_ENTRY_DIGEST_SHA256 = @as(c_int, 0x00000004);
+pub const ARCHIVE_ENTRY_DIGEST_SHA384 = @as(c_int, 0x00000005);
+pub const ARCHIVE_ENTRY_DIGEST_SHA512 = @as(c_int, 0x00000006);
+pub const ARCHIVE_ENTRY_ACL_EXECUTE = @as(c_int, 0x00000001);
+pub const ARCHIVE_ENTRY_ACL_WRITE = @as(c_int, 0x00000002);
+pub const ARCHIVE_ENTRY_ACL_READ = @as(c_int, 0x00000004);
+pub const ARCHIVE_ENTRY_ACL_READ_DATA = @as(c_int, 0x00000008);
+pub const ARCHIVE_ENTRY_ACL_LIST_DIRECTORY = @as(c_int, 0x00000008);
+pub const ARCHIVE_ENTRY_ACL_WRITE_DATA = @as(c_int, 0x00000010);
+pub const ARCHIVE_ENTRY_ACL_ADD_FILE = @as(c_int, 0x00000010);
+pub const ARCHIVE_ENTRY_ACL_APPEND_DATA = @as(c_int, 0x00000020);
+pub const ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY = @as(c_int, 0x00000020);
+pub const ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS = @as(c_int, 0x00000040);
+pub const ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS = @as(c_int, 0x00000080);
+pub const ARCHIVE_ENTRY_ACL_DELETE_CHILD = @as(c_int, 0x00000100);
+pub const ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES = @as(c_int, 0x00000200);
+pub const ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES = @as(c_int, 0x00000400);
+pub const ARCHIVE_ENTRY_ACL_DELETE = @as(c_int, 0x00000800);
+pub const ARCHIVE_ENTRY_ACL_READ_ACL = @as(c_int, 0x00001000);
+pub const ARCHIVE_ENTRY_ACL_WRITE_ACL = @as(c_int, 0x00002000);
+pub const ARCHIVE_ENTRY_ACL_WRITE_OWNER = @as(c_int, 0x00004000);
+pub const ARCHIVE_ENTRY_ACL_SYNCHRONIZE = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x00008000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_PERMS_POSIX1E = (ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_WRITE) | ARCHIVE_ENTRY_ACL_READ;
+pub const ARCHIVE_ENTRY_ACL_PERMS_NFS4 = (((((((((((((((ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_READ_DATA) | ARCHIVE_ENTRY_ACL_LIST_DIRECTORY) | ARCHIVE_ENTRY_ACL_WRITE_DATA) | ARCHIVE_ENTRY_ACL_ADD_FILE) | ARCHIVE_ENTRY_ACL_APPEND_DATA) | ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY) | ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS) | ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS) | ARCHIVE_ENTRY_ACL_DELETE_CHILD) | ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES) | ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES) | ARCHIVE_ENTRY_ACL_DELETE) | ARCHIVE_ENTRY_ACL_READ_ACL) | ARCHIVE_ENTRY_ACL_WRITE_ACL) | ARCHIVE_ENTRY_ACL_WRITE_OWNER) | ARCHIVE_ENTRY_ACL_SYNCHRONIZE;
+pub const ARCHIVE_ENTRY_ACL_ENTRY_INHERITED = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x01000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x02000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x04000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x08000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x10000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x40000000, .hexadecimal);
+pub const ARCHIVE_ENTRY_ACL_INHERITANCE_NFS4 = (((((ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT | ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT) | ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT) | ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY) | ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS) | ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS) | ARCHIVE_ENTRY_ACL_ENTRY_INHERITED;
+pub const ARCHIVE_ENTRY_ACL_TYPE_ACCESS = @as(c_int, 0x00000100);
+pub const ARCHIVE_ENTRY_ACL_TYPE_DEFAULT = @as(c_int, 0x00000200);
+pub const ARCHIVE_ENTRY_ACL_TYPE_ALLOW = @as(c_int, 0x00000400);
+pub const ARCHIVE_ENTRY_ACL_TYPE_DENY = @as(c_int, 0x00000800);
+pub const ARCHIVE_ENTRY_ACL_TYPE_AUDIT = @as(c_int, 0x00001000);
+pub const ARCHIVE_ENTRY_ACL_TYPE_ALARM = @as(c_int, 0x00002000);
+pub const ARCHIVE_ENTRY_ACL_TYPE_POSIX1E = ARCHIVE_ENTRY_ACL_TYPE_ACCESS | ARCHIVE_ENTRY_ACL_TYPE_DEFAULT;
+pub const ARCHIVE_ENTRY_ACL_TYPE_NFS4 = ((ARCHIVE_ENTRY_ACL_TYPE_ALLOW | ARCHIVE_ENTRY_ACL_TYPE_DENY) | ARCHIVE_ENTRY_ACL_TYPE_AUDIT) | ARCHIVE_ENTRY_ACL_TYPE_ALARM;
+pub const ARCHIVE_ENTRY_ACL_USER = @as(c_int, 10001);
+pub const ARCHIVE_ENTRY_ACL_USER_OBJ = @as(c_int, 10002);
+pub const ARCHIVE_ENTRY_ACL_GROUP = @as(c_int, 10003);
+pub const ARCHIVE_ENTRY_ACL_GROUP_OBJ = @as(c_int, 10004);
+pub const ARCHIVE_ENTRY_ACL_MASK = @as(c_int, 10005);
+pub const ARCHIVE_ENTRY_ACL_OTHER = @as(c_int, 10006);
+pub const ARCHIVE_ENTRY_ACL_EVERYONE = @as(c_int, 10107);
+pub const ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID = @as(c_int, 0x00000001);
+pub const ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT = @as(c_int, 0x00000002);
+pub const ARCHIVE_ENTRY_ACL_STYLE_SOLARIS = @as(c_int, 0x00000004);
+pub const ARCHIVE_ENTRY_ACL_STYLE_SEPARATOR_COMMA = @as(c_int, 0x00000008);
+pub const ARCHIVE_ENTRY_ACL_STYLE_COMPACT = @as(c_int, 0x00000010);
+pub const OLD_ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID = @as(c_int, 1024);
+pub const OLD_ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT = @as(c_int, 2048);
diff --git a/src/libarchive/libarchive.zig b/src/libarchive/libarchive.zig
new file mode 100644
index 000000000..ef8a2acfa
--- /dev/null
+++ b/src/libarchive/libarchive.zig
@@ -0,0 +1,634 @@
+// @link "../deps/libarchive.a"
+
+const lib = @import("./libarchive-bindings.zig");
+usingnamespace @import("../global.zig");
+const std = @import("std");
+const struct_archive = lib.struct_archive;
+pub const Seek = enum(c_int) {
+ set = std.os.SEEK_SET,
+ current = std.os.SEEK_CUR,
+ end = std.os.SEEK_END,
+};
+
+pub const Flags = struct {
+ pub const Extract = enum(c_int) {
+ owner = lib.ARCHIVE_EXTRACT_OWNER,
+ perm = lib.ARCHIVE_EXTRACT_PERM,
+ time = lib.ARCHIVE_EXTRACT_TIME,
+ no_overwrite = lib.ARCHIVE_EXTRACT_NO_OVERWRITE,
+ unlink = lib.ARCHIVE_EXTRACT_UNLINK,
+ acl = lib.ARCHIVE_EXTRACT_ACL,
+ fflags = lib.ARCHIVE_EXTRACT_FFLAGS,
+ xattr = lib.ARCHIVE_EXTRACT_XATTR,
+ secure_symlinks = lib.ARCHIVE_EXTRACT_SECURE_SYMLINKS,
+ secure_nodotdot = lib.ARCHIVE_EXTRACT_SECURE_NODOTDOT,
+ no_autodir = lib.ARCHIVE_EXTRACT_NO_AUTODIR,
+ no_overwrite_newer = lib.ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER,
+ sparse = lib.ARCHIVE_EXTRACT_SPARSE,
+ mac_metadata = lib.ARCHIVE_EXTRACT_MAC_METADATA,
+ no_hfs_compression = lib.ARCHIVE_EXTRACT_NO_HFS_COMPRESSION,
+ hfs_compression_forced = lib.ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED,
+ secure_noabsolutepaths = lib.ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS,
+ clear_nochange_fflags = lib.ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS,
+ safe_writes = lib.ARCHIVE_EXTRACT_SAFE_WRITES,
+ };
+
+ pub const Compression = enum(c_int) {
+ none = lib.ARCHIVE_COMPRESSION_NONE,
+ gzip = lib.ARCHIVE_COMPRESSION_GZIP,
+ bzip2 = lib.ARCHIVE_COMPRESSION_BZIP2,
+ compress = lib.ARCHIVE_COMPRESSION_COMPRESS,
+ program = lib.ARCHIVE_COMPRESSION_PROGRAM,
+ lzma = lib.ARCHIVE_COMPRESSION_LZMA,
+ xz = lib.ARCHIVE_COMPRESSION_XZ,
+ uu = lib.ARCHIVE_COMPRESSION_UU,
+ rpm = lib.ARCHIVE_COMPRESSION_RPM,
+ lzip = lib.ARCHIVE_COMPRESSION_LZIP,
+ lrzip = lib.ARCHIVE_COMPRESSION_LRZIP,
+ };
+
+ pub const Format = enum(c_int) {
+ base_mask = lib.ARCHIVE_FORMAT_BASE_MASK,
+ cpio = lib.ARCHIVE_FORMAT_CPIO,
+ cpio_posix = lib.ARCHIVE_FORMAT_CPIO_POSIX,
+ cpio_bin_le = lib.ARCHIVE_FORMAT_CPIO_BIN_LE,
+ cpio_bin_be = lib.ARCHIVE_FORMAT_CPIO_BIN_BE,
+ cpio_svr4_nocrc = lib.ARCHIVE_FORMAT_CPIO_SVR4_NOCRC,
+ cpio_svr4_crc = lib.ARCHIVE_FORMAT_CPIO_SVR4_CRC,
+ cpio_afio_large = lib.ARCHIVE_FORMAT_CPIO_AFIO_LARGE,
+ cpio_pwb = lib.ARCHIVE_FORMAT_CPIO_PWB,
+ shar = lib.ARCHIVE_FORMAT_SHAR,
+ shar_base = lib.ARCHIVE_FORMAT_SHAR_BASE,
+ shar_dump = lib.ARCHIVE_FORMAT_SHAR_DUMP,
+ tar = lib.ARCHIVE_FORMAT_TAR,
+ tar_ustar = lib.ARCHIVE_FORMAT_TAR_USTAR,
+ tar_pax_interchange = lib.ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE,
+ tar_pax_restricted = lib.ARCHIVE_FORMAT_TAR_PAX_RESTRICTED,
+ tar_gnutar = lib.ARCHIVE_FORMAT_TAR_GNUTAR,
+ iso9660 = lib.ARCHIVE_FORMAT_ISO9660,
+ iso9660_rockridge = lib.ARCHIVE_FORMAT_ISO9660_ROCKRIDGE,
+ zip = lib.ARCHIVE_FORMAT_ZIP,
+ empty = lib.ARCHIVE_FORMAT_EMPTY,
+ ar = lib.ARCHIVE_FORMAT_AR,
+ ar_gnu = lib.ARCHIVE_FORMAT_AR_GNU,
+ ar_bsd = lib.ARCHIVE_FORMAT_AR_BSD,
+ mtree = lib.ARCHIVE_FORMAT_MTREE,
+ raw = lib.ARCHIVE_FORMAT_RAW,
+ xar = lib.ARCHIVE_FORMAT_XAR,
+ lha = lib.ARCHIVE_FORMAT_LHA,
+ cab = lib.ARCHIVE_FORMAT_CAB,
+ rar = lib.ARCHIVE_FORMAT_RAR,
+ @"7zip" = lib.ARCHIVE_FORMAT_7ZIP,
+ warc = lib.ARCHIVE_FORMAT_WARC,
+ rar_v5 = lib.ARCHIVE_FORMAT_RAR_V5,
+ };
+
+ pub const Filter = enum(c_int) {
+ none = lib.ARCHIVE_FILTER_NONE,
+ gzip = lib.ARCHIVE_FILTER_GZIP,
+ bzip2 = lib.ARCHIVE_FILTER_BZIP2,
+ compress = lib.ARCHIVE_FILTER_COMPRESS,
+ program = lib.ARCHIVE_FILTER_PROGRAM,
+ lzma = lib.ARCHIVE_FILTER_LZMA,
+ xz = lib.ARCHIVE_FILTER_XZ,
+ uu = lib.ARCHIVE_FILTER_UU,
+ rpm = lib.ARCHIVE_FILTER_RPM,
+ lzip = lib.ARCHIVE_FILTER_LZIP,
+ lrzip = lib.ARCHIVE_FILTER_LRZIP,
+ lzop = lib.ARCHIVE_FILTER_LZOP,
+ grzip = lib.ARCHIVE_FILTER_GRZIP,
+ lz4 = lib.ARCHIVE_FILTER_LZ4,
+ zstd = lib.ARCHIVE_FILTER_ZSTD,
+ };
+
+ pub const EntryDigest = enum(c_int) {
+ md5 = lib.ARCHIVE_ENTRY_DIGEST_MD5,
+ rmd160 = lib.ARCHIVE_ENTRY_DIGEST_RMD160,
+ sha1 = lib.ARCHIVE_ENTRY_DIGEST_SHA1,
+ sha256 = lib.ARCHIVE_ENTRY_DIGEST_SHA256,
+ sha384 = lib.ARCHIVE_ENTRY_DIGEST_SHA384,
+ sha512 = lib.ARCHIVE_ENTRY_DIGEST_SHA512,
+ };
+
+ pub const EntryACL = enum(c_int) {
+ entry_acl_execute = lib.ARCHIVE_ENTRY_ACL_EXECUTE,
+ write = lib.ARCHIVE_ENTRY_ACL_WRITE,
+ read = lib.ARCHIVE_ENTRY_ACL_READ,
+ read_data = lib.ARCHIVE_ENTRY_ACL_READ_DATA,
+ list_directory = lib.ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
+ write_data = lib.ARCHIVE_ENTRY_ACL_WRITE_DATA,
+ add_file = lib.ARCHIVE_ENTRY_ACL_ADD_FILE,
+ append_data = lib.ARCHIVE_ENTRY_ACL_APPEND_DATA,
+ add_subdirectory = lib.ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY,
+ read_named_attrs = lib.ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS,
+ write_named_attrs = lib.ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS,
+ delete_child = lib.ARCHIVE_ENTRY_ACL_DELETE_CHILD,
+ read_attributes = lib.ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES,
+ write_attributes = lib.ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES,
+ delete = lib.ARCHIVE_ENTRY_ACL_DELETE,
+ read_acl = lib.ARCHIVE_ENTRY_ACL_READ_ACL,
+ write_acl = lib.ARCHIVE_ENTRY_ACL_WRITE_ACL,
+ write_owner = lib.ARCHIVE_ENTRY_ACL_WRITE_OWNER,
+ synchronize = lib.ARCHIVE_ENTRY_ACL_SYNCHRONIZE,
+ perms_posix1_e = lib.ARCHIVE_ENTRY_ACL_PERMS_POSIX1E,
+ perms_nfs4 = lib.ARCHIVE_ENTRY_ACL_PERMS_NFS4,
+ entry_inherited = lib.ARCHIVE_ENTRY_ACL_ENTRY_INHERITED,
+ entry_file_inherit = lib.ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT,
+ entry_directory_inherit = lib.ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT,
+ entry_no_propagate_inherit = lib.ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT,
+ entry_inherit_only = lib.ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY,
+ entry_successful_access = lib.ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS,
+ entry_failed_access = lib.ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS,
+ inheritance_nfs4 = lib.ARCHIVE_ENTRY_ACL_INHERITANCE_NFS4,
+ type_access = lib.ARCHIVE_ENTRY_ACL_TYPE_ACCESS,
+ type_default = lib.ARCHIVE_ENTRY_ACL_TYPE_DEFAULT,
+ type_allow = lib.ARCHIVE_ENTRY_ACL_TYPE_ALLOW,
+ type_deny = lib.ARCHIVE_ENTRY_ACL_TYPE_DENY,
+ type_audit = lib.ARCHIVE_ENTRY_ACL_TYPE_AUDIT,
+ type_alarm = lib.ARCHIVE_ENTRY_ACL_TYPE_ALARM,
+ type_posix1_e = lib.ARCHIVE_ENTRY_ACL_TYPE_POSIX1E,
+ type_nfs4 = lib.ARCHIVE_ENTRY_ACL_TYPE_NFS4,
+ user = lib.ARCHIVE_ENTRY_ACL_USER,
+ user_obj = lib.ARCHIVE_ENTRY_ACL_USER_OBJ,
+ group = lib.ARCHIVE_ENTRY_ACL_GROUP,
+ group_obj = lib.ARCHIVE_ENTRY_ACL_GROUP_OBJ,
+ mask = lib.ARCHIVE_ENTRY_ACL_MASK,
+ other = lib.ARCHIVE_ENTRY_ACL_OTHER,
+ everyone = lib.ARCHIVE_ENTRY_ACL_EVERYONE,
+ style_extra_id = lib.ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID,
+ style_mark_default = lib.ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT,
+ style_solaris = lib.ARCHIVE_ENTRY_ACL_STYLE_SOLARIS,
+ style_separator_comma = lib.ARCHIVE_ENTRY_ACL_STYLE_SEPARATOR_COMMA,
+ style_compact = lib.ARCHIVE_ENTRY_ACL_STYLE_COMPACT,
+ };
+};
+
+pub const Status = enum(c_int) {
+ eof = lib.ARCHIVE_EOF,
+ ok = lib.ARCHIVE_OK,
+ retry = lib.ARCHIVE_RETRY,
+ warn = lib.ARCHIVE_WARN,
+ failed = lib.ARCHIVE_FAILED,
+ fatal = lib.ARCHIVE_FATAL,
+};
+
+pub fn NewStream(comptime SeekableStream: type) type {
+ return struct {
+ const Stream = @This();
+ source: SeekableStream,
+
+ pub inline fn fromCtx(ctx: *c_void) *Stream {
+ return @ptrCast(*Stream, @alignCast(@alignOf(*Stream), ctx));
+ }
+
+ pub fn archive_read_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ buffer: [*c]*const c_void,
+ ) callconv(.C) lib.la_ssize_t {
+ var this = fromCtx(ctx_);
+ }
+
+ pub fn archive_skip_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ offset: lib.la_int64_,
+ ) callconv(.C) lib.la_int64_t {
+ var this = fromCtx(ctx_);
+ }
+
+ pub fn archive_seek_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ offset: lib.la_int64_t,
+ whence: c_int,
+ ) callconv(.C) lib.la_int64_t {
+ var this = fromCtx(ctx_);
+ }
+
+ pub fn archive_write_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ buffer: *const c_void,
+ len: usize,
+ ) callconv(.C) lib.la_ssize_t {
+ var this = fromCtx(ctx_);
+ }
+ pub fn archive_open_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ ) callconv(.C) c_int {
+ var this = fromCtx(ctx_);
+ }
+
+ pub fn archive_close_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ ) callconv(.C) c_int {
+ var this = fromCtx(ctx_);
+ }
+ pub fn archive_free_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ ) callconv(.C) c_int {
+ var this = fromCtx(ctx_);
+ }
+
+ pub fn archive_switch_callback(
+ archive: *struct_archive,
+ ctx1: *c_void,
+ ctx2: *c_void,
+ ) callconv(.C) c_int {
+ var this = fromCtx(ctx1);
+ var that = fromCtx(ctx2);
+ }
+ };
+}
+
+pub const BufferReadStream = struct {
+ const Stream = @This();
+ buf: []const u8,
+ pos: usize = 0,
+
+ block_size: usize = 16384,
+
+ archive: *struct_archive,
+ reading: bool = false,
+
+ pub fn init(this: *BufferReadStream, buf: []const u8) void {
+ this.* = BufferReadStream{
+ .buf = buf,
+ .pos = 0,
+ .archive = lib.archive_read_new(),
+ .reading = false,
+ };
+ }
+
+ pub fn deinit(this: *BufferReadStream) void {
+ _ = lib.archive_read_close(this.archive);
+ _ = lib.archive_read_free(this.archive);
+ }
+
+ pub fn openRead(this: *BufferReadStream) c_int {
+ // lib.archive_read_set_open_callback(this.archive, this.);
+ // _ = lib.archive_read_set_read_callback(this.archive, archive_read_callback);
+ // _ = lib.archive_read_set_seek_callback(this.archive, archive_seek_callback);
+ // _ = lib.archive_read_set_skip_callback(this.archive, archive_skip_callback);
+ // _ = lib.archive_read_set_close_callback(this.archive, archive_close_callback);
+ // // lib.archive_read_set_switch_callback(this.archive, this.archive_s);
+ // _ = lib.archive_read_set_callback_data(this.archive, this);
+
+ this.reading = true;
+
+ _ = lib.archive_read_support_format_tar(this.archive);
+ _ = lib.archive_read_support_format_gnutar(this.archive);
+ _ = lib.archive_read_support_filter_gzip(this.archive);
+ _ = lib.archive_read_support_filter_none(this.archive);
+
+ const rc = lib.archive_read_open_memory(this.archive, this.buf.ptr, this.buf.len);
+
+ // _ = lib.archive_read_support_compression_all(this.archive);
+
+ return rc;
+ }
+
+ pub inline fn bufLeft(this: BufferReadStream) []const u8 {
+ return this.buf[this.pos..];
+ }
+
+ pub inline fn fromCtx(ctx: *c_void) *Stream {
+ return @ptrCast(*Stream, @alignCast(@alignOf(*Stream), ctx));
+ }
+
+ pub fn archive_close_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ ) callconv(.C) c_int {
+ return 0;
+ }
+
+ pub fn archive_read_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ buffer: [*c]*const c_void,
+ ) callconv(.C) lib.la_ssize_t {
+ var this = fromCtx(ctx_);
+ const remaining = this.bufLeft();
+ if (remaining.len == 0) return 0;
+
+ const diff = std.math.min(remaining.len, this.block_size);
+ buffer.* = remaining[0..diff].ptr;
+ this.pos += diff;
+ return @intCast(isize, diff);
+ }
+
+ pub fn archive_skip_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ offset: lib.la_int64_t,
+ ) callconv(.C) lib.la_int64_t {
+ var this = fromCtx(ctx_);
+
+ const buflen = @intCast(isize, this.buf.len);
+ const pos = @intCast(isize, this.pos);
+
+ const proposed = pos + offset;
+ const new_pos = std.math.min(std.math.max(proposed, 0), buflen - 1);
+ this.pos = @intCast(usize, this.pos);
+ return new_pos - pos;
+ }
+
+ pub fn archive_seek_callback(
+ archive: *struct_archive,
+ ctx_: *c_void,
+ offset: lib.la_int64_t,
+ whence: c_int,
+ ) callconv(.C) lib.la_int64_t {
+ var this = fromCtx(ctx_);
+
+ const buflen = @intCast(isize, this.buf.len);
+ const pos = @intCast(isize, this.pos);
+
+ switch (@intToEnum(Seek, whence)) {
+ Seek.current => {
+ const new_pos = std.math.max(std.math.min(pos + offset, buflen - 1), 0);
+ this.pos = @intCast(usize, new_pos);
+ return new_pos;
+ },
+ Seek.end => {
+ const new_pos = std.math.max(std.math.min(buflen - offset, buflen), 0);
+ this.pos = @intCast(usize, new_pos);
+ return new_pos;
+ },
+ Seek.set => {
+ const new_pos = std.math.max(std.math.min(offset, buflen - 1), 0);
+ this.pos = @intCast(usize, new_pos);
+ return new_pos;
+ },
+ }
+ }
+
+ // pub fn archive_write_callback(
+ // archive: *struct_archive,
+ // ctx_: *c_void,
+ // buffer: *const c_void,
+ // len: usize,
+ // ) callconv(.C) lib.la_ssize_t {
+ // var this = fromCtx(ctx_);
+ // }
+
+ // pub fn archive_close_callback(
+ // archive: *struct_archive,
+ // ctx_: *c_void,
+ // ) callconv(.C) c_int {
+ // var this = fromCtx(ctx_);
+ // }
+ // pub fn archive_free_callback(
+ // archive: *struct_archive,
+ // ctx_: *c_void,
+ // ) callconv(.C) c_int {
+ // var this = fromCtx(ctx_);
+ // }
+
+ // pub fn archive_switch_callback(
+ // archive: *struct_archive,
+ // ctx1: *c_void,
+ // ctx2: *c_void,
+ // ) callconv(.C) c_int {
+ // var this = fromCtx(ctx1);
+ // var that = fromCtx(ctx2);
+ // }
+};
+
+pub const Archive = struct {
+ // impl: *lib.archive = undefined,
+ // buf: []const u8 = undefined,
+ // dir: FileDescriptorType = 0,
+
+ pub const Context = struct {
+ pluckers: []Plucker = &[_]Plucker{},
+ overwrite_list: std.StringArrayHashMap(void),
+ all_files: EntryMap,
+ pub const EntryMap = std.ArrayHashMap(u64, [*c]u8, U64Context, false);
+
+ pub const U64Context = struct {
+ pub fn hash(ctx: @This(), k: u64) u32 {
+ return @truncate(u32, k);
+ }
+ pub fn eql(ctx: @This(), a: u64, b: u64) bool {
+ return a == b;
+ }
+ };
+ };
+
+ pub const Plucker = struct {
+ contents: MutableString,
+ filename_hash: u64 = 0,
+ found: bool = false,
+ fd: FileDescriptorType = 0,
+ pub fn init(filepath: string, estimated_size: usize, allocator: *std.mem.Allocator) !Plucker {
+ return Plucker{
+ .contents = try MutableString.init(allocator, estimated_size),
+ .filename_hash = std.hash.Wyhash.hash(0, filepath),
+ .fd = 0,
+ .found = false,
+ };
+ }
+ };
+
+ pub fn getOverwritingFileList(
+ file_buffer: []const u8,
+ root: []const u8,
+ ctx: *Archive.Context,
+ comptime FilePathAppender: type,
+ appender: FilePathAppender,
+ comptime depth_to_skip: usize,
+ ) !void {
+ var entry: *lib.archive_entry = undefined;
+ var ext: *lib.archive = undefined;
+
+ const flags = @enumToInt(Flags.Extract.time) | @enumToInt(Flags.Extract.perm) | @enumToInt(Flags.Extract.acl) | @enumToInt(Flags.Extract.fflags);
+ var stream: BufferReadStream = undefined;
+ stream.init(file_buffer);
+ defer stream.deinit();
+ _ = stream.openRead();
+ var archive = stream.archive;
+ const dir: std.fs.Dir = brk: {
+ const cwd = std.fs.cwd();
+
+ // if the destination doesn't exist, we skip the whole thing since nothing can overwrite it.
+ if (std.fs.path.isAbsolute(root)) {
+ break :brk std.fs.openDirAbsolute(root, .{ .iterate = true }) catch return;
+ } else {
+ break :brk cwd.openDir(root, .{ .iterate = true }) catch return;
+ }
+ };
+
+ loop: while (true) {
+ const r = @intToEnum(Status, lib.archive_read_next_header(archive, &entry));
+
+ switch (r) {
+ Status.eof => break :loop,
+ Status.failed, Status.fatal, Status.retry => return error.Fail,
+ else => {
+ // do not use the utf8 name there
+ // it will require us to pull in libiconv
+ // though we should probably validate the utf8 here nonetheless
+ var pathname: [:0]const u8 = std.mem.sliceTo(lib.archive_entry_pathname(entry).?, 0);
+ var tokenizer = std.mem.tokenize(u8, std.mem.span(pathname), std.fs.path.sep_str);
+ comptime var depth_i: usize = 0;
+ inline while (depth_i < depth_to_skip) : (depth_i += 1) {
+ if (tokenizer.next() == null) continue :loop;
+ }
+
+ var pathname_ = tokenizer.rest();
+ pathname = std.mem.sliceTo(pathname_.ptr[0..pathname_.len :0], 0);
+ const dirname = std.mem.trim(u8, std.fs.path.dirname(std.mem.span(pathname)) orelse "", std.fs.path.sep_str);
+
+ const size = @intCast(usize, std.math.max(lib.archive_entry_size(entry), 0));
+ if (size > 0) {
+ var opened = dir.openFileZ(pathname, .{ .write = true }) catch continue :loop;
+ var stat = try opened.stat();
+
+ if (stat.size > 0) {
+ const is_already_top_level = dirname.len == 0;
+ const path_to_use_: string = brk: {
+ const __pathname: string = std.mem.span(pathname);
+
+ if (is_already_top_level) break :brk __pathname;
+
+ const index = std.mem.indexOfScalar(u8, __pathname, std.fs.path.sep).?;
+ break :brk __pathname[0..index];
+ };
+ var temp_buf: [1024]u8 = undefined;
+ std.mem.copy(u8, &temp_buf, path_to_use_);
+ var path_to_use: string = temp_buf[0..path_to_use_.len];
+ if (!is_already_top_level) {
+ temp_buf[path_to_use_.len] = std.fs.path.sep;
+ path_to_use = temp_buf[0 .. path_to_use_.len + 1];
+ }
+
+ var overwrite_entry = try ctx.overwrite_list.getOrPut(path_to_use);
+ if (!overwrite_entry.found_existing) {
+ overwrite_entry.key_ptr.* = try appender.append(@TypeOf(path_to_use), path_to_use);
+ }
+ }
+ }
+ },
+ }
+ }
+ }
+
+ pub fn extractToDisk(
+ file_buffer: []const u8,
+ root: []const u8,
+ ctx: ?*Archive.Context,
+ comptime FilePathAppender: type,
+ appender: FilePathAppender,
+ comptime depth_to_skip: usize,
+ comptime close_handles: bool,
+ comptime log: bool,
+ ) !u32 {
+ var entry: *lib.archive_entry = undefined;
+ var ext: *lib.archive = undefined;
+
+ const flags = @enumToInt(Flags.Extract.time) | @enumToInt(Flags.Extract.perm) | @enumToInt(Flags.Extract.acl) | @enumToInt(Flags.Extract.fflags);
+ var stream: BufferReadStream = undefined;
+ stream.init(file_buffer);
+ defer stream.deinit();
+ _ = stream.openRead();
+ var archive = stream.archive;
+ var count: u32 = 0;
+
+ const dir: std.fs.Dir = brk: {
+ const cwd = std.fs.cwd();
+ cwd.makePath(
+ root,
+ ) catch {};
+
+ if (std.fs.path.isAbsolute(root)) {
+ break :brk try std.fs.openDirAbsolute(root, .{ .iterate = true });
+ } else {
+ break :brk try cwd.openDir(root, .{ .iterate = true });
+ }
+ };
+
+ defer if (comptime close_handles) dir.close();
+
+ loop: while (true) {
+ const r = @intToEnum(Status, lib.archive_read_next_header(archive, &entry));
+
+ switch (r) {
+ Status.eof => break :loop,
+ Status.failed, Status.fatal, Status.retry => return error.Fail,
+ else => {
+ var pathname: [:0]const u8 = std.mem.sliceTo(lib.archive_entry_pathname(entry).?, 0);
+ var tokenizer = std.mem.tokenize(u8, std.mem.span(pathname), std.fs.path.sep_str);
+ comptime var depth_i: usize = 0;
+
+ inline while (depth_i < depth_to_skip) : (depth_i += 1) {
+ if (tokenizer.next() == null) continue :loop;
+ }
+
+ var pathname_ = tokenizer.rest();
+ pathname = @intToPtr([*]const u8, @ptrToInt(pathname_.ptr))[0..pathname_.len :0];
+
+ const mask = lib.archive_entry_filetype(entry);
+ const size = @intCast(usize, std.math.max(lib.archive_entry_size(entry), 0));
+ if (size > 0) {
+ const slice = std.mem.span(pathname);
+
+ if (comptime log) {
+ Output.prettyln(" {s}", .{pathname});
+ }
+
+ const file = dir.createFileZ(pathname, .{ .truncate = true }) catch |err| brk: {
+ switch (err) {
+ error.FileNotFound => {
+ try dir.makePath(std.fs.path.dirname(slice) orelse return err);
+ break :brk try dir.createFileZ(pathname, .{ .truncate = true });
+ },
+ else => {
+ return err;
+ },
+ }
+ };
+ count += 1;
+
+ _ = C.fchmod(file.handle, lib.archive_entry_perm(entry));
+
+ if (ctx) |ctx_| {
+ const hash: u64 = if (ctx_.pluckers.len > 0)
+ std.hash.Wyhash.hash(0, slice)
+ else
+ @as(u64, 0);
+
+ if (comptime FilePathAppender != void) {
+ var result = ctx.?.all_files.getOrPutAdapted(hash, Context.U64Context{}) catch unreachable;
+ if (!result.found_existing) {
+ result.value_ptr.* = (try appender.appendMutable(@TypeOf(slice), slice)).ptr;
+ }
+ }
+
+ for (ctx_.pluckers) |*plucker_| {
+ if (plucker_.filename_hash == hash) {
+ try plucker_.contents.inflate(size);
+ plucker_.contents.list.expandToCapacity();
+ var read = lib.archive_read_data(archive, plucker_.contents.list.items.ptr, size);
+ try plucker_.contents.inflate(@intCast(usize, read));
+ plucker_.found = read > 0;
+ plucker_.fd = file.handle;
+ continue :loop;
+ }
+ }
+ }
+
+ _ = lib.archive_read_data_into_fd(archive, file.handle);
+ }
+ },
+ }
+ }
+
+ return count;
+ }
+};
diff --git a/src/main.zig b/src/main.zig
index 7b86f7360..1635f5ad1 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -37,7 +37,19 @@ pub fn main() anyerror!void {
Output.Source.set(&output_source);
defer Output.flush();
- try cli.Cli.start(default_allocator, stdout, stderr, MainPanicHandler);
+ cli.Cli.start(default_allocator, stdout, stderr, MainPanicHandler) catch |err| {
+ switch (err) {
+ error.CurrentWorkingDirectoryUnlinked => {
+ Output.prettyError(
+ "\n<r><red>error: <r>The current working directory was deleted, so that command didn't work. Please cd into a different directory and try again.",
+ .{},
+ );
+ Output.flush();
+ std.os.exit(1);
+ },
+ else => return err,
+ }
+ };
std.mem.doNotOptimizeAway(JavaScriptVirtualMachine.fetch);
std.mem.doNotOptimizeAway(JavaScriptVirtualMachine.init);
diff --git a/src/router.zig b/src/router.zig
index 16e947248..38ddcc7a9 100644
--- a/src/router.zig
+++ b/src/router.zig
@@ -14,6 +14,7 @@ const Fs = @import("./fs.zig");
const Options = @import("./options.zig");
const allocators = @import("./allocators.zig");
const URLPath = @import("./http/url_path.zig");
+const PathnameScanner = @import("./query_string_map.zig").PathnameScanner;
const index_route_hash = @truncate(u32, std.hash.Wyhash.hash(0, "index"));
const arbitrary_max_route = 4096;
@@ -598,6 +599,7 @@ pub const RouteMap = struct {
.matched_route_buf = file_path_buf,
};
+ // iterate over the top-level routes
if (ctx.matchDynamicRoute(0, 0)) |_dynamic_route| {
// route name == the filesystem path relative to the pages dir excluding the file extension
var dynamic_route = _dynamic_route;
@@ -738,6 +740,10 @@ pub const Match = struct {
redirect_path: ?string = null,
query_string: string = "",
+ pub fn paramsIterator(this: *const Match) PathnameScanner {
+ return PathnameScanner.init(this.pathname, this.name, this.params);
+ }
+
pub fn nameWithBasename(file_path: string, dir: string) string {
var name = file_path;
if (strings.indexOf(name, dir)) |i| {
@@ -751,3 +757,209 @@ pub const Match = struct {
return std.mem.trimLeft(u8, this.pathname, "/");
}
};
+
+const FileSystem = Fs.FileSystem;
+
+const MockRequestContextType = struct {
+ controlled: bool = false,
+ url: URLPath,
+ match_file_path_buf: [1024]u8 = undefined,
+
+ handle_request_called: bool = false,
+ redirect_called: bool = false,
+ matched_route: ?Match = null,
+ has_called_done: bool = false,
+
+ pub fn handleRequest(this: *MockRequestContextType) !void {
+ this.handle_request_called = true;
+ }
+
+ pub fn handleRedirect(this: *MockRequestContextType, pathname: string) !void {
+ this.redirect_called = true;
+ }
+
+ pub const JavaScriptHandler = struct {
+ pub fn enqueue(ctx: *MockRequestContextType, server: *MockServer, filepath_buf: []u8, params: *Router.Param.List) !void {}
+ };
+};
+
+pub const MockServer = struct {
+ watchloop_handle: ?StoredFileDescriptorType = null,
+ watcher: Watcher = Watcher{},
+
+ pub const Watcher = struct {
+ watchloop_handle: ?StoredFileDescriptorType = null,
+ pub fn start(this: *Watcher) anyerror!void {}
+ };
+};
+
+fn makeTest(cwd_path: string, data: anytype) !void {
+ std.debug.assert(cwd_path.len > 1 and !strings.eql(cwd_path, "/") and !strings.endsWith(cwd_path, "bun"));
+ const bun_tests_dir = try std.fs.cwd().makeOpenPath("bun-test-scratch", .{ .iterate = true });
+ bun_tests_dir.deleteTree(cwd_path) catch {};
+
+ const cwd = try bun_tests_dir.makeOpenPath(cwd_path, .{ .iterate = true });
+ try cwd.setAsCwd();
+
+ const Data = @TypeOf(data);
+ const fields: []const std.builtin.TypeInfo.StructField = comptime std.meta.fields(Data);
+ inline for (fields) |field| {
+ const value = @field(data, field.name);
+
+ if (std.fs.path.dirname(field.name)) |dir| {
+ try cwd.makePath(dir);
+ }
+ var file = try cwd.createFile(field.name, .{ .truncate = true });
+ try file.writeAll(std.mem.span(value));
+ file.close();
+ }
+}
+
+const expect = std.testing.expect;
+const expectEqual = std.testing.expectEqual;
+const expectEqualStrings = std.testing.expectEqualStrings;
+const Logger = @import("./logger.zig");
+
+pub const Test = struct {
+ pub fn make(comptime testName: string, data: anytype) !Router {
+ try makeTest(testName, data);
+ const JSAst = @import("./js_ast.zig");
+ JSAst.Expr.Data.Store.create(default_allocator);
+ JSAst.Stmt.Data.Store.create(default_allocator);
+ var fs = try FileSystem.init1(default_allocator, null);
+ var top_level_dir = fs.top_level_dir;
+
+ var pages_parts = [_]string{ top_level_dir, "pages" };
+ var pages_dir = try Fs.FileSystem.instance.absAlloc(default_allocator, &pages_parts);
+ // _ = try std.fs.makeDirAbsolute(
+ // pages_dir,
+ // );
+ var router = try Router.init(&FileSystem.instance, default_allocator, Options.RouteConfig{
+ .dir = pages_dir,
+ .routes_enabled = true,
+ .extensions = &.{"js"},
+ });
+ Output.initTest();
+
+ const Resolver = @import("./resolver/resolver.zig").Resolver;
+ var logger = Logger.Log.init(default_allocator);
+ errdefer {
+ logger.printForLogLevel(Output.errorWriter()) catch {};
+ }
+
+ var opts = Options.BundleOptions{
+ .resolve_mode = .lazy,
+ .platform = .browser,
+ .loaders = undefined,
+ .define = undefined,
+ .log = &logger,
+ .entry_points = &.{},
+ .out_extensions = std.StringHashMap(string).init(default_allocator),
+ .transform_options = std.mem.zeroes(Api.TransformOptions),
+ .external = Options.ExternalModules.init(
+ default_allocator,
+ &FileSystem.instance.fs,
+ FileSystem.instance.top_level_dir,
+ &.{},
+ &logger,
+ .browser,
+ ),
+ };
+
+ var resolver = Resolver.init1(default_allocator, &logger, &FileSystem.instance, opts);
+
+ var root_dir = (try resolver.readDirInfo(pages_dir)).?;
+ var entries = root_dir.getEntries().?;
+ try router.loadRoutes(root_dir, Resolver, &resolver, 0, true);
+ var entry_points = try router.getEntryPoints(default_allocator);
+
+ try expectEqual(std.meta.fieldNames(@TypeOf(data)).len, entry_points.len);
+ return router;
+ }
+};
+
+test "Routes basic" {
+ var server = MockServer{};
+ var ctx = MockRequestContextType{
+ .url = try URLPath.parse("/hi"),
+ };
+ var router = try Test.make("routes-basic", .{
+ .@"pages/hi.js" = "//hi",
+ .@"pages/index.js" = "//index",
+ .@"pages/blog/hi.js" = "//blog/hi",
+ });
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expectEqualStrings(ctx.matched_route.?.name, "/hi");
+
+ ctx = MockRequestContextType{
+ .url = try URLPath.parse("/"),
+ };
+
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expectEqualStrings(ctx.matched_route.?.name, "/index");
+
+ ctx = MockRequestContextType{
+ .url = try URLPath.parse("/blog/hi"),
+ };
+
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expectEqualStrings(ctx.matched_route.?.name, "/blog/hi");
+
+ ctx = MockRequestContextType{
+ .url = try URLPath.parse("/blog/hey"),
+ };
+
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expect(ctx.matched_route == null);
+
+ ctx = MockRequestContextType{
+ .url = try URLPath.parse("/blog/"),
+ };
+
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expect(ctx.matched_route == null);
+
+ ctx = MockRequestContextType{
+ .url = try URLPath.parse("/pages/hi"),
+ };
+
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expect(ctx.matched_route == null);
+}
+
+test "Dynamic routes" {
+ var server = MockServer{};
+ var ctx = MockRequestContextType{
+ .url = try URLPath.parse("/blog/hi"),
+ };
+ var filepath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+ var router = try Test.make("routes-dynamic", .{
+ .@"pages/index.js" = "//index.js",
+ .@"pages/blog/hi.js" = "//blog-hi",
+ .@"pages/posts/[id].js" = "//hi",
+ // .@"pages/blog/posts/bacon.js" = "//index",
+ });
+
+ try router.match(&server, MockRequestContextType, &ctx);
+ try expectEqualStrings(ctx.matched_route.?.name, "/blog/hi");
+
+ var params = ctx.matched_route.?.paramsIterator();
+ try expect(params.next() == null);
+
+ ctx.matched_route = null;
+
+ ctx.url = try URLPath.parse("/posts/123");
+ try router.match(&server, MockRequestContextType, &ctx);
+
+ params = ctx.matched_route.?.paramsIterator();
+
+ try expectEqualStrings(ctx.matched_route.?.name, "/posts/[id]");
+ try expectEqualStrings(params.next().?.rawValue(ctx.matched_route.?.pathname), "123");
+
+ // ctx = MockRequestContextType{
+ // .url = try URLPath.parse("/"),
+ // };
+
+ // try router.match(&server, MockRequestContextType, &ctx);
+ // try expectEqualStrings(ctx.matched_route.name, "index");
+}
diff --git a/src/runtime.version b/src/runtime.version
index 57659652b..8456f0e52 100644
--- a/src/runtime.version
+++ b/src/runtime.version
@@ -1 +1 @@
-35057197d4ad54bc \ No newline at end of file
+4865dbe641dca1de \ No newline at end of file
diff --git a/src/runtime/hmr.ts b/src/runtime/hmr.ts
index 4a8ccca43..77873a34c 100644
--- a/src/runtime/hmr.ts
+++ b/src/runtime/hmr.ts
@@ -189,9 +189,11 @@ if (typeof window !== "undefined") {
let count = 0;
let match: CSSHMRInsertionPoint = null;
+ const adoptedStyles = document.adoptedStyleSheets;
+
if (this.updateMethod === CSSUpdateMethod.cssObjectModel) {
- if (document.adoptedStyleSheets.length > 0) {
- count = document.adoptedStyleSheets.length;
+ if (adoptedStyles.length > 0) {
+ count = adoptedStyles.length;
for (let i = 0; i < count && match === null; i++) {
let cssRules: CSSRuleList;
@@ -200,7 +202,7 @@ if (typeof window !== "undefined") {
// Non-same origin stylesheets will potentially throw "Security error"
// We will ignore those stylesheets and look at others.
try {
- sheet = document.adoptedStyleSheets[i];
+ sheet = adoptedStyles[i];
cssRules = sheet.rules;
ruleCount = sheet.rules.length;
} catch (exception) {
diff --git a/src/s2n.zig b/src/s2n.zig
new file mode 100644
index 000000000..1ac8436af
--- /dev/null
+++ b/src/s2n.zig
@@ -0,0 +1,792 @@
+pub usingnamespace @import("std").zig.c_builtins;
+const std = @import("std");
+
+const Output = @import("./global.zig").Output;
+
+const alpn_protocols = "http/1.1";
+
+pub inline fn s2nassert(value: c_int) void {
+ std.debug.assert(value == 0);
+}
+
+pub fn boot(allcoator: *std.mem.Allocator) void {
+ if (booted) return;
+ booted = true;
+ Allocator.allocator = allcoator;
+ CacheStore.instance = CacheStore{ .allocator = allcoator, .map = @TypeOf(CacheStore.instance.map).init(allcoator) };
+
+ // Important for any website using Cloudflare.
+ // Do to our modifications in the library, this must be called _first_
+ // Before we initialize s2n.
+ // It can never be changed after initialization or we risk undefined memory bugs.
+ if (s2n_get_highest_fully_supported_tls_version() == S2N_TLS13) {
+ // This conditional should always return true since we statically compile libCrypto.
+ // _ = s2n_enable_tls13();
+
+ // Sadly, this TLS 1.3 implementation is slower than TLS 1.2.
+ // ❯ hyperfine "./fetch https://example.com" "./fetchtls13 https://example.com"
+ // Benchmark #1: ./fetch https://example.com
+ // Time (mean ± σ): 83.6 ms ± 5.4 ms [User: 15.1 ms, System: 4.7 ms]
+ // Range (min … max): 73.5 ms … 97.5 ms 35 runs
+
+ // Benchmark #2: ./fetchtls13 https://example.com
+ // Time (mean ± σ): 94.9 ms ± 3.2 ms [User: 15.8 ms, System: 4.8 ms]
+ // Range (min … max): 90.7 ms … 104.6 ms 29 runs
+
+ // Summary
+ // './fetch https://example.com' ran
+ // 1.14 ± 0.08 times faster than './fetchtls13 https://example.com'
+
+ }
+
+ // We don't actually need the memory allocator, it will automatically use mimalloc...I don't know how!
+ // Also, the implementation
+ // s2nassert(s2n_mem_set_callbacks(Allocator.initCallback, Allocator.deinitCallback, Allocator.mallocCallback, Allocator.freeCallback));
+
+ s2nassert(s2n_disable_atexit());
+ s2nassert(s2n_init());
+ global_s2n_config = s2n_fetch_default_config();
+ // s2nassert(s2n_config_set_verify_host_callback(global_s2n_config, verify_host_callback, null));
+ // s2nassert(s2n_config_set_check_stapled_ocsp_response(global_s2n_config, 0));
+ // s2nassert(s2n_config_set_cipher_preferences(global_s2n_config, "default"));
+ // s2nassert(s2n_config_disable_x509_verification(global_s2n_config));
+ var protocol: [*c]const u8 = "http/1.1";
+ var protocols = &protocol;
+ s2nassert(s2n_config_set_protocol_preferences(global_s2n_config, protocols, 1));
+ s2nassert(s2n_config_send_max_fragment_length(global_s2n_config, S2N_TLS_MAX_FRAG_LEN_4096));
+ s2nassert(s2n_config_set_cipher_preferences(global_s2n_config, "default_tls13"));
+ // s2n_config_set_ticket_decrypt_key_lifetime(global_s2n_config, 9999999);
+
+ s2nassert(
+ s2n_config_set_cache_store_callback(global_s2n_config, CacheStore.store, &CacheStore.instance),
+ );
+ s2nassert(
+ s2n_config_set_cache_retrieve_callback(global_s2n_config, CacheStore.retrieve, &CacheStore.instance),
+ );
+ s2nassert(
+ s2n_config_set_cache_delete_callback(global_s2n_config, CacheStore.delete, &CacheStore.instance),
+ );
+ s2nassert(
+ s2n_config_set_session_cache_onoff(global_s2n_config, 1),
+ );
+
+ // s2nassert(s2n_config_init_session_ticket_keys());
+ // s2nassert(s2n_config_set_client_auth_type(global_s2n_config, S2N_STATUS_REQUEST_NONE));
+}
+
+pub const CacheStore = struct {
+ const CacheEntry = struct {
+ key: []u8,
+ value: []u8,
+ seconds: u64,
+
+ pub fn init(
+ allocator: *std.mem.Allocator,
+ key: *const c_void,
+ size: u64,
+ value: *const c_void,
+ value_size: u64,
+ seconds: u64,
+ ) CacheEntry {
+ const key_bytes = keyBytes(key, size);
+ const value_bytes = keyBytes(key, value_size);
+
+ var total_bytes = allocator.alloc(u8, key_bytes.len + value_bytes.len) catch unreachable;
+ @memcpy(total_bytes.ptr, key_bytes.ptr, key_bytes.len);
+ @memcpy(total_bytes[key_bytes.len..].ptr, value_bytes.ptr, value_bytes.len);
+
+ return CacheEntry{ .key = total_bytes[0..key_bytes.len], .value = total_bytes[key_bytes.len..], .seconds = seconds };
+ }
+ };
+
+ const Context = struct {
+ pub fn hash(this: @This(), key: u64) u64 {
+ return key;
+ }
+
+ pub fn eql(this: @This(), a: u64, b: u64) bool {
+ return a == b;
+ }
+ };
+
+ allocator: *std.mem.Allocator,
+ map: std.HashMap(u64, CacheEntry, Context, 80),
+
+ pub inline fn keyBytes(key: *const c_void, size: u64) []u8 {
+ const ptr = @intToPtr([*]u8, @ptrToInt(key));
+
+ return ptr[0..size];
+ }
+
+ inline fn hashKey(key: *const c_void, size: u64) u64 {
+ const bytes = keyBytes(key, size);
+ return std.hash.Wyhash.hash(0, bytes);
+ }
+
+ pub fn retrieve(
+ conn: *s2n_connection,
+ ctx: ?*c_void,
+ key: *const c_void,
+ key_size: u64,
+ value: *c_void,
+ value_size: *u64,
+ ) callconv(.C) c_int {
+ const hash = hashKey(key, key_size);
+
+ if (instance.map.getAdapted(hash, Context{})) |entry| {
+ const now = @intCast(usize, std.time.timestamp());
+ if (now > entry.seconds) {
+ _ = instance.map.removeAdapted(hash, Context{});
+ return 0;
+ }
+
+ var value_bytes = keyBytes(value, value_size.*);
+ if (value_bytes.len < entry.value.len) return -1;
+ std.mem.copy(u8, value_bytes, entry.value);
+ value_size.* = entry.value.len;
+ return 0;
+ }
+
+ return 0;
+ }
+
+ pub fn store(
+ conn: *s2n_connection,
+ ctx: ?*c_void,
+ seconds: u64,
+ key: *const c_void,
+ key_size: u64,
+ value: *const c_void,
+ value_size: u64,
+ ) callconv(.C) c_int {
+ var map_entry = instance.map.getOrPutAdapted(hashKey(key, key_size), Context{}) catch unreachable;
+
+ if (!map_entry.found_existing) {
+ map_entry.value_ptr.* = CacheEntry.init(instance.allocator, key, key_size, value, value_size, @intCast(usize, std.time.timestamp()) + seconds);
+ }
+
+ return S2N_SUCCESS;
+ }
+
+ pub fn delete(
+ conn: *s2n_connection,
+ ctx: ?*c_void,
+ key: *const c_void,
+ key_size: u64,
+ ) callconv(.C) c_int {
+ _ = instance.map.remove(hashKey(key, key_size));
+ return 0;
+ }
+
+ pub var instance: CacheStore = undefined;
+};
+
+pub fn verify_host_callback(ptr: [*c]const u8, len: usize, ctx: ?*c_void) callconv(.C) u8 {
+ return 1;
+}
+
+pub extern fn s2n_enable_tls13() c_int;
+pub extern fn s2n_fetch_default_config() *s2n_config;
+pub extern fn s2n_get_highest_fully_supported_tls_version() c_int;
+pub extern fn s2n_errno_location() [*c]c_int;
+pub const S2N_ERR_T_OK: c_int = 0;
+pub const S2N_ERR_T_IO: c_int = 1;
+pub const S2N_ERR_T_CLOSED: c_int = 2;
+pub const S2N_ERR_T_BLOCKED: c_int = 3;
+pub const S2N_ERR_T_ALERT: c_int = 4;
+pub const S2N_ERR_T_PROTO: c_int = 5;
+pub const S2N_ERR_T_INTERNAL: c_int = 6;
+pub const S2N_ERR_T_USAGE: c_int = 7;
+pub const s2n_error_type = c_uint;
+pub extern fn s2n_error_get_type(@"error": c_int) c_int;
+pub const struct_s2n_config = opaque {};
+pub const struct_s2n_connection = opaque {};
+pub extern fn s2n_crypto_disable_init() c_int;
+pub extern fn s2n_disable_atexit() c_int;
+pub extern fn s2n_get_openssl_version() c_ulong;
+pub extern fn s2n_init() c_int;
+pub extern fn s2n_cleanup() c_int;
+pub extern fn s2n_config_new() *struct_s2n_config;
+pub extern fn s2n_config_free(config: *struct_s2n_config) c_int;
+pub extern fn s2n_config_free_dhparams(config: *struct_s2n_config) c_int;
+pub extern fn s2n_config_free_cert_chain_and_key(config: *struct_s2n_config) c_int;
+pub const s2n_clock_time_nanoseconds = ?fn (?*c_void, [*c]u64) callconv(.C) c_int;
+pub const s2n_cache_retrieve_callback = ?fn (*struct_s2n_connection, ?*c_void, *const c_void, u64, *c_void, *u64) callconv(.C) c_int;
+pub const s2n_cache_store_callback = ?fn (*struct_s2n_connection, ?*c_void, u64, *const c_void, u64, *const c_void, u64) callconv(.C) c_int;
+pub const s2n_cache_delete_callback = ?fn (*struct_s2n_connection, ?*c_void, *const c_void, u64) callconv(.C) c_int;
+pub extern fn s2n_config_set_wall_clock(config: *struct_s2n_config, clock_fn: s2n_clock_time_nanoseconds, ctx: ?*c_void) c_int;
+pub extern fn s2n_config_set_monotonic_clock(config: *struct_s2n_config, clock_fn: s2n_clock_time_nanoseconds, ctx: ?*c_void) c_int;
+pub extern fn s2n_strerror(@"error": c_int, lang: [*c]const u8) [*c]const u8;
+pub extern fn s2n_strerror_debug(@"error": c_int, lang: [*c]const u8) [*c]const u8;
+pub extern fn s2n_strerror_name(@"error": c_int) [*c]const u8;
+pub const struct_s2n_stacktrace = opaque {};
+pub extern fn s2n_stack_traces_enabled() bool;
+pub extern fn s2n_stack_traces_enabled_set(newval: bool) c_int;
+pub extern fn s2n_calculate_stacktrace() c_int;
+// pub extern fn s2n_print_stacktrace(fptr: [*c]FILE) c_int;
+pub extern fn s2n_free_stacktrace() c_int;
+pub extern fn s2n_get_stacktrace(trace: *struct_s2n_stacktrace) c_int;
+pub extern fn s2n_config_set_cache_store_callback(config: *struct_s2n_config, cache_store_callback: s2n_cache_store_callback, data: ?*c_void) c_int;
+pub extern fn s2n_config_set_cache_retrieve_callback(config: *struct_s2n_config, cache_retrieve_callback: s2n_cache_retrieve_callback, data: ?*c_void) c_int;
+pub extern fn s2n_config_set_cache_delete_callback(config: *struct_s2n_config, cache_delete_callback: s2n_cache_delete_callback, data: ?*c_void) c_int;
+pub const s2n_mem_init_callback = ?fn () callconv(.C) c_int;
+pub const s2n_mem_cleanup_callback = ?fn () callconv(.C) c_int;
+pub const s2n_mem_malloc_callback = ?fn (**c_void, u32, *u32) callconv(.C) c_int;
+pub const s2n_mem_free_callback = ?fn (?*c_void, u32) callconv(.C) c_int;
+pub extern fn s2n_mem_set_callbacks(mem_init_callback: s2n_mem_init_callback, mem_cleanup_callback: s2n_mem_cleanup_callback, mem_malloc_callback: s2n_mem_malloc_callback, mem_free_callback: s2n_mem_free_callback) c_int;
+pub const s2n_rand_init_callback = ?fn () callconv(.C) c_int;
+pub const s2n_rand_cleanup_callback = ?fn () callconv(.C) c_int;
+pub const s2n_rand_seed_callback = ?fn (?*c_void, u32) callconv(.C) c_int;
+pub const s2n_rand_mix_callback = ?fn (?*c_void, u32) callconv(.C) c_int;
+pub extern fn s2n_rand_set_callbacks(rand_init_callback: s2n_rand_init_callback, rand_cleanup_callback: s2n_rand_cleanup_callback, rand_seed_callback: s2n_rand_seed_callback, rand_mix_callback: s2n_rand_mix_callback) c_int;
+pub const S2N_EXTENSION_SERVER_NAME: c_int = 0;
+pub const S2N_EXTENSION_MAX_FRAG_LEN: c_int = 1;
+pub const S2N_EXTENSION_OCSP_STAPLING: c_int = 5;
+pub const S2N_EXTENSION_SUPPORTED_GROUPS: c_int = 10;
+pub const S2N_EXTENSION_EC_POINT_FORMATS: c_int = 11;
+pub const S2N_EXTENSION_SIGNATURE_ALGORITHMS: c_int = 13;
+pub const S2N_EXTENSION_ALPN: c_int = 16;
+pub const S2N_EXTENSION_CERTIFICATE_TRANSPARENCY: c_int = 18;
+pub const S2N_EXTENSION_RENEGOTIATION_INFO: c_int = 65281;
+pub const s2n_tls_extension_type = c_uint;
+pub const S2N_TLS_MAX_FRAG_LEN_512: c_int = 1;
+pub const S2N_TLS_MAX_FRAG_LEN_1024: c_int = 2;
+pub const S2N_TLS_MAX_FRAG_LEN_2048: c_int = 3;
+pub const S2N_TLS_MAX_FRAG_LEN_4096: c_int = 4;
+pub const s2n_max_frag_len = c_uint;
+pub const struct_s2n_cert = opaque {};
+pub const struct_s2n_cert_chain_and_key = opaque {};
+pub const struct_s2n_pkey = opaque {};
+pub const s2n_cert_public_key = struct_s2n_pkey;
+pub const s2n_cert_private_key = struct_s2n_pkey;
+pub extern fn s2n_cert_chain_and_key_new() *struct_s2n_cert_chain_and_key;
+pub extern fn s2n_cert_chain_and_key_load_pem(chain_and_key: *struct_s2n_cert_chain_and_key, chain_pem: [*c]const u8, private_key_pem: [*c]const u8) c_int;
+pub extern fn s2n_cert_chain_and_key_load_pem_bytes(chain_and_key: *struct_s2n_cert_chain_and_key, chain_pem: [*c]u8, chain_pem_len: u32, private_key_pem: [*c]u8, private_key_pem_len: u32) c_int;
+pub extern fn s2n_cert_chain_and_key_load_public_pem_bytes(chain_and_key: *struct_s2n_cert_chain_and_key, chain_pem: [*c]u8, chain_pem_len: u32) c_int;
+pub extern fn s2n_cert_chain_and_key_free(cert_and_key: *struct_s2n_cert_chain_and_key) c_int;
+pub extern fn s2n_cert_chain_and_key_set_ctx(cert_and_key: *struct_s2n_cert_chain_and_key, ctx: ?*c_void) c_int;
+pub extern fn s2n_cert_chain_and_key_get_ctx(cert_and_key: *struct_s2n_cert_chain_and_key) ?*c_void;
+pub extern fn s2n_cert_chain_and_key_get_private_key(cert_and_key: *struct_s2n_cert_chain_and_key) ?*s2n_cert_private_key;
+pub const s2n_cert_tiebreak_callback = ?fn (*struct_s2n_cert_chain_and_key, *struct_s2n_cert_chain_and_key, [*c]u8, u32) callconv(.C) *struct_s2n_cert_chain_and_key;
+pub extern fn s2n_config_set_cert_tiebreak_callback(config: *struct_s2n_config, cert_tiebreak_cb: s2n_cert_tiebreak_callback) c_int;
+pub extern fn s2n_config_add_cert_chain_and_key(config: *struct_s2n_config, cert_chain_pem: [*c]const u8, private_key_pem: [*c]const u8) c_int;
+pub extern fn s2n_config_add_cert_chain_and_key_to_store(config: *struct_s2n_config, cert_key_pair: *struct_s2n_cert_chain_and_key) c_int;
+pub extern fn s2n_config_set_cert_chain_and_key_defaults(config: *struct_s2n_config, cert_key_pairs: [*c]*struct_s2n_cert_chain_and_key, num_cert_key_pairs: u32) c_int;
+pub extern fn s2n_config_set_verification_ca_location(config: *struct_s2n_config, ca_pem_filename: [*c]const u8, ca_dir: [*c]const u8) c_int;
+pub extern fn s2n_config_add_pem_to_trust_store(config: *struct_s2n_config, pem: [*c]const u8) c_int;
+pub extern fn s2n_config_wipe_trust_store(config: *struct_s2n_config) c_int;
+pub const s2n_verify_host_fn = ?fn ([*c]const u8, usize, ?*c_void) callconv(.C) u8;
+pub extern fn s2n_config_set_verify_host_callback(config: *struct_s2n_config, s2n_verify_host_fn, data: ?*c_void) c_int;
+pub extern fn s2n_config_set_check_stapled_ocsp_response(config: *struct_s2n_config, check_ocsp: u8) c_int;
+pub extern fn s2n_config_disable_x509_verification(config: *struct_s2n_config) c_int;
+pub extern fn s2n_config_set_max_cert_chain_depth(config: *struct_s2n_config, max_depth: u16) c_int;
+pub extern fn s2n_config_add_dhparams(config: *struct_s2n_config, dhparams_pem: [*c]const u8) c_int;
+pub extern fn s2n_config_set_cipher_preferences(config: *struct_s2n_config, version: [*c]const u8) c_int;
+pub extern fn s2n_config_append_protocol_preference(config: *struct_s2n_config, protocol: [*c]const u8, protocol_len: u8) c_int;
+pub extern fn s2n_config_set_protocol_preferences(config: *struct_s2n_config, protocols: [*c]const [*c]const u8, protocol_count: c_int) c_int;
+pub const S2N_STATUS_REQUEST_NONE: c_int = 0;
+pub const S2N_STATUS_REQUEST_OCSP: c_int = 1;
+pub const s2n_status_request_type = c_uint;
+pub extern fn s2n_config_set_status_request_type(config: *struct_s2n_config, @"type": s2n_status_request_type) c_int;
+pub const S2N_CT_SUPPORT_NONE: c_int = 0;
+pub const S2N_CT_SUPPORT_REQUEST: c_int = 1;
+pub const s2n_ct_support_level = c_uint;
+pub extern fn s2n_config_set_ct_support_level(config: *struct_s2n_config, level: s2n_ct_support_level) c_int;
+pub const S2N_ALERT_FAIL_ON_WARNINGS: c_int = 0;
+pub const S2N_ALERT_IGNORE_WARNINGS: c_int = 1;
+pub const s2n_alert_behavior = c_uint;
+pub extern fn s2n_config_set_alert_behavior(config: *struct_s2n_config, alert_behavior: s2n_alert_behavior) c_int;
+pub extern fn s2n_config_set_extension_data(config: *struct_s2n_config, @"type": s2n_tls_extension_type, data: [*c]const u8, length: u32) c_int;
+pub extern fn s2n_config_send_max_fragment_length(config: *struct_s2n_config, mfl_code: s2n_max_frag_len) c_int;
+pub extern fn s2n_config_accept_max_fragment_length(config: *struct_s2n_config) c_int;
+pub extern fn s2n_config_set_session_state_lifetime(config: *struct_s2n_config, lifetime_in_secs: u64) c_int;
+pub extern fn s2n_config_set_session_tickets_onoff(config: *struct_s2n_config, enabled: u8) c_int;
+pub extern fn s2n_config_set_session_cache_onoff(config: *struct_s2n_config, enabled: u8) c_int;
+pub extern fn s2n_config_set_ticket_encrypt_decrypt_key_lifetime(config: *struct_s2n_config, lifetime_in_secs: u64) c_int;
+pub extern fn s2n_config_set_ticket_decrypt_key_lifetime(config: *struct_s2n_config, lifetime_in_secs: u64) c_int;
+pub extern fn s2n_config_add_ticket_crypto_key(config: *struct_s2n_config, name: [*c]const u8, name_len: u32, key: [*c]u8, key_len: u32, intro_time_in_seconds_from_epoch: u64) c_int;
+pub const S2N_SERVER: c_int = 0;
+pub const S2N_CLIENT: c_int = 1;
+pub const s2n_mode = c_uint;
+pub extern fn s2n_connection_new(mode: s2n_mode) *struct_s2n_connection;
+pub extern fn s2n_connection_set_config(conn: *struct_s2n_connection, config: *struct_s2n_config) c_int;
+pub extern fn s2n_connection_set_ctx(conn: *struct_s2n_connection, ctx: ?*c_void) c_int;
+pub extern fn s2n_connection_get_ctx(conn: *struct_s2n_connection) ?*c_void;
+pub const s2n_client_hello_fn = fn (*struct_s2n_connection, ?*c_void) callconv(.C) c_int;
+pub const S2N_CLIENT_HELLO_CB_BLOCKING: c_int = 0;
+pub const S2N_CLIENT_HELLO_CB_NONBLOCKING: c_int = 1;
+pub const s2n_client_hello_cb_mode = c_uint;
+pub extern fn s2n_config_set_client_hello_cb(config: *struct_s2n_config, client_hello_callback: ?s2n_client_hello_fn, ctx: ?*c_void) c_int;
+pub extern fn s2n_config_set_client_hello_cb_mode(config: *struct_s2n_config, cb_mode: s2n_client_hello_cb_mode) c_int;
+pub extern fn s2n_client_hello_cb_done(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_server_name_extension_used(conn: *struct_s2n_connection) c_int;
+pub const struct_s2n_client_hello = opaque {};
+pub extern fn s2n_connection_get_client_hello(conn: *struct_s2n_connection) *struct_s2n_client_hello;
+pub extern fn s2n_client_hello_get_raw_message_length(ch: *struct_s2n_client_hello) isize;
+pub extern fn s2n_client_hello_get_raw_message(ch: *struct_s2n_client_hello, out: [*c]u8, max_length: u32) isize;
+pub extern fn s2n_client_hello_get_cipher_suites_length(ch: *struct_s2n_client_hello) isize;
+pub extern fn s2n_client_hello_get_cipher_suites(ch: *struct_s2n_client_hello, out: [*c]u8, max_length: u32) isize;
+pub extern fn s2n_client_hello_get_extensions_length(ch: *struct_s2n_client_hello) isize;
+pub extern fn s2n_client_hello_get_extensions(ch: *struct_s2n_client_hello, out: [*c]u8, max_length: u32) isize;
+pub extern fn s2n_client_hello_get_extension_length(ch: *struct_s2n_client_hello, extension_type: s2n_tls_extension_type) isize;
+pub extern fn s2n_client_hello_get_extension_by_id(ch: *struct_s2n_client_hello, extension_type: s2n_tls_extension_type, out: [*c]u8, max_length: u32) isize;
+pub extern fn s2n_client_hello_get_session_id_length(ch: *struct_s2n_client_hello, out_length: [*c]u32) c_int;
+pub extern fn s2n_client_hello_get_session_id(ch: *struct_s2n_client_hello, out: [*c]u8, out_length: [*c]u32, max_length: u32) c_int;
+pub extern fn s2n_connection_set_fd(conn: *struct_s2n_connection, fd: c_int) c_int;
+pub extern fn s2n_connection_set_read_fd(conn: *struct_s2n_connection, readfd: c_int) c_int;
+pub extern fn s2n_connection_set_write_fd(conn: *struct_s2n_connection, writefd: c_int) c_int;
+pub extern fn s2n_connection_get_read_fd(conn: *struct_s2n_connection, readfd: [*c]c_int) c_int;
+pub extern fn s2n_connection_get_write_fd(conn: *struct_s2n_connection, writefd: [*c]c_int) c_int;
+pub extern fn s2n_connection_use_corked_io(conn: *struct_s2n_connection) c_int;
+pub const s2n_recv_fn = fn (*s2n_connection, [*c]u8, u32) callconv(.C) c_int;
+pub const s2n_send_fn = fn (*s2n_connection, [*c]const u8, u32) callconv(.C) c_int;
+pub extern fn s2n_connection_set_recv_ctx(conn: *struct_s2n_connection, ctx: ?*c_void) c_int;
+pub extern fn s2n_connection_set_send_ctx(conn: *struct_s2n_connection, ctx: ?*c_void) c_int;
+pub extern fn s2n_connection_set_recv_cb(conn: *struct_s2n_connection, recv: ?s2n_recv_fn) c_int;
+pub extern fn s2n_connection_set_send_cb(conn: *struct_s2n_connection, send: ?s2n_send_fn) c_int;
+pub extern fn s2n_connection_prefer_throughput(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_prefer_low_latency(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_set_dynamic_record_threshold(conn: *struct_s2n_connection, resize_threshold: u32, timeout_threshold: u16) c_int;
+pub extern fn s2n_connection_set_verify_host_callback(config: *struct_s2n_connection, host_fn: s2n_verify_host_fn, data: ?*c_void) c_int;
+pub const S2N_BUILT_IN_BLINDING: c_int = 0;
+pub const S2N_SELF_SERVICE_BLINDING: c_int = 1;
+pub const s2n_blinding = c_uint;
+pub extern fn s2n_connection_set_blinding(conn: *struct_s2n_connection, blinding: s2n_blinding) c_int;
+pub extern fn s2n_connection_get_delay(conn: *struct_s2n_connection) u64;
+pub extern fn s2n_connection_set_cipher_preferences(conn: *struct_s2n_connection, version: [*c]const u8) c_int;
+pub extern fn s2n_connection_append_protocol_preference(conn: *struct_s2n_connection, protocol: [*c]const u8, protocol_len: u8) c_int;
+pub extern fn s2n_connection_set_protocol_preferences(conn: *struct_s2n_connection, protocols: [*c]const [*c]const u8, protocol_count: c_int) c_int;
+pub extern fn s2n_set_server_name(conn: *struct_s2n_connection, server_name: [*c]const u8) c_int;
+pub extern fn s2n_get_server_name(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_get_application_protocol(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_connection_get_ocsp_response(conn: *struct_s2n_connection, length: [*c]u32) [*c]const u8;
+pub extern fn s2n_connection_get_sct_list(conn: *struct_s2n_connection, length: [*c]u32) [*c]const u8;
+pub const S2N_NOT_BLOCKED: c_int = 0;
+pub const S2N_BLOCKED_ON_READ: c_int = 1;
+pub const S2N_BLOCKED_ON_WRITE: c_int = 2;
+pub const S2N_BLOCKED_ON_APPLICATION_INPUT: c_int = 3;
+pub const S2N_BLOCKED_ON_EARLY_DATA: c_int = 4;
+pub const s2n_blocked_status = c_uint;
+pub extern fn s2n_negotiate(conn: *struct_s2n_connection, blocked: [*c]s2n_blocked_status) c_int;
+pub extern fn s2n_send(conn: *struct_s2n_connection, buf: *const c_void, size: isize, blocked: [*c]s2n_blocked_status) isize;
+// pub extern fn s2n_sendv(conn: *struct_s2n_connection, bufs: [*c]const struct_iovec, count: isize, blocked: [*c]s2n_blocked_status) isize;
+// pub extern fn s2n_sendv_with_offset(conn: *struct_s2n_connection, bufs: [*c]const struct_iovec, count: isize, offs: isize, blocked: [*c]s2n_blocked_status) isize;
+pub extern fn s2n_recv(conn: *struct_s2n_connection, buf: *c_void, size: isize, blocked: [*c]s2n_blocked_status) isize;
+pub extern fn s2n_peek(conn: *struct_s2n_connection) u32;
+pub extern fn s2n_connection_free_handshake(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_release_buffers(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_wipe(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_free(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_shutdown(conn: *struct_s2n_connection, blocked: [*c]s2n_blocked_status) c_int;
+pub const S2N_CERT_AUTH_NONE: c_int = 0;
+pub const S2N_CERT_AUTH_REQUIRED: c_int = 1;
+pub const S2N_CERT_AUTH_OPTIONAL: c_int = 2;
+pub const s2n_cert_auth_type = c_uint;
+pub extern fn s2n_config_get_client_auth_type(config: *struct_s2n_config, client_auth_type: [*c]s2n_cert_auth_type) c_int;
+pub extern fn s2n_config_set_client_auth_type(config: *struct_s2n_config, client_auth_type: s2n_cert_auth_type) c_int;
+pub extern fn s2n_connection_get_client_auth_type(conn: *struct_s2n_connection, client_auth_type: [*c]s2n_cert_auth_type) c_int;
+pub extern fn s2n_connection_set_client_auth_type(conn: *struct_s2n_connection, client_auth_type: s2n_cert_auth_type) c_int;
+pub extern fn s2n_connection_get_client_cert_chain(conn: *struct_s2n_connection, der_cert_chain_out: [*c][*c]u8, cert_chain_len: [*c]u32) c_int;
+pub extern fn s2n_config_set_initial_ticket_count(config: *struct_s2n_config, num: u8) c_int;
+pub extern fn s2n_connection_add_new_tickets_to_send(conn: *struct_s2n_connection, num: u8) c_int;
+pub extern fn s2n_connection_get_tickets_sent(conn: *struct_s2n_connection, num: [*c]u16) c_int;
+pub extern fn s2n_connection_set_server_keying_material_lifetime(conn: *struct_s2n_connection, lifetime_in_secs: u32) c_int;
+pub const struct_s2n_session_ticket = opaque {};
+pub const s2n_session_ticket_fn = ?fn (*struct_s2n_connection, ?*c_void, *struct_s2n_session_ticket) callconv(.C) c_int;
+pub extern fn s2n_config_set_session_ticket_cb(config: *struct_s2n_config, callback: s2n_session_ticket_fn, ctx: ?*c_void) c_int;
+pub extern fn s2n_session_ticket_get_data_len(ticket: *struct_s2n_session_ticket, data_len: [*c]usize) c_int;
+pub extern fn s2n_session_ticket_get_data(ticket: *struct_s2n_session_ticket, max_data_len: usize, data: [*c]u8) c_int;
+pub extern fn s2n_session_ticket_get_lifetime(ticket: *struct_s2n_session_ticket, session_lifetime: [*c]u32) c_int;
+pub extern fn s2n_connection_set_session(conn: *struct_s2n_connection, session: [*c]const u8, length: usize) c_int;
+pub extern fn s2n_connection_get_session(conn: *struct_s2n_connection, session: [*c]u8, max_length: usize) c_int;
+pub extern fn s2n_connection_get_session_ticket_lifetime_hint(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_session_length(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_session_id_length(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_session_id(conn: *struct_s2n_connection, session_id: [*c]u8, max_length: usize) c_int;
+pub extern fn s2n_connection_is_session_resumed(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_is_ocsp_stapled(conn: *struct_s2n_connection) c_int;
+pub const S2N_TLS_SIGNATURE_ANONYMOUS: c_int = 0;
+pub const S2N_TLS_SIGNATURE_RSA: c_int = 1;
+pub const S2N_TLS_SIGNATURE_ECDSA: c_int = 3;
+pub const S2N_TLS_SIGNATURE_RSA_PSS_RSAE: c_int = 224;
+pub const S2N_TLS_SIGNATURE_RSA_PSS_PSS: c_int = 225;
+pub const s2n_tls_signature_algorithm = c_uint;
+pub const S2N_TLS_HASH_NONE: c_int = 0;
+pub const S2N_TLS_HASH_MD5: c_int = 1;
+pub const S2N_TLS_HASH_SHA1: c_int = 2;
+pub const S2N_TLS_HASH_SHA224: c_int = 3;
+pub const S2N_TLS_HASH_SHA256: c_int = 4;
+pub const S2N_TLS_HASH_SHA384: c_int = 5;
+pub const S2N_TLS_HASH_SHA512: c_int = 6;
+pub const S2N_TLS_HASH_MD5_SHA1: c_int = 224;
+pub const s2n_tls_hash_algorithm = c_uint;
+pub extern fn s2n_connection_get_selected_signature_algorithm(conn: *struct_s2n_connection, chosen_alg: [*c]s2n_tls_signature_algorithm) c_int;
+pub extern fn s2n_connection_get_selected_digest_algorithm(conn: *struct_s2n_connection, chosen_alg: [*c]s2n_tls_hash_algorithm) c_int;
+pub extern fn s2n_connection_get_selected_client_cert_signature_algorithm(conn: *struct_s2n_connection, chosen_alg: [*c]s2n_tls_signature_algorithm) c_int;
+pub extern fn s2n_connection_get_selected_client_cert_digest_algorithm(conn: *struct_s2n_connection, chosen_alg: [*c]s2n_tls_hash_algorithm) c_int;
+pub extern fn s2n_connection_get_selected_cert(conn: *struct_s2n_connection) *struct_s2n_cert_chain_and_key;
+pub extern fn s2n_cert_chain_get_length(chain_and_key: ?*const struct_s2n_cert_chain_and_key, cert_length: [*c]u32) c_int;
+pub extern fn s2n_cert_chain_get_cert(chain_and_key: ?*const struct_s2n_cert_chain_and_key, out_cert: [*c]*struct_s2n_cert, cert_idx: u32) c_int;
+pub extern fn s2n_cert_get_der(cert: ?*const struct_s2n_cert, out_cert_der: [*c][*c]const u8, cert_length: [*c]u32) c_int;
+pub extern fn s2n_connection_get_peer_cert_chain(conn: *const struct_s2n_connection, cert_chain: *struct_s2n_cert_chain_and_key) c_int;
+pub extern fn s2n_cert_get_x509_extension_value_length(cert: *struct_s2n_cert, oid: [*c]const u8, ext_value_len: [*c]u32) c_int;
+pub extern fn s2n_cert_get_x509_extension_value(cert: *struct_s2n_cert, oid: [*c]const u8, ext_value: [*c]u8, ext_value_len: [*c]u32, critical: [*c]bool) c_int;
+pub extern fn s2n_cert_get_utf8_string_from_extension_data_length(extension_data: [*c]const u8, extension_len: u32, utf8_str_len: [*c]u32) c_int;
+pub extern fn s2n_cert_get_utf8_string_from_extension_data(extension_data: [*c]const u8, extension_len: u32, out_data: [*c]u8, out_len: [*c]u32) c_int;
+pub const S2N_PSK_HMAC_SHA256: c_int = 0;
+pub const S2N_PSK_HMAC_SHA384: c_int = 1;
+pub const s2n_psk_hmac = c_uint;
+pub const struct_s2n_psk = opaque {};
+pub extern fn s2n_external_psk_new() *struct_s2n_psk;
+pub extern fn s2n_psk_free(psk: [*c]*struct_s2n_psk) c_int;
+pub extern fn s2n_psk_set_identity(psk: *struct_s2n_psk, identity: [*c]const u8, identity_size: u16) c_int;
+pub extern fn s2n_psk_set_secret(psk: *struct_s2n_psk, secret: [*c]const u8, secret_size: u16) c_int;
+pub extern fn s2n_psk_set_hmac(psk: *struct_s2n_psk, hmac: s2n_psk_hmac) c_int;
+pub extern fn s2n_connection_append_psk(conn: *struct_s2n_connection, psk: *struct_s2n_psk) c_int;
+pub const S2N_PSK_MODE_RESUMPTION: c_int = 0;
+pub const S2N_PSK_MODE_EXTERNAL: c_int = 1;
+pub const s2n_psk_mode = c_uint;
+pub extern fn s2n_config_set_psk_mode(config: *struct_s2n_config, mode: s2n_psk_mode) c_int;
+pub extern fn s2n_connection_set_psk_mode(conn: *struct_s2n_connection, mode: s2n_psk_mode) c_int;
+pub extern fn s2n_connection_get_negotiated_psk_identity_length(conn: *struct_s2n_connection, identity_length: [*c]u16) c_int;
+pub extern fn s2n_connection_get_negotiated_psk_identity(conn: *struct_s2n_connection, identity: [*c]u8, max_identity_length: u16) c_int;
+pub const struct_s2n_offered_psk = opaque {};
+pub extern fn s2n_offered_psk_new() *struct_s2n_offered_psk;
+pub extern fn s2n_offered_psk_free(psk: [*c]*struct_s2n_offered_psk) c_int;
+pub extern fn s2n_offered_psk_get_identity(psk: *struct_s2n_offered_psk, identity: [*c][*c]u8, size: [*c]u16) c_int;
+pub const struct_s2n_offered_psk_list = opaque {};
+pub extern fn s2n_offered_psk_list_has_next(psk_list: *struct_s2n_offered_psk_list) bool;
+pub extern fn s2n_offered_psk_list_next(psk_list: *struct_s2n_offered_psk_list, psk: *struct_s2n_offered_psk) c_int;
+pub extern fn s2n_offered_psk_list_reread(psk_list: *struct_s2n_offered_psk_list) c_int;
+pub extern fn s2n_offered_psk_list_choose_psk(psk_list: *struct_s2n_offered_psk_list, psk: *struct_s2n_offered_psk) c_int;
+pub const s2n_psk_selection_callback = ?fn (*struct_s2n_connection, ?*c_void, *struct_s2n_offered_psk_list) callconv(.C) c_int;
+pub extern fn s2n_config_set_psk_selection_callback(config: *struct_s2n_config, cb: s2n_psk_selection_callback, context: ?*c_void) c_int;
+pub extern fn s2n_connection_get_wire_bytes_in(conn: *struct_s2n_connection) u64;
+pub extern fn s2n_connection_get_wire_bytes_out(conn: *struct_s2n_connection) u64;
+pub extern fn s2n_connection_get_client_protocol_version(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_server_protocol_version(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_actual_protocol_version(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_client_hello_version(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_client_cert_used(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_cipher(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_connection_get_cipher_iana_value(conn: *struct_s2n_connection, first: [*c]u8, second: [*c]u8) c_int;
+pub extern fn s2n_connection_is_valid_for_cipher_preferences(conn: *struct_s2n_connection, version: [*c]const u8) c_int;
+pub extern fn s2n_connection_get_curve(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_connection_get_kem_name(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_connection_get_kem_group_name(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_connection_get_alert(conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_connection_get_handshake_type_name(conn: *struct_s2n_connection) [*c]const u8;
+pub extern fn s2n_connection_get_last_message_name(conn: *struct_s2n_connection) [*c]const u8;
+pub const struct_s2n_async_pkey_op = opaque {};
+pub const S2N_ASYNC_PKEY_VALIDATION_FAST: c_int = 0;
+pub const S2N_ASYNC_PKEY_VALIDATION_STRICT: c_int = 1;
+pub const s2n_async_pkey_validation_mode = c_uint;
+pub const S2N_ASYNC_DECRYPT: c_int = 0;
+pub const S2N_ASYNC_SIGN: c_int = 1;
+pub const s2n_async_pkey_op_type = c_uint;
+pub const s2n_async_pkey_fn = ?fn (*struct_s2n_connection, *struct_s2n_async_pkey_op) callconv(.C) c_int;
+pub extern fn s2n_config_set_async_pkey_callback(config: *struct_s2n_config, @"fn": s2n_async_pkey_fn) c_int;
+pub extern fn s2n_async_pkey_op_perform(op: *struct_s2n_async_pkey_op, key: ?*s2n_cert_private_key) c_int;
+pub extern fn s2n_async_pkey_op_apply(op: *struct_s2n_async_pkey_op, conn: *struct_s2n_connection) c_int;
+pub extern fn s2n_async_pkey_op_free(op: *struct_s2n_async_pkey_op) c_int;
+pub extern fn s2n_config_set_async_pkey_validation_mode(config: *struct_s2n_config, mode: s2n_async_pkey_validation_mode) c_int;
+pub extern fn s2n_async_pkey_op_get_op_type(op: *struct_s2n_async_pkey_op, @"type": [*c]s2n_async_pkey_op_type) c_int;
+pub extern fn s2n_async_pkey_op_get_input_size(op: *struct_s2n_async_pkey_op, data_len: [*c]u32) c_int;
+pub extern fn s2n_async_pkey_op_get_input(op: *struct_s2n_async_pkey_op, data: [*c]u8, data_len: u32) c_int;
+pub extern fn s2n_async_pkey_op_set_output(op: *struct_s2n_async_pkey_op, data: [*c]const u8, data_len: u32) c_int;
+pub const s2n_key_log_fn = ?fn (?*c_void, *struct_s2n_connection, [*c]u8, usize) callconv(.C) c_int;
+pub extern fn s2n_config_set_key_log_cb(config: *struct_s2n_config, callback: s2n_key_log_fn, ctx: ?*c_void) c_int;
+pub extern fn s2n_config_enable_cert_req_dss_legacy_compat(config: *struct_s2n_config) c_int;
+pub extern fn s2n_config_set_server_max_early_data_size(config: *struct_s2n_config, max_early_data_size: u32) c_int;
+pub extern fn s2n_connection_set_server_max_early_data_size(conn: *struct_s2n_connection, max_early_data_size: u32) c_int;
+pub extern fn s2n_connection_set_server_early_data_context(conn: *struct_s2n_connection, context: [*c]const u8, context_size: u16) c_int;
+pub extern fn s2n_psk_configure_early_data(psk: *struct_s2n_psk, max_early_data_size: u32, cipher_suite_first_byte: u8, cipher_suite_second_byte: u8) c_int;
+pub extern fn s2n_psk_set_application_protocol(psk: *struct_s2n_psk, application_protocol: [*c]const u8, size: u8) c_int;
+pub extern fn s2n_psk_set_early_data_context(psk: *struct_s2n_psk, context: [*c]const u8, size: u16) c_int;
+pub const S2N_EARLY_DATA_STATUS_OK: c_int = 0;
+pub const S2N_EARLY_DATA_STATUS_NOT_REQUESTED: c_int = 1;
+pub const S2N_EARLY_DATA_STATUS_REJECTED: c_int = 2;
+pub const S2N_EARLY_DATA_STATUS_END: c_int = 3;
+pub const s2n_early_data_status_t = c_uint;
+pub extern fn s2n_connection_get_early_data_status(conn: *struct_s2n_connection, status: [*c]s2n_early_data_status_t) c_int;
+pub extern fn s2n_connection_get_remaining_early_data_size(conn: *struct_s2n_connection, allowed_early_data_size: [*c]u32) c_int;
+pub extern fn s2n_connection_get_max_early_data_size(conn: *struct_s2n_connection, max_early_data_size: [*c]u32) c_int;
+pub extern fn s2n_send_early_data(conn: *struct_s2n_connection, data: [*c]const u8, data_len: isize, data_sent: [*c]isize, blocked: [*c]s2n_blocked_status) c_int;
+pub extern fn s2n_recv_early_data(conn: *struct_s2n_connection, data: [*c]u8, max_data_len: isize, data_received: [*c]isize, blocked: [*c]s2n_blocked_status) c_int;
+pub const struct_s2n_offered_early_data = opaque {};
+pub const s2n_early_data_cb = ?fn (*struct_s2n_connection, *struct_s2n_offered_early_data) callconv(.C) c_int;
+pub extern fn s2n_config_set_early_data_cb(config: *struct_s2n_config, cb: s2n_early_data_cb) c_int;
+pub extern fn s2n_offered_early_data_get_context_length(early_data: *struct_s2n_offered_early_data, context_len: [*c]u16) c_int;
+pub extern fn s2n_offered_early_data_get_context(early_data: *struct_s2n_offered_early_data, context: [*c]u8, max_len: u16) c_int;
+pub extern fn s2n_offered_early_data_reject(early_data: *struct_s2n_offered_early_data) c_int;
+pub extern fn s2n_offered_early_data_accept(early_data: *struct_s2n_offered_early_data) c_int;
+pub const S2N_SUCCESS = @as(c_int, 0);
+pub const S2N_FAILURE = -@as(c_int, 1);
+pub const S2N_CALLBACK_BLOCKED = -@as(c_int, 2);
+pub const S2N_MINIMUM_SUPPORTED_TLS_RECORD_MAJOR_VERSION = @as(c_int, 2);
+pub const S2N_MAXIMUM_SUPPORTED_TLS_RECORD_MAJOR_VERSION = @as(c_int, 3);
+pub const S2N_SSLv2 = @as(c_int, 20);
+pub const S2N_SSLv3 = @as(c_int, 30);
+pub const S2N_TLS10 = @as(c_int, 31);
+pub const S2N_TLS11 = @as(c_int, 32);
+pub const S2N_TLS12 = @as(c_int, 33);
+pub const S2N_TLS13 = @as(c_int, 34);
+pub const S2N_UNKNOWN_PROTOCOL_VERSION = @as(c_int, 0);
+pub const s2n_config = struct_s2n_config;
+pub const s2n_connection = struct_s2n_connection;
+pub const s2n_stacktrace = struct_s2n_stacktrace;
+pub const s2n_cert = struct_s2n_cert;
+pub const s2n_cert_chain_and_key = struct_s2n_cert_chain_and_key;
+pub const s2n_pkey = struct_s2n_pkey;
+pub const s2n_client_hello = struct_s2n_client_hello;
+pub const s2n_session_ticket = struct_s2n_session_ticket;
+pub const s2n_psk = struct_s2n_psk;
+pub const s2n_offered_psk = struct_s2n_offered_psk;
+pub const s2n_offered_psk_list = struct_s2n_offered_psk_list;
+pub const s2n_async_pkey_op = struct_s2n_async_pkey_op;
+pub const s2n_offered_early_data = struct_s2n_offered_early_data;
+
+var booted = false;
+pub var global_s2n_config: *s2n_config = undefined;
+const unexpectedErrno = std.os.unexpectedErrno;
+const S2NError = error{ Closed, WouldBlock, Alert, Protocol, Internal, Usage };
+pub inline fn s2nErrorNo(rc: c_int) S2NError!std.os.system.E {
+ switch (s2n_error_get_type(rc)) {
+ -1 => return error.Internal,
+ S2N_ERR_T_OK => return .SUCCESS,
+ S2N_ERR_T_IO => return std.os.errno(rc),
+ S2N_ERR_T_CLOSED => return error.Closed,
+ S2N_ERR_T_BLOCKED => return error.WouldBlock,
+ S2N_ERR_T_ALERT => return error.Alert,
+ S2N_ERR_T_PROTO => return error.Protocol,
+ S2N_ERR_T_INTERNAL => return error.Internal,
+ S2N_ERR_T_USAGE => return error.Usage,
+ else => return std.os.errno(rc),
+ }
+}
+
+pub const Connection = struct {
+ conn: *s2n_connection = undefined,
+ fd: std.os.socket_t,
+ node: *Pool.List.Node,
+ disable_shutdown: bool = false,
+
+ pub const Pool = struct {
+ pub const List = std.SinglyLinkedList(*s2n_connection);
+ pub var list = List{};
+
+ pub fn get() *Pool.List.Node {
+ if (list.first) |first| {
+ return first;
+ } else {
+ var node = Allocator.allocator.create(Pool.List.Node) catch unreachable;
+ node.* = Pool.List.Node{ .data = s2n_connection_new(S2N_CLIENT) };
+ return node;
+ }
+ }
+
+ pub fn put(conn: *Pool.List.Node) void {
+ _ = s2n_connection_wipe(conn.data);
+ list.prepend(conn);
+ }
+ };
+
+ // var pool = std.SinglyLinkedList();
+ // var pool_used: std.atomic.Atomic(u32) = std.atomic.Atomic(u32).init(0);
+
+ pub fn init(fd: std.os.socket_t) Connection {
+ return Connection{
+ .fd = fd,
+ .conn = undefined,
+ .node = undefined,
+ };
+ }
+
+ const errno = s2nErrorNo;
+
+ // pub fn s2n_recv_function(conn: *s2n_connection, buf: [*c]u8, len: u32) callconv(.C) c_int {
+ // if (buf == null) return 0;
+ // var fd: c_int = 0;
+ // _ = s2n_connection_get_read_fd(conn, &fd);
+ // return @intCast(c_int, std.os.system.recvfrom(fd, buf, len, std.os.SOCK_CLOEXEC, null, null));
+ // }
+ // pub fn s2n_send_function(conn: *s2n_connection, buf: [*c]const u8, len: u32) callconv(.C) c_int {
+ // if (buf == null) return 0;
+ // var fd: c_int = 0;
+ // _ = s2n_connection_get_write_fd(conn, &fd);
+
+ // return @intCast(c_int, std.os.system.sendto(fd, buf.?, len, std.os.SOCK_CLOEXEC, null, 0));
+ // }
+
+ pub fn start(this: *Connection, server_name: [:0]const u8) !void {
+ this.node = Pool.get();
+ this.conn = this.node.data;
+ s2nassert(s2n_connection_set_ctx(this.conn, this));
+ s2nassert(s2n_connection_set_config(this.conn, global_s2n_config));
+ s2nassert(s2n_connection_set_read_fd(this.conn, @intCast(c_int, this.fd)));
+ s2nassert(s2n_connection_set_write_fd(this.conn, @intCast(c_int, this.fd)));
+ s2nassert(s2n_connection_set_blinding(this.conn, S2N_SELF_SERVICE_BLINDING));
+ // s2nassert(s2n_connection_set_dynamic_record(this.conn));
+ s2nassert(s2n_set_server_name(this.conn, server_name.ptr));
+
+ // _ = s2n_connection_set_recv_cb(this.conn, s2n_recv_function);
+ // _ = s2n_connection_set_send_cb(this.conn, s2n_send_function);
+ const rc = s2n_negotiate(this.conn, &blocked_status);
+ if (rc < 0) {
+ Output.printErrorln("Alert: {d}", .{s2n_connection_get_alert(this.conn)});
+ Output.prettyErrorln("ERROR: {s}", .{s2n_strerror_debug(rc, "EN")});
+ }
+
+ defer s2nassert(s2n_connection_free_handshake(this.conn));
+
+ switch (try s2nErrorNo(rc)) {
+ .SUCCESS => return,
+ .BADF => unreachable, // always a race condition
+ .FAULT => unreachable,
+ .INVAL => unreachable,
+ .NOTCONN => unreachable,
+ .NOTSOCK => unreachable,
+ .INTR => return error.Interrupted,
+ .AGAIN => return error.WouldBlock,
+ .NOMEM => return error.SystemResources,
+ .CONNREFUSED => return error.ConnectionRefused,
+ .CONNRESET => return error.ConnectionResetByPeer,
+ else => |err| return unexpectedErrno(err),
+ }
+ }
+
+ pub fn close(this: *Connection) !void {
+ if (!this.disable_shutdown) {
+ _ = s2n_shutdown(this.conn, &blocked_status);
+ Pool.put(this.node);
+ }
+ std.os.closeSocket(this.fd);
+ }
+
+ pub const Writer = std.io.Writer(*Connection, WriteError, write);
+ pub const Reader = std.io.Reader(*Connection, ReadError, read);
+
+ pub fn writer(this: *Connection) Writer {
+ return Writer{ .context = this };
+ }
+
+ pub fn reader(this: *Connection) Reader {
+ return Reader{ .context = this };
+ }
+
+ pub const ReadError = error{
+ WouldBlock,
+ SystemResources,
+ ConnectionRefused,
+ ConnectionResetByPeer,
+ Unexpected,
+ Interrupted,
+ } || S2NError;
+
+ pub fn read(this: *Connection, buf: []u8) ReadError!usize {
+ const rc = s2n_recv(this.conn, buf.ptr, @intCast(isize, buf.len), &blocked_status);
+
+ switch (try errno(@intCast(c_int, rc))) {
+ .SUCCESS => return @intCast(usize, rc),
+ .BADF => unreachable, // always a race condition
+ .FAULT => unreachable,
+ .INVAL => unreachable,
+ .NOTCONN => unreachable,
+ .NOTSOCK => unreachable,
+ .INTR => return error.Interrupted,
+ .AGAIN => return error.WouldBlock,
+ .NOMEM => return error.SystemResources,
+ .CONNREFUSED => return error.ConnectionRefused,
+ .CONNRESET => return error.ConnectionResetByPeer,
+ else => |err| return unexpectedErrno(err),
+ }
+ }
+
+ pub fn peek(this: *Connection) u32 {
+ return s2n_peek(this.conn);
+ }
+
+ var blocked_status: s2n_blocked_status = 0;
+ pub const WriteError = error{
+ AccessDenied,
+ AddressFamilyNotSupported,
+ BrokenPipe,
+ ConnectionResetByPeer,
+ FastOpenAlreadyInProgress,
+ FileNotFound,
+ MessageTooBig,
+ NameTooLong,
+ NetworkSubsystemFailed,
+ NetworkUnreachable,
+ NotDir,
+ SocketNotConnected,
+ SymLinkLoop,
+ SystemResources,
+ WouldBlock,
+ Unexpected,
+ } || S2NError;
+ pub fn write(this: *Connection, buf: []const u8) WriteError!usize {
+ const rc = s2n_send(this.conn, buf.ptr, @intCast(isize, buf.len), &blocked_status);
+ // std.os.sendto(
+ switch (try errno(@intCast(c_int, rc))) {
+ .SUCCESS => return buf.len,
+ .ACCES => return error.AccessDenied,
+ .AGAIN => return error.WouldBlock,
+ .ALREADY => return error.FastOpenAlreadyInProgress,
+ .BADF => unreachable, // always a race condition
+ .CONNRESET => return error.ConnectionResetByPeer,
+ .DESTADDRREQ => unreachable, // The socket is not connection-mode, and no peer address is set.
+ .FAULT => unreachable, // An invalid user space address was specified for an argument.
+ .INTR => unreachable,
+ .INVAL => unreachable, // Invalid argument passed.
+ .ISCONN => unreachable, // connection-mode socket was connected already but a recipient was specified
+ .MSGSIZE => return error.MessageTooBig,
+ .NOBUFS => return error.SystemResources,
+ .NOMEM => return error.SystemResources,
+ .NOTSOCK => unreachable, // The file descriptor sockfd does not refer to a socket.
+ .OPNOTSUPP => unreachable, // Some bit in the flags argument is inappropriate for the socket type.
+ .PIPE => return error.BrokenPipe,
+ .AFNOSUPPORT => return error.AddressFamilyNotSupported,
+ .LOOP => return error.SymLinkLoop,
+ .NAMETOOLONG => return error.NameTooLong,
+ .NOENT => return error.FileNotFound,
+ .NOTDIR => return error.NotDir,
+ .HOSTUNREACH => return error.NetworkUnreachable,
+ .NETUNREACH => return error.NetworkUnreachable,
+ .NOTCONN => return error.SocketNotConnected,
+ .NETDOWN => return error.NetworkSubsystemFailed,
+ else => |err| return std.os.unexpectedErrno(err),
+ }
+ }
+};
+
+pub const Allocator = struct {
+ pub var allocator: *std.mem.Allocator = undefined;
+
+ pub fn initCallback() callconv(.C) c_int {
+ return S2N_SUCCESS;
+ }
+
+ pub fn deinitCallback() callconv(.C) c_int {
+ return S2N_SUCCESS;
+ }
+
+ pub fn mallocCallback(ptr: **c_void, requested: u32, allocated: *u32) callconv(.C) c_int {
+ const bytes = allocator.allocAdvanced(u8, null, requested, .at_least) catch return S2N_FAILURE;
+ @memset(bytes.ptr, 0, bytes.len);
+ allocated.* = @intCast(u32, bytes.len);
+ ptr.* = bytes.ptr;
+ return S2N_SUCCESS;
+ }
+
+ pub fn freeCallback(ptr_: ?*c_void, size: u32) callconv(.C) c_int {
+ var ptr = ptr_ orelse return S2N_SUCCESS;
+ if (size == 0)
+ return S2N_SUCCESS;
+
+ var slice_ptr = @ptrCast([*]u8, ptr);
+ var slice = slice_ptr[0..size];
+ allocator.free(slice);
+ return S2N_SUCCESS;
+ }
+};
diff --git a/src/string_immutable.zig b/src/string_immutable.zig
index bbdea59cf..c9168d336 100644
--- a/src/string_immutable.zig
+++ b/src/string_immutable.zig
@@ -388,6 +388,14 @@ inline fn eqlComptimeCheckLen(self: string, comptime alt: anytype, comptime chec
const second = comptime std.mem.readIntNative(u64, alt[8..16]);
return ((comptime !check_len) or self.len == alt.len) and first == std.mem.readIntNative(u64, self[0..8]) and second == std.mem.readIntNative(u64, self[8..16]);
},
+ 17 => {
+ const first = comptime std.mem.readIntNative(u64, alt[0..8]);
+ const second = comptime std.mem.readIntNative(u64, alt[8..16]);
+ return ((comptime !check_len) or self.len == alt.len) and
+ first == std.mem.readIntNative(u64, self[0..8]) and second ==
+ std.mem.readIntNative(u64, self[8..16]) and
+ alt[16] == self[16];
+ },
23 => {
const first = comptime std.mem.readIntNative(u64, alt[0..8]);
const second = comptime std.mem.readIntNative(u64, alt[8..15]);
diff --git a/src/walker_skippable.zig b/src/walker_skippable.zig
new file mode 100644
index 000000000..3ce72889c
--- /dev/null
+++ b/src/walker_skippable.zig
@@ -0,0 +1,151 @@
+const std = @import("std");
+const Allocator = std.mem.Allocator;
+const Walker = @This();
+const path = std.fs.path;
+
+stack: std.ArrayList(StackItem),
+name_buffer: std.ArrayList(u8),
+skip_filenames: []const u64 = &[_]u64{},
+skip_dirnames: []const u64 = &[_]u64{},
+skip_all: []const u64 = &[_]u64{},
+seed: u64 = 0,
+
+const Dir = std.fs.Dir;
+
+pub const WalkerEntry = struct {
+ /// The containing directory. This can be used to operate directly on `basename`
+ /// rather than `path`, avoiding `error.NameTooLong` for deeply nested paths.
+ /// The directory remains open until `next` or `deinit` is called.
+ dir: Dir,
+ basename: []const u8,
+ path: []const u8,
+ kind: Dir.Entry.Kind,
+};
+
+const StackItem = struct {
+ iter: Dir.Iterator,
+ dirname_len: usize,
+};
+
+/// After each call to this function, and on deinit(), the memory returned
+/// from this function becomes invalid. A copy must be made in order to keep
+/// a reference to the path.
+pub fn next(self: *Walker) !?WalkerEntry {
+ while (self.stack.items.len != 0) {
+ // `top` becomes invalid after appending to `self.stack`
+ var top = &self.stack.items[self.stack.items.len - 1];
+ var dirname_len = top.dirname_len;
+ if (try top.iter.next()) |base| {
+ switch (base.kind) {
+ .Directory => {
+ if (std.mem.indexOfScalar(u64, self.skip_dirnames, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue;
+ },
+ .File => {
+ if (std.mem.indexOfScalar(u64, self.skip_filenames, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue;
+ },
+
+ // we don't know what it is for a symlink
+ .SymLink => {
+ if (std.mem.indexOfScalar(u64, self.skip_all, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue;
+ },
+
+ else => {},
+ }
+
+ self.name_buffer.shrinkRetainingCapacity(dirname_len);
+ if (self.name_buffer.items.len != 0) {
+ try self.name_buffer.append(path.sep);
+ dirname_len += 1;
+ }
+ try self.name_buffer.appendSlice(base.name);
+ const cur_len = self.name_buffer.items.len;
+ try self.name_buffer.append(0);
+ self.name_buffer.shrinkRetainingCapacity(cur_len);
+
+ if (base.kind == .Directory) {
+ var new_dir = top.iter.dir.openDir(base.name, .{ .iterate = true }) catch |err| switch (err) {
+ error.NameTooLong => unreachable, // no path sep in base.name
+ else => |e| return e,
+ };
+ {
+ errdefer new_dir.close();
+ try self.stack.append(StackItem{
+ .iter = new_dir.iterate(),
+ .dirname_len = self.name_buffer.items.len,
+ });
+ top = &self.stack.items[self.stack.items.len - 1];
+ }
+ }
+ return WalkerEntry{
+ .dir = top.iter.dir,
+ .basename = self.name_buffer.items[dirname_len..],
+ .path = self.name_buffer.items,
+ .kind = base.kind,
+ };
+ } else {
+ var item = self.stack.pop();
+ if (self.stack.items.len != 0) {
+ item.iter.dir.close();
+ }
+ }
+ }
+ return null;
+}
+
+pub fn deinit(self: *Walker) void {
+ while (self.stack.popOrNull()) |*item| {
+ if (self.stack.items.len != 0) {
+ item.iter.dir.close();
+ }
+ }
+ self.stack.deinit();
+ self.name_buffer.allocator.free(self.skip_all);
+ self.name_buffer.deinit();
+}
+
+/// Recursively iterates over a directory.
+/// `self` must have been opened with `OpenDirOptions{.iterate = true}`.
+/// Must call `Walker.deinit` when done.
+/// The order of returned file system entries is undefined.
+/// `self` will not be closed after walking it.
+pub fn walk(
+ self: Dir,
+ allocator: *Allocator,
+ skip_filenames: []const []const u8,
+ skip_dirnames: []const []const u8,
+) !Walker {
+ var name_buffer = std.ArrayList(u8).init(allocator);
+ errdefer name_buffer.deinit();
+
+ var stack = std.ArrayList(Walker.StackItem).init(allocator);
+ errdefer stack.deinit();
+
+ var skip_names = try allocator.alloc(u64, skip_filenames.len + skip_dirnames.len);
+ const seed = skip_filenames.len + skip_dirnames.len;
+ var skip_name_i: usize = 0;
+
+ for (skip_filenames) |name| {
+ skip_names[skip_name_i] = std.hash.Wyhash.hash(seed, name);
+ skip_name_i += 1;
+ }
+ var skip_filenames_ = skip_names[0..skip_name_i];
+ var skip_dirnames_ = skip_names[skip_name_i..];
+
+ for (skip_dirnames) |name, i| {
+ skip_dirnames_[i] = std.hash.Wyhash.hash(seed, name);
+ }
+
+ try stack.append(Walker.StackItem{
+ .iter = self.iterate(),
+ .dirname_len = 0,
+ });
+
+ return Walker{
+ .stack = stack,
+ .name_buffer = name_buffer,
+ .skip_all = skip_names,
+ .seed = seed,
+ .skip_filenames = skip_filenames_,
+ .skip_dirnames = skip_dirnames_,
+ };
+}
diff --git a/src/which.zig b/src/which.zig
new file mode 100644
index 000000000..0b8e5f1f8
--- /dev/null
+++ b/src/which.zig
@@ -0,0 +1,40 @@
+const std = @import("std");
+
+fn isValid(buf: *[std.fs.MAX_PATH_BYTES]u8, segment: []const u8, bin: []const u8) ?u16 {
+ std.mem.copy(u8, buf, segment);
+ buf[segment.len] = std.fs.path.sep;
+ std.mem.copy(u8, buf[segment.len + 1 ..], bin);
+ buf[segment.len + 1 + bin.len ..][0] = 0;
+ const filepath = buf[0 .. segment.len + 1 + bin.len :0];
+
+ std.os.accessZ(filepath, std.os.X_OK) catch return null;
+ return @intCast(u16, filepath.len);
+}
+
+// Like /usr/bin/which but without needing to exec a child process
+// Remember to resolve the symlink if necessary
+pub fn which(buf: *[std.fs.MAX_PATH_BYTES]u8, path: []const u8, cwd: []const u8, bin: []const u8) ?[:0]const u8 {
+ if (isValid(buf, std.mem.trimRight(u8, cwd, std.fs.path.sep_str), bin)) |len| {
+ return buf[0..len :0];
+ }
+
+ var path_iter = std.mem.tokenize(u8, path, ":");
+ while (path_iter.next()) |segment| {
+ if (isValid(buf, segment, bin)) |len| {
+ return buf[0..len :0];
+ }
+ }
+
+ return null;
+}
+
+test "which" {
+ var buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+ var realpath = std.os.getenv("PATH") orelse unreachable;
+ var whichbin = which(&buf, realpath, try std.process.getCwdAlloc(std.heap.c_allocator), "which");
+ try std.testing.expectEqualStrings(whichbin orelse return std.debug.assert(false), "/usr/bin/which");
+ try std.testing.expect(null == which(&buf, realpath, try std.process.getCwdAlloc(std.heap.c_allocator), "baconnnnnn"));
+ try std.testing.expect(null != which(&buf, realpath, try std.process.getCwdAlloc(std.heap.c_allocator), "zig"));
+ try std.testing.expect(null == which(&buf, realpath, try std.process.getCwdAlloc(std.heap.c_allocator), "bin"));
+ try std.testing.expect(null == which(&buf, realpath, try std.process.getCwdAlloc(std.heap.c_allocator), "usr"));
+}
diff --git a/src/which_npm_client.zig b/src/which_npm_client.zig
new file mode 100644
index 000000000..25e5b2ea1
--- /dev/null
+++ b/src/which_npm_client.zig
@@ -0,0 +1,102 @@
+usingnamespace @import("./global.zig");
+
+const which = @import("./which.zig").which;
+const std = @import("std");
+
+pub const NPMClient = struct {
+ bin: string,
+ tag: Tag,
+
+ pub const Tag = enum {
+ npm,
+ yarn,
+ pnpm,
+ };
+
+ // This check adds around 150ms
+ // so...if we do do this, we should do it in a separate thread
+ pub fn isYarnBerry(allocator: *std.mem.Allocator, cwd_dir: string, yarn_path: string) bool {
+ var args = [_]string{ yarn_path, "--version" };
+ var term = std.ChildProcess.exec(.{
+ .argv = &args,
+ .allocator = allocator,
+ .cwd = if (cwd_dir.len > 1) std.mem.trimRight(u8, cwd_dir, "/") else cwd_dir,
+ }) catch return true;
+ defer allocator.free(term.stderr);
+ defer allocator.free(term.stdout);
+
+ if (term.stdout.len == 0) return true;
+ return term.stdout[0] != '1';
+ }
+
+ pub fn detect(allocator: *std.mem.Allocator, realpath_buf: *[std.fs.MAX_PATH_BYTES]u8, PATH: string, cwd: string, comptime allow_yarn: bool) !?NPMClient {
+
+ // We say:
+ // - pnpm if it exists, is the default. its most esoteric, so if you have it installed, you prob want it.
+ // - yarn if it exists and it is yarn 1, its the default (yarn 2 or later is not supported)
+ // - else npm
+
+ const out_path = brk: {
+ var path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
+
+ const path: [:0]const u8 = if (comptime allow_yarn)
+ which(
+ &path_buf,
+ PATH,
+ cwd,
+ "pnpm",
+ ) orelse which(
+ &path_buf,
+ PATH,
+ cwd,
+ "yarn",
+ ) orelse which(
+ &path_buf,
+ PATH,
+ cwd,
+ "npm",
+ ) orelse ""
+ else
+ which(
+ &path_buf,
+ PATH,
+ cwd,
+ "pnpm",
+ ) orelse which(
+ &path_buf,
+ PATH,
+ cwd,
+ "npm",
+ ) orelse "";
+
+ var file = std.fs.openFileAbsoluteZ(path, .{ .read = true }) catch return null;
+ defer file.close();
+ break :brk std.os.getFdPath(file.handle, realpath_buf) catch return null;
+ };
+
+ const basename = std.fs.path.basename(std.mem.span(out_path));
+ if (basename.len == 0) return null;
+
+ // if (comptime allow_yarn) {
+ // if (std.mem.indexOf(u8, basename, "yarn") != null) {
+ // if (isYarnBerry(allocator, cwd, out_path)) {
+ // return try detect(allocator, realpath_buf, PATH, cwd, false);
+ // }
+ // }
+ // }
+
+ if (strings.contains(basename, "pnpm")) {
+ return NPMClient{ .bin = out_path, .tag = .pnpm };
+ }
+
+ if (strings.contains(basename, "yarn")) {
+ return NPMClient{ .bin = out_path, .tag = .yarn };
+ }
+
+ if (strings.contains(basename, "npm")) {
+ return NPMClient{ .bin = out_path, .tag = .npm };
+ }
+
+ return null;
+ }
+};