diff --git a/Makefile b/Makefile
index 8339c9e03..20854a9a4 100644
--- a/Makefile
+++ b/Makefile
@@ -34,24 +34,9 @@ stage-%:
exit 1; \
fi
- @if [ ! $(shell command -v mc) ]; then \
- echo "mc not found on this host, exiting" ; \
- exit 1; \
- fi
- @if [ $(shell mc alias list --json docs-staging | jq '.status') = "error" ]; then \
- echo "doc-staging alias not found on for host mc configuration, exiting" ; \
- exit 1; \
- fi
+ @(./stage.sh)
- @if [ $(shell mc stat --json docs-staging/staging | jq '.status') = "error" ]; then \
- echo "docs-staging/staging bucket not found, exiting" ; \
- exit 1; \
- fi
-
- @echo "Copying contents of $(BUILDDIR)/$(GITDIR)/$*/html/* to docs-staging/staging/$(GITDIR)/$*/"
- @mc cp -r $(BUILDDIR)/$(GITDIR)/$*/html/* docs-staging/staging/$(GITDIR)/$*/
- @echo "Copy complete, visit $(STAGINGURL)/$(GITDIR)/$*/index.html"
# Commenting out the older method
# python -m http.server --directory $(BUILDDIR)/$(GITDIR)/$*/html/
@@ -65,12 +50,14 @@ stage-%:
# - Compile SCSS
# - Build docs via Sphinx
-linux:
+mindocs:
@echo "--------------------------------------"
- @echo "Building for $@ Platform"
+ @echo " Building for MinIO "
@echo "--------------------------------------"
@cp source/default-conf.py source/conf.py
@make sync-deps
+ @make sync-operator-version
+ @make sync-deps
ifeq ($(SYNC_SDK),TRUE)
@make sync-sdks
else
@@ -80,91 +67,6 @@ endif
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@
@echo -e "Building $@ Complete\n--------------------------------------\n"
-windows:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-macos:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-k8s:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-operator-version
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-openshift:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-operator-version
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@ -t k8s
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-eks:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-operator-version
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@ -t k8s
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-gke:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-operator-version
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@ -t k8s
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-aks:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-operator-version
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@ -t k8s
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
-container:
- @echo "--------------------------------------"
- @echo "Building for $@ Platform"
- @echo "--------------------------------------"
- @cp source/default-conf.py source/conf.py
- @make sync-deps
- @npm run build
- @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)/$(GITDIR)/$@" $(SPHINXOPTS) $(O) -t $@
- @echo -e "Building $@ Complete\n--------------------------------------\n"
-
# Synchronization targets
# Note that the @case statements are required to account for differences between Linux and MacOS binaries
# Specifically, MacOS does not use GNU utils, so syntax is slightly different for things like sed
@@ -213,31 +115,8 @@ sync-minio-server-docs:
@(./sync-minio-server-docs.sh)
sync-minio-version:
- @echo "Retrieving current MinIO version"
- $(eval DEB = $(shell curl -s https://min.io/assets/downloads-minio.json | jq '.Linux."MinIO Server".amd64.DEB.download' | sed "s|linux-amd64|linux-amd64/archive|g"))
- $(eval RPM = $(shell curl -s https://min.io/assets/downloads-minio.json | jq '.Linux."MinIO Server".amd64.RPM.download' | sed "s|linux-amd64|linux-amd64/archive|g"))
- $(eval DEBARM64 = $(shell curl -s https://min.io/assets/downloads-minio.json | jq '.Linux."MinIO Server".arm64.DEB.download' | sed "s|linux-arm64|linux-arm64/archive|g"))
- $(eval RPMARM64 = $(shell curl -s https://min.io/assets/downloads-minio.json | jq '.Linux."MinIO Server".arm64.RPM.download' | sed "s|linux-arm64|linux-arm64/archive|g"))
- $(eval MINIO = $(shell curl --retry 10 -Ls -o /dev/null -w "%{url_effective}" https://github.com/minio/minio/releases/latest | sed "s/https:\/\/github.com\/minio\/minio\/releases\/tag\///"))
-
- @$(eval kname = $(shell uname -s))
-
- @case "${kname}" in \
- "Darwin") \
- sed -i "" "s|MINIOLATEST|${MINIO}|g" source/conf.py; \
- sed -i "" "s|DEBURL|${DEB}|g" source/conf.py; \
- sed -i "" "s|RPMURL|${RPM}|g" source/conf.py; \
- sed -i "" "s|DEBARM64URL|${DEBARM64}|g" source/conf.py; \
- sed -i "" "s|RPMARM64URL|${RPMARM64}|g" source/conf.py; \
- ;; \
- *) \
- sed -i "s|MINIOLATEST|${MINIO}|g" source/conf.py; \
- sed -i "s|DEBURL|${DEB}|g" source/conf.py; \
- sed -i "s|RPMURL|${RPM}|g" source/conf.py; \
- sed -i "s|DEBARM64URL|${DEBARM64}|g" source/conf.py; \
- sed -i "s|RPMARM64URL|${RPMARM64}|g" source/conf.py; \
- ;; \
- esac
+ @echo "Retrieving MinIO latest version and download URLs"
+ @(./sync-minio-version.sh)
sync-sdks:
@(./sync-docs.sh)
@@ -249,7 +128,7 @@ sync-operator-crd:
sync-deps:
# C++ and Rust repos do not have any releases yet.
@echo "Synchronizing all external dependencies"
- @make sync-minio-version
+# @make sync-minio-version
@make sync-kes-version
@make sync-minio-server-docs
diff --git a/package-lock.json b/package-lock.json
index 940f8c97e..2e861ce23 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6143 +1,8 @@
{
"name": "minio-documentation",
"version": "1.0.0",
- "lockfileVersion": 2,
+ "lockfileVersion": 1,
"requires": true,
- "packages": {
- "": {
- "name": "minio-documentation",
- "version": "1.0.0",
- "license": "Apache-2.0",
- "devDependencies": {
- "gulp": "^4.0.2",
- "gulp-autoprefixer": "^8.0.0",
- "gulp-clean-css": "^4.3.0",
- "gulp-connect": "^5.7.0",
- "gulp-load-plugins": "^2.0.7",
- "gulp-rename": "^2.0.0",
- "gulp-sass": "^5.1.0",
- "gulp-terser": "^2.1.0",
- "sass": "^1.49.0"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
- "dev": true,
- "dependencies": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ansi-colors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
- "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
- "dev": true,
- "dependencies": {
- "ansi-wrap": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ansi-gray": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
- "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
- "dev": true,
- "dependencies": {
- "ansi-wrap": "0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-wrap": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
- "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/anymatch/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "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/anymatch/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "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/anymatch/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "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/anymatch/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/anymatch/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/append-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
- "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
- "dev": true,
- "dependencies": {
- "buffer-equal": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/archy": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
- "dev": true
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-filter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
- "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
- "dev": true,
- "dependencies": {
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
- "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
- "dev": true,
- "dependencies": {
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-initial": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
- "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
- "dev": true,
- "dependencies": {
- "array-slice": "^1.0.0",
- "is-number": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-initial/node_modules/is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-last": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
- "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==",
- "dev": true,
- "dependencies": {
- "is-number": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-last/node_modules/is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-sort": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
- "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
- "dev": true,
- "dependencies": {
- "default-compare": "^1.0.0",
- "get-value": "^2.0.6",
- "kind-of": "^5.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/async-done": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
- "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.2",
- "process-nextick-args": "^2.0.0",
- "stream-exhaust": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/async-each": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
- "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
- },
- "node_modules/async-settle": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
- "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
- "dev": true,
- "dependencies": {
- "async-done": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/autoprefixer": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz",
- "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==",
- "dev": true,
- "dependencies": {
- "browserslist": "^4.19.1",
- "caniuse-lite": "^1.0.30001297",
- "fraction.js": "^4.1.2",
- "normalize-range": "^0.1.2",
- "picocolors": "^1.0.0",
- "postcss-value-parser": "^4.2.0"
- },
- "bin": {
- "autoprefixer": "bin/autoprefixer"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/bach": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
- "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
- "dev": true,
- "dependencies": {
- "arr-filter": "^1.1.1",
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "array-each": "^1.0.0",
- "array-initial": "^1.0.0",
- "array-last": "^1.1.1",
- "async-done": "^1.2.2",
- "async-settle": "^1.0.0",
- "now-and-later": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "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/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
- "dev": true
- },
- "node_modules/binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "node_modules/body": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
- "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
- "dev": true,
- "dependencies": {
- "continuable-cache": "^0.3.1",
- "error": "^7.0.0",
- "raw-body": "~1.1.0",
- "safe-json-parse": "~1.0.1"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
- "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
- "dev": true,
- "dependencies": {
- "caniuse-lite": "^1.0.30001286",
- "electron-to-chromium": "^1.4.17",
- "escalade": "^3.1.1",
- "node-releases": "^2.0.1",
- "picocolors": "^1.0.0"
- },
- "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-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
- "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "node_modules/bytes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
- "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
- "dev": true
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001304",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz",
- "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
- },
- "node_modules/chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
- "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
- "dev": true,
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.3",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "normalize-path": "^3.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.2.1",
- "upath": "^1.1.1"
- },
- "optionalDependencies": {
- "fsevents": "^1.2.7"
- }
- },
- "node_modules/chokidar/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "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/chokidar/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/chokidar/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "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/chokidar/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/chokidar/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/chokidar/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/chokidar/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "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/clean-css": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
- "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
- "dev": true,
- "dependencies": {
- "source-map": "~0.6.0"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
- "node_modules/clean-css/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "node_modules/cliui/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
- "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/clone-stats": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
- "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
- "dev": true
- },
- "node_modules/cloneable-readable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
- "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "process-nextick-args": "^2.0.0",
- "readable-stream": "^2.3.5"
- }
- },
- "node_modules/cloneable-readable/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/cloneable-readable/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/cloneable-readable/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collection-map": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
- "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
- "dev": true,
- "dependencies": {
- "arr-map": "^2.0.2",
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true,
- "bin": {
- "color-support": "bin.js"
- }
- },
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/concat-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/concat-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/concat-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "dev": true,
- "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-livereload": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz",
- "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/continuable-cache": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
- "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/convert-source-map/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/copy-props": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
- "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
- "dev": true,
- "dependencies": {
- "each-props": "^1.3.2",
- "is-plain-object": "^5.0.0"
- }
- },
- "node_modules/copy-props/node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dev": true,
- "dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/default-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
- "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^5.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/default-resolution": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
- "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
- "dependencies": {
- "object-keys": "^1.0.12"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
- "dev": true
- },
- "node_modules/detect-file": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/duplexify/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/duplexify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/duplexify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/each-props": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
- "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.1",
- "object.defaults": "^1.1.0"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.57",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz",
- "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==",
- "dev": true
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/error": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz",
- "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==",
- "dev": true,
- "dependencies": {
- "string-template": "~0.2.1"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es5-ext": {
- "version": "0.10.53",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
- "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
- "dev": true,
- "dependencies": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dev": true,
- "dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "node_modules/es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "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/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ext": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
- "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
- "dev": true,
- "dependencies": {
- "type": "^2.5.0"
- }
- },
- "node_modules/ext/node_modules/type": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz",
- "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==",
- "dev": true
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fancy-log": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
- "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
- "dev": true,
- "dependencies": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/fast-levenshtein": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz",
- "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=",
- "dev": true
- },
- "node_modules/faye-websocket": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
- "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
- "dev": true,
- "dependencies": {
- "websocket-driver": ">=0.5.1"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true,
- "optional": true
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dev": true,
- "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/find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "dependencies": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/findup-sync": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
- "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^4.0.2",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- }
- },
- "node_modules/flush-write-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/flush-write-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/flush-write-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fraction.js": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz",
- "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==",
- "dev": true,
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://www.patreon.com/infusion"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs-mkdirp-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
- "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "through2": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/fs-mkdirp-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/fs-mkdirp-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/fs-mkdirp-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/fs-mkdirp-stream/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "dependencies": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "node_modules/get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
- "dev": true,
- "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-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/glob-stream": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
- "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
- "dev": true,
- "dependencies": {
- "extend": "^3.0.0",
- "glob": "^7.1.1",
- "glob-parent": "^3.1.0",
- "is-negated-glob": "^1.0.0",
- "ordered-read-streams": "^1.0.0",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.1.5",
- "remove-trailing-separator": "^1.0.1",
- "to-absolute-glob": "^2.0.0",
- "unique-stream": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/glob-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/glob-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/glob-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/glob-watcher": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
- "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
- "dev": true,
- "dependencies": {
- "anymatch": "^2.0.0",
- "async-done": "^1.2.0",
- "chokidar": "^2.0.0",
- "is-negated-glob": "^1.0.0",
- "just-debounce": "^1.0.0",
- "normalize-path": "^3.0.0",
- "object.defaults": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
- "dev": true,
- "dependencies": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/glogg": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
- "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==",
- "dev": true,
- "dependencies": {
- "sparkles": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
- "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
- "dev": true
- },
- "node_modules/gulp": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
- "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
- "dev": true,
- "dependencies": {
- "glob-watcher": "^5.0.3",
- "gulp-cli": "^2.2.0",
- "undertaker": "^1.2.1",
- "vinyl-fs": "^3.0.0"
- },
- "bin": {
- "gulp": "bin/gulp.js"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/gulp-autoprefixer": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-8.0.0.tgz",
- "integrity": "sha512-sVR++PIaXpa81p52dmmA/jt50bw0egmylK5mjagfgOJ8uLDGaF9tHyzvetkY9Uo0gBZUS5sVqN3kX/GlUKOyog==",
- "dev": true,
- "dependencies": {
- "autoprefixer": "^10.2.6",
- "fancy-log": "^1.3.3",
- "plugin-error": "^1.0.1",
- "postcss": "^8.3.0",
- "through2": "^4.0.2",
- "vinyl-sourcemaps-apply": "^0.2.1"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "gulp": ">=4"
- },
- "peerDependenciesMeta": {
- "gulp": {
- "optional": true
- }
- }
- },
- "node_modules/gulp-clean-css": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz",
- "integrity": "sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==",
- "dev": true,
- "dependencies": {
- "clean-css": "4.2.3",
- "plugin-error": "1.0.1",
- "through2": "3.0.1",
- "vinyl-sourcemaps-apply": "0.2.1"
- }
- },
- "node_modules/gulp-clean-css/node_modules/through2": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
- "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
- "dev": true,
- "dependencies": {
- "readable-stream": "2 || 3"
- }
- },
- "node_modules/gulp-cli": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
- "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^1.0.1",
- "archy": "^1.0.0",
- "array-sort": "^1.0.0",
- "color-support": "^1.1.3",
- "concat-stream": "^1.6.0",
- "copy-props": "^2.0.1",
- "fancy-log": "^1.3.2",
- "gulplog": "^1.0.0",
- "interpret": "^1.4.0",
- "isobject": "^3.0.1",
- "liftoff": "^3.1.0",
- "matchdep": "^2.0.0",
- "mute-stdout": "^1.0.0",
- "pretty-hrtime": "^1.0.0",
- "replace-homedir": "^1.0.0",
- "semver-greatest-satisfied-range": "^1.1.0",
- "v8flags": "^3.2.0",
- "yargs": "^7.1.0"
- },
- "bin": {
- "gulp": "bin/gulp.js"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/gulp-connect": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.7.0.tgz",
- "integrity": "sha512-8tRcC6wgXMLakpPw9M7GRJIhxkYdgZsXwn7n56BA2bQYGLR9NOPhMzx7js+qYDy6vhNkbApGKURjAw1FjY4pNA==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^2.0.5",
- "connect": "^3.6.6",
- "connect-livereload": "^0.6.0",
- "fancy-log": "^1.3.2",
- "map-stream": "^0.0.7",
- "send": "^0.16.2",
- "serve-index": "^1.9.1",
- "serve-static": "^1.13.2",
- "tiny-lr": "^1.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gulp-connect/node_modules/ansi-colors": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-2.0.5.tgz",
- "integrity": "sha512-yAdfUZ+c2wetVNIFsNRn44THW+Lty6S5TwMpUfLA/UaGhiXbBv/F8E60/1hMLd0cnF/CDoWH8vzVaI5bAcHCjw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/gulp-load-plugins": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-2.0.7.tgz",
- "integrity": "sha512-/3nl/p7s9O03Yv6SSEqN2dXEbDE0+JpsKfJl6h/GgCLqqnkZT0bF+JWcz87HzcTBeh/MVzMosAJx4kLDTWrTNQ==",
- "dev": true,
- "dependencies": {
- "array-unique": "^0.3.2",
- "fancy-log": "^1.2.0",
- "findup-sync": "^4.0.0",
- "gulplog": "^1.0.0",
- "has-gulplog": "^0.1.0",
- "micromatch": "^4.0.2",
- "resolve": "^1.17.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/gulp-rename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz",
- "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/gulp-sass": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz",
- "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==",
- "dev": true,
- "dependencies": {
- "lodash.clonedeep": "^4.5.0",
- "picocolors": "^1.0.0",
- "plugin-error": "^1.0.1",
- "replace-ext": "^2.0.0",
- "strip-ansi": "^6.0.1",
- "vinyl-sourcemaps-apply": "^0.2.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/gulp-terser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/gulp-terser/-/gulp-terser-2.1.0.tgz",
- "integrity": "sha512-lQ3+JUdHDVISAlUIUSZ/G9Dz/rBQHxOiYDQ70IVWFQeh4b33TC1MCIU+K18w07PS3rq/CVc34aQO4SUbdaNMPQ==",
- "dev": true,
- "dependencies": {
- "plugin-error": "^1.0.1",
- "terser": "^5.9.0",
- "through2": "^4.0.2",
- "vinyl-sourcemaps-apply": "^0.2.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gulplog": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
- "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
- "dev": true,
- "dependencies": {
- "glogg": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-gulplog": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
- "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
- "dev": true,
- "dependencies": {
- "sparkles": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/homedir-polyfill": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
- "dev": true,
- "dependencies": {
- "parse-passwd": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
- "dev": true,
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-errors/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "node_modules/http-parser-js": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz",
- "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==",
- "dev": true
- },
- "node_modules/immutable": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
- "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
- "dev": true
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "dependencies": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "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-descriptor/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-negated-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
- "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "dev": true,
- "dependencies": {
- "is-unc-path": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "dev": true,
- "dependencies": {
- "unc-path-regex": "^0.1.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "node_modules/is-valid-glob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
- "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "node_modules/just-debounce": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz",
- "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",
- "dev": true
- },
- "node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/last-run": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
- "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
- "dev": true,
- "dependencies": {
- "default-resolution": "^2.0.0",
- "es6-weak-map": "^2.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/lazystream": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
- "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.5"
- },
- "engines": {
- "node": ">= 0.6.3"
- }
- },
- "node_modules/lazystream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/lazystream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/lazystream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lead": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
- "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
- "dev": true,
- "dependencies": {
- "flush-write-stream": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/liftoff": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
- "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
- "dev": true,
- "dependencies": {
- "extend": "^3.0.0",
- "findup-sync": "^3.0.0",
- "fined": "^1.0.1",
- "flagged-respawn": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.0",
- "rechoir": "^0.6.2",
- "resolve": "^1.1.7"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/liftoff/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "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/liftoff/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/liftoff/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "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/liftoff/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/liftoff/node_modules/findup-sync": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
- "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/liftoff/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/liftoff/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/liftoff/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/liftoff/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/liftoff/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "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/liftoff/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/livereload-js": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
- "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==",
- "dev": true
- },
- "node_modules/load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "node_modules/make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/make-iterator/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
- "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=",
- "dev": true
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
- "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
- "dev": true,
- "dependencies": {
- "findup-sync": "^2.0.0",
- "micromatch": "^3.0.4",
- "resolve": "^1.4.0",
- "stack-trace": "0.0.10"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "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/matchdep/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "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/matchdep/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/findup-sync": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
- "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^3.1.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/matchdep/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/matchdep/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "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/matchdep/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- }
- },
- "node_modules/mime-db": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
- "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.34",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
- "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
- "dev": true,
- "dependencies": {
- "mime-db": "1.51.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "node_modules/mute-stdout": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
- "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/nan": {
- "version": "2.15.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
- "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==",
- "dev": true,
- "optional": true
- },
- "node_modules/nanoid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
- "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "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/nanomatch/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
- "dev": true
- },
- "node_modules/node-releases": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
- "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
- "dev": true
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/now-and-later": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
- "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
- "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
- "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
- "dev": true,
- "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.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
- "dev": true,
- "dependencies": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
- "dev": true,
- "dependencies": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.reduce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
- "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
- "dev": true,
- "dependencies": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dev": true,
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/ordered-read-streams": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
- "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.1"
- }
- },
- "node_modules/ordered-read-streams/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/ordered-read-streams/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/ordered-read-streams/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "dev": true,
- "dependencies": {
- "lcid": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
- "dev": true,
- "dependencies": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "dependencies": {
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
- "dev": true,
- "dependencies": {
- "path-root-regex": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/plugin-error": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
- "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^1.0.1",
- "arr-diff": "^4.0.0",
- "arr-union": "^3.1.0",
- "extend-shallow": "^3.0.2"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
- "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
- "dev": true,
- "dependencies": {
- "nanoid": "^3.1.30",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
- },
- "node_modules/pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "dependencies": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- }
- },
- "node_modules/qs": {
- "version": "6.10.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
- "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
- "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
- "dev": true,
- "dependencies": {
- "bytes": "1",
- "string_decoder": "0.10"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/raw-body/node_modules/string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- },
- "node_modules/read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "dependencies": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "dependencies": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/readdirp/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "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/readdirp/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "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/readdirp/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp/node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readdirp/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "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/readdirp/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/readdirp/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/readdirp/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/readdirp/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "dependencies": {
- "resolve": "^1.1.6"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/remove-bom-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
- "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5",
- "is-utf8": "^0.2.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/remove-bom-stream": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
- "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
- "dev": true,
- "dependencies": {
- "remove-bom-buffer": "^3.0.0",
- "safe-buffer": "^5.1.0",
- "through2": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/remove-bom-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/remove-bom-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/remove-bom-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/remove-bom-stream/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/replace-ext": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz",
- "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/replace-homedir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
- "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1",
- "is-absolute": "^1.0.0",
- "remove-trailing-separator": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "node_modules/resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.8.1",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve-options": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
- "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
- "dev": true,
- "dependencies": {
- "value-or-function": "^3.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated",
- "dev": true
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safe-json-parse": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
- "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=",
- "dev": true
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/sass": {
- "version": "1.49.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz",
- "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==",
- "dev": true,
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=8.9.0"
- }
- },
- "node_modules/sass/node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/sass/node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sass/node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/sass/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/sass/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/sass/node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sass/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/semver-greatest-satisfied-range": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
- "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
- "dev": true,
- "dependencies": {
- "sver-compat": "^1.5.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
- "dev": true,
- "dependencies": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-static": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
- "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
- "dev": true,
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-static/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
- "dev": true,
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-static/node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/serve-static/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/serve-static/node_modules/send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
- "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.8.1",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-static/node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "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/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dev": true,
- "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.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
- "dev": true
- },
- "node_modules/sparkles": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
- "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
- "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
- "dev": true
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "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/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stream-exhaust": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
- "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==",
- "dev": true
- },
- "node_modules/stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-template": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
- "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
- "dev": true
- },
- "node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "dependencies": {
- "is-utf8": "^0.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/sver-compat": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
- "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
- "dev": true,
- "dependencies": {
- "es6-iterator": "^2.0.1",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/terser": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
- "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
- "dev": true,
- "dependencies": {
- "commander": "^2.20.0",
- "source-map": "~0.7.2",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "acorn": "^8.5.0"
- },
- "peerDependenciesMeta": {
- "acorn": {
- "optional": true
- }
- }
- },
- "node_modules/terser/node_modules/source-map": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "3"
- }
- },
- "node_modules/through2-filter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
- "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
- "dev": true,
- "dependencies": {
- "through2": "~2.0.0",
- "xtend": "~4.0.0"
- }
- },
- "node_modules/through2-filter/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/through2-filter/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/through2-filter/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/through2-filter/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/time-stamp": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
- "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/tiny-lr": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
- "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==",
- "dev": true,
- "dependencies": {
- "body": "^5.1.0",
- "debug": "^3.1.0",
- "faye-websocket": "~0.10.0",
- "livereload-js": "^2.3.0",
- "object-assign": "^4.1.0",
- "qs": "^6.4.0"
- }
- },
- "node_modules/tiny-lr/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/tiny-lr/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/to-absolute-glob": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
- "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
- "dev": true,
- "dependencies": {
- "is-absolute": "^1.0.0",
- "is-negated-glob": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/to-through": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
- "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
- "dev": true,
- "dependencies": {
- "through2": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/to-through/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/to-through/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/to-through/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/to-through/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
- "dev": true
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "node_modules/unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/undertaker": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz",
- "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.0.1",
- "arr-map": "^2.0.0",
- "bach": "^1.0.0",
- "collection-map": "^1.0.0",
- "es6-weak-map": "^2.0.1",
- "fast-levenshtein": "^1.0.0",
- "last-run": "^1.1.0",
- "object.defaults": "^1.0.0",
- "object.reduce": "^1.0.0",
- "undertaker-registry": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/undertaker-registry": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
- "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unique-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
- "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
- "dev": true,
- "dependencies": {
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "through2-filter": "^3.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "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",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true,
- "engines": {
- "node": ">=4",
- "yarn": "*"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated",
- "dev": true
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "dev": true,
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/value-or-function": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
- "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz",
- "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==",
- "dev": true,
- "dependencies": {
- "clone": "^2.1.1",
- "clone-buffer": "^1.0.0",
- "clone-stats": "^1.0.0",
- "cloneable-readable": "^1.0.0",
- "remove-trailing-separator": "^1.0.1",
- "replace-ext": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl-fs": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
- "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==",
- "dev": true,
- "dependencies": {
- "fs-mkdirp-stream": "^1.0.0",
- "glob-stream": "^6.1.0",
- "graceful-fs": "^4.0.0",
- "is-valid-glob": "^1.0.0",
- "lazystream": "^1.0.0",
- "lead": "^1.0.0",
- "object.assign": "^4.0.4",
- "pumpify": "^1.3.5",
- "readable-stream": "^2.3.3",
- "remove-bom-buffer": "^3.0.0",
- "remove-bom-stream": "^1.2.0",
- "resolve-options": "^1.1.0",
- "through2": "^2.0.0",
- "to-through": "^2.0.0",
- "value-or-function": "^3.0.0",
- "vinyl": "^2.0.0",
- "vinyl-sourcemap": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl-fs/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "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/vinyl-fs/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/vinyl-fs/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/vinyl-fs/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/vinyl-sourcemap": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
- "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
- "dev": true,
- "dependencies": {
- "append-buffer": "^1.0.2",
- "convert-source-map": "^1.5.0",
- "graceful-fs": "^4.1.6",
- "normalize-path": "^2.1.1",
- "now-and-later": "^2.0.0",
- "remove-bom-buffer": "^3.0.0",
- "vinyl": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vinyl-sourcemap/node_modules/normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/vinyl-sourcemaps-apply": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
- "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
- "dev": true,
- "dependencies": {
- "source-map": "^0.5.1"
- }
- },
- "node_modules/vinyl/node_modules/replace-ext": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz",
- "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "dev": true,
- "dependencies": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
- "dev": true
- },
- "node_modules/wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
- "dev": true
- },
- "node_modules/yargs": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
- "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
- "dev": true,
- "dependencies": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.1"
- }
- },
- "node_modules/yargs-parser": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
- "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
- "dev": true,
- "dependencies": {
- "camelcase": "^3.0.0",
- "object.assign": "^4.1.0"
- }
- }
- },
"dependencies": {
"accepts": {
"version": "1.3.7",
@@ -10460,15 +4325,6 @@
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
"dev": true
},
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
"string-template": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
@@ -10503,6 +4359,15 @@
}
}
},
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
diff --git a/source/_static/js/main.js b/source/_static/js/main.js
index ecbf1553b..69fe4a9b3 100644
--- a/source/_static/js/main.js
+++ b/source/_static/js/main.js
@@ -320,7 +320,7 @@ window.addEventListener("DOMContentLoaded", (event) => {
else if (page_title === "Software Development Kits (SDK)") {
list[i].insertAdjacentElement('beforebegin',developerPersona);
}
- else if (page_title === "MinIO Client") {
+ else if (page_title === "Kubernetes Reference") {
list[i].insertAdjacentElement('beforebegin',referencePersona);
}
}
diff --git a/source/_templates/platform-navigation.html b/source/_templates/platform-navigation.html
index 4a81a0edb..4807c1871 100644
--- a/source/_templates/platform-navigation.html
+++ b/source/_templates/platform-navigation.html
@@ -1,37 +1,6 @@
diff --git a/source/administration/object-management.rst b/source/administration/object-management.rst
index 59f7d9526..13520495b 100644
--- a/source/administration/object-management.rst
+++ b/source/administration/object-management.rst
@@ -97,11 +97,6 @@ Administrators typically control the creation and configuration of buckets.
Client applications can then use :ref:`S3-compatible SDKs ` to create, list, retrieve, and :ref:`delete ` objects on the MinIO deployment.
Clients therefore drive the overall hierarchy of data within a given bucket or prefix, where Administrators can exercise control using :ref:`policies ` to grant or deny access to an action or resource.
-.. cond:: windows
-
- MinIO does not support the ``\`` or ``:`` characters in object names, regardless of support for those characters in Windows filesystems.
- Use ``/`` as a delimiter in object names to have MinIO automatically create a folder structure using :term:`prefixes `.
-
MinIO has no hard :ref:`thresholds ` on the number of buckets, objects, or prefixes on a given deployment.
The relative performance of the hardware and networking underlying the MinIO deployment may create a practical limit to the number of objects in a given prefix or bucket.
Specifically, hardware using slower drives or network infrastructures tend to exhibit poor performance in buckets or prefixes with a flat hierarchy of objects.
@@ -117,8 +112,13 @@ Consider the following points as general guidance for client applications worklo
For a deeper discussion on the benefits of limiting prefix contents, see the article on :s3-docs:`optimizing S3 performance `.
+.. note::
+
+ MinIO does not support the ``\`` or ``:`` characters in object names, regardless of support for those characters in Windows filesystems.
+ Use ``/`` as a delimiter in object names to have MinIO automatically create a folder structure using :term:`prefixes `.
+
Object Versioning
------------------
+-----------------
.. image:: /images/retention/minio-versioning-multiple-versions.svg
:alt: Object with Multiple Versions
diff --git a/source/default-conf.py b/source/default-conf.py
index a4f530b9a..3979461c9 100644
--- a/source/default-conf.py
+++ b/source/default-conf.py
@@ -72,6 +72,7 @@
'eks-docs' : ('https://docs.aws.amazon.com/eks/latest/userguide/%s', None),
'minio-web' : ('https://min.io/%s?ref=docs', None),
'minio-docs' : ('https://min.io/docs/%s?ref=docs-internal', None),
+ 'minio-blog' : ('https://blog.min.io/%s?ref=docs', None),
'gke-docs' : ('https://cloud.google.com/kubernetes-engine/docs/%s', None),
'gcp-docs' : ('https://cloud.google.com/compute/docs/%s', None),
'gcs-docs' : ('https://cloud.google.com/storage/docs/%s', None),
@@ -107,78 +108,6 @@
excludes = []
-if tags.has("linux"):
- html_baseurl = 'https://min.io/docs/minio/linux/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'linux':
- excludes = i['excludes']
- break
-
-elif tags.has("macos"):
- html_baseurl = 'https://min.io/docs/minio/macos/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'macos':
- excludes = i['excludes']
- break
-
-elif tags.has("windows"):
- # html_baseurl is used for generating the sitemap.xml for each platform. These are combined in a sitemapindex.xml.
- html_baseurl = 'https://min.io/docs/minio/windows/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'windows':
- excludes = i['excludes']
- break
-
-elif tags.has("container"):
- html_baseurl = 'https://min.io/docs/minio/container/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'container':
- excludes = i['excludes']
- break
-
-elif tags.has("k8s") and not (tags.has("openshift") or tags.has("eks") or tags.has("gke") or tags.has("aks")):
- html_baseurl = 'https://min.io/docs/minio/kubernetes/upstream/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'k8s':
- excludes = i['excludes']
- break
-
-elif tags.has("openshift"):
- html_baseurl = 'https://min.io/docs/minio/kubernetes/openshift/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'openshift':
- excludes = i['excludes']
- break
-
-elif tags.has("eks"):
- html_baseurl = 'https://min.io/docs/minio/kubernetes/eks/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'eks':
- excludes = i['excludes']
- break
-
-elif tags.has("gke"):
- html_baseurl = 'https://min.io/docs/minio/kubernetes/gke/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'gke':
- excludes = i['excludes']
- break
-
-elif tags.has("aks"):
- html_baseurl = 'https://min.io/docs/minio/kubernetes/aks/'
- with open('url-excludes.yaml','r') as f:
- for i in (yaml.safe_load_all(f)):
- if i['tag'] == 'aks':
- excludes = i['excludes']
- break
exclude_patterns.extend(excludes)
@@ -247,39 +176,21 @@
# Add https://www.min.io/robots.txt to html_extra_path list once available.
html_extra_path = [ 'extra']
-# -- Project information -----------------------------------------------------
-
-# We assume a single tag, since we control the builder
-
-platform = list(tags.tags.keys())[0]
+html_baseurl = 'https://min.io/docs/minio/'
-platform_fmt = ""
+# -- Project information -----------------------------------------------------
-if platform == "k8s":
- platform_fmt = "Kubernetes"
-elif platform == "macos":
- platform_fmt = "MacOS"
-elif platform == "openshift":
- platform_fmt = "OpenShift"
-elif platform == "eks":
- platform_fmt = "Elastic Kubernetes Service"
-elif platform == "gke":
- platform_fmt = "Google Kubernetes Engine"
-elif platform == "aks":
- platform_fmt = "Azure Kubernetes Service"
-else:
- platform_fmt = platform.capitalize()
-project = 'MinIO Documentation for ' + platform_fmt
+project = 'Documentation for MinIO Object Storage'
copyright = '2020-Present, MinIO, Inc. '
author = 'MinIO Documentation Team'
-html_title = 'MinIO Object Storage for ' + platform_fmt
-html_short_title = 'MinIO Object Storage for ' + platform_fmt
+html_title = 'MinIO Object Storage (AGPLv3)'
+html_short_title = 'MinIO Object Storage'
html_permalinks_icon = ''
html_context = {
- 'doc_platform': platform.lower(),
+ 'doc_platform': 'k8s',
'docs': [
# The first item has to be the current docs site #
{
@@ -307,14 +218,9 @@
# k8s is temporary until integrating the references here
-intersphinx_mapping = {
- 'linux' : ('https://min.io/docs/minio/linux/', None),
- 'kubernetes' : ('https://min.io/docs/minio/kubernetes/upstream/',None)
-}
-
rst_prolog = """
-.. |platform| replace:: %s
+.. |platform| replace:: 'foo'
.. |podman| replace:: `Podman `__
@@ -324,8 +230,16 @@
.. |minio-latest| replace:: MINIOLATEST
.. |minio-rpm| replace:: RPMURL
.. |minio-deb| replace:: DEBURL
-.. |minio-rpmarm64| replace:: RPMARM64URL
-.. |minio-debarm64| replace:: DEBARM64URL
+.. |minio-binary| replace:: MINIOURL
+.. |minio-rpm-arm64| replace:: RPMARM64URL
+.. |minio-deb-arm64| replace:: DEBARM64URL
+.. |minio-binary-arm64| replace:: MINIOARM64URL
+.. |minio-rpm-ppc64le| replace:: RPMPPC64LEURL
+.. |minio-deb-ppc64le| replace:: DEBPPC64LEURL
+.. |minio-binary-ppc64le| replace:: MINIOPPC64LEURL
+.. |minio-rpms-390x| replace:: RPMS390XURL
+.. |minio-debs-390x| replace:: DEBS390XURL
+.. |minio-binarys-390x| replace:: MINIOS390XURL
.. |subnet| replace:: `MinIO SUBNET `__
.. |subnet-short| replace:: `SUBNET `__
.. |SNSD| replace:: :abbr:`SNSD (Single-Node Single-Drive)`
@@ -349,4 +263,4 @@
.. |rust-sdk-version| replace:: RUSTVERSION
-""" % platform_fmt
+"""
diff --git a/source/design.rst b/source/design.rst
index 9f09e8889..4e472589d 100644
--- a/source/design.rst
+++ b/source/design.rst
@@ -219,7 +219,7 @@ Grids
Header 1
--------
-.. cond:: linux
+.. cond:: mindocs
.. include:: /includes/common/common-design.rst
diff --git a/source/developers/file-transfer-protocol.rst b/source/developers/file-transfer-protocol.rst
index 3148cc9d0..ea4a89413 100644
--- a/source/developers/file-transfer-protocol.rst
+++ b/source/developers/file-transfer-protocol.rst
@@ -12,13 +12,215 @@ File Transfer Protocol (FTP/SFTP)
.. contents:: Table of Contents
:local:
- :depth: 1
+ :depth: 2
-.. cond:: not k8s
+.. tab-set::
+ :class: parent
- .. include:: /includes/linux/file-transfer-protocol-not-k8s.rst
+ .. tab-item:: Kubernetes
+ :sync: k8s
-.. cond:: k8s and not (openshift or eks or gke or aks)
+ Starting with Operator 5.0.7 and :minio-release:`MinIO Server RELEASE.2023-04-20T17-56-55Z `, you can use the SSH File Transfer Protocol (SFTP) to interact with the objects on a MinIO Operator Tenant deployment.
- .. include:: /includes/k8s/file-transfer-protocol-k8s.rst
+ SFTP is defined by the Internet Engineering Task Force (IETF) as an extension of SSH 2.0.
+ It allows file transfer over SSH for use with :ref:`Transport Layer Security (TLS) ` and virtual private network (VPN) applications.
+
+ Enabling SFTP does not affect other MinIO features.
+
+ .. tab-item:: Baremetal
+ :sync: baremetal
+
+ Starting with :minio-release:`MinIO Server RELEASE.2023-04-20T17-56-55Z `, you can use the File Transfer Protocol (FTP) to interact with the objects on a MinIO deployment.
+
+ You must specifically enable FTP or SFTP when starting the server.
+ Enabling either server type does not affect other MinIO features.
+
+ This page uses the abbreviation FTP throughout, but you can use any of the supported FTP protocols described below.
+
+Supported Protocols
+-------------------
+
+.. tab-set::
+ :class: hidden
+
+ .. tab-item:: Kubernetes
+ :sync: k8s
+
+ The MinIO Operator only supports configuring SSH File Transfer Protocol (SFTP).
+
+ .. tab-item:: Baremetal
+ :sync: baremetal
+
+ When enabled, MinIO supports FTP access over the following protocols:
+
+ - SSH File Transfer Protocol (SFTP)
+
+ SFTP is defined by the Internet Engineering Task Force (IETF) as an extension of SSH 2.0.
+ SFTP allows file transfer over SSH for use with :ref:`Transport Layer Security (TLS) ` and virtual private network (VPN) applications.
+
+ Your FTP client must support SFTP.
+
+ - File Transfer Protocol over SSL/TLS (FTPS)
+
+ FTPS allows for encrypted FTP communication with TLS certificates over the standard FTP communication channel.
+ FTPS should not be confused with SFTP, as FTPS does not communicate over a Secure Shell (SSH).
+
+ Your FTP client must support FTPS.
+
+ - File Transfer Protocol (FTP)
+
+ Unencrypted file transfer.
+
+ MinIO does **not** recommend using unencrypted FTP for file transfer.
+
+Supported Commands
+------------------
+
+When enabled, MinIO supports the following SFTP operations:
+
+- ``get``
+- ``put``
+- ``ls``
+- ``mkdir``
+- ``rmdir``
+- ``delete``
+
+MinIO does not support either ``append`` or ``rename`` operations.
+
+Considerations
+--------------
+
+Versioning
+~~~~~~~~~~
+
+SFTP clients can only operate on the :ref:`latest version ` of an object.
+Specifically:
+
+- For read operations, MinIO only returns the latest version of the requested object(s) to the SFTP client.
+- For write operations, MinIO applies normal versioning behavior and creates a new object version at the specified namespace.
+ ``rm`` and ``rmdir`` operations create ``DeleteMarker`` objects.
+
+Authentication and Access
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+SFTP access requires the same authentication as any other S3 client.
+MinIO supports the following authentication providers:
+
+- :ref:`MinIO IDP ` users and their service accounts
+- :ref:`Active Directory/LDAP ` users and their service accounts
+- :ref:`OpenID/OIDC ` service accounts
+
+:ref:`STS ` credentials **cannot** access buckets or objects over SFTP.
+
+Authenticated users can access buckets and objects based on the :ref:`policies ` assigned to the user or parent user account.
+
+The SFTP protocol does not require any of the ``admin:*`` :ref:`permissions `.
+You may not perform other MinIO admin actions with SFTP.
+
+Prerequisites
+-------------
+
+.. tab-set::
+ :class: hidden
+
+ .. tab-item:: Kubernetes
+ :sync: k8s
+
+ - MinIO Operator v5.0.7 or later.
+ - Enable an SFTP port (8022) for the server.
+ - A port to use for the SFTP commands and a range of ports to allow the SFTP server to request to use for the data transfer.
+
+ .. tab-item:: Baremetal
+ :sync: baremetal
+
+ - MinIO RELEASE.2023-04-20T17-56-55Z or later.
+ - Enable an FTP or SFTP port for the server.
+ - A port to use for the FTP commands and a range of ports to allow the FTP server to request to use for the data transfer.
+
+Procedure
+---------
+
+.. tab-set::
+ :class: hidden
+
+ .. tab-item:: Kubernetes
+ :sync: k8s
+
+ .. include:: /includes/k8s/file-transfer-protocol-k8s.rst
+
+ .. tab-item:: Baremetal
+ :sync: baremetal
+
+ .. include:: /includes/linux/file-transfer-protocol-not-k8s.rst
+
+.. _minio-certificate-key-file-sftp-k8s:
+
+Connect to MinIO Using SFTP with a Certificate Key File
+-------------------------------------------------------
+
+.. versionadded:: RELEASE.2024-05-07T06-41-25Z
+
+
+MinIO supports mutual TLS (mTLS) certificate-based authentication on SFTP, where both the server and the client verify the authenticity of each other.
+
+This type of authentication requires the following:
+
+1. Public key file for the trusted certificate authority
+2. Public key file for the MinIO Server minted and signed by the trusted certificate authority
+3. Public key file for the user minted and signed by the trusted certificate authority for the client connecting by SFTP and located in the user's ``.ssh`` folder (or equivalent for the operating system)
+
+The keys must include a `principals list `__ of the user(s) that can authenticate with the key:
+
+.. code-block:: console
+ :class: copyable
+
+ ssh-keygen -s ~/.ssh/ca_user_key -I miniouser -n miniouser -V +1h -z 1 miniouser1.pub
+
+- ``-s`` specifies the path to the certificate authority public key to use for generating this key.
+ The specified public key must have a ``principals`` list that includes this user.
+- ``-I`` specifies the key identity for the public key.
+- ``-n`` creates the ``user principals`` list for which this key is valid.
+ You must include the user for which this key is valid, and the user must match the username in MinIO.
+- ``-V`` limits the duration for which the generated key is valid.
+ In this example, the key is valid for one hour.
+ Adjust the duration for your requirements.
+- ``-z`` adds a serial number to the key to distinguish this generated public key from other keys signed by the same certificate authority public key.
+
+MinIO requires specifying the Certificate Authority used to sign the certificates for SFTP access.
+Start or restart the MinIO Server and specify the path to the trusted certificate authority's public key using an ``--sftp="trusted-user-ca-key=PATH"`` flag:
+
+ .. code-block:: console
+ :class: copyable
+
+ minio server {path-to-server} --sftp="trusted-user-ca-key=/path/to/.ssh/ca_user_key.pub" {...other flags}
+
+When connecting to the MinIO Server with SFTP, the client verifies the MinIO Server's certificate.
+The client then passes its own certificate to the MinIO Server.
+The MinIO Server verifies the key created above by comparing its value to the the known public key from the certificate authority provided at server startup.
+
+Once the MinIO Server verifies the client's certificate, the user can connect to the MinIO server over SFTP:
+
+.. code-block:: bash
+ :class: copyable:
+
+ sftp -P
+
+Require service account or LDAP for authentication
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To force authentication to SFTP using LDAP or service account credentials, append a suffix to the username.
+Valid suffixes are either ``=ldap`` or ``=svc``.
+
+.. code-block:: console
+
+ > sftp -P 8022 my-ldap-user=ldap@[minio@localhost]:/bucket
+
+
+.. code-block:: console
+
+ > sftp -P 8022 my-ldap-user=svc@[minio@localhost]:/bucket
+
+
+- Replace ``my-ldap-user`` with the username to use.
+- Replace ``[minio@localhost]`` with the address of the MinIO server.
diff --git a/source/developers/security-token-service.rst b/source/developers/security-token-service.rst
index 17c53d155..dcd5bfb1d 100644
--- a/source/developers/security-token-service.rst
+++ b/source/developers/security-token-service.rst
@@ -45,4 +45,5 @@ MinIO supports the following STS API endpoints:
:hidden:
:glob:
- /developers/security-token-service/*
\ No newline at end of file
+ /developers/security-token-service/*
+ /developers/sts-for-operator
diff --git a/source/includes/aks/deploy-minio-on-azure-kubernetes-service.rst b/source/includes/aks/deploy-minio-on-azure-kubernetes-service.rst
deleted file mode 100644
index 9502f6014..000000000
--- a/source/includes/aks/deploy-minio-on-azure-kubernetes-service.rst
+++ /dev/null
@@ -1,53 +0,0 @@
-
-.. _deploy-operator-gke:
-
-=================================================
-Deploy MinIO Operator on Azure Kubernetes Service
-=================================================
-
-.. default-domain:: minio
-
-.. contents:: Table of Contents
- :local:
- :depth: 1
-
-Overview
---------
-
-`Azure Kubernetes Engine `__ (AKS) is a highly available, secure, and fully managed Kubernetes service from Microsoft Azure.
-The MinIO Kubernetes Operator supports deploying MinIO Tenants onto AKS infrastructure using the MinIO Operator Console or `kustomize `__ for :minio-git:`YAML-defined deployments `.
-
-:minio-web:`Through the AKS Marketplace `
- MinIO maintains an `AKS Marketplace listing `__ through which you can register your AKS cluster with |subnet|.
- Any MinIO tenant you deploy through Marketplace-connected clusters can take advantage of SUBNET registration, including 24/7 access to MinIO engineers.
-
-This page documents deploying the MinIO Operator through the CLI using Kustomize.
-For instructions on deploying the MinIO Operator through the AKS Marketplace, see :minio-web:`Deploy MinIO through AKS `
-
-This documentation assumes familiarity with all referenced Kubernetes and Azure Kubernetes Service concepts, utilities, and procedures.
-While this documentation *may* provide guidance for configuring or deploying Kubernetes-related or Azure Kubernetes Service-related resources on a best-effort basis, it is not a replacement for the official :kube-docs:`Kubernetes Documentation <>`.
-
-Prerequisites
--------------
-
-Existing AKS Cluster
-~~~~~~~~~~~~~~~~~~~~
-
-This procedure assumes an existing :abbr:`AKS (Azure Kubernetes Service)` cluster onto which you can deploy the MinIO Operator.
-
-The Operator by default deploys pods and services with two replicas each and pod anti-affinity.
-The AKS cluster should therefore have at least two nodes available for scheduling Operator pods and services.
-While these nodes *may* be the same nodes intended for use by MinIO Tenants, co-locating Operator and Tenant pods may increase the risk of service interruptions due to the loss of any one node.
-
-``kubectl`` Access to the AKS Cluster
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Ensure your host machine has a ``kubectl`` installation compatible with the target AKS cluster.
-For guidance on connecting ``kubectl`` to AKS, see :aks-docs:`Install kubectl and configure cluster access `.
-
-Procedure
----------
-
-The following steps deploy Operator using Kustomize and a ``kustomization.yaml`` file from the MinIO Operator GitHub repository.
-
-.. include:: /includes/common/common-install-operator-kustomize.rst
diff --git a/source/includes/baremetal/steps-configure-ad-ldap-external-identity-management.rst b/source/includes/baremetal/steps-configure-ad-ldap-external-identity-management.rst
new file mode 100644
index 000000000..48f5992d7
--- /dev/null
+++ b/source/includes/baremetal/steps-configure-ad-ldap-external-identity-management.rst
@@ -0,0 +1,155 @@
+1. Set the Active Directory / LDAP Configuration Settings
+
+ Configure the AD/LDAP provider using one of the following:
+
+ * MinIO Client
+ * Environment variables
+ * MinIO Console
+
+ All methods require starting/restarting the MinIO deployment to apply changes.
+
+ The following tabs provide a quick reference for the available configuration methods:
+
+ .. tab-set::
+
+ .. tab-item:: MinIO Client
+
+ MinIO supports specifying the AD/LDAP provider settings using :mc:`mc idp ldap` commands.
+
+ For distributed deployments, the :mc:`mc idp ldap` command applies the configuration to all nodes in the deployment.
+
+ The following example code sets *all* configuration settings related to configuring an AD/LDAP provider for external identity management.
+ The minimum *required* settings are:
+
+ - :mc-conf:`server_addr `
+ - :mc-conf:`lookup_bind_dn `
+ - :mc-conf:`lookup_bind_password `
+ - :mc-conf:`user_dn_search_base_dn `
+ - :mc-conf:`user_dn_search_filter `
+
+ .. code-block:: shell
+ :class: copyable
+
+ mc idp ldap add ALIAS \
+ server_addr="ldaps.example.net:636" \
+ lookup_bind_dn="CN=xxxxx,OU=xxxxx,OU=xxxxx,DC=example,DC=net" \
+ lookup_bind_password="xxxxxxxx" \
+ user_dn_search_base_dn="DC=example,DC=net" \
+ user_dn_search_filter="(&(objectCategory=user)(sAMAccountName=%s))" \
+ group_search_filter= "(&(objectClass=group)(member=%d))" \
+ group_search_base_dn="ou=MinIO Users,dc=example,dc=net" \
+ enabled="true" \
+ tls_skip_verify="off" \
+ server_insecure=off \
+ server_starttls="off" \
+ srv_record_name="" \
+ comment="Test LDAP server"
+
+ For more complete documentation on these settings, see :mc:`mc idp ldap`.
+
+ .. admonition:: :mc:`mc idp ldap` recommended
+ :class: note
+
+ :mc:`mc idp ldap` offers additional features and improved validation over :mc-cmd:`mc admin config set` runtime configuration settings.
+ :mc:`mc idp ldap` supports the same settings as :mc:`mc admin config` and the :mc-conf:`identity_ldap` configuration key.
+
+ The :mc-conf:`identity_ldap` configuration key remains available for existing scripts and tools.
+
+ .. tab-item:: Environment Variables
+
+ MinIO supports specifying the AD/LDAP provider settings using :ref:`environment variables `.
+ The :mc:`minio server` process applies the specified settings on its next startup.
+ For distributed deployments, specify these settings across all nodes in the deployment using the *same* values.
+ Any differences in server configurations between nodes will result in startup or configuration failures.
+
+ The following example code sets *all* environment variables related to configuring an AD/LDAP provider for external identity management. The minimum *required* variable are:
+
+ - :envvar:`MINIO_IDENTITY_LDAP_SERVER_ADDR`
+ - :envvar:`MINIO_IDENTITY_LDAP_LOOKUP_BIND_DN`
+ - :envvar:`MINIO_IDENTITY_LDAP_LOOKUP_BIND_PASSWORD`
+ - :envvar:`MINIO_IDENTITY_LDAP_USER_DN_SEARCH_BASE_DN`
+ - :envvar:`MINIO_IDENTITY_LDAP_USER_DN_SEARCH_FILTER`
+
+ .. code-block:: shell
+ :class: copyable
+
+ export MINIO_IDENTITY_LDAP_SERVER_ADDR="ldaps.example.net:636"
+ export MINIO_IDENTITY_LDAP_LOOKUP_BIND_DN="CN=xxxxx,OU=xxxxx,OU=xxxxx,DC=example,DC=net"
+ export MINIO_IDENTITY_LDAP_USER_DN_SEARCH_BASE_DN="dc=example,dc=net"
+ export MINIO_IDENTITY_LDAP_USER_DN_SEARCH_FILTER="(&(objectCategory=user)(sAMAccountName=%s))"
+ export MINIO_IDENTITY_LDAP_LOOKUP_BIND_PASSWORD="xxxxxxxxx"
+ export MINIO_IDENTITY_LDAP_GROUP_SEARCH_FILTER="(&(objectClass=group)(member=%d))"
+ export MINIO_IDENTITY_LDAP_GROUP_SEARCH_BASE_DN="ou=MinIO Users,dc=example,dc=net"
+ export MINIO_IDENTITY_LDAP_TLS_SKIP_VERIFY="off"
+ export MINIO_IDENTITY_LDAP_SERVER_INSECURE="off"
+ export MINIO_IDENTITY_LDAP_SERVER_STARTTLS="off"
+ export MINIO_IDENTITY_LDAP_SRV_RECORD_NAME=""
+ export MINIO_IDENTITY_LDAP_COMMENT="LDAP test server"
+
+ For complete documentation on these variables, see :ref:`minio-server-envvar-external-identity-management-ad-ldap`
+
+ .. tab-item:: MinIO Console
+
+ MinIO supports specifying the AD/LDAP provider settings using the :ref:`MinIO Console `.
+ For distributed deployments, configuring AD/LDAP from the Console applies the configuration to all nodes in the deployment.
+
+ .. include:: /includes/common-minio-external-auth.rst
+ :start-after: start-minio-ad-ldap-console-enable
+ :end-before: end-minio-ad-ldap-console-enable
+
+#. Restart the MinIO Deployment
+
+ You must restart the MinIO deployment to apply the configuration changes.
+
+ If you configured AD/LDAP from the MinIO Console, no additional action is required.
+ The MinIO Console automatically restarts the deployment after saving the new AD/LDAP configuration.
+
+ For MinIO Client and environment variable configuration, use the :mc-cmd:`mc admin service restart` command to restart the deployment:
+
+ .. code-block:: shell
+ :class: copyable
+
+ mc admin service restart ALIAS
+
+ Replace ``ALIAS`` with the :ref:`alias ` of the deployment to restart.
+
+#. Use the MinIO Console to Log In with AD/LDAP Credentials
+
+ The MinIO Console supports the full workflow of authenticating to the AD/LDAP provider, generating temporary credentials using the MinIO :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) endpoint, and logging the user into the MinIO deployment.
+
+ You can access the Console by opening the root URL for the MinIO cluster. For example, ``https://minio.example.net:9000``.
+
+ Once logged in, you can perform any action for which the authenticated user is :ref:`authorized `.
+
+ You can also create :ref:`access keys ` for supporting applications which must perform operations on MinIO.
+ Access Keys are long-lived credentials which inherit their privileges from the parent user.
+ The parent user can further restrict those privileges while creating the service account.
+
+#. Generate S3-Compatible Temporary Credentials using AD/LDAP Credentials
+
+ MinIO requires clients to authenticate using :s3-api:`AWS Signature Version 4 protocol ` with support for the deprecated Signature Version 2 protocol.
+ Specifically, clients must present a valid access key and secret key to access any S3 or MinIO administrative API, such as ``PUT``, ``GET``, and ``DELETE`` operations.
+
+ Applications can generate temporary access credentials as-needed using the :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) API endpoint and AD/LDAP user credentials.
+ MinIO provides an example Go application :minio-git:`ldap.go ` that manages this workflow.
+
+ .. code-block:: shell
+
+ POST https://minio.example.net?Action=AssumeRoleWithLDAPIdentity
+ &LDAPUsername=USERNAME
+ &LDAPPassword=PASSWORD
+ &Version=2011-06-15
+ &Policy={}
+
+ - Replace the ``LDAPUsername`` with the username of the AD/LDAP user.
+
+ - Replace the ``LDAPPassword`` with the password of the AD/LDAP user.
+
+ - Replace the ``Policy`` with an inline URL-encoded JSON :ref:`policy ` that further restricts the permissions associated to the temporary credentials.
+
+ Omit to use the :ref:`policy whose name matches ` the Distinguished Name (DN) of the AD/LDAP user.
+
+ The API response consists of an XML document containing the access key, secret key, session token, and expiration date.
+ Applications can use the access key and secret key to access and perform operations on MinIO.
+
+ See the :ref:`minio-sts-assumerolewithldapidentity` for reference documentation.
\ No newline at end of file
diff --git a/source/includes/baremetal/steps-configure-keycloak-identity-management.rst b/source/includes/baremetal/steps-configure-keycloak-identity-management.rst
new file mode 100644
index 000000000..7c78c69e7
--- /dev/null
+++ b/source/includes/baremetal/steps-configure-keycloak-identity-management.rst
@@ -0,0 +1,85 @@
+.. |KEYCLOAK_URL| replace:: keycloak-url.example.net:8080
+.. |MINIO_S3_URL| replace:: minio-url.example.net:9000
+.. |MINIO_CONSOLE_URL| replace:: minio-url.example.net:9001
+
+#. Configure or Create a Client for Accessing Keycloak
+
+ Authenticate to the Keycloak :guilabel:`Administrative Console` and navigate to :guilabel:`Clients`.
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-client
+ :end-before: end-configure-keycloak-client
+
+#. Create Client Scope for MinIO Client
+
+ Client scopes allow Keycloak to map user attributes as part of the JSON Web Token (JWT) returned in authentication requests.
+ This allows MinIO to reference those attributes when assigning policies to the user.
+ This step creates the necessary client scope to support MinIO authorization after successful Keycloak authentication.
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-client-scope
+ :end-before: end-configure-keycloak-client-scope
+
+#. Apply the Necessary Attribute to Keycloak Users/Groups
+
+ You must assign an attribute named ``policy`` to the Keycloak Users or Groups.
+ Set the value to any :ref:`policy ` on the MinIO deployment.
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-user-group-attributes
+ :end-before: end-configure-keycloak-user-group-attributes
+
+#. Configure MinIO for Keycloak Authentication
+
+ MinIO supports multiple methods for configuring Keycloak authentication:
+
+ - Using the MinIO Console
+ - Using a terminal/shell and the :mc:`mc idp openid` command
+ - Using environment variables set prior to starting MinIO
+
+ .. tab-set::
+
+ .. tab-item:: MinIO Console
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-minio-console
+ :end-before: end-configure-keycloak-minio-console
+
+ .. tab-item:: CLI
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-minio-cli
+ :end-before: end-configure-keycloak-minio-cli
+
+ .. tab-item:: Environment Variables
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-minio-envvar
+ :end-before: end-configure-keycloak-minio-envvar
+
+ Restart the MinIO deployment for the changes to apply.
+
+ Check the MinIO logs and verify that startup succeeded with no errors related to the OIDC configuration.
+
+ If you attempt to log in with the Console, you should now see an (SSO) button using the configured :guilabel:`Display Name`.
+
+ Specify a configured user and attempt to log in.
+ MinIO should automatically redirect you to the Keycloak login entry.
+ Upon successful authentication, Keycloak should redirect you back to the MinIO Console using either the originating Console URL *or* the :guilabel:`Redirect URI` if configured.
+
+#. Generate Application Credentials using the Security Token Service (STS)
+
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-sts
+ :end-before: end-configure-keycloak-sts
+
+#. Next Steps
+
+ Applications should implement the :ref:`STS AssumeRoleWithWebIdentity ` flow using their :ref:`SDK ` of choice.
+ When STS credentials expire, applications should have logic in place to regenerate the JWT token, STS token, and MinIO credentials before retrying and continuing operations.
+
+ Alternatively, users can generate :ref:`access keys ` through the MinIO Console for the purpose of creating long-lived API-key like access using their Keycloak credentials.
+
+
+
+
diff --git a/source/includes/baremetal/steps-configure-openid-external-identity-management.rst b/source/includes/baremetal/steps-configure-openid-external-identity-management.rst
new file mode 100644
index 000000000..5507ed18b
--- /dev/null
+++ b/source/includes/baremetal/steps-configure-openid-external-identity-management.rst
@@ -0,0 +1,156 @@
+1. Set the OpenID Configuration Settings
+
+ You can configure the :abbr:`OIDC (OpenID Connect)` provider using either
+ environment variables *or* server runtime configuration settings. Both
+ methods require starting/restarting the MinIO deployment to apply changes. The
+ following tabs provide a quick reference of all required and optional
+ environment variables and configuration settings respectively:
+
+ .. tab-set::
+
+ .. tab-item:: Environment Variables
+
+ MinIO supports specifying the :abbr:`OIDC (OpenID Connect)` provider
+ settings using :ref:`environment variables
+ `. The
+ :mc:`minio server` process applies the specified settings on its next
+ startup. For distributed deployments, specify these settings across all
+ nodes in the deployment using the *same* values consistently.
+
+ The following example code sets *all* environment variables related to
+ configuring an :abbr:`OIDC (OpenID Connect)` provider for external
+ identity management. The minimum *required* variable is
+ :envvar:`MINIO_IDENTITY_OPENID_CONFIG_URL`:
+
+ .. code-block:: shell
+ :class: copyable
+
+ export MINIO_IDENTITY_OPENID_CONFIG_URL="https://openid-provider.example.net/.well-known/openid-configuration"
+ export MINIO_IDENTITY_OPENID_CLIENT_ID=""
+ export MINIO_IDENTITY_OPENID_CLIENT_SECRET=""
+ export MINIO_IDENTITY_OPENID_CLAIM_NAME=""
+ export MINIO_IDENTITY_OPENID_CLAIM_PREFIX=""
+ export MINIO_IDENTITY_OPENID_SCOPES=""
+ export MINIO_IDENTITY_OPENID_REDIRECT_URI=""
+ export MINIO_IDENTITY_OPENID_COMMENT=""
+
+ Replace the ``MINIO_IDENTITY_OPENID_CONFIG_URL`` with the URL endpoint of
+ the :abbr:`OIDC (OpenID Connect)` provider discovery document.
+
+ For complete documentation on these variables, see
+ :ref:`minio-server-envvar-external-identity-management-openid`
+
+ .. tab-item:: Configuration Settings
+
+ MinIO supports specifying the :abbr:`OIDC (OpenID Connect)` provider
+ settings using :mc-conf:`configuration settings `. The
+ :mc:`minio server` process applies the specified settings on its next
+ startup. For distributed deployments, the :mc:`mc admin config`
+ command applies the configuration to all nodes in the deployment.
+
+ The following example code sets *all* configuration settings related to
+ configuring an :abbr:`OIDC (OpenID Connect)` provider for external
+ identity management. The minimum *required* setting is
+ :mc-conf:`identity_openid config_url `:
+
+ .. code-block:: shell
+ :class: copyable
+
+ mc admin config set ALIAS/ identity_openid \
+ config_url="https://openid-provider.example.net/.well-known/openid-configuration" \
+ client_id="" \
+ client_secret="" \
+ claim_name="" \
+ claim_prefix="" \
+ scopes="" \
+ redirect_uri="" \
+ comment=""
+
+ Replace the ``config_url`` with the URL endpoint of the
+ :abbr:`OIDC (OpenID Connect)` provider discovery document.
+
+ For more complete documentation on these settings, see
+ :mc-conf:`identity_openid`.
+
+#. Restart the MinIO Deployment
+
+ You must restart the MinIO deployment to apply the configuration changes.
+ Use the :mc-cmd:`mc admin service restart` command to restart the deployment.
+
+ .. code-block:: shell
+ :class: copyable
+
+ mc admin service restart ALIAS
+
+ Replace ``ALIAS`` with the :ref:`alias ` of the deployment to
+ restart.
+
+#. Use the MinIO Console to Log In with OIDC Credentials
+
+ The MinIO Console supports the full workflow of authenticating to the
+ :abbr:`OIDC (OpenID Connect)` provider, generating temporary credentials using
+ the MinIO :ref:`minio-sts-assumerolewithwebidentity` Security Token Service
+ (STS) endpoint, and logging the user into the MinIO deployment.
+
+ Starting in :minio-release:`RELEASE.2021-07-08T01-15-01Z`, the MinIO Console is
+ embedded in the MinIO server. You can access the Console by opening the root URL
+ for the MinIO cluster. For example, ``https://minio.example.net:9000``.
+
+ From the Console, click :guilabel:`BUTTON` to begin the OpenID authentication
+ flow.
+
+ Once logged in, you can perform any action for which the authenticated
+ user is :ref:`authorized
+ `.
+
+ You can also create :ref:`access keys ` for
+ supporting applications which must perform operations on MinIO. Access Keys
+ are long-lived credentials which inherit their privileges from the parent user.
+ The parent user can further restrict those privileges while creating the service
+ account.
+
+#. Generate S3-Compatible Temporary Credentials using OIDC Credentials
+
+ MinIO requires clients authenticate using :s3-api:`AWS Signature Version 4
+ protocol ` with support for the deprecated
+ Signature Version 2 protocol. Specifically, clients must present a valid access
+ key and secret key to access any S3 or MinIO administrative API, such as
+ ``PUT``, ``GET``, and ``DELETE`` operations.
+
+ Applications can generate temporary access credentials as-needed using the
+ :ref:`minio-sts-assumerolewithwebidentity` Security Token Service (STS)
+ API endpoint and the JSON Web Token (JWT) returned by the
+ :abbr:`OIDC (OpenID Connect)` provider.
+
+ The application must provide a workflow for logging into the
+ :abbr:`OIDC (OpenID Connect)` provider and retrieving the
+ JSON Web Token (JWT) associated to the authentication session. Defer to the
+ provider documentation for obtaining and parsing the JWT token after successful
+ authentication. MinIO provides an example Go application
+ :minio-git:`web-identity.go ` with
+ an example of managing this workflow.
+
+ Once the application retrieves the JWT token, use the
+ ``AssumeRoleWithWebIdentity`` endpoint to generate the temporary credentials:
+
+ .. code-block:: shell
+ :class: copyable
+
+ POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
+ &WebIdentityToken=TOKEN
+ &Version=2011-06-15
+ &DurationSeconds=86400
+ &Policy=Policy
+
+ - Replace the ``TOKEN`` with the JWT token returned in the previous step.
+ - Replace the ``DurationSeconds`` with the duration in seconds until the temporary credentials expire. The example above specifies a period of ``86400`` seconds, or 24 hours.
+ - Replace the ``Policy`` with an inline URL-encoded JSON :ref:`policy ` that further restricts the permissions associated to the temporary credentials.
+
+ Omit to use the policy associated to the OpenID user :ref:`policy claim `.
+
+ The API response consists of an XML document containing the
+ access key, secret key, session token, and expiration date. Applications
+ can use the access key and secret key to access and perform operations on
+ MinIO.
+
+ See the :ref:`minio-sts-assumerolewithwebidentity` for reference documentation.
\ No newline at end of file
diff --git a/source/includes/common-installation.rst b/source/includes/common-installation.rst
index ce51a039c..a0eadf402 100644
--- a/source/includes/common-installation.rst
+++ b/source/includes/common-installation.rst
@@ -3,7 +3,7 @@
The following tabs provide examples of installing MinIO onto 64-bit Linux operating systems using RPM, DEB, or binary.
The RPM and DEB packages automatically install MinIO to the necessary system paths and create a ``minio`` service for ``systemctl``.
MinIO strongly recommends using the RPM or DEB installation routes.
-To update deployments managed using ``systemctl``, see :ref:`minio-upgrade-systemctl`.
+To update deployments managed using ``systemctl``, see :ref:`minio-upgrade`.
.. tab-set::
diff --git a/source/includes/common/common-k8s-connect-operator-console-no-plugin.rst b/source/includes/common/common-k8s-connect-operator-console-no-plugin.rst
deleted file mode 100644
index 64c2bff9a..000000000
--- a/source/includes/common/common-k8s-connect-operator-console-no-plugin.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-The Operator Console service does not automatically bind or expose itself for external access on the Kubernetes cluster.
-Instead, you must configure a network control plane component, such as a load balancer or ingress, to grant external access.
-
-For testing purposes or short-term access, expose the Operator Console service through a NodePort using the following patch:
-
-.. code-block:: shell
- :class: copyable
-
- kubectl patch service -n minio-operator console -p '
- {
- "spec": {
- "ports": [
- {
- "name": "http",
- "port": 9090,
- "protocol": "TCP",
- "targetPort": 9090,
- "nodePort": 30090
- },
- {
- "name": "https",
- "port": 9443,
- "protocol": "TCP",
- "targetPort": 9443,
- "nodePort": 30433
- }
- ],
- "type": "NodePort"
- }
- }'
-
-After applying the path, you can access the service through port ``30433`` on any of the Kubernetes worker nodes.
-
-Append the ``nodePort`` value to the externally-accessible IP address of a worker node in your Kubernetes cluster.
-Use the appropriate ``http`` or ``https`` port depending on whether you deployed Operator Console with TLS.
diff --git a/source/includes/common/common-k8s-connect-operator-console.rst b/source/includes/common/common-k8s-connect-operator-console.rst
deleted file mode 100644
index b8c50dca2..000000000
--- a/source/includes/common/common-k8s-connect-operator-console.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-.. dropdown:: Port Forwarding
- :open:
-
- The :ref:`Operator Console service ` does not automatically bind or expose itself for external access on the Kubernetes cluster.
- Instead, configure a network control plane component, such as a load balancer or ingress, to grant external access.
-
- .. cond:: k8s and not openshift
-
- For testing purposes or short-term access, expose the Operator Console service through a NodePort using the following patch:
-
- .. code-block:: shell
- :class: copyable
-
- kubectl patch service -n minio-operator console -p '
- {
- "spec": {
- "ports": [
- {
- "name": "http",
- "port": 9090,
- "protocol": "TCP",
- "targetPort": 9090,
- "nodePort": 30090
- },
- {
- "name": "https",
- "port": 9443,
- "protocol": "TCP",
- "targetPort": 9443,
- "nodePort": 30433
- }
- ],
- "type": "NodePort"
- }
- }'
-
- The patch command should output ``service/console patched``.
- You can now access the service through ports ``30433`` (HTTPS) or ``30090`` (HTTP) on any of your Kubernetes worker nodes.
-
- For example, a Kubernetes cluster with the following Operator nodes might be accessed at ``https://172.18.0.2:30443``:
-
- .. code-block:: shell
-
- kubectl get nodes -o custom-columns=IP:.status.addresses[:]
- IP
- map[address:172.18.0.5 type:InternalIP],map[address:k3d-MINIO-agent-3 type:Hostname]
- map[address:172.18.0.6 type:InternalIP],map[address:k3d-MINIO-agent-2 type:Hostname]
- map[address:172.18.0.2 type:InternalIP],map[address:k3d-MINIO-server-0 type:Hostname]
- map[address:172.18.0.4 type:InternalIP],map[address:k3d-MINIO-agent-1 type:Hostname]
- map[address:172.18.0.3 type:InternalIP],map[address:k3d-MINIO-agent-0 type:Hostname]
-
- Use the following command to retrieve the JWT token necessary for logging into the Operator Console:
-
- .. code-block:: shell
- :class: copyable
-
- kubectl get secret/console-sa-secret -n minio-operator -o json | jq -r '.data.token' | base64 -d
-
- If your local host does not have the ``jq`` utility installed, you can run the ``kubectl`` part of this command (before ``| jq``) and locate the ``data.token`` section of the output.
-
diff --git a/source/includes/common/installation.rst b/source/includes/common/installation.rst
deleted file mode 100644
index 815448d67..000000000
--- a/source/includes/common/installation.rst
+++ /dev/null
@@ -1,147 +0,0 @@
-.. _minio-installation:
-
-========================
-Install and Deploy MinIO
-========================
-
-.. default-domain:: minio
-
-.. contents:: Table of Contents
- :local:
- :depth: 1
-
-.. meta::
- :description: MinIO Deployment Topologies and Installation Instructions
- :keywords: MinIO, Deploy, Architecture, Topology, Distributed, Replication, Install
-
-.. container:: extlinks-video
-
- - `Installing and Running MinIO on Linux `__
-
- - `Object Storage Essentials `__
-
- - `How to Connect to MinIO with JavaScript `__
-
-MinIO is a software-defined high performance distributed object storage server.
-You can run MinIO on consumer or enterprise-grade hardware and a variety
-of operating systems and architectures.
-
-All MinIO deployments implement :ref:`Erasure Coding ` backends.
-You can deploy MinIO using one of the following topologies:
-
-.. _minio-installation-comparison:
-
-:ref:`Single-Node Single-Drive ` (SNSD or "Standalone")
- Local development and evaluation with no/limited reliability
-
-:ref:`Single-Node Multi-Drive ` (SNMD or "Standalone Multi-Drive")
- Workloads with lower performance, scale, and capacity requirements
-
- Drive-level reliability with configurable tolerance for loss of up to 1/2 all drives
-
- Evaluation of multi-drive topologies and failover behavior.
-
-:ref:`Multi-Node Multi-Drive ` (MNMD or "Distributed")
- Enterprise-grade high-performance object storage
-
- Multi Node/Drive level reliability with configurable tolerance for loss of up to 1/2 all nodes/drives
-
- Primary storage for AI/ML, Distributed Query, Analytics, and other Data Lake components
-
- Scalable for Petabyte+ workloads - both storage capacity and performance
-
-.. cond:: macos or windows
-
- .. note::
-
- Use |platform|-based MinIO deployments for early development and evaluation.
- MinIO provides no guarantee of support for :abbr:`SNMD (Single-Node Multi-Drive)` or :abbr:`MNMD (Multi-Node Multi-Drive)` topologies on |platform|.
-
- MinIO strongly recommends :minio-docs:`Linux (RHEL, Ubuntu) ` or :minio-docs:`Kubernetes (Upstream, OpenShift) ` for long-term development and production environments.
-
-Site Replication
-----------------
-
-Site replication expands the features of bucket replication to include IAM, security tokens, access keys, and bucket features the same across all sites.
-
-:ref:`Site replication ` links multiple MinIO deployments together and keeps the buckets, objects, and Identity and Access Management (IAM) settings in sync across all connected sites.
-
-.. include:: /includes/common-replication.rst
- :start-after: start-mc-admin-replicate-what-replicates
- :end-before: end-mc-admin-replicate-what-replicates
-
-.. cond:: macos or windows
-
- MinIO does not recommend using |platform| hosts for site replication outside of early development, evaluation, or general experimentation.
- For production, use :minio-docs:`Linux ` or :minio-docs:`Kubernetes `.
-
-What Does Not Replicate?
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Not everything replicates across sites.
-
-.. include:: /includes/common-replication.rst
- :start-after: start-mc-admin-replicate-what-does-not-replicate
- :end-before: end-mc-admin-replicate-what-does-not-replicate
-
-.. _minio-installation-platform-support:
-
-Platform Support
-----------------
-
-.. cond:: linux
-
- MinIO provides builds of the MinIO server (:mc:`minio`) and the
- MinIO :abbr:`CLI (Command Line Interface)` (:mc:`mc`) for the following
- platforms.
-
- - Red Hat Enterprise Linux 8.5+ (including all binary-compatible RHEL alternatives)
- - Ubuntu 18.04+
-
- MinIO provides builds for the following architectures:
-
- - AMD64
- - ARM64
- - PowerPC 64 LE
- - S390X
-
-.. cond:: macos
-
- MinIO recommends non-EOL macOS versions (10.14+).
-
-For unlisted platforms or architectures, please reach out to MinIO at
-hello@min.io for additional support and guidance. You can build MinIO from
-:minio-git:`source ` and
-`cross-compile
-`__
-for your platform and architecture combo. MinIO generally does not recommend
-source-based installations in production environments.
-
-.. cond:: linux
-
- .. toctree::
- :titlesonly:
- :hidden:
-
- /operations/install-deploy-manage/deploy-minio-single-node-single-drive
- /operations/install-deploy-manage/deploy-minio-single-node-multi-drive
- /operations/install-deploy-manage/deploy-minio-multi-node-multi-drive
- /operations/install-deploy-manage/multi-site-replication
-
-.. cond:: windows
-
- .. toctree::
- :titlesonly:
- :hidden:
-
- /operations/install-deploy-manage/deploy-minio-single-node-single-drive
-
-.. cond:: macos
-
- .. toctree::
- :titlesonly:
- :hidden:
-
- /operations/install-deploy-manage/deploy-minio-single-node-single-drive
- /operations/install-deploy-manage/deploy-minio-single-node-multi-drive
- /operations/install-deploy-manage/multi-site-replication
\ No newline at end of file
diff --git a/source/includes/container/common-deploy.rst b/source/includes/container/common-deploy.rst
deleted file mode 100644
index 0134ab59c..000000000
--- a/source/includes/container/common-deploy.rst
+++ /dev/null
@@ -1,120 +0,0 @@
-.. start-common-deploy-pull-latest-minio-image
-
-Select the tab for either Podman or Docker to see instructions for pulling the MinIO container image.
-The instructions include examples for both quay.io and DockerHub:
-
-.. tab-set::
-
- .. tab-item:: Podman
-
- quay.io
- .. code-block:: shell
- :class: copyable
-
- podman pull quay.io/minio/minio
-
- DockerHub
- .. code-block:: shell
- :class: copyable
-
- podman pull docker://minio/minio
-
- .. tab-item:: Docker
-
- quay.io
- .. code-block:: shell
- :class: copyable
-
- docker pull quay.io/minio/minio
-
- DockerHub
- .. code-block:: shell
- :class: copyable
-
- docker pull docker://minio/minio
-
-.. end-common-deploy-pull-latest-minio-image
-
-.. start-common-deploy-validate-container-status
-
-.. tab-set::
-
- .. tab-item:: Podman
-
- Run the following command to retrieve logs from the container.
- Replace the container name with the value specified to ``--name`` in the previous step.
-
- .. code-block:: shell
- :class: copyable
-
- podman logs minio
-
- The command should return output similar to the following:
-
- .. tab-item:: Docker
-
- Run the following command to retrieve logs from the container.
- Replace the container name with the value specified to ``--name`` in the previous step.
-
- .. code-block:: shell
- :class: copyable
-
- docker logs minio
-
- The command should return output similar to the following:
-
-.. end-common-deploy-validate-container-status
-
-.. start-common-deploy-connect-to-minio-service
-
-.. tab-set::
-
- .. tab-item:: MinIO Web Console
-
- You can access the MinIO Web Console by entering http://localhost:9001 in your preferred browser.
- Any traffic to the MinIO Console port on the local host redirects to the container.
-
- Log in with the :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD` configured in the environment file specified to the container.
-
- .. image:: /images/minio-console/console-bucket-none.png
- :width: 600px
- :alt: MinIO Console displaying Buckets view in a fresh installation.
- :align: center
-
- You can use the MinIO Console for general administration tasks like Identity and Access Management, Metrics and Log Monitoring, or Server Configuration. Each MinIO server includes its own embedded MinIO Console.
-
- If your local host firewall permits external access to the Console port, other hosts on the same network can access the Console using the IP or hostname for your local host.
-
- .. tab-item:: MinIO CLI (mc)
-
- You can access the MinIO deployment over a Terminal or Shell using the :ref:`MinIO Client ` (:mc:`mc`).
- See :ref:`MinIO Client Installation Quickstart ` for instructions on installing :mc:`mc`.
-
- Create a new :mc:`alias ` corresponding to the MinIO deployment.
- Use a hostname or IP address for your local machine along with the S3 API port ``9000`` to access the MinIO deployment.
- Any traffic to that port on the local host redirects to the container.
-
- .. code-block:: shell
- :class: copyable
-
- mc alias set minio-alias http://localhost:9000 myminioadmin minio-secret-key-change-me
-
- - Replace ``minio-alias`` with the alias name to create for this deployment.
-
- - Replace ``myminioadmin`` and ``minio-secret-key-change-me`` with the :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD` values in the environment file specified to the container.
-
- The command should return success if the container is running and accessible at the specified port.
-
- You can then interact with the container using any :mc:`mc` command.
- If your local host firewall permits external access to the MinIO S3 API port, other hosts on the same network can access the MinIO deployment using the IP or hostname for your local host.
-
-.. end-common-deploy-connect-to-minio-service
-
-.. start-common-prereq-container-management-interface
-
-This procedure assumes you have a working `Podman `_ installation configured to run in "Rootfull" mode.
-
-"Rootless" modes may not provide sufficient permissions to run KES with the necessary security settings.
-See the relevant :podman-git:`"rootless" documentation ` for more information.
-
-.. end-common-prereq-container-management-interface
\ No newline at end of file
diff --git a/source/includes/container/installation.rst b/source/includes/container/installation.rst
deleted file mode 100644
index 1af9050ae..000000000
--- a/source/includes/container/installation.rst
+++ /dev/null
@@ -1,96 +0,0 @@
-.. _minio-installation:
-
-========================
-Install and Deploy MinIO
-========================
-
-.. default-domain:: minio
-
-.. contents:: Table of Contents
- :local:
- :depth: 1
-
-.. container:: extlinks-video
-
- - `Installing and Running MinIO: Overview `__
- - `Installing and Running MinIO: Installation Lab `__
- - `Installing and Running MinIO: Docker Compose Overview `__
- - `Installing and Running MinIO: Docker Compose Lab: `__
-
-MinIO is a software-defined high performance distributed object storage server.
-You can run MinIO on consumer or enterprise-grade hardware and a variety of operating systems and architectures.
-
-MinIO supports three deployment topologies:
-
-Single-Node Single-Drive (SNSD or "Standalone")
- A single MinIO server with a single storage volume or folder.
- |SNSD| deployment provides failover protections. Drive-level reliability and failover depends on the underlying storage volume.
-
- |SNSD| deployments are best suited for evaluation and initial development of applications using MinIO for object storage.
-
- |SNSD| deployments implement a zero-parity erasure coding backend and include support for the following erasure-coding dependent features:
-
- - :ref:`Versioning `
- - :ref:`Object Locking / Retention `
-
-Single-Node Multi-Drive (SNMD or "Standalone Multi-Drive")
- A single MinIO server with four or more storage volumes.
- |SNMD| deployments provide drive-level reliability and failover only.
-
-Multi-Node Multi-Drive (MNMD or "Distributed")
- Multiple MinIO servers with at least four drives across all servers.
- The distributed |MNMD| topology supports production-grade object storage with drive and node-level availability and resiliency.
-
-.. note::
-
- This documentation provides instructions for |SNSD| and |SNMD| for supporting local development and evaluation of MinIO on a single host machine **only**.
- For |MNMD| deployments, use the MinIO Kubernetes Operator to :minio-docs:`deploy and manage MinIO tenants in a containerized and orchestrated environment `.
-
-Site Replication
-----------------
-
-:ref:`Site replication ` links multiple MinIO deployments together and keeps the buckets, objects, and Identity and Access Management (IAM) settings in sync across all connected sites.
-
-.. include:: /includes/common-replication.rst
- :start-after: start-mc-admin-replicate-what-replicates
- :end-before: end-mc-admin-replicate-what-replicates
-
-.. important::
-
- MinIO does not recommend using |platform| hosts for site replication outside of early development, evaluation, or general experimentation.
- For production, use :minio-docs:`Kubernetes ` for an orchestrated container environment.
-
-What Does Not Replicate?
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Not everything replicates across sites.
-
-.. include:: /includes/common-replication.rst
- :start-after: start-mc-admin-replicate-what-does-not-replicate
- :end-before: end-mc-admin-replicate-what-does-not-replicate
-
-.. _minio-installation-platform-support:
-
-Platform Support
-----------------
-
-MinIO provides container images at the following repositories:
-
-- https://hub.docker.com/r/minio/minio
-- https://quay.io/repository/minio/minio?tab=info
-
-.. versionchanged:: RELEASE.2022-12-02T19-19-22Z
-
- These images include the :ref:`MinIO Client ` command line tool built in for container-level debugging.
- However, to regularly interact with a container MinIO install, :ref:`install the MinIO Client ` on your computer and define an :mc:`alias ` to the container instead.
-
-Use of MinIO images from any other repository, host, or organization is at your own risk.
-
-The :ref:`Single-Node Single-Drive ` and :ref:`Single-Node Multi-Drive ` tutorials provide instructions for the `Docker `__ and :podman-docs:`Podman <>` container managers.
-
-.. toctree::
- :titlesonly:
- :hidden:
-
- /operations/install-deploy-manage/deploy-minio-single-node-single-drive
- /operations/install-deploy-manage/deploy-minio-single-node-multi-drive
diff --git a/source/includes/container/quickstart.rst b/source/includes/container/quickstart.rst
deleted file mode 100644
index 64ad306a7..000000000
--- a/source/includes/container/quickstart.rst
+++ /dev/null
@@ -1,383 +0,0 @@
-.. _quickstart-container:
-
-=========================
-Quickstart for Containers
-=========================
-
-.. default-domain:: minio
-
-.. container:: extlinks-video
-
- - `Installing and Running MinIO on Docker: Overview `__
- - `Installing and Running MinIO on Docker: Installation Lab `__
- - `Object Storage Essentials `__
-
- - `How to Connect to MinIO with JavaScript `__
-
-.. |OS| replace:: Docker or Podman
-
-This procedure deploys a :ref:`Single-Node Single-Drive ` MinIO server onto |OS| for early development and evaluation of MinIO Object Storage and its S3-compatible API layer.
-
-For instructions on deploying to production environments, see :ref:`deploy-minio-distributed`.
-
-Prerequisites
--------------
-
-- `Podman `_ or `Docker `_ installed.
-- Read, write, and delete access to the folder or drive used for the persistent volume.
-
-Procedure
----------
-
-#. Start the container
-
- Select a container type to view instructions to create the container.
- Instructions are available for either GNU/Linux and MacOS or for Windows.
-
- .. dropdown:: Podman (Rootfull or Rootless)
- :name: podman-root-rootless
-
- These steps work for both rootfull and rootless containers.
-
- .. tab-set::
-
- .. tab-item:: GNU/Linux or MacOS
-
- .. code-block:: shell
- :class: copyable
-
- mkdir -p ~/minio/data
-
- podman run \
- -p 9000:9000 \
- -p 9001:9001 \
- -v ~/minio/data:/data \
- -e "MINIO_ROOT_USER=ROOTNAME" \
- -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
- quay.io/minio/minio server /data --console-address ":9001"
-
- The example above works this way:
-
- - ``podman run`` starts the container.
- The process is attached to the terminal session and ends when exiting the terminal.
- - ``-p`` binds a local port to a container port.
- - ``-v`` sets a file path as a persistent volume location for the container to use.
- When MinIO writes data to ``/data``, that data mirrors to the local path ``~/minio/data``, allowing it to persist between container restarts.
- You can set any file path to which the user has read, write, and delete permissions to use.
- - ``-e`` sets the environment variables :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD`, respectively.
- These set the :ref:`root user credentials `.
- Change the example values to use for your container.
-
- .. tab-item:: Windows
-
- .. code-block:: shell
- :class: copyable
-
- podman run \
- -p 9000:9000 \
- -p 9001:9001 \
- -v D:\minio\data:/data \
- -e "MINIO_ROOT_USER=ROOTNAME" \
- -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
- quay.io/minio/minio server /data --console-address ":9001"
-
- The example above works this way:
-
- - ``podman run`` starts the container.
- - ``-p`` binds a local port to a container port.
- - ``-v`` sets a file path as a persistent volume location for the container to use.
- When MinIO writes data to ``/data``, that data mirrors to the local path ``D:\minio\data``, allowing it to persist between container restarts.
- You can set any file path to which the user has read, write, and delete permissions to use.
- - ``-e`` sets the environment variables :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD`, respectively.
- These set the :ref:`root user credentials `.
- Change the example values to use for your container.
-
- .. dropdown:: Docker (Rootfull)
- :name: docker-rootfull
-
- .. tab-set::
-
- .. tab-item:: GNU/Linux or MacOS
-
- .. code-block:: shell
- :class: copyable
-
- mkdir -p ~/minio/data
-
- docker run \
- -p 9000:9000 \
- -p 9001:9001 \
- --name minio \
- -v ~/minio/data:/data \
- -e "MINIO_ROOT_USER=ROOTNAME" \
- -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
- quay.io/minio/minio server /data --console-address ":9001"
-
- The example above works this way:
-
- - ``mkdir`` creates a new local directory at ``~/minio/data`` in your home directory.
- - ``docker run`` starts the MinIO container.
- - ``-p`` binds a local port to a container port.
- - ``-name`` creates a name for the container.
- - ``-v`` sets a file path as a persistent volume location for the container to use.
- When MinIO writes data to ``/data``, that data mirrors to the local path ``~/minio/data``, allowing it to persist between container restarts.
- You can replace ``~/minio/data`` with another local file location to which the user has read, write, and delete access.
- - ``-e`` sets the environment variables :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD`, respectively.
- These set the :ref:`root user credentials `.
- Change the example values to use for your container.
-
- .. tab-item:: Windows
-
- .. code-block:: shell
- :class: copyable
-
- docker run \
- -p 9000:9000 \
- -p 9001:9001 \
- --name minio1 \
- -v D:\minio\data:/data \
- -e "MINIO_ROOT_USER=ROOTUSER" \
- -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
- quay.io/minio/minio server /data --console-address ":9001"
-
- The example above works this way:
-
- - ``docker run`` starts the MinIO container.
- - ``-p`` binds a local port to a container port.
- - ``-v`` sets a file path as a persistent volume location for the container to use.
- When MinIO writes data to ``/data``, that data mirrors to the local path ``D:\minio\data``, allowing it to persist between container restarts.
- You can replace ``D:\minio\data`` with another local file location to which the user has read, write, and delete access.
- - ``-e`` sets the environment variables :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD`, respectively.
- These set the :ref:`root user credentials `.
- Change the example values to use for your container.
-
- .. dropdown:: Docker (Rootless)
- :name: docker-rootless
-
- .. tab-set::
-
- .. tab-item:: GNU/Linux or MacOS
-
- .. code-block:: shell
- :class: copyable
-
- mkdir -p ${HOME}/minio/data
-
- docker run \
- -p 9000:9000 \
- -p 9001:9001 \
- --user $(id -u):$(id -g) \
- --name minio1 \
- -e "MINIO_ROOT_USER=ROOTUSER" \
- -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
- -v ${HOME}/minio/data:/data \
- quay.io/minio/minio server /data --console-address ":9001"
-
- The example above works this way:
-
- - ``mkdir`` creates a new local directory at ``~/minio/data`` in your home directory.
- - ``docker run`` starts the MinIO container.
- - ``-p`` binds a local port to a container port.
- - ``-user`` sets the username for the container to the policies for the current user and user group.
- - ``-name`` creates a name for the container.
- - ``-v`` sets a file path as a persistent volume location for the container to use.
- When MinIO writes data to ``/data``, that data actually writes to the local path ``~/minio/data`` where it can persist between container restarts.
- You can replace ``${HOME}/minio/data`` with another location in the user's home directory to which the user has read, write, and delete access.
- - ``-e`` sets the environment variables :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD`, respectively.
- These set the :ref:`root user credentials `.
- Change the example values to use for your container.
-
- .. tab-item:: Windows
-
- Prerequisite:
-
- - Windows `Group Managed Service Account `_ already defined.
-
- .. code-block:: shell
- :class: copyable
-
- docker run \
- -p 9000:9000 \
- -p 9001:9001 \
- --name minio1 \
- --security-opt "credentialspec=file://path/to/file.json"
- -e "MINIO_ROOT_USER=ROOTUSER" \
- -e "MINIO_ROOT_PASSWORD=CHANGEME123" \
- -v D:\data:/data \
- quay.io/minio/minio server /data --console-address ":9001"
-
- The example above works this way:
-
- - ``docker run`` starts the MinIO container.
- - ``-p`` binds a local port to a container port.
- - ``-name`` creates a name for the container.
- - ``--security-opt`` grants access to the container via a ``credentialspec`` file for a `Group Managed Service Account (gMSA) `_
- - ``-v`` sets a file path as a persistent volume location for the container to use.
- When MinIO writes data to ``/data``, that data actually writes to the local path ``D:\data`` where it can persist between container restarts.
- You can replace ``D:\data`` with another local file location to which the user has read, write, and delete access.
- - ``-e`` sets the environment variables :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD`, respectively.
- These set the :ref:`root user credentials `.
- Change the example values to use for your container.
-
-#. Connect your Browser to the MinIO Server
-
- Access the :ref:`minio-console` by going to a browser and going to ``http://127.0.0.1:9000`` or one of the Console addresses specified in the :mc:`minio server` command's output.
- For example, :guilabel:`Console: http://192.0.2.10:9001 http://127.0.0.1:9001` in the example output indicates two possible addresses to use for connecting to the Console.
-
- While port ``9000`` is used for connecting to the API, MinIO automatically redirects browser access to the MinIO Console.
-
- Log in to the Console with the credentials you defined in the :envvar:`MINIO_ROOT_USER` and :envvar:`MINIO_ROOT_PASSWORD` environment variables.
-
- .. image:: /images/minio-console/console-login.png
- :width: 600px
- :alt: MinIO Console displaying login screen
- :align: center
-
- You can use the MinIO Console for general administration tasks like Identity and Access Management, Metrics and Log Monitoring, or Server Configuration.
- Each MinIO server includes its own embedded MinIO Console.
-
- .. image:: /images/minio-console/minio-console.png
- :width: 600px
- :alt: MinIO Console displaying bucket start screen
- :align: center
-
- For more information, see the :ref:`minio-console` documentation.
-
-#. `(Optional)` Install the MinIO Client
-
- The :ref:`MinIO Client ` allows you to work with your MinIO volume from the commandline.
-
- Select your operating system for instructions.
-
- .. dropdown:: GNU/Linux
-
- The :ref:`MinIO Client ` allows you to work with your MinIO server from the commandline.
-
- Download the :mc:`mc` client and install it to a location on your system ``PATH`` such as
- ``/usr/local/bin``. You can alternatively run the binary from the download location.
-
- .. code-block:: shell
- :class: copyable
-
- wget https://dl.min.io/client/mc/release/linux-amd64/mc
- chmod +x mc
- sudo mv mc /usr/local/bin/mc
-
- Use :mc:`mc alias set` to create a new alias associated to your local deployment.
- You can run :mc:`mc` commands against this alias:
-
- .. code-block:: shell
- :class: copyable
-
- mc alias set local http://127.0.0.1:9000 {MINIO_ROOT_USER} {MINIO_ROOT_PASSWORD}
- mc admin info local
-
- Replace ``{MINIO_ROOT_USER}`` and ``{MINIO_ROOT_PASSWORD}`` with the credentials you defined for the container with the ``-e`` flags.
-
- The :mc:`mc alias set` takes four arguments:
-
- - The name of the alias
- - The hostname or IP address and port of the MinIO server
- - The Access Key for a MinIO :ref:`user `
- - The Secret Key for a MinIO :ref:`user `
-
- For additional details about this command, see :ref:`alias`.
-
- .. dropdown:: MacOS
-
- The :ref:`MinIO Client ` allows you to work with your MinIO volume from the commandline.
-
- .. tab-set::
-
- .. tab-item:: Homebrew
-
- Run the following command to install the latest stable MinIO Client package using `Homebrew `_.
-
- .. code-block:: shell
- :class: copyable
-
- brew install minio/stable/mc
-
- .. tab-item:: Binary (arm64)
-
- Run the following commands to install the latest stable MinIO Client package using a binary package for Apple chips.
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/client/mc/release/darwin-arm64/mc
- chmod +x mc
- sudo mv mc /usr/local/bin/mc
-
- .. tab-item:: Binary (amd64)
-
- Run the following commands to install the latest stable MinIO Client package using a binary package for Intel chips.
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/client/mc/release/darwin-amd64/mc
- chmod +x mc
- sudo mv mc /usr/local/bin/mc
-
- Use :mc:`mc alias set` to quickly authenticate and connect to the MinIO deployment.
-
- .. code-block:: shell
- :class: copyable
-
- mc alias set local http://127.0.0.1:9000 {MINIO_ROOT_USER} {MINIO_ROOT_PASSWORD}
- mc admin info local
-
- Replace ``{MINIO_ROOT_USER}`` and ``{MINIO_ROOT_PASSWORD}`` with the credentials you defined for the container with the ``-e`` flags.
-
- The :mc:`mc alias set` takes four arguments:
-
- - The name of the alias
- - The hostname or IP address and port of the MinIO server
- - The Access Key for a MinIO :ref:`user `
- - The Secret Key for a MinIO :ref:`user `
-
- For additional details about this command, see :ref:`alias`.
-
- .. dropdown:: Windows
-
- Download the standalone MinIO server for Windows from the following link:
-
- https://dl.min.io/client/mc/release/windows-amd64/mc.exe
-
- Double click on the file to run it.
- Or, run the following in the Command Prompt or PowerShell.
-
- .. code-block::
- :class: copyable
-
- \path\to\mc.exe --help
-
- Use :mc:`mc alias set` to quickly authenticate and connect to the MinIO deployment.
-
- .. code-block:: shell
- :class: copyable
-
- mc.exe alias set local http://127.0.0.1:9000 {MINIO_ROOT_USER} {MINIO_ROOT_PASSWORD}
- mc.exe admin info local
-
- Replace ``{MINIO_ROOT_USER}`` and ``{MINIO_ROOT_PASSWORD}`` with the credentials you defined for the container with the ``-e`` flags.
-
- The :mc:`mc alias set` takes four arguments:
-
- - The name of the alias
- - The hostname or IP address and port of the MinIO server
- - The Access Key for a MinIO :ref:`user `
- - The Secret Key for a MinIO :ref:`user `
-
- For additional details about this command, see :ref:`alias`.
-
-.. rst-class:: section-next-steps
-
-Next Steps
-----------
-
-- :ref:`Connect your applications to MinIO `
-- :ref:`Configure Object Retention `
-- :ref:`Configure Security `
-- :ref:`Deploy MinIO in a Distributed Environment `
diff --git a/source/includes/container/steps-configure-keycloak-identity-management.rst b/source/includes/container/steps-configure-keycloak-identity-management.rst
deleted file mode 100644
index 712d81918..000000000
--- a/source/includes/container/steps-configure-keycloak-identity-management.rst
+++ /dev/null
@@ -1,142 +0,0 @@
-.. |KEYCLOAK_URL| replace:: localhost:8080
-.. |MINIO_S3_URL| replace:: localhost:9000
-.. |MINIO_CONSOLE_URL| replace:: localhost:9001
-
-1) Create the Podman Pod
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Create a Podman Pod to deploy the Keycloak and MinIO containers in a Pod with shared networking.
-This ensures both containers can communicate normally.
-
-.. code-block:: shell
- :class: copyable
-
- podman pod create \
- -p 9000:9000 -p 9001:9001 -p 8080:8080 \
- -v ~/minio-keycloak/minio:/mnt/minio \
- -n minio-keycloak
-
-Replace ``~/minio-keycloak/minio`` with a path to an empty folder in which the MinIO container stores data.
-
-You can alternatively deploy the Containers as Root to allow access to the host network for the purpose of inter-container networking.
-
-Deploying via Docker Compose is out of scope for this tutorial.
-
-2) Start the Keycloak Container
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Follow the instructions for running `Keycloak in a container `__.
-The `Try Keycloak in development mode `__ steps are sufficient for this procedure.
-
-.. code-block:: shell
- :class: copyable
-
- podman run -dt \
- --name keycloak \
- --pod minio-keycloak \
- -e KEYCLOAK_ADMIN=keycloakadmin \
- -e KEYCLOAK_ADMIN_PASSWORD=keycloakadmin123 \
- quay.io/keycloak/keycloak:latest start-dev
-
-Go to ``localhost:8080`` to access the Keycloak container.
-
-3) Configure or Create a Client for Accessing Keycloak
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Authenticate to the Keycloak :guilabel:`Administrative Console` and navigate to :guilabel:`Clients`.
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-client
- :end-before: end-configure-keycloak-client
-
-4) Create Client Scope for MinIO Client
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Client scopes allow Keycloak to map user attributes as part of the JSON Web Token (JWT) returned in authentication requests.
-This allows MinIO to reference those attributes when assigning policies to the user.
-This step creates the necessary client scope to support MinIO authorization after successful Keycloak authentication.
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-client-scope
- :end-before: end-configure-keycloak-client-scope
-
-5) Apply the Necessary Attribute to Keycloak Users/Groups
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You must assign an attribute named ``policy`` to the Keycloak Users or Groups.
-Set the value to any :ref:`policy ` on the MinIO deployment.
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-user-group-attributes
- :end-before: end-configure-keycloak-user-group-attributes
-
-6) Start the MinIO Container
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following command starts the MinIO Container and attaches it to the ``minio-keycloak`` pod.
-
-.. code-block:: shell
- :class: copyable
-
- podman run -dt \
- --name minio-server \
- --pod minio-keycloak \
- quay.io/minio/minio:RELEASE.2023-02-22T18-23-45Z server /mnt/data --console-address :9001
-
-Go to ``localhost:9001`` to access the MinIO Console.
-Log in using the default credentials ``minioadmin:minioadmin``.
-
-7) Configure MinIO for Keycloak Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-MinIO supports multiple methods for configuring Keycloak authentication:
-
-- Using the MinIO Console
-- Using a terminal/shell and the :mc:`mc idp openid` command
-- Using environment variables set prior to starting MinIO
-
-.. tab-set::
-
- .. tab-item:: MinIO Console
-
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-console
- :end-before: end-configure-keycloak-minio-console
-
- .. tab-item:: CLI
-
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-cli
- :end-before: end-configure-keycloak-minio-cli
-
- .. tab-item:: Environment Variables
-
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-envvar
- :end-before: end-configure-keycloak-minio-envvar
-
-
-You must restart the MinIO deployment for the changes to apply.
-
-Check the :ref:`MinIO server logs ` and verify that startup succeeded with no errors related to the Keycloak configuration.
-
-If you attempt to log in with the Console, you should now see an (SSO) button using the configured :guilabel:`Display Name`.
-
-Specify a configured user and attempt to log in.
-MinIO should automatically redirect you to the Keycloak login entry.
-Upon successful authentication, Keycloak should redirect you back to the MinIO Console.
-
-8) Generate Application Credentials using the Security Token Service (STS)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-sts
- :end-before: end-configure-keycloak-sts
-
-Next Steps
-~~~~~~~~~~~~~
-
-Applications should implement the :ref:`STS ` flow using their :ref:`SDK ` of choice.
-When STS credentials expire, applications should have logic in place to regenerate the JWT token, STS token, and MinIO credentials before retrying and continuing operations.
-
-Alternatively, users can generate :ref:`access keys ` through the MinIO Console for the purpose of creating long-lived API-key like access using their Keycloak credentials.
diff --git a/source/includes/container/steps-configure-minio-kes-hashicorp.rst b/source/includes/container/steps-configure-minio-kes-hashicorp.rst
deleted file mode 100644
index 630272db5..000000000
--- a/source/includes/container/steps-configure-minio-kes-hashicorp.rst
+++ /dev/null
@@ -1,121 +0,0 @@
-Deploy MinIO and KES with Server-Side Encryption
-------------------------------------------------
-
-Prior to starting these steps, create the following folders:
-
-.. code-block:: shell
- :class: copyable
- :substitutions:
-
- mkdir -P |kescertpath|
- mkdir -P |kesconfigpath|
- mkdir -P |miniodatapath|
-
-For Windows hosts, substitute the paths with Windows-style paths, e.g. ``C:\minio-kes-vault\``.
-
-
-Prerequisite
-~~~~~~~~~~~~
-
-Depending on your chosen :kes-docs:`supported KMS target <#supported-kms-targets>` configuration, you may need to pass the ``kes-server.cert`` as a trusted Certificate Authority (CA).
-Defer to the client documentation for instructions on trusting a third-party CA.
-
-1) Create the KES and MinIO Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-a. Create the KES Configuration File
-
- Create the configuration file using your preferred text editor.
- The following example uses ``nano``:
-
- .. code-block:: shell
- :substitutions:
-
- nano |kesconfigpath|/kes-config.yaml
-
- .. include:: /includes/common/common-minio-kes-hashicorp.rst
- :start-after: start-kes-configuration-hashicorp-vault-desc
- :end-before: end-kes-configuration-hashicorp-vault-desc
-
- - Set ``MINIO_IDENTITY_HASH`` to the identity hash of the MinIO mTLS certificate.
-
- The following command computes the necessary hash:
-
- .. code-block:: shell
- :class: copyable
- :substitutions:
-
- podman run --rm \
- -v |kescertpath|/certs:/certs \
- kes:|kes-stable| tool identity of /certs/minio-kes.cert
-
- - Refer to the instructions for setting up KES for your :kes-docs:`supported KMS solution <#kes-supported-targets>` for additional variables to define specific to your chosen KMS target.
-
-b. Create the MinIO Environment File
-
- Create the environment file using your preferred text editor.
- The following example uses ``nano``:
-
- .. code-block:: shell
- :substitutions:
-
- nano |minioconfigpath|/minio
-
- .. include:: /includes/container/common-minio-kes.rst
- :start-after: start-kes-configuration-minio-desc
- :end-before: end-kes-configuration-minio-desc
-
-2) Create Pod and Containers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-minio-kes.rst
- :start-after: start-common-deploy-create-pod-and-containers
- :end-before: end-common-deploy-create-pod-and-containers
-
-3) Generate a New Encryption Key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-minio-kes.rst
- :start-after: start-kes-generate-key-desc
- :end-before: end-kes-generate-key-desc
-
-4) Enable SSE-KMS for a Bucket
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can use either the MinIO Console or the MinIO :mc:`mc` CLI to enable bucket-default SSE-KMS with the generated key:
-
-.. tab-set::
-
- .. tab-item:: MinIO Console
-
- Open the MinIO Console by navigating to http://127.0.0.1:9001 in your preferred browser and logging in with the root credentials specified to the MinIO container.
-
- Once logged in, create a new Bucket and name it to your preference.
- Select the Gear :octicon:`gear` icon to open the management view.
-
- Select the pencil :octicon:`pencil` icon next to the :guilabel:`Encryption` field to open the modal for configuring a bucket default SSE scheme.
-
- Select :guilabel:`SSE-KMS`, then enter the name of the key created in the previous step.
-
- Once you save your changes, try to upload a file to the bucket.
- When viewing that file in the object browser, note that in the sidebar the metadata includes the SSE encryption scheme and information on the key used to encrypt that object.
- This indicates the successful encrypted state of the object.
-
- .. tab-item:: MinIO CLI
-
- The following commands:
-
- - Create a new :ref:`alias ` for the MinIO deployment
- - Create a new bucket for storing encrypted data
- - Enable SSE-KMS encryption on that bucket
-
- .. code-block:: shell
- :class: copyable
-
- mc alias set local http://127.0.0.1:9000 ROOTUSER ROOTPASSWORD
-
- mc mb local/encryptedbucket
- mc encrypt set SSE-KMS encrypted-bucket-key ALIAS/encryptedbucket
-
- Write a file to the bucket using :mc:`mc cp` or any S3-compatible SDK with a ``PutObject`` function.
- You can then run :mc:`mc stat` on the file to confirm the associated encryption metadata.
diff --git a/source/includes/container/steps-deploy-minio-single-node-multi-drive.rst b/source/includes/container/steps-deploy-minio-single-node-multi-drive.rst
deleted file mode 100644
index 7483b690b..000000000
--- a/source/includes/container/steps-deploy-minio-single-node-multi-drive.rst
+++ /dev/null
@@ -1,162 +0,0 @@
-1) Pull the Latest Stable Image of MinIO
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-deploy.rst
- :start-after: start-common-deploy-pull-latest-minio-image
- :end-before: end-common-deploy-pull-latest-minio-image
-
-2) Create the Environment Variable File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-environment-file-multi-drive
- :end-before: end-common-deploy-create-environment-file-multi-drive
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-unique-root-credentials
- :end-before: end-common-deploy-create-unique-root-credentials
-
-3) Create and Run the Container
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Select the container management interface of your choice for the relevant command syntax.
-
-.. tab-set::
-
- .. tab-item:: Podman
-
- Copy the command to a text file for further modification.
-
- .. code-block:: shell
- :class: copyable
-
- podman run -dt \
- -p 9000:9000 -p 9001:9001 \
- -v PATH1:/data-1 \
- -v PATH2:/data-2 \
- -v PATH3:/data-3 \
- -v PATH4:/data-4 \
- -v /etc/default/minio:/etc/config.env \
- -e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
- --name "minio_local" \
- minio server --console-address ":9001"
-
- Specify any other :podman-docs:`options ` to ``podman run`` as necessary for your local environment.
-
- .. tab-item:: Docker
-
- Copy the command to a text file for further modification.
-
- .. code-block:: shell
- :class: copyable
-
- docker run -dt \
- -p 9000:9000 -p 9001:9001 \
- -v PATH1:/data-1 \
- -v PATH2:/data-2 \
- -v PATH3:/data-3 \
- -v PATH4:/data-4 \
- -v /etc/default/minio:/etc/config.env \
- -e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
- --name "minio_local" \
- minio server --console-address ":9001"
-
- Specify any other `options `__ to ``docker run`` as necessary for your local environment.
-
- For running Docker in Rootless mode, you may need to set the following additional Docker CLI options:
-
- Linux
- ``--user $(id -u):$(id -g)`` - directs the container to run as the currently logged in user.
-
- Windows
- ``--security-opt "credentialspec=file://path/to/file.json"`` - directs the container to run using a Windows `Group Managed Service Account `_.
-
-The following table describes each line of the command and provides additional configuration instructions:
-
-.. list-table::
- :header-rows: 1
- :widths: 40 60
- :width: 100%
-
- * - Line
- - Description
-
- * - | ``podman run -dt``
- | ``docker run -dt``
-
- - Directs Podman/Docker to create and start the container as a detached (``-d``) background process with a pseudo-TTY (``-t``).
- This allows the container to run in the background with an open TTY for bash-like access.
-
- * - ``-p 9000:9000 -p 9001:9001``
- - Binds the ports ``9000`` and ``9090`` on the local machine to the same ports on the container.
- This allows access to the container through the local machine.
-
- * - ``-v PATHx:/mnt/data-x``
- - Binds the storage volume ``PATH`` on the local machine to the ``/mnt/data-x`` path on the container.
- Replace this value with the full path to each sequential storage volume or folder on the local machine.
- For example:
-
- Linux or MacOS
- ``/mnt/data-1/``
-
- Windows
- ``D:\data\``
-
- Include additional ``-v`` parameters such that one mount exists for each drive specified to the :envvar:`MINIO_VOLUMES` value in the environment file.
-
- * - ``-v /etc/default/minio:/etc/config.env``
- - Mounts the environment file created in the previous step to the ``/etc/config.env`` path on the Container.
- For Windows hosts, specify the Windows-style path ``-v C:\minio\config:/etc/config.env``.
-
- The MinIO Server uses this environment file for configuration.
-
- * - ``-e "MINIO_CONFIG_ENV_FILE=/etc/config.env"``
- - Sets a MinIO environment variable pointing to the container-mounted path of the environment file.
-
- * - ``--name "minio_local"``
- - Sets a custom name for the container.
- Omit this value to allow Podman/Docker to automatically generate a container name.
- You can replace this value to best reflect your requirements.
-
- * - ``minio server --console-address ":9001"``
- - Starts the MinIO server using the ``minio:minio`` image pulled from an earlier step.
- The :mc-cmd:`minio server --console-address ":9001" ` option directs the server to set a static port for the MinIO Console Web Interface.
- This option is *required* for containerized environments.
-
- If you modify this value, ensure you set the proper port mapping using the ``-p`` flag to Podman/Docker to ensure traffic forwarding between the local host and the container.
-
-4) Validate the Container Status
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-deploy.rst
- :start-after: start-common-deploy-validate-container-status
- :end-before: end-common-deploy-validate-container-status
-
-.. code-block:: none
-
- Status: 1 Online, 0 Offline.
- API: http://10.0.2.100:9000 http://127.0.0.1:9000
- RootUser: myminioadmin
- RootPass: minio-secret-key-change-me
- Console: http://10.0.2.100:9001 http://127.0.0.1:9001
- RootUser: myminioadmin
- RootPass: minio-secret-key-change-me
-
- Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
- $ mc alias set myminio http://10.0.2.100:9000 myminioadmin minio-secret-key-change-me
-
- Documentation: https://min.io/docs/minio/container/index.html
-
-.. admonition:: Container Networks May Not Be Accessible Outside of the Host
-
- The ``API`` and ``CONSOLE`` blocks may include the network interfaces for the container.
- Clients outside of the container network cannot access the MinIO API or Console using these addresses.
-
- External access requires using a network address for the container host machine and assumes the host firewall allows access to the related ports (``9000`` and ``9090`` in the examples).
-
-5) Connect to the MinIO Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-deploy.rst
- :start-after: start-common-deploy-connect-to-minio-service
- :end-before: end-common-deploy-connect-to-minio-service
diff --git a/source/includes/container/steps-deploy-minio-single-node-single-drive.rst b/source/includes/container/steps-deploy-minio-single-node-single-drive.rst
deleted file mode 100644
index 21a69ce11..000000000
--- a/source/includes/container/steps-deploy-minio-single-node-single-drive.rst
+++ /dev/null
@@ -1,156 +0,0 @@
-1) Pull the Latest Stable Image of MinIO
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-deploy.rst
- :start-after: start-common-deploy-pull-latest-minio-image
- :end-before: end-common-deploy-pull-latest-minio-image
-
-2) Create the Environment Variable File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-environment-file-single-drive
- :end-before: end-common-deploy-create-environment-file-single-drive
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-unique-root-credentials
- :end-before: end-common-deploy-create-unique-root-credentials
-
-3) Create and Run the Container
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Select the container management interface of your choice for the relevant command syntax.
-
-.. tab-set::
-
- .. tab-item:: Podman
-
- Copy the command to a text file for further modification.
-
- .. code-block:: shell
- :class: copyable
-
- podman run -dt \
- -p 9000:9000 -p 9001:9001 \
- -v PATH:/mnt/data \
- -v /etc/default/minio:/etc/config.env \
- -e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
- --name "minio_local" \
- minio server --console-address ":9001"
-
- Specify any other :podman-docs:`options ` to ``podman run`` as necessary for your local environment.
-
- .. tab-item:: Docker
-
- Copy the command to a text file for further modification.
-
- .. code-block:: shell
- :class: copyable
-
- docker run -dt \
- -p 9000:9000 -p 9001:9001 \
- -v PATH:/mnt/data \
- -v /etc/default/minio:/etc/config.env \
- -e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
- --name "minio_local" \
- minio server --console-address ":9001"
-
- Specify any other `options `__ to ``docker run`` as necessary for your local environment.
-
- For running Docker in Rootless mode, you may need to set the following additional Docker CLI options:
-
- Linux
- ``--user $(id -u):$(id -g)`` - directs the container to run as the currently logged in user.
-
- Windows
- ``--security-opt "credentialspec=file://path/to/file.json"`` - directs the container to run using a Windows `Group Managed Service Account `_.
-
-The following table describes each line of the command and provides additional configuration instructions:
-
-.. list-table::
- :header-rows: 1
- :widths: 40 60
- :width: 100%
-
- * - Line
- - Description
-
- * - | ``podman run -dt``
- | ``docker run -dt``
- - Directs Podman/Docker to create and start the container as a detached (``-d``) background process with a pseudo-TTY (``-t``).
- This allows the container to run in the background with an open TTY for bash-like access.
-
- * - ``-p 9000:9000 -p 9001:9001``
- - Binds the ports ``9000`` and ``9090`` on the local machine to the same ports on the container.
- This allows access to the container through the local machine.
-
- * - ``-v PATH:/data/minio``
- - Binds the storage volume ``PATH`` on the local machine to the ``/data`` path on the container.
- Replace this value with the full path to a storage volume or folder on the local machine.
- For example:
-
- Linux or macOS
- ``~/minio/data/``
-
- Windows
- ``C:\minio\data``
-
- * - ``-v /etc/default/minio:/etc/config.env``
- - Mounts the environment file created in the previous step to the ``/etc/config.env`` path on the Container.
- For Windows hosts, specify the Windows-style path ``-v C:\minio\config:/etc/config.env``.
-
- The MinIO Server uses this environment file for configuration.
-
- * - ``-e "MINIO_CONFIG_ENV_FILE=/etc/config.env"``
- - Sets a MinIO environment variable pointing to the container-mounted path of the environment file.
-
- * - ``--name "minio_local"``
- - Sets a custom name for the container.
- Omit this value to allow Podman/Docker to automatically generate a container name.
- You can replace this value to best reflect your requirements.
-
- * - ``minio server --console-address ":9001"``
- - Starts the MinIO server using the ``minio:minio`` image pulled from an earlier step.
- The :mc-cmd:`minio server --console-address ":9001" ` option directs the server to set a static port for the MinIO Console Web Interface.
- This option is *required* for containerized environments.
-
- If you modify this value, ensure you set the proper port mapping using the ``-p`` flag to Podman/Docker to ensure traffic forwarding between the local host and the container.
-
-Once you have applied any further customizations to the command, run it in your preferred terminal or shell environment.
-The command should return a unique ID for the created container.
-
-4) Validate the Container Status
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-deploy.rst
- :start-after: start-common-deploy-validate-container-status
- :end-before: end-common-deploy-validate-container-status
-
-.. code-block:: shell
-
- Status: 1 Online, 0 Offline.
- API: http://10.0.2.100:9000 http://127.0.0.1:9000
- RootUser: myminioadmin
- RootPass: minio-secret-key-change-me
- Console: http://10.0.2.100:9001 http://127.0.0.1:9001
- RootUser: myminioadmin
- RootPass: minio-secret-key-change-me
-
- Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
- $ mc alias set myminio http://10.0.2.100:9000 myminioadmin minio-secret-key-change-me
-
- Documentation: https://min.io/docs/minio/container/index.html
-
-.. admonition:: Container Networks May Not Be Accessible Outside of the Host
-
- The ``API`` and ``CONSOLE`` blocks may include the network interfaces for the container.
- Clients outside of the container network cannot access the MinIO API or Console using these addresses.
-
- External access requires using a network address for the container host machine and assumes the host firewall allows access to the related ports (``9000`` and ``9090`` in the examples).
-
-5) Connect to the MinIO Service
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/container/common-deploy.rst
- :start-after: start-common-deploy-connect-to-minio-service
- :end-before: end-common-deploy-connect-to-minio-service
diff --git a/source/includes/container/steps-upgrade-minio-deployment.rst b/source/includes/container/steps-upgrade-minio-deployment.rst
deleted file mode 100644
index 9d09e4a4a..000000000
--- a/source/includes/container/steps-upgrade-minio-deployment.rst
+++ /dev/null
@@ -1,142 +0,0 @@
-MinIO uses an update-then-restart methodology for upgrading a deployment to a newer release:
-
-1. Update the container MinIO image with the newer release.
-2. Restart the container.
-
-This procedure does not require taking downtime and is non-disruptive to ongoing operations.
-
-Considerations
---------------
-
-Upgrades Are Non-Disruptive
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-MinIO's upgrade-then-restart procedure does *not* require taking downtime or scheduling a maintenance period.
-MinIO restarts are fast, such that restarting all server processes in parallel typically completes in a few seconds.
-MinIO operations are atomic and strictly consistent, such that applications using MinIO or S3 SDKs can rely on the built-in :aws-docs:`transparent retry ` without further client-side logic.
-This ensures upgrades are non-disruptive to ongoing operations.
-
-Check Release Notes
-~~~~~~~~~~~~~~~~~~~
-
-MinIO publishes :minio-git:`Release Notes ` for your reference as part of identifying the changes applied in each release.
-Review the associated release notes between your current MinIO version and the newer release so you have a complete view of any changes.
-
-Pay particular attention to any releases that are *not* backwards compatible.
-You cannot trivially downgrade from any such release.
-
-Procedure
----------
-
-You can run the ``podman container inspect`` or ``docker inspect`` command to inspect the container and validate the current container image:
-
-.. code-block:: shell
- :class: copyable
-
- # For docker, use docker inspect
- podman container inspect --format='{{.Config.Image}}' CONTAINER_NAME
-
-The following output indicates the container was created using the most recent stable image tag:
-
-.. code-block:: shell
-
- quay.io/minio/minio:latest
-
-Use the :ref:`minio-upgrade-latest-tag` steps to upgrade your container.
-
-The following output indicates the container was created using a specific image tag:
-
-.. code-block:: shell
-
- quay.io/minio/minio:RELEASE.2023-07-21T21-12-44Z
-
-Use the :ref:`minio-upgrade-specific-tag` steps to upgrade your container.
-
-.. _minio-upgrade-latest-tag:
-
-Upgrade Containers using Latest Image Tag
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-1. Update your image registry
-
- Pull the latest stable MinIO image for the configured image repository:
-
- .. code-block:: shell
- :class: copyable
-
- # For docker, use docker pull
- podman pull quay.io/minio/minio:latest
-
-#. Restart the container
-
- You must restart the container to load the new image binary for use by MinIO:
-
- .. code-block:: shell
- :class: copyable
-
- # For docker, use docker restart
- podman container restart CONTAINER_NAME
-
-#. Validate the Upgrade
-
- Use the :mc:`mc admin info` command to check that the MinIO container is online, operational, and reflects the installed MinIO version.
-
-#. Update MinIO Client
-
- You should upgrade your :mc:`mc` binary to match or closely follow the MinIO server release.
- You can use the :mc:`mc update` command to update the binary to the latest stable release:
-
- .. code-block:: shell
- :class: copyable
-
- mc update
-
-.. _minio-upgrade-specific-tag:
-
-Upgrade Containers using Specific Image Tag
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-1. Update your local image registry
-
- Pull the desired image you want to use for updating the container.
- The following example uses the latest stable version of MinIO:
-
- .. code-block:: shell
- :class: copyable
- :substitutions:
-
- # For docker, use docker pull
- podman pull quay.io/minio/minio:|minio-tag|
-
-#. Modify the container start script or configuration
-
- Specify the new MinIO tag to the container start script or configuration.
- For Docker, this might be the Compose file used to start MinIO.
- For Podman, this might be a YAML file used to create the container or pod.
-
- Ensure the ``image: `` matches the newly pulled image tag.
-
-#. Restart or re-create the container
-
- If you started the container using CLI commands, you may need to completely stop, remove, and re-create the container.
- Use a script to perform this procedure to minimize potential downtime.
-
- For Docker, this might require running ``docker compose restart``.
-
-#. Validate the Upgrade
-
- Use the :mc:`mc admin info` command to check that the MinIO container is online, operational, and reflects the installed MinIO version.
-
-#. Update MinIO Client
-
- You should upgrade your :mc:`mc` binary to match or closely follow the MinIO server release.
- You can use the :mc:`mc update` command to update the binary to the latest stable release:
-
- .. code-block:: shell
- :class: copyable
-
- mc update
-
-
-
-
diff --git a/source/includes/eks/deploy-minio-on-elastic-kubernetes-service.rst b/source/includes/eks/deploy-minio-on-elastic-kubernetes-service.rst
deleted file mode 100644
index 0fbefc5d9..000000000
--- a/source/includes/eks/deploy-minio-on-elastic-kubernetes-service.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-.. _deploy-operator-eks:
-
-==========================================================
-Deploy MinIO Operator on Amazon Elastic Kubernetes Service
-==========================================================
-
-.. default-domain:: minio
-
-.. contents:: Table of Contents
- :local:
- :depth: 1
-
-Overview
---------
-
-:eks-docs:`Amazon® Elastic Kubernetes Service® ` (EKS) is an enterprise-ready Kubernetes container platform with full-stack automated operations to manage hybrid cloud, multi-cloud, and edge deployments.
-The MinIO Kubernetes Operator supports deploying MinIO Tenants onto EKS infrastructure using the MinIO Operator Console or by using `kustomize `__ for :minio-git:`YAML-defined deployments `.
-
-MinIO supports the following methods for installing the MinIO Operator onto your :abbr:`EKS (Elastic Kubernetes Service)` clusters:
-
-:minio-web:`Through the AWS Marketplace `
- MinIO maintains an `AWS Marketplace listing `__ through which you can register your EKS cluster with |subnet|.
- Any tenant you deploy through Marketplace-connected clusters can take advantage of SUBNET registration, including 24/7 direct access to MinIO engineers.
-
-This page documents deploying the MinIO Operator through the CLI using Kustomize.
-For instructions on deploying the MinIO Operator through the AWS Marketplace, see :minio-web:`Deploy MinIO through EKS `
-
-This documentation assumes familiarity with all referenced Kubernetes and Elastic Kubernetes Service concepts, utilities, and procedures.
-While this documentation *may* provide guidance for configuring or deploying Kubernetes-related or Elastic Kubernetes Service-related resources on a best-effort basis, it is not a replacement for the official :kube-docs:`Kubernetes Documentation <>`.
-
-Prerequisites
--------------
-
-Existing EKS Cluster
-~~~~~~~~~~~~~~~~~~~~
-
-This procedure assumes an existing :abbr:`EKS (Elastic Kubernetes Service)` cluster onto which you can deploy the MinIO Operator.
-
-The Operator by default deploys pods and services with two replicas each and pod anti-affinity.
-The GKE cluster should therefore have at least two nodes available for scheduling Operator pods and services.
-While these nodes *may* be the same nodes intended for use by MinIO Tenants, co-locating Operator and Tenant pods may increase the risk of service interruptions due to the loss of any one node.
-
-``kubectl`` Access to the EKS Cluster
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Ensure your host machine has a ``kubectl`` installation compatible with the target EKS cluster.
-For guidance on connecting ``kubectl`` to EKS, see :aws-docs:`Creating or updating a kubeconfig file for an Amazon EKS cluster `.
-
-Your ``kubectl`` configuration must include authentication as a user with the correct permissions.
-MinIO provides an example IAM policy for Marketplace-based installations in the MinIO Operator :minio-git:`github repository `.
-You can use this policy as a baseline for manual Operator installations.
-
-Procedure
----------
-
-The following steps deploy Operator using Kustomize and a ``kustomization.yaml`` file from the MinIO Operator GitHub repository.
-
-.. include:: /includes/common/common-install-operator-kustomize.rst
diff --git a/source/includes/gke/deploy-minio-on-google-kubernetes-engine.rst b/source/includes/gke/deploy-minio-on-google-kubernetes-engine.rst
deleted file mode 100644
index 2a0ecd2d9..000000000
--- a/source/includes/gke/deploy-minio-on-google-kubernetes-engine.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-.. _deploy-operator-gke:
-
-=================================================
-Deploy MinIO Operator on Google Kubernetes Engine
-=================================================
-
-.. default-domain:: minio
-
-.. contents:: Table of Contents
- :local:
- :depth: 1
-
-Overview
---------
-
-`Google Kubernetes Engine `__ (GKE) offers a highly automated secure and fully managed Kubernetes platform.
-The MinIO Kubernetes Operator supports deploying MinIO Tenants onto GKE infrastructure using the MinIO Operator Console or `kustomize `__ for :minio-git:`YAML-defined deployments `.
-
-:minio-web:`Through the GKE Marketplace `
- MinIO maintains an `GKE Marketplace listing `__ through which you can register your GKE cluster with |subnet|.
- Any MinIO tenant you deploy through Marketplace-connected clusters can take advantage of SUBNET registration, including 24/7 direct access to MinIO engineers.
-
-Using the MinIO ``kubectl`` Plugin
- MinIO provides a ``kubectl`` plugin for installing and managing the MinIO Operator and Tenants through a terminal or shell (CLI) environment.
- You can manually register these tenants with |subnet| at any time.
-
-This page documents deploying the MinIO Operator through the CLI using Kustomize.
-For instructions on deploying the MinIO Operator through the GKE Marketplace, see :minio-web:`Deploy MinIO through GKE `
-
-This documentation assumes familiarity with all referenced Kubernetes and Google Kubernetes Engine concepts, utilities, and procedures.
-While this documentation *may* provide guidance for configuring or deploying Kubernetes-related or Google Kubernetes Engine-related resources on a best-effort basis, it is not a replacement for the official :kube-docs:`Kubernetes Documentation <>`.
-
-Prerequisites
--------------
-
-Existing GKE Cluster
-~~~~~~~~~~~~~~~~~~~~
-
-This procedure assumes an existing :abbr:`GKE (Google Kubernetes Engine)` cluster onto which you can deploy the MinIO Operator.
-
-The Operator by default deploys pods and services with two replicas each and pod anti-affinity.
-The GKE cluster should therefore have at least two nodes available for scheduling Operator pods and services.
-While these nodes *may* be the same nodes intended for use by MinIO Tenants, co-locating Operator and Tenant pods may increase the risk of service interruptions due to the loss of any one node.
-
-``kubectl`` Access to the GKE Cluster
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Ensure your host machine has a ``kubectl`` installation compatible with the target GKE cluster.
-For guidance on connecting ``kubectl`` to GKE, see :gke-docs:`Install kubectl and configure cluster access `.
-
-Procedure
----------
-
-The following steps deploy Operator using Kustomize and a ``kustomization.yaml`` file from the MinIO Operator GitHub repository.
-
-.. include:: /includes/common/common-install-operator-kustomize.rst
diff --git a/source/includes/k8s/file-transfer-protocol-k8s.rst b/source/includes/k8s/file-transfer-protocol-k8s.rst
index 6096eebc5..f4010cb28 100644
--- a/source/includes/k8s/file-transfer-protocol-k8s.rst
+++ b/source/includes/k8s/file-transfer-protocol-k8s.rst
@@ -1,119 +1,51 @@
-.. versionadded:: Operator v5.0.7
-
-Overview
---------
-
-Starting with Operator 5.0.7 and :minio-release:`MinIO Server RELEASE.2023-04-20T17-56-55Z `, you can use the SSH File Transfer Protocol (SFTP) to interact with the objects on a MinIO Operator Tenant deployment.
-
-SFTP is defined by the Internet Engineering Task Force (IETF) as an extension of SSH 2.0.
-It allows file transfer over SSH for use with :ref:`Transport Layer Security (TLS) ` and virtual private network (VPN) applications.
-
-Enabling SFTP does not affect other MinIO features.
-
-
-Supported Commands
-~~~~~~~~~~~~~~~~~~
-
-When enabled, MinIO supports the following SFTP operations:
-
-- ``get``
-- ``put``
-- ``ls``
-- ``mkdir``
-- ``rmdir``
-- ``delete``
-
-MinIO does not support either ``append`` or ``rename`` operations.
-
-MinIO Operator only supports the SFTP file transfer protocol.
-Other protocols, such as FTP, are not supported for accessing Tenants.
-
-
-Considerations
---------------
-
-
-Versioning
-~~~~~~~~~~
-
-SFTP clients can only operate on the :ref:`latest version ` of an object.
-Specifically:
-
-- For read operations, MinIO only returns the latest version of the requested object(s) to the SFTP client.
-- For write operations, MinIO applies normal versioning behavior and creates a new object version at the specified namespace.
- ``rm`` and ``rmdir`` operations create ``DeleteMarker`` objects.
-
-
-Authentication and Access
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-SFTP access requires the same authentication as any other S3 client.
-MinIO supports the following authentication providers:
-
-- :ref:`MinIO IDP ` users and their service accounts
-- :ref:`Active Directory/LDAP ` users and their service accounts
-- :ref:`OpenID/OIDC ` service accounts
-- :ref:`Certificate Key File `
-
-:ref:`STS ` credentials **cannot** access buckets or objects over SFTP.
-
-Authenticated users can access buckets and objects based on the :ref:`policies ` assigned to the user or parent user account.
-
-The SFTP protocol does not require any of the ``admin:*`` :ref:`permissions `.
-You may not perform other MinIO admin actions with SFTP.
-
+#. Enable SFTP for the desired Tenant:
-Prerequisites
--------------
+ Use the following Kubectl command to edit the Tenant YAML configuration:
-- MinIO Operator v5.0.7 or later.
-- Enable an SFTP port (8022) for the server.
-- A port to use for the SFTP commands and a range of ports to allow the SFTP server to request to use for the data transfer.
+ .. code-block:: yaml
+ kubectl edit tenants/my-tenant -n my-tenant-ns
-Procedure
----------
+ Replace ``my-tenant`` and ``my-tenant-ns`` with the desired Tenant and namespace.
-#. Enable SFTP for the desired Tenant:
+ In the ``features:`` section, set the value of ``enableSFTP`` to ``true``:
- .. tab-set::
+ .. code-block:: yaml
- .. tab-item:: Operator Console
+ spec:
+ configuration:
+ name: my-tenant-env-configuration
+ credsSecret:
+ name: my-tenant-secret
+ exposeServices:
+ console: true
+ minio: true
+ features:
+ enableSFTP: true
- - In the Operator Console, click on the Tenant for which to enable SFTP.
- - In the :guilabel:`Configuration` tab, toggle :guilabel:`SFTP` to :guilabel:`Enabled`.
- - Click :guilabel:`Save`.
- - Click :guilabel:`Restart` to restart MinIO and apply your changes.
+ Kubectl restarts MinIO to apply the change.
- .. tab-item:: Kubectl
-
- Use the following Kubectl command to edit the Tenant YAML configuration:
+ You may also set ``enableSFTP`` in your `Helm chart `__ or `Kustomize configuration `__ to enable SFTP for newly created Tenants.
+
- .. code-block:: yaml
+#. If needed, configure ingress for the SFTP port according to your local policies.
- kubectl edit tenants/my-tenant -n my-tenant-ns
+#. Validate the configuration
- Replace ``my-tenant`` and ``my-tenant-ns`` with the desired Tenant and namespace.
+ The following ``kubectl get`` command uses `yq `__ to display the value of ``enableSFTP``, indicating whether SFTP is enabled:
- In the ``features:`` section, set the value of ``enableSFTP`` to ``true``:
+ .. code-block:: console
+ :class: copyable
- .. code-block:: yaml
+ kubectl get tenants/my-tenant -n my-tenant-ns -o yaml | yq '.spec.features'
- spec:
- configuration:
- name: my-tenant-env-configuration
- exposeServices:
- console: true
- minio: true
- features:
- enableSFTP: true
+ Replace ``my-tenant`` and ``my-tenant-ns`` with the desired Tenant and namespace.
- Kubectl restarts MinIO to apply the change.
+ If SFTP is enabled, the output resembles the following:
- You may also set ``enableSFTP`` in your `Helm chart `__ or `Kustomize configuration `__ to enable SFTP for newly created Tenants.
-
+ .. code-block:: console
-#. If needed, configure ingress for the SFTP port according to your local policies.
+ enableSFTP: true
#. Use your preferred SFTP client to connect to the MinIO deployment.
You must connect as a user whose :ref:`policies ` allow access to the desired buckets and objects.
@@ -121,33 +53,15 @@ Procedure
The specifics of connecting to the MinIO deployment depend on your SFTP client.
Refer to the documentation for your client.
+ The following example connects to the MinIO Tenant SFTP server forwarded to the local host system, and lists the contents of a bucket named ``runner``.
-Examples
---------
-
-The following examples use the `SFTP CLI client `__ on a Linux system.
+ .. code-block:: console
-Connect to MinIO Using SFTP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following example connects to an SFTP server, lists the contents of a bucket named ``test-bucket``, and downloads an object.
-
-.. code-block:: console
-
- sftp -P 8022 my-access-key@localhost
- my-access-key@localhost's password:
- Connected to localhost.
- sftp> ls
- test-bucket
- sftp> ls test-bucket
- test-bucket/test-file.txt
- sftp> get test-bucket/test-file.txt
- Fetching /test-bucket/test-file.txt to test-file.txt
- test-file.txt 100% 6 1.3KB/s 00:00
-
-
-Check if SFTP is Enabled for a Tenant
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ > sftp -P 8022 minio@localhost
+ minio@localhost's password:
+ Connected to localhost.
+ sftp> ls runner/
+ chunkdocs testdir
The following ``kubectl get`` command uses `yq `__ to display the value of ``enableSFTP``, indicating whether SFTP is enabled:
@@ -164,73 +78,3 @@ If SFTP is enabled, the output resembles the following:
enableSFTP: true
-.. _minio-certificate-key-file-sftp-k8s:
-
-Connect to MinIO Using SFTP with a Certificate Key File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: RELEASE.2024-05-07T06-41-25Z
-
-
-MinIO supports mutual TLS (mTLS) certificate-based authentication on SFTP, where both the server and the client verify the authenticity of each other.
-
-This type of authentication requires the following:
-
-1. Public key file for the trusted certificate authority
-2. Public key file for the MinIO Server minted and signed by the trusted certificate authority
-3. Public key file for the user minted and signed by the trusted certificate authority for the client connecting by SFTP and located in the user's ``.ssh`` folder (or equivalent for the operating system)
-
-The keys must include a `principals list `__ of the user(s) that can authenticate with the key:
-
-.. code-block:: console
- :class: copyable
-
- ssh-keygen -s ~/.ssh/ca_user_key -I miniouser -n miniouser -V +1h -z 1 miniouser1.pub
-
-- ``-s`` specifies the path to the certificate authority public key to use for generating this key.
- The specified public key must have a ``principals`` list that includes this user.
-- ``-I`` specifies the key identity for the public key.
-- ``-n`` creates the ``user principals`` list for which this key is valid.
- You must include the user for which this key is valid, and the user must match the username in MinIO.
-- ``-V`` limits the duration for which the generated key is valid.
- In this example, the key is valid for one hour.
- Adjust the duration for your requirements.
-- ``-z`` adds a serial number to the key to distinguish this generated public key from other keys signed by the same certificate authority public key.
-
-MinIO requires specifying the Certificate Authority used to sign the certificates for SFTP access.
-Start or restart the MinIO Server and specify the path to the trusted certificate authority's public key using an ``--sftp="trusted-user-ca-key=PATH"`` flag:
-
- .. code-block:: console
- :class: copyable
-
- minio server {path-to-server} --sftp="trusted-user-ca-key=/path/to/.ssh/ca_user_key.pub" {...other flags}
-
-When connecting to the MinIO Server with SFTP, the client verifies the MinIO Server's certificate.
-The client then passes its own certificate to the MinIO Server.
-The MinIO Server verifies the key created above by comparing its value to the the known public key from the certificate authority provided at server startup.
-
-Once the MinIO Server verifies the client's certificate, the user can connect to the MinIO server over SFTP:
-
-.. code-block:: bash
- :class: copyable:
-
- sftp -P
-
-Require service account or LDAP for authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To force authentication to SFTP using LDAP or service account credentials, append a suffix to the username.
-Valid suffixes are either ``=ldap`` or ``=svc``.
-
-.. code-block:: console
-
- > sftp -P 8022 my-ldap-user=ldap@[minio@localhost]:/bucket
-
-
-.. code-block:: console
-
- > sftp -P 8022 my-ldap-user=svc@[minio@localhost]:/bucket
-
-
-- Replace ``my-ldap-user`` with the username to use.
-- Replace ``[minio@localhost]`` with the address of the MinIO server.
\ No newline at end of file
diff --git a/source/includes/k8s/steps-configure-ad-ldap-external-identity-management.rst b/source/includes/k8s/steps-configure-ad-ldap-external-identity-management.rst
index 7765f01bf..349c2ed05 100644
--- a/source/includes/k8s/steps-configure-ad-ldap-external-identity-management.rst
+++ b/source/includes/k8s/steps-configure-ad-ldap-external-identity-management.rst
@@ -1,126 +1,118 @@
-Deploy MinIO Tenant with Active Directory / LDAP Identity Management
---------------------------------------------------------------------
+#. Access the Operator Console
-1) Access the Operator Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Temporarily forward traffic between the local host machine and the MinIO Operator Console and retrieve the JWT token for your Operator deployment.
+ For instructions, see :ref:`Configure access to the Operator Console service `.
-Temporarily forward traffic between the local host machine and the MinIO Operator Console and retrieve the JWT token for your Operator deployment.
-For instructions, see :ref:`Configure access to the Operator Console service `.
+ Open your browser to the temporary URL and enter the JWT Token into the login page.
+ You should see the :guilabel:`Tenants` page:
-Open your browser to the temporary URL and enter the JWT Token into the login page.
-You should see the :guilabel:`Tenants` page:
+ .. image:: /images/k8s/operator-dashboard.png
+ :align: center
+ :width: 70%
+ :class: no-scaled-link
+ :alt: MinIO Operator Console
-.. image:: /images/k8s/operator-dashboard.png
- :align: center
- :width: 70%
- :class: no-scaled-link
- :alt: MinIO Operator Console
+ To deploy a new MinIO Tenant with AD/LDAP external identity management, select the :guilabel:`+ Create Tenant` button.
-Click the :guilabel:`+ Create Tenant` to start creating a MinIO Tenant.
+ To configure an existing MinIO Tenant with AD/LDAP external identity management select that Tenant from the displayed list.
+ The following steps reference the necessary sections and configuration settings for existing Tenants.
-If you are modifying an existing Tenant, select that Tenant from the list.
-The following steps reference the necessary sections and configuration settings for existing Tenants.
+#. Complete the :guilabel:`Identity Provider` Section
-2) Complete the :guilabel:`Identity Provider` Section
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ To enable external identity management with an Active Directory / LDAP provider, select the :guilabel:`Identity Provider` section.
+ You can then change the radio button to :guilabel:`Active Directory` to display the configuration settings.
-To enable external identity management with an Active Directory / LDAP provider, select the :guilabel:`Identity Provider` section.
-You can then change the radio button to :guilabel:`Active Directory` to display the configuration settings.
+ .. image:: /images/k8s/operator-create-tenant-identity-provider-adldap.png
+ :align: center
+ :width: 70%
+ :class: no-scaled-link
+ :alt: MinIO Operator Console - Create a Tenant - External Identity Provider Section - Active Directory / LDAP
-.. image:: /images/k8s/operator-create-tenant-identity-provider-adldap.png
- :align: center
- :width: 70%
- :class: no-scaled-link
- :alt: MinIO Operator Console - Create a Tenant - External Identity Provider Section - Active Directory / LDAP
+ An asterisk ``*`` marks required fields.
+ The following table provides general guidance for those fields:
-An asterisk ``*`` marks required fields.
-The following table provides general guidance for those fields:
+ .. list-table::
+ :header-rows: 1
+ :widths: 40 60
+ :width: 100%
-.. list-table::
- :header-rows: 1
- :widths: 40 60
- :width: 100%
+ * - Field
+ - Description
- * - Field
- - Description
+ * - LDAP Server Address
+ - The hostname of the Active Directory or LDAP server.
- * - LDAP Server Address
- - The hostname of the Active Directory or LDAP server.
+ * - Lookup Bind DN
+ - The Distinguished Name MinIO uses to authenticate and query the AD/LDAP server.
- * - Lookup Bind DN
- - The Distinguished Name MinIO uses to authenticate and query the AD/LDAP server.
+ See :ref:`minio-external-identity-management-ad-ldap-lookup-bind` for more information.
- See :ref:`minio-external-identity-management-ad-ldap-lookup-bind` for more information.
+ * - List of user DNs (Distinguished Names) to be Tenant Administrators
+ - Specify a user :abbr:`DNs (Distinguished Names)` which MinIO assigns a :ref:`policy ` with administrative permissions for the Tenant.
+ You can specify multiple :abbr:`DNs (Distinguished Names)` by selecting the plus :octicon:`plus-circle` icon.
+ You can delete a DN by selecting the trash can :octicon:`trash` icon for that DN.
- * - List of user DNs (Distinguished Names) to be Tenant Administrators
- - Specify a user :abbr:`DNs (Distinguished Names)` which MinIO assigns a :ref:`policy ` with administrative permissions for the Tenant.
- You can specify multiple :abbr:`DNs (Distinguished Names)` by selecting the plus :octicon:`plus-circle` icon.
- You can delete a DN by selecting the trash can :octicon:`trash` icon for that DN.
+ Once you complete the section, you can finish any other required sections of :ref:`Tenant Deployment `.
-Once you complete the section, you can finish any other required sections of :ref:`Tenant Deployment `.
+#. Assign Policies to AD/LDAP Users
-3) Assign Policies to AD/LDAP Users
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MinIO by default assigns no :ref:`policies ` to AD/LDAP users or groups.
+ You must explicitly assign MinIO policies to a given user or group Distinguished Name (DN) to grant that user or group access to the MinIO deployment.
-MinIO by default assigns no :ref:`policies ` to AD/LDAP users or groups.
-You must explicitly assign MinIO policies to a given user or group Distinguished Name (DN) to grant that user or group access to the MinIO deployment.
+ The following example assumes an existing :ref:`alias ` configured for the MinIO Tenant.
-The following example assumes an existing :ref:`alias ` configured for the MinIO Tenant.
+ Use the :mc:`mc idp ldap policy attach` command to assign a user or group DN to an existing MinIO Policy:
-Use the :mc:`mc idp ldap policy attach` command to assign a user or group DN to an existing MinIO Policy:
+ .. code-block:: shell
+ :class: copyable
-.. code-block:: shell
- :class: copyable
+ mc idp ldap policy attach minio-tenant POLICY --user='uid=primary,cn=applications,dc=domain,dc=com'
+ mc idp ldap policy attach minio-tenant POLICY --group='cn=applications,ou=groups,dc=domain,dc=com'
- mc idp ldap policy attach minio-tenant POLICY --user='uid=primary,cn=applications,dc=domain,dc=com'
- mc idp ldap policy attach minio-tenant POLICY --group='cn=applications,ou=groups,dc=domain,dc=com'
+ Replace ``POLICY`` with the name of the MinIO policy to assign to the user or group DN.
-Replace ``POLICY`` with the name of the MinIO policy to assign to the user or group DN.
+ See :ref:`minio-external-identity-management-ad-ldap-access-control` for more information on access control with AD/LDAP users and groups.
-See :ref:`minio-external-identity-management-ad-ldap-access-control` for more information on access control with AD/LDAP users and groups.
+#. Use the MinIO Tenant Console to Log In with AD/LDAP Credential
-4) Use the MinIO Tenant Console to Log In with AD/LDAP Credentials
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ The MinIO Console supports the full workflow of authenticating to the AD/LDAP provider, generating temporary credentials using the MinIO :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) endpoint, and logging the user into the MinIO deployment.
-The MinIO Console supports the full workflow of authenticating to the AD/LDAP provider, generating temporary credentials using the MinIO :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) endpoint, and logging the user into the MinIO deployment.
+ See :ref:`Deploy MinIO Tenant: Connect to the Tenant ` for additonal information about accessing the Tenant Console.
-See :ref:`Deploy MinIO Tenant: Connect to the Tenant ` for additonal information about accessing the Tenant Console.
+ If the AD/LDAP configuration succeeded, the Console displays a button to login with AD/LDAP credentials.
-If the AD/LDAP configuration succeeded, the Console displays a button to login with AD/LDAP credentials.
+ Enter the user's AD/LDAP credentials and log in to access the Console.
-Enter the user's AD/LDAP credentials and log in to access the Console.
+ Once logged in, you can perform any action for which the authenticated user is :ref:`authorized `.
-Once logged in, you can perform any action for which the authenticated user is :ref:`authorized `.
+ You can also create :ref:`access keys ` for supporting applications which must perform operations on MinIO.
+ Access Keys are long-lived credentials which inherit their privileges from the parent user.
+ The parent user can further restrict those privileges while creating the access keys.
-You can also create :ref:`access keys ` for supporting applications which must perform operations on MinIO.
-Access Keys are long-lived credentials which inherit their privileges from the parent user.
-The parent user can further restrict those privileges while creating the access keys.
+#. Generate S3-Compatible Temporary Credentials using AD/LDAP Credentials
-5) Generate S3-Compatible Temporary Credentials using AD/LDAP Credentials
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Applications can use an AD/LDAP user credential to generate temporary S3-compatible credentials as-needed using the :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) API endpoint.
+ MinIO provides an example Go application :minio-git:`ldap.go ` with an example of managing this workflow.
-Applications can use an AD/LDAP user credential to generate temporary S3-compatible credentials as-needed using the :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) API endpoint.
-MinIO provides an example Go application :minio-git:`ldap.go ` with an example of managing this workflow.
+ .. code-block:: shell
-.. code-block:: shell
+ POST https://minio.example.net?Action=AssumeRoleWithLDAPIdentity
+ &LDAPUsername=USERNAME
+ &LDAPPassword=PASSWORD
+ &Version=2011-06-15
+ &Policy={}
- POST https://minio.example.net?Action=AssumeRoleWithLDAPIdentity
- &LDAPUsername=USERNAME
- &LDAPPassword=PASSWORD
- &Version=2011-06-15
- &Policy={}
+ - Replace ``minio.example.net`` with the hostname or URL for the MinIO Tenant service.
-- Replace ``minio.example.net`` with the hostname or URL for the MinIO Tenant service.
+ - Replace the ``LDAPUsername`` with the username of the AD/LDAP user.
-- Replace the ``LDAPUsername`` with the username of the AD/LDAP user.
+ - Replace the ``LDAPPassword`` with the password of the AD/LDAP user.
-- Replace the ``LDAPPassword`` with the password of the AD/LDAP user.
+ - Replace the ``Policy`` with an inline URL-encoded JSON :ref:`policy ` that further restricts the permissions associated to the temporary credentials.
-- Replace the ``Policy`` with an inline URL-encoded JSON :ref:`policy ` that further restricts the permissions associated to the temporary credentials.
+ Omit to use the :ref:`policy whose name matches ` the Distinguished Name (DN) of the AD/LDAP user.
- Omit to use the :ref:`policy whose name matches ` the Distinguished Name (DN) of the AD/LDAP user.
+ The API response consists of an XML document containing the access key, secret key, session token, and expiration date.
+ Applications can use the access key and secret key to access and perform operations on MinIO.
-The API response consists of an XML document containing the access key, secret key, session token, and expiration date.
-Applications can use the access key and secret key to access and perform operations on MinIO.
-
-See the :ref:`minio-sts-assumerolewithldapidentity` for reference documentation.
+ See the :ref:`minio-sts-assumerolewithldapidentity` for reference documentation.
diff --git a/source/includes/k8s/steps-configure-keycloak-identity-management.rst b/source/includes/k8s/steps-configure-keycloak-identity-management.rst
index bbe349297..41b82f042 100644
--- a/source/includes/k8s/steps-configure-keycloak-identity-management.rst
+++ b/source/includes/k8s/steps-configure-keycloak-identity-management.rst
@@ -2,92 +2,86 @@
.. |MINIO_S3_URL| replace:: minio.minio-tenant.svc.cluster-domain.example
.. |MINIO_CONSOLE_URL| replace:: minio-console.minio-tenant.svc.cluster-domain.example
-1) Configure or Create a Client for Accessing Keycloak
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Configure or Create a Client for Accessing Keycloak
-Authenticate to the Keycloak :guilabel:`Administrative Console` and navigate to :guilabel:`Clients`.
+ Authenticate to the Keycloak :guilabel:`Administrative Console` and navigate to :guilabel:`Clients`.
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-client
- :end-before: end-configure-keycloak-client
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-client
+ :end-before: end-configure-keycloak-client
-2) Create Client Scope for MinIO Client
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Create Client Scope for MinIO Client
-Client scopes allow Keycloak to map user attributes as part of the JSON Web Token (JWT) returned in authentication requests.
-This allows MinIO to reference those attributes when assigning policies to the user.
-This step creates the necessary client scope to support MinIO authorization after successful Keycloak authentication.
+ Client scopes allow Keycloak to map user attributes as part of the JSON Web Token (JWT) returned in authentication requests.
+ This allows MinIO to reference those attributes when assigning policies to the user.
+ This step creates the necessary client scope to support MinIO authorization after successful Keycloak authentication.
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-client-scope
- :end-before: end-configure-keycloak-client-scope
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-client-scope
+ :end-before: end-configure-keycloak-client-scope
-3) Apply the Necessary Attribute to Keycloak Users/Groups
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Apply the Necessary Attribute to Keycloak Users/Groups
-You must assign an attribute named ``policy`` to the Keycloak Users or Groups.
-Set the value to any :ref:`policy ` on the MinIO deployment.
+ You must assign an attribute named ``policy`` to the Keycloak Users or Groups.
+ Set the value to any :ref:`policy ` on the MinIO deployment.
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-user-group-attributes
- :end-before: end-configure-keycloak-user-group-attributes
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-user-group-attributes
+ :end-before: end-configure-keycloak-user-group-attributes
-4) Configure MinIO for Keycloak Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Configure MinIO for Keycloak Authentication
-MinIO supports multiple methods for configuring Keycloak authentication:
+ MinIO supports multiple methods for configuring Keycloak authentication:
-- Using the MinIO Tenant Console
-- Using a terminal/shell and the :mc:`mc idp openid` command
+ - Using the MinIO Tenant Console
+ - Using a terminal/shell and the :mc:`mc idp openid` command
-.. tab-set::
+ .. tab-set::
- .. tab-item:: MinIO Tenant Console
+ .. tab-item:: MinIO Tenant Console
- You can use the MinIO Tenant Console to configure Keycloak as the External Identity Provider for the MinIO Tenant.
+ You can use the MinIO Tenant Console to configure Keycloak as the External Identity Provider for the MinIO Tenant.
- Access the Console service using the NodePort, Ingress, or Load Balancer endpoint.
- You can use the following command to review the Console configuration:
+ Access the Console service using the NodePort, Ingress, or Load Balancer endpoint.
+ You can use the following command to review the Console configuration:
- .. code-block:: shell
- :class: copyable
+ .. code-block:: shell
+ :class: copyable
- kubectl describe svc/TENANT_NAME-console -n TENANT_NAMESPACE
+ kubectl describe svc/TENANT_NAME-console -n TENANT_NAMESPACE
- Replace ``TENANT_NAME`` and ``TENANT_NAMESPACE`` with the name of the MinIO Tenant and it's Namespace, respectively.
+ Replace ``TENANT_NAME`` and ``TENANT_NAMESPACE`` with the name of the MinIO Tenant and it's Namespace, respectively.
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-console
- :end-before: end-configure-keycloak-minio-console
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-minio-console
+ :end-before: end-configure-keycloak-minio-console
- Select :guilabel:`Save` to apply the configuration.
+ Select :guilabel:`Save` to apply the configuration.
- .. tab-item:: CLI
+ .. tab-item:: CLI
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-cli
- :end-before: end-configure-keycloak-minio-cli
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-minio-cli
+ :end-before: end-configure-keycloak-minio-cli
-Restart the MinIO deployment for the changes to apply.
+ Restart the MinIO deployment for the changes to apply.
-Check the MinIO logs and verify that startup succeeded with no errors related to the OIDC configuration.
+ Check the MinIO logs and verify that startup succeeded with no errors related to the OIDC configuration.
-If you attempt to log in with the Console, you should now see an (SSO) button using the configured :guilabel:`Display Name`.
+ If you attempt to log in with the Console, you should now see an (SSO) button using the configured :guilabel:`Display Name`.
-Specify a configured user and attempt to log in.
-MinIO should automatically redirect you to the Keycloak login entry.
-Upon successful authentication, Keycloak should redirect you back to the MinIO Console using either the originating Console URL *or* the :guilabel:`Redirect URI` if configured.
+ Specify a configured user and attempt to log in.
+ MinIO should automatically redirect you to the Keycloak login entry.
+ Upon successful authentication, Keycloak should redirect you back to the MinIO Console using either the originating Console URL *or* the :guilabel:`Redirect URI` if configured.
-5) Generate Application Credentials using the Security Token Service (STS)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Generate Application Credentials using the Security Token Service (STS)
+ .. include:: /includes/common/common-configure-keycloak-identity-management.rst
+ :start-after: start-configure-keycloak-sts
+ :end-before: end-configure-keycloak-sts
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-sts
- :end-before: end-configure-keycloak-sts
+#. Next Steps
-Next Steps
-~~~~~~~~~~
Applications should implement the :ref:`STS AssumeRoleWithWebIdentity ` flow using their :ref:`SDK ` of choice.
When STS credentials expire, applications should have logic in place to regenerate the JWT token, STS token, and MinIO credentials before retrying and continuing operations.
diff --git a/source/includes/k8s/steps-configure-minio-kes-hashicorp.rst b/source/includes/k8s/steps-configure-minio-kes-hashicorp.rst
index e1f94c989..f105fe96f 100644
--- a/source/includes/k8s/steps-configure-minio-kes-hashicorp.rst
+++ b/source/includes/k8s/steps-configure-minio-kes-hashicorp.rst
@@ -1,53 +1,41 @@
-Deploy MinIO Tenant with Server-Side Encryption
------------------------------------------------
+#. Review the Tenant CRD
-1) Access the Operator Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Review the :ref:`Tenant CRD ` ``TenantSpec.kes`` object, the ``TenantSpec.configuration`` object, and the :minio-docs:`KES Configuration reference`.
-Temporarily forward traffic between the local host machine and the MinIO Operator Console and retrieve the JWT token for your Operator deployment.
-For instructions, see :ref:`Configure access to the Operator Console service `.
+ You must prepare all necessary configurations associated to your external Key Management Service of choice before proceeding.
-Open your browser to the temporary URL and enter the JWT Token into the login page.
-You should see the :guilabel:`Tenants` page:
+#. Create or Modify your Tenant YAML to set the values of ``KesConfig`` as necessary:
-.. image:: /images/k8s/operator-dashboard.png
- :align: center
- :width: 70%
- :class: no-scaled-link
- :alt: MinIO Operator Console
+ You must modify your Tenant YAML or ``Kustomize`` templates to reflect the necessary KES configuration.
+ The following example is taken from the :minio-git:`MinIO Operator Kustomize examples `
-Click the :guilabel:`+ Create Tenant` to start creating a MinIO Tenant.
+ .. code-block:: yaml
-2) Complete the :guilabel:`Encryption` Section
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ kes:
+ image: "" # minio/kes:2024-06-17T15-47-05Z
+ env: [ ]
+ replicas: 2
+ kesSecret:
+ name: kes-configuration
+ imagePullPolicy: "IfNotPresent"
-Reference the :ref:`Deploy a MinIO Tenant ` procedure for complete documentation of other Tenant settings.
+ The ``kes-configuration`` secret must reference a Kubernetes Opaque Secret which contains a ``stringData`` object with the full KES configuration as ``server-config.yaml``.
+ The ``keystore`` field must contain the full configuration associated with your preferred Key Management System.
-To enable |SSE| with a :kes-docs:`supported KMS target <#supported-kms-targets>` during Tenant deployment, select the :guilabel:`Encryption` section and toggle the switch to :guilabel:`Enabled`.
-You can then select the Radio button for the chosen KMS provider to display configuration settings for that provider.
+ Reference :minio-git:`the Kustomize example ` for additional guidance.
-.. image:: /images/k8s/operator-create-tenant-encryption.png
- :align: center
- :width: 70%
- :class: no-scaled-link
- :alt: MinIO Operator Console - Create a Tenant - Encryption Section
+#. Create or Modify your Tenant YAML to set the values of ``TenantSpec.configuration`` as necessary.
-An asterisk ``*`` marks required fields.
+ TODO
-Refer to the Configuration References section of the tutorial for your chosen :kes-docs:`supported KMS target <#supported-kms-targets>` for more information on the configuration options for your KMS.
+#. Generate a New Encryption Key
-Once you have completed the configuration, you can finish any remaining sections of :ref:`Tenant Deployment `.
+ .. include:: /includes/k8s/common-minio-kes.rst
+ :start-after: start-kes-generate-key-desc
+ :end-before: end-kes-generate-key-desc
-3) Generate a New Encryption Key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Enable SSE-KMS for a Bucket
-.. include:: /includes/k8s/common-minio-kes.rst
- :start-after: start-kes-generate-key-desc
- :end-before: end-kes-generate-key-desc
-
-4) Enable SSE-KMS for a Bucket
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/k8s/common-minio-kes.rst
- :start-after: start-kes-enable-sse-kms-desc
- :end-before: end-kes-enable-sse-kms-desc
+ .. include:: /includes/k8s/common-minio-kes.rst
+ :start-after: start-kes-enable-sse-kms-desc
+ :end-before: end-kes-enable-sse-kms-desc
diff --git a/source/includes/k8s/steps-configure-openid-external-identity-management.rst b/source/includes/k8s/steps-configure-openid-external-identity-management.rst
index 6363a05c9..23f33da4b 100644
--- a/source/includes/k8s/steps-configure-openid-external-identity-management.rst
+++ b/source/includes/k8s/steps-configure-openid-external-identity-management.rst
@@ -1,148 +1,140 @@
-Deploy MinIO Tenant with OpenID Connect Identity Management
------------------------------------------------------------
+1. Access the Operator Console
-1) Access the Operator Console
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Temporarily forward traffic between the local host machine and the MinIO Operator Console and retrieve the JWT token for your Operator deployment.
+ For instructions, see :ref:`Configure access to the Operator Console service `.
-Temporarily forward traffic between the local host machine and the MinIO Operator Console and retrieve the JWT token for your Operator deployment.
-For instructions, see :ref:`Configure access to the Operator Console service `.
+ Open your browser to the temporary URL and enter the JWT Token into the login page.
+ You should see the :guilabel:`Tenants` page:
-Open your browser to the temporary URL and enter the JWT Token into the login page.
-You should see the :guilabel:`Tenants` page:
+ .. image:: /images/k8s/operator-dashboard.png
+ :align: center
+ :width: 70%
+ :class: no-scaled-link
+ :alt: MinIO Operator Console
-.. image:: /images/k8s/operator-dashboard.png
- :align: center
- :width: 70%
- :class: no-scaled-link
- :alt: MinIO Operator Console
+ To deploy a new MinIO Tenant with OIDC external identity management, select the :guilabel:`+ Create Tenant` button.
-Click the :guilabel:`+ Create Tenant` to start creating a MinIO Tenant.
+ TO configure an existing MinIO Tenant with OIDC external identity management select that Tenant from the displayed list.
+ The following steps reference the necessary sections and configuration settings for existing Tenants.
-If you are modifying an existing Tenant, select that Tenant from the list.
-The following steps reference the necessary sections and configuration settings for existing Tenants.
+#. Complete the :guilabel:`Identity Provider` Section
-2) Complete the :guilabel:`Identity Provider` Section
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ To enable external identity management with an OIDC select the :guilabel:`Identity Provider` section.
+ You can then change the radio button to :guilabel:`OIDC` to display the configuration settings.
-To enable external identity management with an OIDC select the :guilabel:`Identity Provider` section.
-You can then change the radio button to :guilabel:`OIDC` to display the configuration settings.
+ .. image:: /images/k8s/operator-create-tenant-identity-provider-openid.png
+ :align: center
+ :width: 70%
+ :class: no-scaled-link
+ :alt: MinIO Operator Console - Create a Tenant - External Identity Provider Section - OpenID
-.. image:: /images/k8s/operator-create-tenant-identity-provider-openid.png
- :align: center
- :width: 70%
- :class: no-scaled-link
- :alt: MinIO Operator Console - Create a Tenant - External Identity Provider Section - OpenID
+ An asterisk ``*`` marks required fields.
+ The following table provides general guidance for those fields:
-An asterisk ``*`` marks required fields.
-The following table provides general guidance for those fields:
+ .. list-table::
+ :header-rows: 1
+ :widths: 40 60
+ :width: 100%
-.. list-table::
- :header-rows: 1
- :widths: 40 60
- :width: 100%
+ * - Field
+ - Description
- * - Field
- - Description
+ * - Configuration URL
+ - The hostname of the OpenID ``.well-known/openid-configuration`` file.
- * - Configuration URL
- - The hostname of the OpenID ``.well-known/openid-configuration`` file.
+ * - | Client ID
+ | Secret ID
+ - The Client and Secret ID MinIO uses when authenticating OIDC user credentials against OIDC service.
- * - | Client ID
- | Secret ID
- - The Client and Secret ID MinIO uses when authenticating OIDC user credentials against OIDC service.
+ * - Claim Name
+ - The OIDC Claim MinIO uses for identifying the :ref:`policies ` to attach to the authenticated user.
- * - Claim Name
- - The OIDC Claim MinIO uses for identifying the :ref:`policies ` to attach to the authenticated user.
+ Once you complete the section, you can finish any other required sections of :ref:`Tenant Deployment `.
-Once you complete the section, you can finish any other required sections of :ref:`Tenant Deployment `.
+#. Assign Policies to OIDC Users
-3) Assign Policies to OIDC Users
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MinIO by default assigns no :ref:`policies ` to OIDC users.
+ MinIO uses the specified user Claim to identify one or more policies to attach to the authenticated user.
+ If the Claim is empty or specifies policies which do not exist on the deployment, the authenticated user has no permissions on the Tenant.
-MinIO by default assigns no :ref:`policies ` to OIDC users.
-MinIO uses the specified user Claim to identify one or more policies to attach to the authenticated user.
-If the Claim is empty or specifies policies which do not exist on the deployment, the authenticated user has no permissions on the Tenant.
+ The following example assumes an existing :ref:`alias ` configured for the MinIO Tenant.
-The following example assumes an existing :ref:`alias ` configured for the MinIO Tenant.
+ Consider the following example policy that grants general S3 API access on only the ``data`` bucket:
-Consider the following example policy that grants general S3 API access on only the ``data`` bucket:
+ .. code-block:: json
+ :class: copyable
-.. code-block:: json
- :class: copyable
+ {
+ "Version": "2012-10-17",
+ "Statement": [
+ {
+ "Effect": "Allow",
+ "Action": [
+ "s3:*"
+ ],
+ "Resource": [
+ "arn:aws:s3:::data",
+ "arn:aws:s3:::data/*"
+ ]
+ }
+ ]
+ }
- {
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Action": [
- "s3:*"
- ],
- "Resource": [
- "arn:aws:s3:::data",
- "arn:aws:s3:::data/*"
- ]
- }
- ]
- }
+ Use the :mc:`mc admin policy create` command to create a policy for use by an OIDC user:
-Use the :mc:`mc admin policy create` command to create a policy for use by an OIDC user:
+ .. code-block:: shell
+ :class: copyable
-.. code-block:: shell
- :class: copyable
+ mc admin policy create minio-tenant datareadonly /path/to/datareadonly.json
- mc admin policy create minio-tenant datareadonly /path/to/datareadonly.json
+ MinIO attaches the ``datareadonly`` policy to any authenticated OIDC user with ``datareadonly`` included in the configured claim.
-MinIO attaches the ``datareadonly`` policy to any authenticated OIDC user with ``datareadonly`` included in the configured claim.
+ See :ref:`minio-external-identity-management-openid-access-control` for more information on access control with OIDC users and groups.
-See :ref:`minio-external-identity-management-openid-access-control` for more information on access control with OIDC users and groups.
+#. Use the MinIO Tenant Console to Log In with OIDC Credentials
-4) Use the MinIO Tenant Console to Log In with OIDC Credentials
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ The MinIO Console supports the full workflow of authenticating to the OIDC provider, generating temporary credentials using the MinIO :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) endpoint, and logging the user into the MinIO deployment.
-The MinIO Console supports the full workflow of authenticating to the OIDC provider, generating temporary credentials using the MinIO :ref:`minio-sts-assumerolewithldapidentity` Security Token Service (STS) endpoint, and logging the user into the MinIO deployment.
+ See :ref:`Deploy MinIO Tenant: Connect to the Tenant ` for additonal information about accessing the Tenant Console.
-See :ref:`Deploy MinIO Tenant: Connect to the Tenant ` for additonal information about accessing the Tenant Console.
+ If the OIDC configuration succeeded, the Console displays a button to login with OIDC credentials.
-If the OIDC configuration succeeded, the Console displays a button to login with OIDC credentials.
+ Enter the user's OIDC credentials and log in to access the Console.
-Enter the user's OIDC credentials and log in to access the Console.
+ Once logged in, you can perform any action for which the authenticated user is :ref:`authorized `.
-Once logged in, you can perform any action for which the authenticated user is :ref:`authorized `.
+ You can also create :ref:`access keys ` for supporting applications which must perform operations on MinIO.
+ Access Keys are long-lived credentials which inherit their privileges from the parent user.
+ The parent user can further restrict those privileges while creating the access keys.
-You can also create :ref:`access keys ` for supporting applications which must perform operations on MinIO.
-Access Keys are long-lived credentials which inherit their privileges from the parent user.
-The parent user can further restrict those privileges while creating the access keys.
+#. Generate S3-Compatible Temporary Credentials using OIDC Credentials
-5) Generate S3-Compatible Temporary Credentials using OIDC Credentials
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Applications can generate temporary access credentials as-needed using the :ref:`minio-sts-assumerolewithwebidentity` Security Token Service (STS) API endpoint and the JSON Web Token (JWT) returned by the :abbr:`OIDC (OpenID Connect)` provider.
-Applications can generate temporary access credentials as-needed using the :ref:`minio-sts-assumerolewithwebidentity` Security Token Service (STS) API endpoint and the JSON Web Token (JWT) returned by the :abbr:`OIDC (OpenID Connect)` provider.
+ The application must provide a workflow for logging into the :abbr:`OIDC (OpenID Connect)` provider and retrieving the JSON Web Token (JWT) associated to the authentication session.
+ Defer to the provider documentation for obtaining and parsing the JWT token after successful authentication.
+ MinIO provides an example Go application :minio-git:`web-identity.go ` with an example of managing this workflow.
-The application must provide a workflow for logging into the :abbr:`OIDC (OpenID Connect)` provider and retrieving the JSON Web Token (JWT) associated to the authentication session.
-Defer to the provider documentation for obtaining and parsing the JWT token after successful authentication.
-MinIO provides an example Go application :minio-git:`web-identity.go ` with an example of managing this workflow.
+ Once the application retrieves the JWT token, use the ``AssumeRoleWithWebIdentity`` endpoint to generate the temporary credentials:
-Once the application retrieves the JWT token, use the ``AssumeRoleWithWebIdentity`` endpoint to generate the temporary credentials:
+ .. code-block:: shell
+ :class: copyable
-.. code-block:: shell
- :class: copyable
+ POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
+ &WebIdentityToken=TOKEN
+ &Version=2011-06-15
+ &DurationSeconds=86400
+ &Policy=Policy
- POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
- &WebIdentityToken=TOKEN
- &Version=2011-06-15
- &DurationSeconds=86400
- &Policy=Policy
+ - Replace ``minio.example.net`` with the hostname or URL of the MinIO Tenant service.
+ - Replace the ``TOKEN`` with the JWT token returned in the previous step.
+ - Replace the ``DurationSeconds`` with the duration in seconds until the temporary credentials expire. The example above specifies a period of ``86400`` seconds, or 24 hours.
+ - Replace the ``Policy`` with an inline URL-encoded JSON :ref:`policy ` that further restricts the permissions associated to the temporary credentials.
-- Replace ``minio.example.net`` with the hostname or URL of the MinIO Tenant service.
-- Replace the ``TOKEN`` with the JWT token returned in the previous step.
-- Replace the ``DurationSeconds`` with the duration in seconds until the temporary credentials expire. The example above specifies a period of ``86400`` seconds, or 24 hours.
-- Replace the ``Policy`` with an inline URL-encoded JSON :ref:`policy ` that further restricts the permissions associated to the temporary credentials.
+ Omit to use the policy associated to the OpenID user :ref:`policy claim `.
- Omit to use the policy associated to the OpenID user :ref:`policy claim `.
+ The API response consists of an XML document containing the access key, secret key, session token, and expiration date.
+ Applications can use the access key and secret key to access and perform operations on MinIO.
-The API response consists of an XML document containing the access key, secret key, session token, and expiration date.
-Applications can use the access key and secret key to access and perform operations on MinIO.
-
-See the :ref:`minio-sts-assumerolewithwebidentity` for reference documentation.
+ See the :ref:`minio-sts-assumerolewithwebidentity` for reference documentation.
diff --git a/source/includes/linux/file-transfer-protocol-not-k8s.rst b/source/includes/linux/file-transfer-protocol-not-k8s.rst
index 99b3bd5c1..ae165aff5 100644
--- a/source/includes/linux/file-transfer-protocol-not-k8s.rst
+++ b/source/includes/linux/file-transfer-protocol-not-k8s.rst
@@ -1,123 +1,49 @@
-.. versionadded:: MinIO RELEASE.2023-04-20T17-56-55Z
-
-Overview
---------
-
-Starting with :minio-release:`MinIO Server RELEASE.2023-04-20T17-56-55Z `, you can use the File Transfer Protocol (FTP) or SSH File Transfer Protocol (SFTP) to interact with the objects on a MinIO deployment.
-
-You must specifically enable FTP or SFTP when starting the server.
-Enabling either server type does not affect other MinIO features.
-
-This page uses the abbreviation FTP throughout, but you can use any of the supported FTP protocols described below.
-
-Supported Protocols
-~~~~~~~~~~~~~~~~~~~
-
-When enabled, MinIO supports FTP access over the following protocols:
-
-- SSH File Transfer Protocol (SFTP)
-
- SFTP is defined by the Internet Engineering Task Force (IETF) as an extension of SSH 2.0.
- SFTP allows file transfer over SSH for use with :ref:`Transport Layer Security (TLS) ` and virtual private network (VPN) applications.
-
- Your FTP client must support SFTP.
-
-- File Transfer Protocol over SSL/TLS (FTPS)
-
- FTPS allows for encrypted FTP communication with TLS certificates over the standard FTP communication channel.
- FTPS should not be confused with SFTP, as FTPS does not communicate over a Secure Shell (SSH).
-
- Your FTP client must support FTPS.
-
-- File Transfer Protocol (FTP)
-
- Unencrypted file transfer.
-
- MinIO does **not** recommend using unencrypted FTP for file transfer.
-
-.. admonition:: MinIO Operator Tenants only support SFTP
- :class: note
-
- MinIO Tenants deployed with Operator only support SFTP.
- For details, see `File Transfer Protocol for Tenants `__.
-
-
-Supported Commands
-~~~~~~~~~~~~~~~~~~
-
-When enabled, MinIO supports the following FTP operations:
-
-- ``get``
-- ``put``
-- ``ls``
-- ``mkdir``
-- ``rmdir``
-- ``delete``
-
-MinIO does not support either ``append`` or ``rename`` operations.
-
-Considerations
---------------
-
-Versioning
-~~~~~~~~~~
-
-SFTP clients can only operate on the :ref:`latest version ` of an object.
-Specifically:
-
-- For read operations, MinIO only returns the latest version of the requested object(s) to the FTP client.
-- For write operations, MinIO applies normal versioning behavior and creates a new object version at the specified namespace.
- ``delete`` and ``rmdir`` operations create ``DeleteMarker`` objects.
-
-
-Authentication and Access
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FTP access requires the same authentication as any other S3 client.
-MinIO supports the following authentication providers:
+1. Start MinIO with an FTP and/or SFTP port enabled.
-- :ref:`MinIO IDP ` users and their service accounts
-- :ref:`Active Directory/LDAP ` users and their service accounts
-- :ref:`OpenID/OIDC ` service accounts
+ .. tab-set::
-:ref:`STS ` credentials **cannot** access buckets or objects over FTP.
+ .. tab-item:: FTPS
+ :sync: ftps
-Authenticated users can access buckets and objects based on the :ref:`policies ` assigned to the user or parent user account.
+ The following example starts MinIO with FTPS enabled.
-The FTP protocol does not require any of the ``admin:*`` :ref:`permissions `.
-The FTP protocols do not support any of the MinIO admin actions.
+ .. code-block:: shell
+ :class: copyable
-Prerequisites
--------------
+ minio server http://server{1...4}/disk{1...4} \
+ --ftp="address=:8021" \
+ --ftp="passive-port-range=30000-40000" \
+ --ftp="tls-private-key=path/to/private.key" \
+ --ftp="tls-public-cert=path/to/public.crt" \
+ ...
-- MinIO RELEASE.2023-04-20T17-56-55Z or later.
-- Enable an FTP or SFTP port for the server.
-- A port to use for the FTP commands and a range of ports to allow the FTP server to request to use for the data transfer.
+ .. note::
-Procedure
----------
+ Omit ``tls-private-key`` and ``tls-public-cert`` to use the MinIO default TLS keys for FTPS.
+ For more information, see the :ref:`TLS on MinIO documentation `.
-1. Start MinIO with an FTP and/or SFTP port enabled.
+ .. tab-item:: SFTP/FTP
+ :sync: sftp
- .. code-block:: shell
- :class: copyable
+ .. code-block:: shell
+ :class: copyable
- minio server http://server{1...4}/disk{1...4} \
- --ftp="address=:8021" \
- --ftp="passive-port-range=30000-40000" \
- --sftp="address=:8022" \
- --sftp="ssh-private-key=/home/miniouser/.ssh/id_rsa" \
- ...
+ minio server http://server{1...4}/disk{1...4} \
+ --ftp="address=:8021" \
+ --ftp="passive-port-range=30000-40000" \
+ --sftp="address=:8022" \
+ --sftp="ssh-private-key=/home/miniouser/.ssh/id_rsa" \
+ ...
- See the :mc-cmd:`minio server --ftp` and :mc-cmd:`minio server --sftp` for details on using these flags to start the MinIO service.
- To connect to the an FTP port with TLS (FTPS), pass the ``tls-private-key`` and ``tls-public-cert`` keys and values, as well, unless using the MinIO default TLS keys.
+ See the :mc-cmd:`minio server --ftp` and :mc-cmd:`minio server --sftp` for details on using these flags to start the MinIO service.
+ To connect to the an FTP port with TLS (FTPS), pass the ``tls-private-key`` and ``tls-public-cert`` keys and values, as well, unless using the MinIO default TLS keys.
- The output of the command should return a response that resembles the following:
+ The output of the command should return a response that resembles the following:
- .. code-block:: shell
+ .. code-block:: shell
- MinIO FTP Server listening on :8021
- MinIO SFTP Server listening on :8022
+ MinIO FTP Server listening on :8021
+ MinIO SFTP Server listening on :8022
2. Use your preferred FTP client to connect to the MinIO deployment.
You must connect as a user whose :ref:`policies ` allow access to the desired buckets and objects.
@@ -127,167 +53,97 @@ Procedure
To connect over TLS or through SSH, you must use a client that supports the desired protocol.
-Examples
---------
-
-The following examples use the `FTP CLI client `__ on a Linux system.
-
-
-Connect to MinIO Using FTP
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following example connects to a server using ``minio`` credentials to list contents in a bucket named ``runner``
-
-.. code-block:: shell
-
- > ftp localhost -P 8021
- Connected to localhost.
- 220 Welcome to MinIO FTP Server
- Name (localhost:user): minio
- 331 User name ok, password required
- Password:
- 230 Password ok, continue
- Remote system type is UNIX.
- Using binary mode to transfer files.
- ftp> ls runner/
- 229 Entering Extended Passive Mode (|||39155|)
- 150 Opening ASCII mode data connection for file list
- drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 chunkdocs/
- drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 testdir/
- ...
-
-Start MinIO with FTP over TLS (FTPS) Enabled
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following example starts MinIO with FTPS enabled.
-
-.. code-block:: shell
- :class: copyable
-
- minio server http://server{1...4}/disk{1...4} \
- --ftp="address=:8021" \
- --ftp="passive-port-range=30000-40000" \
- --ftp="tls-private-key=path/to/private.key" \
- --ftp="tls-public-cert=path/to/public.crt" \
- ...
-
-.. note::
-
- Omit ``tls-private-key`` and ``tls-public-cert`` to use the MinIO default TLS keys for FTPS.
- For more information, see the :ref:`TLS on MinIO documentation `.
-
-Download an Object over FTP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This example lists items in a bucket, then downloads the contents of the bucket.
-
-.. code-block:: console
-
- > ftp localhost -P 8021
- Connected to localhost.
- 220 Welcome to MinIO FTP Server
- Name (localhost:user): minio
- 331 User name ok, password required
- Password:
- 230 Password ok, continue
- Remote system type is UNIX.
- Using binary mode to transfer files.ftp> ls runner/chunkdocs/metadata
- 229 Entering Extended Passive Mode (|||44269|)
- 150 Opening ASCII mode data connection for file list
- -rwxrwxrwx 1 nobody nobody 45 Apr 1 06:13 chunkdocs/metadata
- 226 Closing data connection, sent 75 bytes
- ftp> get
- (remote-file) runner/chunkdocs/metadata
- (local-file) test
- local: test remote: runner/chunkdocs/metadata
- 229 Entering Extended Passive Mode (|||37785|)
- 150 Data transfer starting 45 bytes
- 45 3.58 KiB/s
- 226 Closing data connection, sent 45 bytes
- 45 bytes received in 00:00 (3.55 KiB/s)
- ...
-
-Connect to MinIO Using SFTP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The following example connects to an SFTP server, lists the contents of a bucket named ``runner``, and downloads an object.
-
-.. code-block:: console
-
- > sftp -P 8022 minio@localhost
- minio@localhost's password:
- Connected to localhost.
- sftp> ls runner/
- chunkdocs testdir
- sftp> get runner/chunkdocs/metadata metadata
- Fetching /runner/chunkdocs/metadata to metadata
- metadata 100% 226 16.6KB/s 00:00
-
-Connect to MinIO Using SFTP with a Certificate Key File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: RELEASE.2024-05-07T06-41-25Z
+3. Connect to MinIO
+ .. tab-set::
-MinIO supports mutual TLS (mTLS) certificate-based authentication on SFTP, where both the server and the client verify the authenticity of each other.
+ .. tab-item:: SFTP/FTP
+ :sync: sftp
-This type of authentication requires the following:
-1. Public key file for the trusted certificate authority
-2. Public key file for the MinIO Server minted and signed by the trusted certificate authority
-3. Public key file for the user minted and signed by the trusted certificate authority for the client connecting by SFTP and located in the user's ``.ssh`` folder (or equivalent for the operating system)
-
-The keys must include a `principals list `__ of the user(s) that can authenticate with the key:
+ The following example connects to an SFTP server, and lists the contents of a bucket named ``runner``.
-.. code-block:: console
- :class: copyable
+ .. code-block:: console
- ssh-keygen -s ~/.ssh/ca_user_key -I miniouser -n miniouser -V +1h -z 1 miniouser1.pub
+ > sftp -P 8022 minio@localhost
+ minio@localhost's password:
+ Connected to localhost.
+ sftp> ls runner/
+ chunkdocs testdir
-- ``-s`` specifies the path to the certificate authority public key to use for generating this key.
- The specified public key must have a ``principals`` list that includes this user.
-- ``-I`` specifies the key identity for the public key.
-- ``-n`` creates the ``user principals`` list for which this key is valid.
- You must include the user for which this key is valid, and the user must match the username in MinIO.
-- ``-V`` limits the duration for which the generated key is valid.
- In this example, the key is valid for one hour.
- Adjust the duration for your requirements.
-- ``-z`` adds a serial number to the key to distinguish this generated public key from other keys signed by the same certificate authority public key.
-MinIO requires specifying the Certificate Authority used to sign the certificates for SFTP access.
-Start or restart the MinIO Server and specify the path to the trusted certificate authority's public key using an ``--sftp="trusted-user-ca-key=PATH"`` flag:
+ .. tab-item:: FTPS
+ :sync: ftps
- .. code-block:: console
- :class: copyable
+ The following uses the Linux uses the `FTP CLI client `__ to connect to the MinIO server using ``minio`` credentials to list contents in a bucket named ``runner``
- minio server {path-to-server} --sftp="trusted-user-ca-key=/path/to/.ssh/ca_user_key.pub" {...other flags}
+ .. code-block:: shell
-When connecting to the MinIO Server with SFTP, the client verifies the MinIO Server's certificate.
-The client then passes its own certificate to the MinIO Server.
-The MinIO Server verifies the key created above by comparing its value to the the known public key from the certificate authority provided at server startup.
+ > ftp localhost -P 8021
+ Connected to localhost.
+ 220 Welcome to MinIO FTP Server
+ Name (localhost:user): minio
+ 331 User name ok, password required
+ Password:
+ 230 Password ok, continue
+ Remote system type is UNIX.
+ Using binary mode to transfer files.
+ ftp> ls runner/
+ 229 Entering Extended Passive Mode (|||39155|)
+ 150 Opening ASCII mode data connection for file list
+ drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 chunkdocs/
+ drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 testdir/
+ ...
-Once the MinIO Server verifies the client's certificate, the user can connect to the MinIO server over SFTP:
-.. code-block:: bash
- :class: copyable:
-
- sftp -P
+4. Download an Object
-Require service account or LDAP for authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ .. tab-set::
-To force authentication to SFTP using LDAP or service account credentials, append a suffix to the username.
-Valid suffixes are either ``=ldap`` or ``=svc``.
+ .. tab-item:: SFTP/FTP
+ :sync: sftp
-.. code-block:: console
+ This example lists items in a bucket, then downloads the contents of the bucket.
- > sftp -P 8022 my-ldap-user=ldap@[minio@localhost]:/bucket
+ .. code-block:: console
+ > sftp -P 8022 minio@localhost
+ minio@localhost's password:
+ Connected to localhost.
+ sftp> ls runner/
+ chunkdocs testdir
+ sftp> get runner/chunkdocs/metadata metadata
+ Fetching /runner/chunkdocs/metadata to metadata
+ metadata 100% 226 16.6KB/s 00:00
+ sftp>
-.. code-block:: console
+ .. tab-item:: FTPS
+ :sync: ftps
- > sftp -P 8022 my-ldap-user=svc@[minio@localhost]:/bucket
+ This example lists items in a bucket, then downloads the contents of the bucket.
+ .. code-block:: console
-- Replace ``my-ldap-user`` with the username to use.
-- Replace ``[minio@localhost]`` with the address of the MinIO server.
+ > ftp localhost -P 8021
+ Connected to localhost.
+ 220 Welcome to MinIO FTP Server
+ Name (localhost:user): minio
+ 331 User name ok, password required
+ Password:
+ 230 Password ok, continue
+ Remote system type is UNIX.
+ Using binary mode to transfer files.ftp> ls runner/chunkdocs/metadata
+ 229 Entering Extended Passive Mode (|||44269|)
+ 150 Opening ASCII mode data connection for file list
+ -rwxrwxrwx 1 nobody nobody 45 Apr 1 06:13 chunkdocs/metadata
+ 226 Closing data connection, sent 75 bytes
+ ftp> get
+ (remote-file) runner/chunkdocs/metadata
+ (local-file) test
+ local: test remote: runner/chunkdocs/metadata
+ 229 Entering Extended Passive Mode (|||37785|)
+ 150 Data transfer starting 45 bytes
+ 45 3.58 KiB/s
+ 226 Closing data connection, sent 45 bytes
+ 45 bytes received in 00:00 (3.55 KiB/s)
+ ...
diff --git a/source/includes/linux/steps-configure-keycloak-identity-management.rst b/source/includes/linux/steps-configure-keycloak-identity-management.rst
deleted file mode 100644
index 3fbd07444..000000000
--- a/source/includes/linux/steps-configure-keycloak-identity-management.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-.. |KEYCLOAK_URL| replace:: keycloak-url.example.net:8080
-.. |MINIO_S3_URL| replace:: minio-url.example.net:9000
-.. |MINIO_CONSOLE_URL| replace:: minio-url.example.net:9001
-
-1) Configure or Create a Client for Accessing Keycloak
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Authenticate to the Keycloak :guilabel:`Administrative Console` and navigate to :guilabel:`Clients`.
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-client
- :end-before: end-configure-keycloak-client
-
-2) Create Client Scope for MinIO Client
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Client scopes allow Keycloak to map user attributes as part of the JSON Web Token (JWT) returned in authentication requests.
-This allows MinIO to reference those attributes when assigning policies to the user.
-This step creates the necessary client scope to support MinIO authorization after successful Keycloak authentication.
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-client-scope
- :end-before: end-configure-keycloak-client-scope
-
-3) Apply the Necessary Attribute to Keycloak Users/Groups
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You must assign an attribute named ``policy`` to the Keycloak Users or Groups.
-Set the value to any :ref:`policy ` on the MinIO deployment.
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-user-group-attributes
- :end-before: end-configure-keycloak-user-group-attributes
-
-4) Configure MinIO for Keycloak Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-MinIO supports multiple methods for configuring Keycloak authentication:
-
-- Using the MinIO Console
-- Using a terminal/shell and the :mc:`mc idp openid` command
-- Using environment variables set prior to starting MinIO
-
-.. tab-set::
-
- .. tab-item:: MinIO Console
-
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-console
- :end-before: end-configure-keycloak-minio-console
-
- .. tab-item:: CLI
-
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-cli
- :end-before: end-configure-keycloak-minio-cli
-
- .. tab-item:: Environment Variables
-
- .. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-minio-envvar
- :end-before: end-configure-keycloak-minio-envvar
-
-Restart the MinIO deployment for the changes to apply.
-
-Check the MinIO logs and verify that startup succeeded with no errors related to the OIDC configuration.
-
-If you attempt to log in with the Console, you should now see an (SSO) button using the configured :guilabel:`Display Name`.
-
-Specify a configured user and attempt to log in.
-MinIO should automatically redirect you to the Keycloak login entry.
-Upon successful authentication, Keycloak should redirect you back to the MinIO Console using either the originating Console URL *or* the :guilabel:`Redirect URI` if configured.
-
-5) Generate Application Credentials using the Security Token Service (STS)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-configure-keycloak-identity-management.rst
- :start-after: start-configure-keycloak-sts
- :end-before: end-configure-keycloak-sts
-
-Next Steps
-~~~~~~~~~~
-
-Applications should implement the :ref:`STS AssumeRoleWithWebIdentity ` flow using their :ref:`SDK ` of choice.
-When STS credentials expire, applications should have logic in place to regenerate the JWT token, STS token, and MinIO credentials before retrying and continuing operations.
-
-Alternatively, users can generate :ref:`access keys ` through the MinIO Console for the purpose of creating long-lived API-key like access using their Keycloak credentials.
-
-
-
-
diff --git a/source/includes/linux/steps-configure-minio-kes-hashicorp.rst b/source/includes/linux/steps-configure-minio-kes-hashicorp.rst
index 32fe355f8..3302f1c9b 100644
--- a/source/includes/linux/steps-configure-minio-kes-hashicorp.rst
+++ b/source/includes/linux/steps-configure-minio-kes-hashicorp.rst
@@ -1,79 +1,53 @@
-Procedure
----------
+#. Generate a KES API Key for use by MinIO
-This procedure provides instructions for configuring and enabling Server-Side Encryption using your selected `supported KMS solution `__ in production environments.
-Specifically, this procedure assumes the following:
+ Use the :kes-docs:`kes identity new ` command to generate a new API key for use by the MinIO Server:
-- An existing production-grade KMS target
-- One or more KES servers connected to the KMS target
-- One or more hosts for a new or existing MinIO deployment
+ .. code-block:: shell
+ :class: copyable
-Prerequisite
-~~~~~~~~~~~~
+ kes identity new
-Depending on your chosen :kes-docs:`supported KMS target <#supported-kms-targets>` configuration, you may need to pass the ``kes-server.cert`` as a trusted Certificate Authority (CA).
-Defer to the client documentation for instructions on trusting a third-party CA.
+ The output includes both the API Key for use with MinIO and the Identity hash for use with the :kes-docs:`KES Policy configuration `.
-1) Generate a KES API Key for use by MinIO
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#. Configure the MinIO Environment File
-Starting with KES version :minio-git:`2023-02-15T14-54-37Z `, you can generate an API key to use for authenticating to the KES server.
+ Create or modify the MinIO Server environment file for all hosts in the target deployment to include the following environment variables:
-Use the :kes-docs:`kes identity new ` command to generate a new API key for use by the MinIO Server:
+ .. include:: /includes/common/common-minio-kes.rst
+ :start-after: start-kes-configuration-minio-desc
+ :end-before: end-kes-configuration-minio-desc
-.. code-block:: shell
- :class: copyable
+ MinIO defaults to expecting this file at ``/etc/default/minio``.
+ If you modified your deployment to use a different location for the environment file, modify the file at that location.
- kes identity new
+#. Start MinIO
-The output includes both the API Key for use with MinIO and the Identity hash for use with the :kes-docs:`KES Policy configuration `.
+ .. admonition:: KES Operations Requires Unsealed Vault
+ :class: important
-2) Create the MinIO Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Depending on your selected KMS solution, you may need to unseal the key instance to allow normal cryptographic operations, including key creation or retrieval.
+ KES requires an unsealed key target to perform its operations.
+
+ Refer to the :kes-docs:`documentation for your chosen KMS solution <#supported-kms-targets>` for information regarding whether sealing and unsealing the instance is required for operations.
-Configure the MinIO Environment File
+ You must start KES *before* starting MinIO.
+ The MinIO deployment requires access to KES as part of its startup.
-Create or modify the MinIO Server environment file for all hosts in the target deployment to include the following environment variables:
+ You can use the :mc:`mc admin service restart` command to restart MinIO:
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-configuration-minio-desc
- :end-before: end-kes-configuration-minio-desc
+ .. code-block:: shell
+ :class: copyable
-MinIO defaults to expecting this file at ``/etc/default/minio``.
-If you modified your deployment to use a different location for the environment file, modify the file at that location.
+ mc admin service restart ALIAS
-3) Start MinIO
-~~~~~~~~~~~~~~
+#. Generate a New Encryption Key
-.. admonition:: KES Operations Requires Unsealed Vault
- :class: important
+ .. include:: /includes/common/common-minio-kes.rst
+ :start-after: start-kes-generate-key-desc
+ :end-before: end-kes-generate-key-desc
- Depending on your selected KMS solution, you may need to unseal the key instance to allow normal cryptographic operations, including key creation or retrieval.
- KES requires an unsealed key target to perform its operations.
-
- Refer to the :kes-docs:`documentation for your chosen KMS solution <#supported-kms-targets>` for information regarding whether sealing and unsealing the instance is required for operations.
+#. Enable SSE-KMS for a Bucket
- You must start KES *before* starting MinIO.
- The MinIO deployment requires access to KES as part of its startup.
-
-This step uses ``systemd`` for starting and managing the MinIO server processes:
-
-Start the MinIO Server
-
-.. include:: /includes/linux/common-minio-kes.rst
- :start-after: start-kes-minio-start-service-desc
- :end-before: end-kes-minio-start-service-desc
-
-4) Generate a New Encryption Key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-generate-key-desc
- :end-before: end-kes-generate-key-desc
-
-5) Enable SSE-KMS for a Bucket
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-enable-sse-kms-desc
- :end-before: end-kes-enable-sse-kms-desc
+ .. include:: /includes/common/common-minio-kes.rst
+ :start-after: start-kes-enable-sse-kms-desc
+ :end-before: end-kes-enable-sse-kms-desc
diff --git a/source/includes/macos/common-installation.rst b/source/includes/macos/common-installation.rst
deleted file mode 100644
index 33826c5ca..000000000
--- a/source/includes/macos/common-installation.rst
+++ /dev/null
@@ -1,77 +0,0 @@
-.. start-install-minio-binary-desc
-
-.. tab-set::
-
- .. tab-item:: Homebrew
-
- Open a Terminal and run the following command to install the latest stable MinIO package using `Homebrew `_.
-
- .. code-block:: shell
- :class: copyable
-
- brew install minio/stable/minio
-
- .. important::
-
- If you previously installed the MinIO server using ``brew install minio``, then we recommend that you reinstall from ``minio/stable/minio`` instead.
-
- .. code-block:: shell
- :class: copyable
-
- brew uninstall minio
- brew install minio/stable/minio
-
- .. tab-item:: Binary - arm64
-
- Open a Terminal, then use the following commands to download the latest stable MinIO binary, set it to executable, and install it to the system ``$PATH``:
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/server/minio/release/darwin-arm64/minio
- chmod +x ./minio
- sudo mv ./minio /usr/local/bin/
-
- .. tab-item:: Binary - amd64
-
- Open a Terminal, then use the following commands to download the latest stable MinIO binary, set it to executable, and install it to the system ``$PATH``:
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/server/minio/release/darwin-amd64/minio
- chmod +x ./minio
- sudo mv ./minio /usr/local/bin/
-
-.. end-install-minio-binary-desc
-
-.. start-run-minio-binary-desc
-
-From the Terminal, use the :mc:`minio server` to start a local MinIO instance in the ``~/data`` folder.
-If desired, you can replace ``~/data`` with another location to which the user has read, write, and delete access for the MinIO instance.
-
-.. code-block:: shell
- :class: copyable
-
- export MINIO_CONFIG_ENV_FILE=/etc/default/minio
- minio server --console-address :9001
-
-.. code-block:: shell
-
- Status: 1 Online, 0 Offline.
- API: http://192.168.2.100:9000 http://127.0.0.1:9000
- RootUser: myminioadmin
- RootPass: minio-secret-key-change-me
- Console: http://192.168.2.100:9001 http://127.0.0.1:9001
- RootUser: myminioadmin
- RootPass: minio-secret-key-change-me
-
- Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
- $ mc alias set myminio http://10.0.2.100:9000 myminioadmin minio-secret-key-change-me
-
- Documentation: https://min.io/docs/minio/linux/index.html
-
-The ``API`` block lists the network interfaces and port on which clients can access the MinIO S3 API.
-The ``Console`` block lists the network interfaces and port on which clients can access the MinIO Web Console.
-
-.. end-run-minio-binary-desc
\ No newline at end of file
diff --git a/source/includes/macos/quickstart.rst b/source/includes/macos/quickstart.rst
deleted file mode 100644
index f4be612ee..000000000
--- a/source/includes/macos/quickstart.rst
+++ /dev/null
@@ -1,148 +0,0 @@
-.. _quickstart-macos:
-
-=============================
-Quickstart: MinIO for Mac OSX
-=============================
-
-.. default-domain:: minio
-
-.. container:: extlinks-video
-
- - `Object Storage Essentials `__
-
- - `How to Connect to MinIO with JavaScript `__
-
-.. |OS| replace:: MacOS
-
-This procedure deploys a :ref:`Single-Node Single-Drive ` MinIO server onto |OS| for early development and evaluation of MinIO Object Storage and its S3-compatible API layer.
-
-For instructions on deploying to production environments, see :ref:`deploy-minio-distributed`.
-
-Prerequisites
--------------
-
-- Read, write, and execute permissions for the user's home directory
-- Familiarity with using the Terminal
-
-Procedure
----------
-
-#. **Install the MinIO Server**
-
- .. include:: /includes/macos/common-installation.rst
- :start-after: start-install-minio-binary-desc
- :end-before: end-install-minio-binary-desc
-
-
-#. **Launch the MinIO Server**
-
- .. include:: /includes/macos/common-installation.rst
- :start-after: start-run-minio-binary-desc
- :end-before: end-run-minio-binary-desc
-
-#. **Connect your Browser to the MinIO Server**
-
- Access the :ref:`minio-console` by going to a browser (such as Safari) and going to ``https://127.0.0.1:9000`` or one of the Console addresses specified in the :mc:`minio server` command's output.
- For example, :guilabel:`Console: http://192.0.2.10:9001 http://127.0.0.1:9001` in the example output indicates two possible addresses to use for connecting to the Console.
-
- While port ``9000`` is used for connecting to the API, MinIO automatically redirects browser access to the MinIO Console.
-
- Log in to the Console with the ``RootUser`` and ``RootPass`` user credentials displayed in the output.
- These default to ``minioadmin | minioadmin``.
-
- .. image:: /images/minio-console/console-login.png
- :width: 600px
- :alt: MinIO Console displaying login screen
- :align: center
-
- You can use the MinIO Console for general administration tasks like Identity and Access Management, Metrics and Log Monitoring, or Server Configuration.
- Each MinIO server includes its own embedded MinIO Console.
-
- .. image:: /images/minio-console/minio-console.png
- :width: 600px
- :alt: MinIO Console displaying bucket start screen
- :align: center
-
- For more information, see the :ref:`minio-console` documentation.
-
-#. `(Optional)` Install the MinIO Client
-
- The :ref:`MinIO Client ` allows you to work with your MinIO volume from the commandline.
-
- .. tab-set::
-
- .. tab-item:: Homebrew
-
- Run the following commands to install the latest stable MinIO Client package using `Homebrew `_.
-
- .. code-block:: shell
- :class: copyable
-
- brew install minio/stable/mc
-
- To use the command, run
-
- .. code-block::
-
- mc {command} {flag}
-
- .. tab-item:: Binary (arm64)
-
- Download the standalone MinIO server for MacOS and make it executable.
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/client/mc/release/darwin-arm64/mc
- chmod +x mc
- sudo mv mc /usr/local/bin/mc
-
- To use the command, run
-
- .. code-block:: shell
-
- mc {command} {flag}
-
- .. tab-item:: Binary (amd64)
-
- Download the standalone MinIO server for MacOS and make it executable.
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/client/mc/release/darwin-amd64/mc
- chmod +x mc
- sudo mv mc /usr/local/bin/mc
-
- To use the command, run
-
- .. code-block:: shell
-
- mc {command} {flag}
-
- Use :mc:`mc alias set` to quickly authenticate and connect to the MinIO deployment.
-
- .. code-block:: shell
- :class: copyable
-
- mc alias set local http://127.0.0.1:9000 minioadmin minioadmin
- mc admin info local
-
- The :mc:`mc alias set` takes four arguments:
-
- - The name of the alias
- - The hostname or IP address and port of the MinIO server
- - The Access Key for a MinIO :ref:`user `
- - The Secret Key for a MinIO :ref:`user `
-
- For additional details about this command, see :ref:`alias`.
-
-.. rst-class:: section-next-steps
-
-Next Steps
-----------
-
-- :ref:`Connect your applications to MinIO `
-- :ref:`Configure Object Retention `
-- :ref:`Configure Security `
-- :ref:`Deploy MinIO for Production Environments `
diff --git a/source/includes/macos/steps-configure-minio-kes-hashicorp.rst b/source/includes/macos/steps-configure-minio-kes-hashicorp.rst
deleted file mode 100644
index b10039177..000000000
--- a/source/includes/macos/steps-configure-minio-kes-hashicorp.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-Deploy MinIO and KES with Server-Side Encryption
-------------------------------------------------
-
-Prior to starting these steps, create the following folders:
-
-.. code-block:: shell
- :class: copyable
- :substitutions:
-
- mkdir -P |kescertpath|
- mkdir -P |kesconfigpath|
- mkdir -P |miniodatapath|
-
-Prerequisite
-~~~~~~~~~~~~
-
-Depending on your chosen :kes-docs:`supported KMS target <#supported-kms-targets>` configuration, you may need to pass the ``kes-server.cert`` as a trusted Certificate Authority (CA).
-Defer to the client documentation for instructions on trusting a third-party CA.
-
-1) Create the MinIO Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Create the MinIO Environment File
-
-Create the environment file using your preferred text editor.
-The following example uses ``nano``:
-
-.. code-block:: shell
- :substitutions:
-
- nano |minioconfigpath|/minio
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-configuration-minio-desc
- :end-before: end-kes-configuration-minio-desc
-
-3) Start the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. note::
-
- You **must** start KES *before* starting MinIO.
- The MinIO deployment requires access to KES as part of its startup.
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-minio-start-server-desc
- :end-before: end-kes-minio-start-server-desc
-
-Foreground processes depend on the shell or terminal in which they run.
-Exiting or terminating the shell/terminal instance also kills the attached process.
-Defer to your operating system best practices for running processes in the background.
-
-4) Generate a New Encryption Key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-generate-key-desc
- :end-before: end-kes-generate-key-desc
-
-5) Enable SSE-KMS for a Bucket
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-enable-sse-kms-desc
- :end-before: end-kes-enable-sse-kms-desc
diff --git a/source/includes/macos/steps-deploy-minio-single-node-multi-drive.rst b/source/includes/macos/steps-deploy-minio-single-node-multi-drive.rst
deleted file mode 100644
index f189a219d..000000000
--- a/source/includes/macos/steps-deploy-minio-single-node-multi-drive.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-1) Download the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/macos/common-installation.rst
- :start-after: start-install-minio-binary-desc
- :end-before: end-install-minio-binary-desc
-
-2) Create the Environment Variable File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-environment-file-multi-drive
- :end-before: end-common-deploy-create-environment-file-multi-drive
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-unique-root-credentials
- :end-before: end-common-deploy-create-unique-root-credentials
-
-3) Start the MinIO Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Issue the following command on the local host to start the MinIO |SNSD| deployment as a foreground process.
-You must keep the shell or terminal session open to keep the process running.
-
-.. include:: /includes/macos/common-installation.rst
- :start-after: start-run-minio-binary-desc
- :end-before: end-run-minio-binary-desc
-
-4) Connect to the MinIO Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-connect-to-minio-deployment
- :end-before: end-common-deploy-connect-to-minio-deployment
\ No newline at end of file
diff --git a/source/includes/macos/steps-deploy-minio-single-node-single-drive.rst b/source/includes/macos/steps-deploy-minio-single-node-single-drive.rst
deleted file mode 100644
index e1ed2f0b5..000000000
--- a/source/includes/macos/steps-deploy-minio-single-node-single-drive.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-1) Download the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/macos/common-installation.rst
- :start-after: start-install-minio-binary-desc
- :end-before: end-install-minio-binary-desc
-
-2) Create the Environment Variable File
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-environment-file-single-drive
- :end-before: end-common-deploy-create-environment-file-single-drive
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-create-unique-root-credentials
- :end-before: end-common-deploy-create-unique-root-credentials
-
-3) Start the MinIO Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Issue the following command on the local host to start the MinIO |SNSD| deployment as a foreground process.
-You must keep the shell or terminal session open to keep the process running.
-
-.. include:: /includes/macos/common-installation.rst
- :start-after: start-run-minio-binary-desc
- :end-before: end-run-minio-binary-desc
-
-4) Connect to the MinIO Deployment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-connect-to-minio-deployment
- :end-before: end-common-deploy-connect-to-minio-deployment
diff --git a/source/includes/macos/steps-upgrade-minio-deployment.rst b/source/includes/macos/steps-upgrade-minio-deployment.rst
deleted file mode 100644
index 8da021960..000000000
--- a/source/includes/macos/steps-upgrade-minio-deployment.rst
+++ /dev/null
@@ -1,78 +0,0 @@
-MinIO uses an update-then-restart methodology for upgrading a deployment to a newer release:
-
-1. Update the MinIO binary with the newer release.
-2. Restart the deployment using :mc-cmd:`mc admin service restart`.
-
-This procedure does not require taking downtime and is non-disruptive to ongoing operations.
-
-This page documents methods for upgrading using the update-then-restart method for both ``systemctl`` and user-managed MinIO deployments.
-Deployments using Ansible, Terraform, or other management tools can use the procedures here as guidance for implementation within the existing automation framework.
-
-Considerations
---------------
-
-Upgrades Are Non-Disruptive
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-MinIO's upgrade-then-restart procedure does *not* require taking downtime or scheduling a maintenance period.
-MinIO restarts are fast, such that restarting all server processes in parallel typically completes in a few seconds.
-MinIO operations are atomic and strictly consistent, such that applications using MinIO or S3 SDKs can rely on the built-in :aws-docs:`transparent retry ` without further client-side logic.
-This ensures upgrades are non-disruptive to ongoing operations.
-
-"Rolling" or serial "one-at-a-time" upgrade methods do not provide any advantage over the recommended "parallel" procedure, and can introduce unnecessary complexity to the upgrade procedure.
-For virtualized environments which *require* rolling updates, you should modify the recommended procedure as follows:
-
-1. Update the MinIO Binary in the virtual machine or container one at a time.
-2. Restart the MinIO deployment using :mc-cmd:`mc admin service restart`.
-3. Update the virtual machine/container configuration to use the matching newer MinIO image.
-4. Perform the rolling restart of each machine/container with the updated image.
-
-Check Release Notes
-~~~~~~~~~~~~~~~~~~~
-
-MinIO publishes :minio-git:`Release Notes ` for your reference as part of identifying the changes applied in each release.
-Review the associated release notes between your current MinIO version and the newer release so you have a complete view of any changes.
-
-Pay particular attention to any releases that are *not* backwards compatible.
-You cannot trivially downgrade from any such release.
-
-Update Using Homebrew
----------------------
-
-For Homebrew installations, you can use homebrew to update the cask:
-
-.. code-block:: shell
- :class: copyable
-
- brew upgrade minio/stable/minio
-
-Restart the MinIO process to complete the update.
-
-Update using Binary Replacement
--------------------------------
-
-.. tab-set::
-
- .. tab-item:: Binary - arm64
-
- Open a Terminal, then use the following commands to download the latest stable MinIO binary, set it to executable, and install it to the system ``$PATH``:
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/server/minio/release/darwin-arm64/minio
- chmod +x ./minio
- sudo mv ./minio /usr/local/bin/
-
- .. tab-item:: Binary - amd64
-
- Open a Terminal, then use the following commands to download the latest stable MinIO binary, set it to executable, and install it to the system ``$PATH``:
-
- .. code-block:: shell
- :class: copyable
-
- curl -O https://dl.min.io/server/minio/release/darwin-amd64/minio
- chmod +x ./minio
- sudo mv ./minio /usr/local/bin/
-
-Restart the MinIO process to complete the update.
\ No newline at end of file
diff --git a/source/includes/windows/quickstart.rst b/source/includes/windows/quickstart.rst
deleted file mode 100644
index 6cef00106..000000000
--- a/source/includes/windows/quickstart.rst
+++ /dev/null
@@ -1,153 +0,0 @@
-.. _quickstart-windows:
-
-=============================
-Quickstart: MinIO for Windows
-=============================
-
-.. default-domain:: minio
-
-.. container:: extlinks-video
-
- - `Object Storage Essentials `__
-
- - `How to Connect to MinIO with JavaScript `__
-
-
-.. |OS| replace:: Windows
-
-This procedure deploys a :ref:`Single-Node Single-Drive ` MinIO server onto |OS| for early development and evaluation of MinIO Object Storage and its S3-compatible API layer.
-
-.. note::
-
- This documentation only covers Single-Node Single-Drive deployments.
- Due to NTFS behaviors and limitations, MinIO does not recommend multi-node multi-drive deployments on Windows hosts.
-
- Use :minio-docs:`Linux hosts ` or :minio-docs:`Kubernetes ` for deploying production-ready distributed MinIO deployments.
-
-Use Windows-based MinIO deployments for early development and evaluation.
-MinIO strongly recommends Linux (RHEL, Ubuntu) systems for long-term development and production environments.
-
-MinIO supports non-EOL Windows versions (Windows 10, Windows Server 2016+).
-
-Prerequisites
--------------
-
-- Read, write, and execute permissions for the preferred local directory or file path
-- Familiarity with using the Command Prompt or PowerShell
-
-Procedure
----------
-
-#. Install the MinIO Server
-
- Download the MinIO executable from the following URL:
-
- .. code-block:: shell
- :class: copyable
-
- https://dl.min.io/server/minio/release/windows-amd64/minio.exe
-
- The next step includes instructions for running the executable.
- You cannot run the executable from the Explorer or by double clicking the file.
- Instead, you call the executable to launch the server.
-
-#. Launch the :mc:`minio server`
-
- In PowerShell or the Command Prompt, navigate to the location of the executable or add the path of the ``minio.exe`` file to the system ``$PATH``.
-
- Use this command to start a local MinIO instance in the ``C:\minio`` folder.
- You can replace ``C:\minio`` with another drive or folder path on the local computer.
-
- .. code-block::
- :class: copyable
-
- .\minio.exe server C:\minio --console-address :9001
-
- The :mc:`minio server` process prints its output to the system console, similar to the following:
-
- .. code-block:: shell
-
- API: http://192.0.2.10:9000 http://127.0.0.1:9000
- RootUser: minioadmin
- RootPass: minioadmin
-
- Console: http://192.0.2.10:9001 http://127.0.0.1:9001
- RootUser: minioadmin
- RootPass: minioadmin
-
- Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
- $ mc alias set myminio http://192.0.2.10:9000 minioadmin minioadmin
-
- Documentation: https://min.io/docs/minio/linux/index.html
-
- WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables.
-
- The process is tied to the current PowerShell or Command Prompt window.
- Closing the window stops the server and ends the process.
-
-#. Connect your Browser to the MinIO Server
-
- Access the :ref:`minio-console` by going to a browser (such as Microsoft Edge) and going to ``http://127.0.0.1:9001`` or one of the Console addresses specified in the :mc:`minio server` command's output.
- For example, ``Console: http://192.0.2.10:9001 http://127.0.0.1:9001`` in the example output indicates two possible addresses to use for connecting to the Console.
-
- While port ``9000`` is used for connecting to the API, MinIO automatically redirects browser access to the MinIO Console.
-
- Log in to the Console with the ``RootUser`` and ``RootPass`` user credentials displayed in the output.
- These default to ``minioadmin | minioadmin``.
-
- .. image:: /images/minio-console/console-login.png
- :width: 600px
- :alt: MinIO Console displaying login screen
- :align: center
-
- You can use the MinIO Console for general administration tasks like Identity and Access Management, Metrics and Log Monitoring, or Server Configuration.
- Each MinIO server includes its own embedded MinIO Console.
-
- .. image:: /images/minio-console/minio-console.png
- :width: 600px
- :alt: MinIO Console displaying bucket start screen
- :align: center
-
- For more information, see the :ref:`minio-console` documentation.
-
-#. `(Optional)` Install the MinIO Client
-
- The :ref:`MinIO Client ` allows you to work with your MinIO volume from the commandline.
-
- Download the standalone MinIO server for Windows from the following link:
-
- https://dl.min.io/client/mc/release/windows-amd64/mc.exe
-
- Double click on the file to run it.
- Or, run the following in the Command Prompt or PowerShell.
-
- .. code-block::
- :class: copyable
-
- \path\to\mc.exe --help
-
- Use :mc:`mc.exe alias set ` to quickly authenticate and connect to the MinIO deployment.
-
- .. code-block:: shell
- :class: copyable
-
- mc.exe alias set local http://127.0.0.1:9000 minioadmin minioadmin
- mc.exe admin info local
-
- The :mc:`mc.exe alias set ` takes four arguments:
-
- - The name of the alias
- - The hostname or IP address and port of the MinIO server
- - The Access Key for a MinIO :ref:`user `
- - The Secret Key for a MinIO :ref:`user `
-
- For additional details about this command, see :ref:`alias`.
-
-.. rst-class:: section-next-steps
-
-Next Steps
-----------
-
-- :ref:`Connect your applications to MinIO `
-- :ref:`Configure Object Retention `
-- :ref:`Configure Security `
diff --git a/source/includes/windows/steps-configure-minio-kes-hashicorp.rst b/source/includes/windows/steps-configure-minio-kes-hashicorp.rst
deleted file mode 100644
index 6ac6bbcd1..000000000
--- a/source/includes/windows/steps-configure-minio-kes-hashicorp.rst
+++ /dev/null
@@ -1,63 +0,0 @@
-Deploy MinIO and KES with Server-Side Encryption
-------------------------------------------------
-
-Prior to starting these steps, create the following folders:
-
-.. code-block:: powershell
- :class: copyable
- :substitutions:
-
- New-Item -Path "|kescertpath|" -ItemType "directory"
- New-Item -Path "|kesconfigpath|" -ItemType "directory"
- New-Item -Path "|miniodatapath|" -ItemType "directory"
-
-Prerequisite
-~~~~~~~~~~~~
-
-Depending on your chosen :kes-docs:`supported KMS target <#supported-kms-targets>` configuration, you may need to pass the ``kes-server.cert`` as a trusted Certificate Authority (CA).
-Defer to the client documentation for instructions on trusting a third-party CA.
-
-1) Create the MinIO Configurations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Create the MinIO Environment File
-
-Create the environment file using your preferred text editor.
-The following example uses the Windows Notepad program:
-
-.. code-block:: powershell
- :substitutions:
-
- notepad |minioconfigpath|\minio
-
-.. include:: /includes/windows/common-minio-kes.rst
- :start-after: start-kes-configuration-minio-desc
- :end-before: end-kes-configuration-minio-desc
-
-2) Start the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. note::
-
- You **must** start KES *before* starting MinIO.
- The MinIO deployment requires access to KES as part of its startup.
-
-Start the MinIO Server
-
-.. include:: /includes/windows/common-minio-kes.rst
- :start-after: start-kes-minio-start-server-desc
- :end-before: end-kes-minio-start-server-desc
-
-3) Generate a New Encryption Key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/windows/common-minio-kes.rst
- :start-after: start-kes-generate-key-desc
- :end-before: end-kes-generate-key-desc
-
-4) Enable SSE-KMS for a Bucket
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-minio-kes.rst
- :start-after: start-kes-enable-sse-kms-desc
- :end-before: end-kes-enable-sse-kms-desc
diff --git a/source/includes/windows/steps-deploy-minio-single-node-single-drive.rst b/source/includes/windows/steps-deploy-minio-single-node-single-drive.rst
deleted file mode 100644
index eced268c3..000000000
--- a/source/includes/windows/steps-deploy-minio-single-node-single-drive.rst
+++ /dev/null
@@ -1,53 +0,0 @@
-1) Download the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Download the MinIO executable from the following URL:
-
- .. code-block:: shell
- :class: copyable
-
- https://dl.min.io/server/minio/release/windows-amd64/minio.exe
-
- The next step includes instructions for running the executable.
- You cannot run the executable from the Explorer or by double clicking the file.
- Instead, you call the executable to launch the server.
-
-2) Prepare the Data Path for MinIO
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Ensure the data path is empty and contains no existing files, including any hidden or Windows system files.
-
-If specifying a drive not dedicated for use by MinIO, consider creating a dedicated folder for storing MinIO data such as ``D:/Minio``.
-
-3) Start the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Open the Command Prompt or PowerShell and issue the following command to start the MinIO |SNSD| deployment in that session:
-
-.. code-block:: shell
- :class: copyable
-
- minio.exe server D:/minio --console-address ":9001"
-
-The output should resemble the following:
-
-.. code-block:: shell
-
- Status: 1 Online, 0 Offline.
- API: http://192.168.2.100:9000 http://127.0.0.1:9000
- Console: http://192.168.2.100:9001 http://127.0.0.1:9001
-
- Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
- $ mc alias set myminio http://10.0.2.100:9000 minioadmin minioadmin
-
- Documentation: https://min.io/docs/minio/linux/index.html
-
-The ``API`` block lists the network interfaces and port on which clients can access the MinIO S3 API.
-The ``Console`` block lists the network interfaces and port on which clients can access the MinIO Web Console.
-
-4) Connect to the MinIO Server
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. include:: /includes/common/common-deploy.rst
- :start-after: start-common-deploy-connect-to-minio-deployment
- :end-before: end-common-deploy-connect-to-minio-deployment
diff --git a/source/index.rst b/source/index.rst
index 4b9706933..01e1b5a85 100644
--- a/source/index.rst
+++ b/source/index.rst
@@ -1,6 +1,6 @@
-================================================================================
-MinIO Object Storage for |platform|
-================================================================================
+=====================================
+MinIO High Performance Object Storage
+=====================================
.. default-domain:: minio
@@ -8,219 +8,144 @@ MinIO Object Storage for |platform|
:local:
:depth: 2
-MinIO is an object storage solution that provides an Amazon Web Services S3-compatible API and supports all core S3 features.
-MinIO is built to deploy anywhere - public or private cloud, baremetal infrastructure, orchestrated environments, and edge infrastructure.
+MinIO is a Kubernetes-native S3-compatible object storage solution designed to deploy wherever your applications are - on premises, in the private cloud, in the public cloud, and edge infrastructure.
+MinIO is designed to support modern application workload patterns where high performance distributed computing meets petabyte-scale storage requirements.
-.. cond:: linux
+MinIO is available under two server editions, each with their own distinct license:
- This site documents Operations, Administration, and Development of MinIO deployments on Linux platforms for the latest stable version of MinIO: |minio-tag|.
+.. grid:: 2
-.. cond:: windows
+ .. grid-item-card:: MinIO Object Store (MinIO)
- This site documents Operations, Administration, and Development of MinIO deployments on Windows platforms for the latest stable version of MinIO: |minio-tag|.
+ MinIO Object Store (MinIO) is licensed under `GNU Affero General Public License v3.0 `__.
+
+ MinIO features are available to the community as a stream of active development.
-.. cond:: macos
+ MinIO is community-focused, with best-effort support through the MinIO Community Slack Channel and the MinIO Github repository.
- This site documents Operations, Administration, and Development of MinIO deployments on macOS platforms for the latest stable version of MinIO: |minio-tag|.
+ .. grid-item-card:: MinIO Enterprise Object Store (MinEOS)
-.. cond:: container
+ MinIO Enterprise Object Store (MinEOS) is licensed under the `MinIO Commercial License `__.
+
+ MinEOS is available to |SUBNET| Enterprise-Lite and Enterprise-Plus customers and includes exclusive support for the :minio-blog:`Enterprise Object Store feature suite `.
- This site documents Operations, Administration, and Development of MinIO deployments on Containers for the latest stable version of MinIO: |minio-tag|.
+ MinEOS include |SUBNET| access for 24/7 L1 support from MinIO Engineering, with 4 or 1 hour SLAs available based on deployment size.
-.. cond:: k8s and not (openshift or eks or gke or aks)
+This site documents Operations, Administration, and Development of MinIO deployments on supported platforms for |minio-tag|.
+MinIO Enterprise Object Storage (MinEOS) deployments can use this documentation as a baseline of features available in a current or upcoming release.
- This site documents Operations, Administration, and Development of MinIO deployments on Kubernetes platform for the latest stable version of the MinIO Operator: |operator-version-stable|.
+.. todo: More marketing/SEO below?
-.. cond:: openshift
+MinIO officially supports the following platforms:
- This site documents Operations, Administration, and Development of MinIO deployments on OpenShift 4.7+ through the :openshift-docs:`Red Hat® OpenShift® Container Platform 4.7+ ` for the latest stable version of the MinIO Operator: |operator-version-stable|.
+- :ref:`Kubernetes (Upstream) `
+- :ref:`RedHat Openshift `
+- :ref:`SUSE Rancher `
+- :ref:`Elastic Kubernetes Service `
+- :ref:`Google Kubernetes Engine `
+- :ref:`Azure Kubernetes Service `
+- :ref:`Red Hat Enterprise Linux `
+- :ref:`Ubuntu Linux `
+- :ref:`MacOS `
+- :ref:`Container `
+- :ref:`Windows `
-.. cond:: eks
+Quickstart
+----------
- This site documents Operations, Administration, and Development of MinIO deployments on `Amazon Elastic Kubernetes Service `__ for the latest stable version of the MinIO Operator: |operator-version-stable|.
+.. tab-set::
-.. cond:: gke
+ .. tab-item:: Sandbox
- This site documents Operations, Administration, and Development of MinIO deployments on `Google Kubernetes Engine `__ for the latest stable version of the MinIO Operator: |operator-version-stable|.
+ MinIO maintains a sandbox instance of the community server at https://play.min.io.
+ You can use this instance for experimenting or evaluating the MinIO product on your local system.
-.. cond:: aks
+ Follow the :mc:`mc` CLI :ref:`installation guide