diff --git a/website/package.json b/website/package.json
index a9be5c9a7..9a425f664 100644
--- a/website/package.json
+++ b/website/package.json
@@ -10,31 +10,31 @@
"lint": "next lint"
},
"dependencies": {
- "@docsearch/react": "3",
- "@heroicons/react": "^2.0.18",
+ "@docsearch/react": "^3.5.1",
"@mdx-js/loader": "^2.3.0",
"@mdx-js/react": "^2.3.0",
- "@next/mdx": "^13.4.4",
+ "@next/mdx": "^13.4.10",
"@types/mdx": "^2.0.5",
"@types/node": "20.2.3",
"@types/react": "18.2.6",
"@types/react-dom": "18.2.4",
"@types/react-syntax-highlighter": "^15.5.7",
- "asciinema-player": "^3.4.0",
+ "asciinema-player": "^3.5.0",
"autoprefixer": "10.4.14",
"fast-xml-parser": "^4.2.5",
- "flowbite": "^1.6.5",
- "flowbite-react": "^0.4.4",
+ "flowbite": "^1.7.0",
+ "flowbite-react": "^0.4.11",
"highlight.js": "^11.8.0",
"md5": "^2.3.0",
"next": "13.4.4",
"next-hubspot": "^1.1.6",
- "next-sitemap": "^4.1.3",
+ "next-sitemap": "^4.1.8",
"postcss": "8.4.23",
- "posthog-js": "^1.67.1",
+ "posthog-js": "^1.71.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-fast-marquee": "^1.6.0",
+ "react-icons": "^4.10.1",
"react-markdown": "^8.0.7",
"react-syntax-highlighter": "^15.5.0",
"rehype-autolink-headings": "^6.1.1",
diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml
index f1700ea06..ff7116d7c 100644
--- a/website/pnpm-lock.yaml
+++ b/website/pnpm-lock.yaml
@@ -6,20 +6,17 @@ settings:
dependencies:
'@docsearch/react':
- specifier: '3'
- version: 3.5.1(@algolia/client-search@4.17.2)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.6.0)
- '@heroicons/react':
- specifier: ^2.0.18
- version: 2.0.18(react@18.2.0)
+ specifier: ^3.5.1
+ version: 3.5.1(@algolia/client-search@4.18.0)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0)
'@mdx-js/loader':
specifier: ^2.3.0
- version: 2.3.0(webpack@5.85.0)
+ version: 2.3.0(webpack@5.88.1)
'@mdx-js/react':
specifier: ^2.3.0
version: 2.3.0(react@18.2.0)
'@next/mdx':
- specifier: ^13.4.4
- version: 13.4.4(@mdx-js/loader@2.3.0)(@mdx-js/react@2.3.0)
+ specifier: ^13.4.10
+ version: 13.4.10(@mdx-js/loader@2.3.0)(@mdx-js/react@2.3.0)
'@types/mdx':
specifier: ^2.0.5
version: 2.0.5
@@ -36,8 +33,8 @@ dependencies:
specifier: ^15.5.7
version: 15.5.7
asciinema-player:
- specifier: ^3.4.0
- version: 3.4.0
+ specifier: ^3.5.0
+ version: 3.5.0
autoprefixer:
specifier: 10.4.14
version: 10.4.14(postcss@8.4.23)
@@ -45,11 +42,11 @@ dependencies:
specifier: ^4.2.5
version: 4.2.5
flowbite:
- specifier: ^1.6.5
- version: 1.6.5
+ specifier: ^1.7.0
+ version: 1.7.0
flowbite-react:
- specifier: ^0.4.4
- version: 0.4.4(flowbite@1.6.5)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.3.2)
+ specifier: ^0.4.11
+ version: 0.4.11(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.3.2)
highlight.js:
specifier: ^11.8.0
version: 11.8.0
@@ -63,14 +60,14 @@ dependencies:
specifier: ^1.1.6
version: 1.1.6(next@13.4.4)(react@18.2.0)
next-sitemap:
- specifier: ^4.1.3
- version: 4.1.3(@next/env@13.4.4)(next@13.4.4)
+ specifier: ^4.1.8
+ version: 4.1.8(next@13.4.4)
postcss:
specifier: 8.4.23
version: 8.4.23
posthog-js:
- specifier: ^1.67.1
- version: 1.67.1
+ specifier: ^1.71.0
+ version: 1.71.0
react:
specifier: 18.2.0
version: 18.2.0
@@ -80,6 +77,9 @@ dependencies:
react-fast-marquee:
specifier: ^1.6.0
version: 1.6.0(react-dom@18.2.0)(react@18.2.0)
+ react-icons:
+ specifier: ^4.10.1
+ version: 4.10.1(react@18.2.0)
react-markdown:
specifier: ^8.0.7
version: 8.0.7(@types/react@18.2.6)(react@18.2.0)
@@ -124,146 +124,146 @@ devDependencies:
packages:
- /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)(search-insights@2.6.0):
+ /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0):
resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==}
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)(search-insights@2.6.0)
- '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)
+ '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0)
+ '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
dev: false
- /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)(search-insights@2.6.0):
+ /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0):
resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==}
peerDependencies:
search-insights: '>= 1 < 3'
dependencies:
- '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)
- search-insights: 2.6.0
+ '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)
+ search-insights: 2.7.0
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
dev: false
- /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2):
+ /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0):
resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
dependencies:
- '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)
- '@algolia/client-search': 4.17.2
- algoliasearch: 4.17.2
+ '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)
+ '@algolia/client-search': 4.18.0
+ algoliasearch: 4.18.0
dev: false
- /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2):
+ /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0):
resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
dependencies:
- '@algolia/client-search': 4.17.2
- algoliasearch: 4.17.2
+ '@algolia/client-search': 4.18.0
+ algoliasearch: 4.18.0
dev: false
- /@algolia/cache-browser-local-storage@4.17.2:
- resolution: {integrity: sha512-ZkVN7K/JE+qMQbpR6h3gQOGR6yCJpmucSBCmH5YDxnrYbp2CbrVCu0Nr+FGVoWzMJNznj1waShkfQ9awERulLw==}
+ /@algolia/cache-browser-local-storage@4.18.0:
+ resolution: {integrity: sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==}
dependencies:
- '@algolia/cache-common': 4.17.2
+ '@algolia/cache-common': 4.18.0
dev: false
- /@algolia/cache-common@4.17.2:
- resolution: {integrity: sha512-fojbhYIS8ovfYs6hwZpy1O4mBfVRxNgAaZRqsdVQd54hU4MxYDYFCxagYX28lOBz7btcDHld6BMoWXvjzkx6iQ==}
+ /@algolia/cache-common@4.18.0:
+ resolution: {integrity: sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==}
dev: false
- /@algolia/cache-in-memory@4.17.2:
- resolution: {integrity: sha512-UYQcMzPurNi+cPYkuPemTZkjKAjdgAS1hagC5irujKbrYnN4yscK4TkOI5tX+O8/KegtJt3kOK07OIrJ2QDAAw==}
+ /@algolia/cache-in-memory@4.18.0:
+ resolution: {integrity: sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==}
dependencies:
- '@algolia/cache-common': 4.17.2
+ '@algolia/cache-common': 4.18.0
dev: false
- /@algolia/client-account@4.17.2:
- resolution: {integrity: sha512-doSk89pBPDpDyKJSHFADIGa2XSGrBCj3QwPvqtRJXDADpN+OjW+eTR8r4hEs/7X4GGfjfAOAES8JgDx+fZntYw==}
+ /@algolia/client-account@4.18.0:
+ resolution: {integrity: sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==}
dependencies:
- '@algolia/client-common': 4.17.2
- '@algolia/client-search': 4.17.2
- '@algolia/transporter': 4.17.2
+ '@algolia/client-common': 4.18.0
+ '@algolia/client-search': 4.18.0
+ '@algolia/transporter': 4.18.0
dev: false
- /@algolia/client-analytics@4.17.2:
- resolution: {integrity: sha512-V+DcXbOtD/hKwAR3qGQrtlrJ3q2f9OKfx843q744o4m3xHv5ueCAvGXB1znPsdaUrVDNAImcgEgqwI9x7EJbDw==}
+ /@algolia/client-analytics@4.18.0:
+ resolution: {integrity: sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==}
dependencies:
- '@algolia/client-common': 4.17.2
- '@algolia/client-search': 4.17.2
- '@algolia/requester-common': 4.17.2
- '@algolia/transporter': 4.17.2
+ '@algolia/client-common': 4.18.0
+ '@algolia/client-search': 4.18.0
+ '@algolia/requester-common': 4.18.0
+ '@algolia/transporter': 4.18.0
dev: false
- /@algolia/client-common@4.17.2:
- resolution: {integrity: sha512-gKBUnjxi0ukJYIJxVREYGt1Dmj1B3RBYbfGWi0dIPp1BC1VvQm+BOuNwsIwmq/x3MPO+sGuK978eKiP3tZDvag==}
+ /@algolia/client-common@4.18.0:
+ resolution: {integrity: sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==}
dependencies:
- '@algolia/requester-common': 4.17.2
- '@algolia/transporter': 4.17.2
+ '@algolia/requester-common': 4.18.0
+ '@algolia/transporter': 4.18.0
dev: false
- /@algolia/client-personalization@4.17.2:
- resolution: {integrity: sha512-wc4UgOWxSYWz5wpuelNmlt895jA9twjZWM2ms17Ws8qCvBHF7OVGdMGgbysPB8790YnfvvDnSsWOv3CEj26Eow==}
+ /@algolia/client-personalization@4.18.0:
+ resolution: {integrity: sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==}
dependencies:
- '@algolia/client-common': 4.17.2
- '@algolia/requester-common': 4.17.2
- '@algolia/transporter': 4.17.2
+ '@algolia/client-common': 4.18.0
+ '@algolia/requester-common': 4.18.0
+ '@algolia/transporter': 4.18.0
dev: false
- /@algolia/client-search@4.17.2:
- resolution: {integrity: sha512-FUjIs+gRe0upJC++uVs4sdxMw15JxfkT86Gr/kqVwi9kcqaZhXntSbW/Fw959bIYXczjmeVQsilYvBWW4YvSZA==}
+ /@algolia/client-search@4.18.0:
+ resolution: {integrity: sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==}
dependencies:
- '@algolia/client-common': 4.17.2
- '@algolia/requester-common': 4.17.2
- '@algolia/transporter': 4.17.2
+ '@algolia/client-common': 4.18.0
+ '@algolia/requester-common': 4.18.0
+ '@algolia/transporter': 4.18.0
dev: false
- /@algolia/logger-common@4.17.2:
- resolution: {integrity: sha512-EfXuweUE+1HiSMsQidaDWA5Lv4NnStYIlh7PO5pLkI+sdhbMX0e5AO5nUAMIFM1VkEANes70RA8fzhP6OqCqQQ==}
+ /@algolia/logger-common@4.18.0:
+ resolution: {integrity: sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==}
dev: false
- /@algolia/logger-console@4.17.2:
- resolution: {integrity: sha512-JuG8HGVlJ+l/UEDK4h2Y8q/IEmRjQz1J0aS9tf6GPNbGYiSvMr1DDdZ+hqV3bb1XE6wU8Ypex56HisWMSpnG0A==}
+ /@algolia/logger-console@4.18.0:
+ resolution: {integrity: sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==}
dependencies:
- '@algolia/logger-common': 4.17.2
+ '@algolia/logger-common': 4.18.0
dev: false
- /@algolia/requester-browser-xhr@4.17.2:
- resolution: {integrity: sha512-FKI2lYWwksALfRt2OETFmGb5+P7WVc4py2Ai3H7k8FSfTLwVvs9WVVmtlx6oANQ8RFEK4B85h8DQJTJ29TDfmA==}
+ /@algolia/requester-browser-xhr@4.18.0:
+ resolution: {integrity: sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==}
dependencies:
- '@algolia/requester-common': 4.17.2
+ '@algolia/requester-common': 4.18.0
dev: false
- /@algolia/requester-common@4.17.2:
- resolution: {integrity: sha512-Rfim23ztAhYpE9qm+KCfCRo+YLJCjiiTG+IpDdzUjMpYPhUtirQT0A35YEd/gKn86YNyydxS9w8iRSjwKh+L0A==}
+ /@algolia/requester-common@4.18.0:
+ resolution: {integrity: sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==}
dev: false
- /@algolia/requester-node-http@4.17.2:
- resolution: {integrity: sha512-E0b0kyCDMvUIhQmDNd/mH4fsKJdEEX6PkMKrYJjzm6moo+rP22tqpq4Rfe7DZD8OB6/LsDD3zs3Kvd+L+M5wwQ==}
+ /@algolia/requester-node-http@4.18.0:
+ resolution: {integrity: sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==}
dependencies:
- '@algolia/requester-common': 4.17.2
+ '@algolia/requester-common': 4.18.0
dev: false
- /@algolia/transporter@4.17.2:
- resolution: {integrity: sha512-m8pXlz5OnNzjD1rcw+duCN4jG4yEzkJBsvKYMoN22Oq6rQwy1AY5muZ+IQUs4dL+A364CYkRMLRWhvXpCZ1x+g==}
+ /@algolia/transporter@4.18.0:
+ resolution: {integrity: sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==}
dependencies:
- '@algolia/cache-common': 4.17.2
- '@algolia/logger-common': 4.17.2
- '@algolia/requester-common': 4.17.2
+ '@algolia/cache-common': 4.18.0
+ '@algolia/logger-common': 4.18.0
+ '@algolia/requester-common': 4.18.0
dev: false
/@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- /@babel/runtime@7.22.5:
- resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==}
+ /@babel/runtime@7.22.6:
+ resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.13.11
@@ -277,7 +277,7 @@ packages:
resolution: {integrity: sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==}
dev: false
- /@docsearch/react@3.5.1(@algolia/client-search@4.17.2)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.6.0):
+ /@docsearch/react@3.5.1(@algolia/client-search@4.18.0)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.7.0):
resolution: {integrity: sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==}
peerDependencies:
'@types/react': '>= 16.8.0 < 19.0.0'
@@ -291,11 +291,11 @@ packages:
react-dom:
optional: true
dependencies:
- '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)(search-insights@2.6.0)
- '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.17.2)(algoliasearch@4.17.2)
+ '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0)
+ '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)
'@docsearch/css': 3.5.1
'@types/react': 18.2.6
- algoliasearch: 4.17.2
+ algoliasearch: 4.18.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
transitivePeerDependencies:
@@ -303,46 +303,38 @@ packages:
- search-insights
dev: false
- /@floating-ui/core@1.2.6:
- resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==}
+ /@floating-ui/core@1.3.1:
+ resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==}
dev: false
- /@floating-ui/dom@1.2.8:
- resolution: {integrity: sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==}
+ /@floating-ui/dom@1.4.5:
+ resolution: {integrity: sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw==}
dependencies:
- '@floating-ui/core': 1.2.6
+ '@floating-ui/core': 1.3.1
dev: false
- /@floating-ui/react-dom@1.3.0(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==}
+ /@floating-ui/react-dom@2.0.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@floating-ui/dom': 1.2.8
+ '@floating-ui/dom': 1.4.5
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@floating-ui/react@0.20.1(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-JHTHJ+/YsIxNFH8uJDFa5OyI6dSUZcle6wAFe0zRTjgWD+rkACfBBoJtx2itTtn7C4a7xAz4jgxdEQcMel194g==}
+ /@floating-ui/react@0.24.8(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-AuYeDoaR8jtUlUXtZ1IJ/6jtBkGnSpJXbGNzokBL87VDJ8opMq1Bgrc0szhK482ReQY6KZsMoZCVSb4xwalkBA==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@floating-ui/react-dom': 1.3.0(react-dom@18.2.0)(react@18.2.0)
+ '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0)(react@18.2.0)
aria-hidden: 1.2.3
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- tabbable: 6.1.2
- dev: false
-
- /@heroicons/react@2.0.18(react@18.2.0):
- resolution: {integrity: sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==}
- peerDependencies:
- react: '>= 16'
- dependencies:
- react: 18.2.0
+ tabbable: 6.2.0
dev: false
/@jridgewell/gen-mapping@0.3.3:
@@ -361,8 +353,8 @@ packages:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
- /@jridgewell/source-map@0.3.3:
- resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==}
+ /@jridgewell/source-map@0.3.5:
+ resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
dependencies:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.18
@@ -380,14 +372,14 @@ packages:
'@jridgewell/resolve-uri': 3.1.0
'@jridgewell/sourcemap-codec': 1.4.14
- /@mdx-js/loader@2.3.0(webpack@5.85.0):
+ /@mdx-js/loader@2.3.0(webpack@5.88.1):
resolution: {integrity: sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==}
peerDependencies:
webpack: '>=4'
dependencies:
'@mdx-js/mdx': 2.3.0
source-map: 0.7.4
- webpack: 5.85.0
+ webpack: 5.88.1
transitivePeerDependencies:
- supports-color
dev: false
@@ -426,12 +418,16 @@ packages:
react: 18.2.0
dev: false
+ /@next/env@13.4.10:
+ resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==}
+ dev: false
+
/@next/env@13.4.4:
resolution: {integrity: sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==}
dev: false
- /@next/mdx@13.4.4(@mdx-js/loader@2.3.0)(@mdx-js/react@2.3.0):
- resolution: {integrity: sha512-MtaZs0i1sE4lYEhOi0Ttha4EWjA3FwOIQSnhmn8jgAho4yjtVfQYjJjVcQ9wJkMxrzmjHeOz1LsDhDp0bO3Z9Q==}
+ /@next/mdx@13.4.10(@mdx-js/loader@2.3.0)(@mdx-js/react@2.3.0):
+ resolution: {integrity: sha512-0ZbUIr3yuFFfkaYth2kNFAT0fbyylJTMqZy5zTdb7YGqvYjKFD8n75L3UYAX0g5mibGp3iETJ0I7730sW13PKQ==}
peerDependencies:
'@mdx-js/loader': '>=0.15.0'
'@mdx-js/react': '>=0.15.0'
@@ -441,7 +437,7 @@ packages:
'@mdx-js/react':
optional: true
dependencies:
- '@mdx-js/loader': 2.3.0(webpack@5.85.0)
+ '@mdx-js/loader': 2.3.0(webpack@5.88.1)
'@mdx-js/react': 2.3.0(react@18.2.0)
source-map: 0.7.4
dev: false
@@ -545,14 +541,14 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
- /@popperjs/core@2.11.7:
- resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==}
+ /@popperjs/core@2.11.8:
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
dev: false
/@swc/helpers@0.5.1:
resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==}
dependencies:
- tslib: 2.5.2
+ tslib: 2.6.0
dev: false
/@types/acorn@4.0.6:
@@ -570,12 +566,12 @@ packages:
/@types/eslint-scope@3.7.4:
resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
dependencies:
- '@types/eslint': 8.40.0
+ '@types/eslint': 8.44.0
'@types/estree': 1.0.1
dev: false
- /@types/eslint@8.40.0:
- resolution: {integrity: sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==}
+ /@types/eslint@8.44.0:
+ resolution: {integrity: sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==}
dependencies:
'@types/estree': 1.0.1
'@types/json-schema': 7.0.12
@@ -591,19 +587,19 @@ packages:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
dev: false
- /@types/hast@2.3.4:
- resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
+ /@types/hast@2.3.5:
+ resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
/@types/json-schema@7.0.12:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: false
- /@types/mdast@3.0.11:
- resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==}
+ /@types/mdast@3.0.12:
+ resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
dev: false
/@types/mdx@2.0.5:
@@ -650,8 +646,8 @@ packages:
resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
dev: false
- /@types/unist@2.0.6:
- resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
+ /@types/unist@2.0.7:
+ resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==}
/@webassemblyjs/ast@1.11.6:
resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==}
@@ -767,24 +763,24 @@ packages:
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
dev: false
- /acorn-import-assertions@1.9.0(acorn@8.8.2):
+ /acorn-import-assertions@1.9.0(acorn@8.10.0):
resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
peerDependencies:
acorn: ^8
dependencies:
- acorn: 8.8.2
+ acorn: 8.10.0
dev: false
- /acorn-jsx@5.3.2(acorn@8.8.2):
+ /acorn-jsx@5.3.2(acorn@8.10.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.8.2
+ acorn: 8.10.0
dev: false
- /acorn@8.8.2:
- resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
+ /acorn@8.10.0:
+ resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: false
@@ -806,23 +802,23 @@ packages:
uri-js: 4.4.1
dev: false
- /algoliasearch@4.17.2:
- resolution: {integrity: sha512-VFu43JJNYIW74awp7oeQcQsPcxOhd8psqBDTfyNO2Zt6L1NqnNMTVnaIdQ+8dtKqUDBqQZp0szPxECvX8CK2Fg==}
+ /algoliasearch@4.18.0:
+ resolution: {integrity: sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==}
dependencies:
- '@algolia/cache-browser-local-storage': 4.17.2
- '@algolia/cache-common': 4.17.2
- '@algolia/cache-in-memory': 4.17.2
- '@algolia/client-account': 4.17.2
- '@algolia/client-analytics': 4.17.2
- '@algolia/client-common': 4.17.2
- '@algolia/client-personalization': 4.17.2
- '@algolia/client-search': 4.17.2
- '@algolia/logger-common': 4.17.2
- '@algolia/logger-console': 4.17.2
- '@algolia/requester-browser-xhr': 4.17.2
- '@algolia/requester-common': 4.17.2
- '@algolia/requester-node-http': 4.17.2
- '@algolia/transporter': 4.17.2
+ '@algolia/cache-browser-local-storage': 4.18.0
+ '@algolia/cache-common': 4.18.0
+ '@algolia/cache-in-memory': 4.18.0
+ '@algolia/client-account': 4.18.0
+ '@algolia/client-analytics': 4.18.0
+ '@algolia/client-common': 4.18.0
+ '@algolia/client-personalization': 4.18.0
+ '@algolia/client-search': 4.18.0
+ '@algolia/logger-common': 4.18.0
+ '@algolia/logger-console': 4.18.0
+ '@algolia/requester-browser-xhr': 4.18.0
+ '@algolia/requester-common': 4.18.0
+ '@algolia/requester-node-http': 4.18.0
+ '@algolia/transporter': 4.18.0
dev: false
/any-promise@1.3.0:
@@ -842,14 +838,14 @@ packages:
resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==}
engines: {node: '>=10'}
dependencies:
- tslib: 2.5.2
+ tslib: 2.6.0
dev: false
- /asciinema-player@3.4.0:
- resolution: {integrity: sha512-dX6jt5S3K6daItsVWzyY9mRDK+ivC2QgqCxFkdSiNslo0vY/ZqA4upcTzqIKZqBtxppovOZk44ltg9VnHG9QVg==}
+ /asciinema-player@3.5.0:
+ resolution: {integrity: sha512-o4B2AscBuCZo4+JB9TBGrfZ7GQL99wsbm08WwmuNJTPd1lyLQJq8wgacnBsdvb2sC0K875ScYr8T5XmfeH/6dg==}
dependencies:
- '@babel/runtime': 7.22.5
- solid-js: 1.7.6
+ '@babel/runtime': 7.22.6
+ solid-js: 1.7.8
dev: false
/astring@1.8.6:
@@ -864,8 +860,8 @@ packages:
peerDependencies:
postcss: ^8.1.0
dependencies:
- browserslist: 4.21.5
- caniuse-lite: 1.0.30001489
+ browserslist: 4.21.9
+ caniuse-lite: 1.0.30001516
fraction.js: 4.2.0
normalize-range: 0.1.2
picocolors: 1.0.0
@@ -896,15 +892,15 @@ packages:
dependencies:
fill-range: 7.0.1
- /browserslist@4.21.5:
- resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
+ /browserslist@4.21.9:
+ resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001489
- electron-to-chromium: 1.4.408
- node-releases: 2.0.12
- update-browserslist-db: 1.0.11(browserslist@4.21.5)
+ caniuse-lite: 1.0.30001516
+ electron-to-chromium: 1.4.461
+ node-releases: 2.0.13
+ update-browserslist-db: 1.0.11(browserslist@4.21.9)
dev: false
/buffer-from@1.1.2:
@@ -922,8 +918,8 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- /caniuse-lite@1.0.30001489:
- resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==}
+ /caniuse-lite@1.0.30001516:
+ resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==}
dev: false
/ccount@2.0.1:
@@ -1062,20 +1058,20 @@ packages:
resolution: {integrity: sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A==}
dev: false
- /electron-to-chromium@1.4.408:
- resolution: {integrity: sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg==}
+ /electron-to-chromium@1.4.461:
+ resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==}
dev: false
- /enhanced-resolve@5.14.1:
- resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==}
+ /enhanced-resolve@5.15.0:
+ resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
engines: {node: '>=10.13.0'}
dependencies:
graceful-fs: 4.2.11
tapable: 2.2.1
dev: false
- /es-module-lexer@1.2.1:
- resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==}
+ /es-module-lexer@1.3.0:
+ resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==}
dev: false
/escalade@3.1.1:
@@ -1143,7 +1139,7 @@ packages:
resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==}
dependencies:
'@types/estree-jsx': 1.0.0
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
dev: false
/estree-walker@3.0.3:
@@ -1165,8 +1161,8 @@ packages:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: false
- /fast-glob@3.2.12:
- resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+ /fast-glob@3.3.0:
+ resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -1213,21 +1209,20 @@ packages:
dependencies:
to-regex-range: 5.0.1
- /flowbite-react@0.4.4(flowbite@1.6.5)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.3.2):
- resolution: {integrity: sha512-cDGtzRp8Ca6rOooNUlDzI7NwAQqzRFYENQ5tI5kRlgobUITxzCgPSv+S1laBlSyrHzlvaneBy4kkX3HrMtEn0A==}
+ /flowbite-react@0.4.11(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.3.2):
+ resolution: {integrity: sha512-QB0PWB/kiogL0YQlT+X1x4Ue0D3cpd+WaiCbGsMqo2LCYySRsctHxEciRQji3JELGuc6O1OaBtK9ZUSErQkJEg==}
peerDependencies:
- flowbite: ^1
react: ^18
react-dom: ^18
tailwindcss: ^3
dependencies:
- '@floating-ui/react': 0.20.1(react-dom@18.2.0)(react@18.2.0)
- classnames: 2.3.2
- flowbite: 1.6.5
+ '@floating-ui/react': 0.24.8(react-dom@18.2.0)(react@18.2.0)
+ flowbite: 1.7.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-icons: 4.8.0(react@18.2.0)
+ react-icons: 4.10.1(react@18.2.0)
react-indiana-drag-scroll: 2.2.0(react-dom@18.2.0)(react@18.2.0)
+ tailwind-merge: 1.13.2
tailwindcss: 3.3.2
dev: false
@@ -1242,10 +1237,10 @@ packages:
tailwindcss: 3.3.2
dev: true
- /flowbite@1.6.5:
- resolution: {integrity: sha512-eI4h3pIRI9d7grlYq14r0A01KUtw7189sPLLx/O2i7JyPEWpbleScfYuEc48XTeNjk1xxm/JHgZkD9kjyOWAlA==}
+ /flowbite@1.7.0:
+ resolution: {integrity: sha512-OTTmnhRgv85Rs+mcMaVU7zB6EvRQs7BaQziyMUsZLRjW9aUpeQyqKjLmxsVMMCdr8isYPCLd6UL7X1IaSVI0WQ==}
dependencies:
- '@popperjs/core': 2.11.7
+ '@popperjs/core': 2.11.8
mini-svg-data-uri: 1.4.4
dev: false
@@ -1319,8 +1314,8 @@ packages:
/hast-util-from-parse5@7.1.2:
resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==}
dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
+ '@types/hast': 2.3.5
+ '@types/unist': 2.0.7
hastscript: 7.2.0
property-information: 6.2.0
vfile: 5.3.7
@@ -1335,14 +1330,14 @@ packages:
/hast-util-heading-rank@2.1.1:
resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
dev: false
/hast-util-is-element@2.1.3:
resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==}
dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
+ '@types/hast': 2.3.5
+ '@types/unist': 2.0.7
dev: false
/hast-util-parse-selector@2.2.5:
@@ -1352,12 +1347,12 @@ packages:
/hast-util-parse-selector@3.1.1:
resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
/hast-util-raw@7.2.3:
resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
'@types/parse5': 6.0.3
hast-util-from-parse5: 7.1.2
hast-util-to-parse5: 7.1.0
@@ -1375,8 +1370,8 @@ packages:
dependencies:
'@types/estree': 1.0.1
'@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
+ '@types/hast': 2.3.5
+ '@types/unist': 2.0.7
comma-separated-tokens: 2.0.3
estree-util-attach-comments: 2.1.1
estree-util-is-identifier-name: 2.1.0
@@ -1395,8 +1390,8 @@ packages:
/hast-util-to-html@8.0.4:
resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==}
dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
+ '@types/hast': 2.3.5
+ '@types/unist': 2.0.7
ccount: 2.0.1
comma-separated-tokens: 2.0.3
hast-util-raw: 7.2.3
@@ -1411,7 +1406,7 @@ packages:
/hast-util-to-parse5@7.1.0:
resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
comma-separated-tokens: 2.0.3
property-information: 6.2.0
space-separated-tokens: 2.0.2
@@ -1422,14 +1417,14 @@ packages:
/hast-util-to-string@2.0.0:
resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
dev: false
/hast-util-to-text@3.1.2:
resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==}
dependencies:
- '@types/hast': 2.3.4
- '@types/unist': 2.0.6
+ '@types/hast': 2.3.5
+ '@types/unist': 2.0.7
hast-util-is-element: 2.1.3
unist-util-find-after: 4.0.1
dev: false
@@ -1441,7 +1436,7 @@ packages:
/hastscript@6.0.0:
resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
comma-separated-tokens: 1.0.8
hast-util-parse-selector: 2.2.5
property-information: 5.6.0
@@ -1451,7 +1446,7 @@ packages:
/hastscript@7.2.0:
resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
comma-separated-tokens: 2.0.3
hast-util-parse-selector: 3.1.1
property-information: 6.2.0
@@ -1575,8 +1570,8 @@ packages:
supports-color: 8.1.1
dev: false
- /jiti@1.18.2:
- resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
+ /jiti@1.19.1:
+ resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==}
hasBin: true
/js-tokens@4.0.0:
@@ -1641,7 +1636,7 @@ packages:
/lowlight@2.9.0:
resolution: {integrity: sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
fault: 2.0.1
highlight.js: 11.8.0
dev: false
@@ -1666,33 +1661,33 @@ packages:
/mdast-util-definitions@5.1.2:
resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
dependencies:
- '@types/mdast': 3.0.11
- '@types/unist': 2.0.6
+ '@types/mdast': 3.0.12
+ '@types/unist': 2.0.7
unist-util-visit: 4.1.2
dev: false
/mdast-util-find-and-replace@2.2.2:
resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
escape-string-regexp: 5.0.0
unist-util-is: 5.2.1
unist-util-visit-parents: 5.1.3
dev: false
- /mdast-util-from-markdown@1.3.0:
- resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==}
+ /mdast-util-from-markdown@1.3.1:
+ resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
dependencies:
- '@types/mdast': 3.0.11
- '@types/unist': 2.0.6
+ '@types/mdast': 3.0.12
+ '@types/unist': 2.0.7
decode-named-character-reference: 1.0.2
mdast-util-to-string: 3.2.0
- micromark: 3.1.0
- micromark-util-decode-numeric-character-reference: 1.0.0
- micromark-util-decode-string: 1.0.2
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark: 3.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-decode-string: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
unist-util-stringify-position: 3.0.3
uvu: 0.5.6
transitivePeerDependencies:
@@ -1702,33 +1697,33 @@ packages:
/mdast-util-gfm-autolink-literal@1.0.3:
resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
ccount: 2.0.1
mdast-util-find-and-replace: 2.2.2
- micromark-util-character: 1.1.0
+ micromark-util-character: 1.2.0
dev: false
/mdast-util-gfm-footnote@1.0.2:
resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
mdast-util-to-markdown: 1.5.0
- micromark-util-normalize-identifier: 1.0.0
+ micromark-util-normalize-identifier: 1.1.0
dev: false
/mdast-util-gfm-strikethrough@1.0.3:
resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
mdast-util-to-markdown: 1.5.0
dev: false
/mdast-util-gfm-table@1.0.7:
resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
markdown-table: 3.0.3
- mdast-util-from-markdown: 1.3.0
+ mdast-util-from-markdown: 1.3.1
mdast-util-to-markdown: 1.5.0
transitivePeerDependencies:
- supports-color
@@ -1737,14 +1732,14 @@ packages:
/mdast-util-gfm-task-list-item@1.0.2:
resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
mdast-util-to-markdown: 1.5.0
dev: false
/mdast-util-gfm@2.0.2:
resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
dependencies:
- mdast-util-from-markdown: 1.3.0
+ mdast-util-from-markdown: 1.3.1
mdast-util-gfm-autolink-literal: 1.0.3
mdast-util-gfm-footnote: 1.0.2
mdast-util-gfm-strikethrough: 1.0.3
@@ -1759,9 +1754,9 @@ packages:
resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==}
dependencies:
'@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.11
- mdast-util-from-markdown: 1.3.0
+ '@types/hast': 2.3.5
+ '@types/mdast': 3.0.12
+ mdast-util-from-markdown: 1.3.1
mdast-util-to-markdown: 1.5.0
transitivePeerDependencies:
- supports-color
@@ -1771,11 +1766,11 @@ packages:
resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==}
dependencies:
'@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.11
- '@types/unist': 2.0.6
+ '@types/hast': 2.3.5
+ '@types/mdast': 3.0.12
+ '@types/unist': 2.0.7
ccount: 2.0.1
- mdast-util-from-markdown: 1.3.0
+ mdast-util-from-markdown: 1.3.1
mdast-util-to-markdown: 1.5.0
parse-entities: 4.0.1
stringify-entities: 4.0.3
@@ -1789,7 +1784,7 @@ packages:
/mdast-util-mdx@2.0.1:
resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==}
dependencies:
- mdast-util-from-markdown: 1.3.0
+ mdast-util-from-markdown: 1.3.1
mdast-util-mdx-expression: 1.3.2
mdast-util-mdx-jsx: 2.1.4
mdast-util-mdxjs-esm: 1.3.1
@@ -1802,9 +1797,9 @@ packages:
resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==}
dependencies:
'@types/estree-jsx': 1.0.0
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.11
- mdast-util-from-markdown: 1.3.0
+ '@types/hast': 2.3.5
+ '@types/mdast': 3.0.12
+ mdast-util-from-markdown: 1.3.1
mdast-util-to-markdown: 1.5.0
transitivePeerDependencies:
- supports-color
@@ -1813,17 +1808,17 @@ packages:
/mdast-util-phrasing@3.0.1:
resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
unist-util-is: 5.2.1
dev: false
/mdast-util-to-hast@12.3.0:
resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==}
dependencies:
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.11
+ '@types/hast': 2.3.5
+ '@types/mdast': 3.0.12
mdast-util-definitions: 5.1.2
- micromark-util-sanitize-uri: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
trim-lines: 3.0.1
unist-util-generated: 2.0.1
unist-util-position: 4.0.4
@@ -1833,12 +1828,12 @@ packages:
/mdast-util-to-markdown@1.5.0:
resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
dependencies:
- '@types/mdast': 3.0.11
- '@types/unist': 2.0.6
+ '@types/mdast': 3.0.12
+ '@types/unist': 2.0.7
longest-streak: 3.1.0
mdast-util-phrasing: 3.0.1
mdast-util-to-string: 3.2.0
- micromark-util-decode-string: 1.0.2
+ micromark-util-decode-string: 1.1.0
unist-util-visit: 4.1.2
zwitch: 2.0.4
dev: false
@@ -1846,7 +1841,7 @@ packages:
/mdast-util-to-string@3.2.0:
resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
dev: false
/merge-stream@2.0.0:
@@ -1857,83 +1852,83 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- /micromark-core-commonmark@1.0.6:
- resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==}
+ /micromark-core-commonmark@1.1.0:
+ resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
dependencies:
decode-named-character-reference: 1.0.2
- micromark-factory-destination: 1.0.0
- micromark-factory-label: 1.0.2
- micromark-factory-space: 1.0.0
- micromark-factory-title: 1.0.2
- micromark-factory-whitespace: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-chunked: 1.0.0
- micromark-util-classify-character: 1.0.0
- micromark-util-html-tag-name: 1.1.0
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-resolve-all: 1.0.0
- micromark-util-subtokenize: 1.0.2
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-factory-destination: 1.1.0
+ micromark-factory-label: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-factory-title: 1.1.0
+ micromark-factory-whitespace: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-html-tag-name: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
/micromark-extension-gfm-autolink-literal@1.0.5:
resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
dependencies:
- micromark-util-character: 1.1.0
- micromark-util-sanitize-uri: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
/micromark-extension-gfm-footnote@1.1.2:
resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==}
dependencies:
- micromark-core-commonmark: 1.0.6
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-sanitize-uri: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
/micromark-extension-gfm-strikethrough@1.0.7:
resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
dependencies:
- micromark-util-chunked: 1.0.0
- micromark-util-classify-character: 1.0.0
- micromark-util-resolve-all: 1.0.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
/micromark-extension-gfm-table@1.0.7:
resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
/micromark-extension-gfm-tagfilter@1.0.2:
resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
dependencies:
- micromark-util-types: 1.0.2
+ micromark-util-types: 1.1.0
dev: false
/micromark-extension-gfm-task-list-item@1.0.5:
resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
@@ -1946,8 +1941,8 @@ packages:
micromark-extension-gfm-table: 1.0.7
micromark-extension-gfm-tagfilter: 1.0.2
micromark-extension-gfm-task-list-item: 1.0.5
- micromark-util-combine-extensions: 1.0.0
- micromark-util-types: 1.0.2
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
/micromark-extension-mdx-expression@1.0.8:
@@ -1955,11 +1950,11 @@ packages:
dependencies:
'@types/estree': 1.0.1
micromark-factory-mdx-expression: 1.0.9
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
micromark-util-events-to-acorn: 1.2.3
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
@@ -1970,10 +1965,10 @@ packages:
'@types/estree': 1.0.1
estree-util-is-identifier-name: 2.1.0
micromark-factory-mdx-expression: 1.0.9
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
vfile-message: 3.1.4
dev: false
@@ -1981,18 +1976,18 @@ packages:
/micromark-extension-mdx-md@1.0.1:
resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==}
dependencies:
- micromark-util-types: 1.0.2
+ micromark-util-types: 1.1.0
dev: false
/micromark-extension-mdxjs-esm@1.0.5:
resolution: {integrity: sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==}
dependencies:
'@types/estree': 1.0.1
- micromark-core-commonmark: 1.0.6
- micromark-util-character: 1.1.0
+ micromark-core-commonmark: 1.1.0
+ micromark-util-character: 1.2.0
micromark-util-events-to-acorn: 1.2.3
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
unist-util-position-from-estree: 1.1.2
uvu: 0.5.6
vfile-message: 3.1.4
@@ -2001,30 +1996,30 @@ packages:
/micromark-extension-mdxjs@1.0.1:
resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==}
dependencies:
- acorn: 8.8.2
- acorn-jsx: 5.3.2(acorn@8.8.2)
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
micromark-extension-mdx-expression: 1.0.8
micromark-extension-mdx-jsx: 1.0.5
micromark-extension-mdx-md: 1.0.1
micromark-extension-mdxjs-esm: 1.0.5
- micromark-util-combine-extensions: 1.0.0
- micromark-util-types: 1.0.2
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-factory-destination@1.0.0:
- resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==}
+ /micromark-factory-destination@1.1.0:
+ resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
dependencies:
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-factory-label@1.0.2:
- resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==}
+ /micromark-factory-label@1.1.0:
+ resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
dependencies:
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
@@ -2032,86 +2027,85 @@ packages:
resolution: {integrity: sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==}
dependencies:
'@types/estree': 1.0.1
- micromark-util-character: 1.1.0
+ micromark-util-character: 1.2.0
micromark-util-events-to-acorn: 1.2.3
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
unist-util-position-from-estree: 1.1.2
uvu: 0.5.6
vfile-message: 3.1.4
dev: false
- /micromark-factory-space@1.0.0:
- resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==}
+ /micromark-factory-space@1.1.0:
+ resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
dependencies:
- micromark-util-character: 1.1.0
- micromark-util-types: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-factory-title@1.0.2:
- resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==}
+ /micromark-factory-title@1.1.0:
+ resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
- uvu: 0.5.6
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-factory-whitespace@1.0.0:
- resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==}
+ /micromark-factory-whitespace@1.1.0:
+ resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
dependencies:
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-util-character@1.1.0:
- resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==}
+ /micromark-util-character@1.2.0:
+ resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
dependencies:
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-util-chunked@1.0.0:
- resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==}
+ /micromark-util-chunked@1.1.0:
+ resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
dependencies:
- micromark-util-symbol: 1.0.1
+ micromark-util-symbol: 1.1.0
dev: false
- /micromark-util-classify-character@1.0.0:
- resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==}
+ /micromark-util-classify-character@1.1.0:
+ resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
dependencies:
- micromark-util-character: 1.1.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-util-combine-extensions@1.0.0:
- resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==}
+ /micromark-util-combine-extensions@1.1.0:
+ resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
dependencies:
- micromark-util-chunked: 1.0.0
- micromark-util-types: 1.0.2
+ micromark-util-chunked: 1.1.0
+ micromark-util-types: 1.1.0
dev: false
- /micromark-util-decode-numeric-character-reference@1.0.0:
- resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==}
+ /micromark-util-decode-numeric-character-reference@1.1.0:
+ resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
dependencies:
- micromark-util-symbol: 1.0.1
+ micromark-util-symbol: 1.1.0
dev: false
- /micromark-util-decode-string@1.0.2:
- resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==}
+ /micromark-util-decode-string@1.1.0:
+ resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
dependencies:
decode-named-character-reference: 1.0.2
- micromark-util-character: 1.1.0
- micromark-util-decode-numeric-character-reference: 1.0.0
- micromark-util-symbol: 1.0.1
+ micromark-util-character: 1.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-symbol: 1.1.0
dev: false
- /micromark-util-encode@1.0.1:
- resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==}
+ /micromark-util-encode@1.1.0:
+ resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
dev: false
/micromark-util-events-to-acorn@1.2.3:
@@ -2119,74 +2113,74 @@ packages:
dependencies:
'@types/acorn': 4.0.6
'@types/estree': 1.0.1
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
estree-util-visit: 1.2.1
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
vfile-message: 3.1.4
dev: false
- /micromark-util-html-tag-name@1.1.0:
- resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==}
+ /micromark-util-html-tag-name@1.2.0:
+ resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
dev: false
- /micromark-util-normalize-identifier@1.0.0:
- resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==}
+ /micromark-util-normalize-identifier@1.1.0:
+ resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
dependencies:
- micromark-util-symbol: 1.0.1
+ micromark-util-symbol: 1.1.0
dev: false
- /micromark-util-resolve-all@1.0.0:
- resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==}
+ /micromark-util-resolve-all@1.1.0:
+ resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
dependencies:
- micromark-util-types: 1.0.2
+ micromark-util-types: 1.1.0
dev: false
- /micromark-util-sanitize-uri@1.1.0:
- resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==}
+ /micromark-util-sanitize-uri@1.2.0:
+ resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
dependencies:
- micromark-util-character: 1.1.0
- micromark-util-encode: 1.0.1
- micromark-util-symbol: 1.0.1
+ micromark-util-character: 1.2.0
+ micromark-util-encode: 1.1.0
+ micromark-util-symbol: 1.1.0
dev: false
- /micromark-util-subtokenize@1.0.2:
- resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==}
+ /micromark-util-subtokenize@1.1.0:
+ resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
dependencies:
- micromark-util-chunked: 1.0.0
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-util-chunked: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
dev: false
- /micromark-util-symbol@1.0.1:
- resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==}
+ /micromark-util-symbol@1.1.0:
+ resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
dev: false
- /micromark-util-types@1.0.2:
- resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==}
+ /micromark-util-types@1.1.0:
+ resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
dev: false
- /micromark@3.1.0:
- resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==}
+ /micromark@3.2.0:
+ resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
dependencies:
'@types/debug': 4.1.8
debug: 4.3.4
decode-named-character-reference: 1.0.2
- micromark-core-commonmark: 1.0.6
- micromark-factory-space: 1.0.0
- micromark-util-character: 1.1.0
- micromark-util-chunked: 1.0.0
- micromark-util-combine-extensions: 1.0.0
- micromark-util-decode-numeric-character-reference: 1.0.0
- micromark-util-encode: 1.0.1
- micromark-util-normalize-identifier: 1.0.0
- micromark-util-resolve-all: 1.0.0
- micromark-util-sanitize-uri: 1.1.0
- micromark-util-subtokenize: 1.0.2
- micromark-util-symbol: 1.0.1
- micromark-util-types: 1.0.2
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-encode: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
uvu: 0.5.6
transitivePeerDependencies:
- supports-color
@@ -2261,17 +2255,16 @@ packages:
react: 18.2.0
dev: false
- /next-sitemap@4.1.3(@next/env@13.4.4)(next@13.4.4):
- resolution: {integrity: sha512-eCvbXMCqbD/rYx912y4FzGOqPCbWOIBL4UkgVY5R15eCXygKFKWzEVZGPNVBDu2KVpRCeG943NibOchfyQGDhQ==}
+ /next-sitemap@4.1.8(next@13.4.4):
+ resolution: {integrity: sha512-XAXpBHX4o89JfMgvrm0zimlZwpu2iBPXHpimJMUrqOZSc4C2oB1Lv89mxuVON9IE8HOezaM+w4GjJxcYCuGPTQ==}
engines: {node: '>=14.18'}
hasBin: true
peerDependencies:
- '@next/env': '*'
next: '*'
dependencies:
'@corex/deepmerge': 4.0.43
- '@next/env': 13.4.4
- fast-glob: 3.2.12
+ '@next/env': 13.4.10
+ fast-glob: 3.3.0
minimist: 1.2.8
next: 13.4.4(react-dom@18.2.0)(react@18.2.0)
dev: false
@@ -2297,7 +2290,7 @@ packages:
'@next/env': 13.4.4
'@swc/helpers': 0.5.1
busboy: 1.6.0
- caniuse-lite: 1.0.30001489
+ caniuse-lite: 1.0.30001516
postcss: 8.4.14
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -2318,8 +2311,8 @@ packages:
- babel-plugin-macros
dev: false
- /node-releases@2.0.12:
- resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
+ /node-releases@2.0.13:
+ resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
dev: false
/normalize-path@3.0.0:
@@ -2358,7 +2351,7 @@ packages:
/parse-entities@4.0.1:
resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
character-entities: 2.0.2
character-entities-legacy: 3.0.0
character-reference-invalid: 2.0.1
@@ -2398,8 +2391,8 @@ packages:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
- /pirates@4.0.5:
- resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
+ /pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
/postcss-import@15.1.0(postcss@8.4.23):
@@ -2474,8 +2467,8 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
- /posthog-js@1.67.1:
- resolution: {integrity: sha512-gvdCVrrxoRYbtNTCUt2/YdZ+tfSfzcl72ym/dtRVCYJpwlCUIKnNJ3E2g7Bbw1+Ki6CvGxdu9r7jHIWnvJAMuw==}
+ /posthog-js@1.71.0:
+ resolution: {integrity: sha512-Qs7lIBivj993apV17x8krEy46SKzSYCwMq4hihkNJ01U6ZltrIx0piYfKCC2pmiBgCaJG7Hjn0iTLy5evntdEw==}
dependencies:
fflate: 0.4.8
dev: false
@@ -2541,8 +2534,8 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
- /react-icons@4.8.0(react@18.2.0):
- resolution: {integrity: sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==}
+ /react-icons@4.10.1(react@18.2.0):
+ resolution: {integrity: sha512-/ngzDP/77tlCfqthiiGNZeYFACw85fUjZtLbedmJ5DTlNDIwETxhwBzdOJ21zj4iJdvc0J3y7yOsX3PpxAJzrw==}
peerDependencies:
react: '*'
dependencies:
@@ -2577,10 +2570,10 @@ packages:
'@types/react': '>=16'
react: '>=16'
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
'@types/prop-types': 15.7.5
'@types/react': 18.2.6
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
comma-separated-tokens: 2.0.3
hast-util-whitespace: 2.0.1
prop-types: 15.8.1
@@ -2603,7 +2596,7 @@ packages:
peerDependencies:
react: '>= 0.14.0'
dependencies:
- '@babel/runtime': 7.22.5
+ '@babel/runtime': 7.22.6
highlight.js: 10.7.3
lowlight: 1.20.0
prismjs: 1.29.0
@@ -2644,7 +2637,7 @@ packages:
/rehype-autolink-headings@6.1.1:
resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
extend: 3.0.2
hast-util-has-property: 2.0.1
hast-util-heading-rank: 2.1.1
@@ -2656,7 +2649,7 @@ packages:
/rehype-highlight@6.0.0:
resolution: {integrity: sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
hast-util-to-text: 3.1.2
lowlight: 2.9.0
unified: 10.1.2
@@ -2666,7 +2659,7 @@ packages:
/rehype-slug@5.1.0:
resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
github-slugger: 2.0.0
hast-util-has-property: 2.0.1
hast-util-heading-rank: 2.1.1
@@ -2678,7 +2671,7 @@ packages:
/rehype-stringify@9.0.3:
resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==}
dependencies:
- '@types/hast': 2.3.4
+ '@types/hast': 2.3.5
hast-util-to-html: 8.0.4
unified: 10.1.2
dev: false
@@ -2686,7 +2679,7 @@ packages:
/remark-gfm@3.0.1:
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
dependencies:
- '@types/mdast': 3.0.11
+ '@types/mdast': 3.0.12
mdast-util-gfm: 2.0.2
micromark-extension-gfm: 2.0.3
unified: 10.1.2
@@ -2706,8 +2699,8 @@ packages:
/remark-parse@10.0.2:
resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
dependencies:
- '@types/mdast': 3.0.11
- mdast-util-from-markdown: 1.3.0
+ '@types/mdast': 3.0.12
+ mdast-util-from-markdown: 1.3.1
unified: 10.1.2
transitivePeerDependencies:
- supports-color
@@ -2716,8 +2709,8 @@ packages:
/remark-rehype@10.1.0:
resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
dependencies:
- '@types/hast': 2.3.4
- '@types/mdast': 3.0.11
+ '@types/hast': 2.3.5
+ '@types/mdast': 3.0.12
mdast-util-to-hast: 12.3.0
unified: 10.1.2
dev: false
@@ -2756,8 +2749,8 @@ packages:
loose-envify: 1.4.0
dev: false
- /schema-utils@3.1.2:
- resolution: {integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==}
+ /schema-utils@3.3.0:
+ resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
engines: {node: '>= 10.13.0'}
dependencies:
'@types/json-schema': 7.0.12
@@ -2765,8 +2758,8 @@ packages:
ajv-keywords: 3.5.2(ajv@6.12.6)
dev: false
- /search-insights@2.6.0:
- resolution: {integrity: sha512-vU2/fJ+h/Mkm/DJOe+EaM5cafJv/1rRTZpGJTuFPf/Q5LjzgMDsqPdSaZsAe+GAWHHsfsu+rQSAn6c8IGtBEVw==}
+ /search-insights@2.7.0:
+ resolution: {integrity: sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==}
engines: {node: '>=8.16.0'}
dev: false
@@ -2781,8 +2774,8 @@ packages:
engines: {node: '>=10'}
dev: false
- /solid-js@1.7.6:
- resolution: {integrity: sha512-DXVOTjUh/bIAhE0fIqu3ezGLyQaez7v8EOw3uPLIi87DmLjg+hsuCAgKyNIZ+o4jUetOk3ZORccvJmE1yZUk8g==}
+ /solid-js@1.7.8:
+ resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==}
dependencies:
csstype: 3.1.2
seroval: 0.5.1
@@ -2855,8 +2848,8 @@ packages:
react: 18.2.0
dev: false
- /sucrase@3.32.0:
- resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
+ /sucrase@3.33.0:
+ resolution: {integrity: sha512-ARGC7vbufOHfpvyGcZZXFaXCMZ9A4fffOGC5ucOW7+WHDGlAe8LJdf3Jts1sWhDeiI1RSWrKy5Hodl+JWGdW2A==}
engines: {node: '>=8'}
hasBin: true
dependencies:
@@ -2865,7 +2858,7 @@ packages:
glob: 7.1.6
lines-and-columns: 1.2.4
mz: 2.7.0
- pirates: 4.0.5
+ pirates: 4.0.6
ts-interface-checker: 0.1.13
/supports-color@8.1.1:
@@ -2879,8 +2872,12 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- /tabbable@6.1.2:
- resolution: {integrity: sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==}
+ /tabbable@6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+ dev: false
+
+ /tailwind-merge@1.13.2:
+ resolution: {integrity: sha512-R2/nULkdg1VR/EL4RXg4dEohdoxNUJGLMnWIQnPKL+O9Twu7Cn3Rxi4dlXkDzZrEGtR+G+psSXFouWlpTyLhCQ==}
dev: false
/tailwindcss@3.3.2:
@@ -2893,10 +2890,10 @@ packages:
chokidar: 3.5.3
didyoumean: 1.2.2
dlv: 1.1.3
- fast-glob: 3.2.12
+ fast-glob: 3.3.0
glob-parent: 6.0.2
is-glob: 4.0.3
- jiti: 1.18.2
+ jiti: 1.19.1
lilconfig: 2.1.0
micromatch: 4.0.5
normalize-path: 3.0.0
@@ -2910,7 +2907,7 @@ packages:
postcss-selector-parser: 6.0.13
postcss-value-parser: 4.2.0
resolve: 1.22.2
- sucrase: 3.32.0
+ sucrase: 3.33.0
transitivePeerDependencies:
- ts-node
@@ -2919,7 +2916,7 @@ packages:
engines: {node: '>=6'}
dev: false
- /terser-webpack-plugin@5.3.9(webpack@5.85.0):
+ /terser-webpack-plugin@5.3.9(webpack@5.88.1):
resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -2937,19 +2934,19 @@ packages:
dependencies:
'@jridgewell/trace-mapping': 0.3.18
jest-worker: 27.5.1
- schema-utils: 3.1.2
+ schema-utils: 3.3.0
serialize-javascript: 6.0.1
- terser: 5.17.7
- webpack: 5.85.0
+ terser: 5.19.0
+ webpack: 5.88.1
dev: false
- /terser@5.17.7:
- resolution: {integrity: sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==}
+ /terser@5.19.0:
+ resolution: {integrity: sha512-JpcpGOQLOXm2jsomozdMDpd5f8ZHh1rR48OFgWUH3QsyZcfPgv2qDCYbcDEAYNd4OZRj2bWYKpwdll/udZCk/Q==}
engines: {node: '>=10'}
hasBin: true
dependencies:
- '@jridgewell/source-map': 0.3.3
- acorn: 8.8.2
+ '@jridgewell/source-map': 0.3.5
+ acorn: 8.10.0
commander: 2.20.3
source-map-support: 0.5.21
dev: false
@@ -2982,8 +2979,8 @@ packages:
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- /tslib@2.5.2:
- resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==}
+ /tslib@2.6.0:
+ resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==}
dev: false
/typescript@5.0.4:
@@ -2995,7 +2992,7 @@ packages:
/unified@10.1.2:
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
bail: 2.0.2
extend: 3.0.2
is-buffer: 2.0.5
@@ -3007,7 +3004,7 @@ packages:
/unist-util-find-after@4.0.1:
resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
unist-util-is: 5.2.1
dev: false
@@ -3018,56 +3015,56 @@ packages:
/unist-util-is@5.2.1:
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
dev: false
/unist-util-position-from-estree@1.1.2:
resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
dev: false
/unist-util-position@4.0.4:
resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
dev: false
/unist-util-remove-position@4.0.2:
resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
unist-util-visit: 4.1.2
dev: false
/unist-util-stringify-position@3.0.3:
resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
dev: false
/unist-util-visit-parents@5.1.3:
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
unist-util-is: 5.2.1
dev: false
/unist-util-visit@4.1.2:
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
unist-util-is: 5.2.1
unist-util-visit-parents: 5.1.3
dev: false
- /update-browserslist-db@1.0.11(browserslist@4.21.5):
+ /update-browserslist-db@1.0.11(browserslist@4.21.9):
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.21.5
+ browserslist: 4.21.9
escalade: 3.1.1
picocolors: 1.0.0
dev: false
@@ -3095,21 +3092,21 @@ packages:
/vfile-location@4.1.0:
resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
vfile: 5.3.7
dev: false
/vfile-message@3.1.4:
resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
unist-util-stringify-position: 3.0.3
dev: false
/vfile@5.3.7:
resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 2.0.7
is-buffer: 2.0.5
unist-util-stringify-position: 3.0.3
vfile-message: 3.1.4
@@ -3132,8 +3129,8 @@ packages:
engines: {node: '>=10.13.0'}
dev: false
- /webpack@5.85.0:
- resolution: {integrity: sha512-7gazTiYqwo5OSqwH1tigLDL2r3qDeP2dOKYgd+LlXpsUMqDTklg6tOghexqky0/+6QY38kb/R/uRPUleuL43zg==}
+ /webpack@5.88.1:
+ resolution: {integrity: sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@@ -3147,12 +3144,12 @@ packages:
'@webassemblyjs/ast': 1.11.6
'@webassemblyjs/wasm-edit': 1.11.6
'@webassemblyjs/wasm-parser': 1.11.6
- acorn: 8.8.2
- acorn-import-assertions: 1.9.0(acorn@8.8.2)
- browserslist: 4.21.5
+ acorn: 8.10.0
+ acorn-import-assertions: 1.9.0(acorn@8.10.0)
+ browserslist: 4.21.9
chrome-trace-event: 1.0.3
- enhanced-resolve: 5.14.1
- es-module-lexer: 1.2.1
+ enhanced-resolve: 5.15.0
+ es-module-lexer: 1.3.0
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
@@ -3161,9 +3158,9 @@ packages:
loader-runner: 4.3.0
mime-types: 2.1.35
neo-async: 2.6.2
- schema-utils: 3.1.2
+ schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.9(webpack@5.85.0)
+ terser-webpack-plugin: 5.3.9(webpack@5.88.1)
watchpack: 2.4.0
webpack-sources: 3.2.3
transitivePeerDependencies:
diff --git a/website/public/images/firewall-block.svg b/website/public/images/firewall-block.svg
new file mode 100644
index 000000000..d5303110a
--- /dev/null
+++ b/website/public/images/firewall-block.svg
@@ -0,0 +1,27 @@
+
diff --git a/website/public/images/firezone-1.0.svg b/website/public/images/firezone-1.0.svg
new file mode 100644
index 000000000..d23587c25
--- /dev/null
+++ b/website/public/images/firezone-1.0.svg
@@ -0,0 +1,39 @@
+
diff --git a/website/public/images/logo-main-light-primary.svg b/website/public/images/logo-main-light-primary.svg
new file mode 100644
index 000000000..fa32c180a
--- /dev/null
+++ b/website/public/images/logo-main-light-primary.svg
@@ -0,0 +1,5 @@
+
diff --git a/website/public/images/nostalgia-show-hn.png b/website/public/images/nostalgia-show-hn.png
new file mode 100644
index 000000000..841715336
Binary files /dev/null and b/website/public/images/nostalgia-show-hn.png differ
diff --git a/website/public/images/stateful-firewall.svg b/website/public/images/stateful-firewall.svg
new file mode 100644
index 000000000..23fc2a0a2
--- /dev/null
+++ b/website/public/images/stateful-firewall.svg
@@ -0,0 +1,37 @@
+
diff --git a/website/public/images/wai-7-2-23.png b/website/public/images/wai-7-2-23.png
new file mode 100644
index 000000000..e1f2ef11a
Binary files /dev/null and b/website/public/images/wai-7-2-23.png differ
diff --git a/website/src/app/blog/firezone-1-0/page.tsx b/website/src/app/blog/firezone-1-0/page.tsx
new file mode 100644
index 000000000..f5946a11a
--- /dev/null
+++ b/website/src/app/blog/firezone-1-0/page.tsx
@@ -0,0 +1,23 @@
+import Image from "next/image";
+import Post from "@/components/Blog/Post";
+import Content from "./readme.mdx";
+import { Metadata } from "next";
+
+export const metadata: Metadata = {
+ title: "Firezone 1.0 • Firezone Blog",
+ description: "Announcing the 1.0 early access program",
+};
+
+export default function Page() {
+ return (
+
+
+
+ );
+}
diff --git a/website/src/app/blog/firezone-1-0/readme.mdx b/website/src/app/blog/firezone-1-0/readme.mdx
new file mode 100644
index 000000000..b533540b1
--- /dev/null
+++ b/website/src/app/blog/firezone-1-0/readme.mdx
@@ -0,0 +1,245 @@
+import Image from "next/image";
+
+Firezone comes from humble roots.
+
+It was born out of necessity -- as an engineer at Cisco I found myself in need
+of an easy way to deploy and manage a VPN server for security automation. I had
+used OpenVPN in the past and loathed it, so this time I decided to try a fast,
+new contender called [WireGuard](https://www.wireguard.com).
+
+While WireGuard itself is a marvelous feat of engineering, it provides only
+basic building blocks. Users wishing to deploy WireGuard as a replacement for
+their existing remote access VPN will find themselves building automation to
+distribute keys, manage users, configure routing tables, and so on.
+
+And I found myself doing just that. It wasn't particularly difficult automation
+to build, but it was tedious and error-prone. Although the benefits of WireGuard
+were worth the price of admission, colleagues and I agreed -- _wouldn't it be
+great if a tool existed to do this for us?_
+
+So after one particularly grueling refactoring project involving a major
+dependency in an ancient codebase that had become "suddenly" deprecated, I
+decided it was time for something new. I resigned, picked up a book on
+Elixir/Phoenix, and, rejoicing at the opportunity to learn some new tech,
+started building what became the first version of Firezone.
+
+
+
+When we [launched on Hacker News](https://news.ycombinator.com/item?id=28683231)
+nearly two years ago, we never envisioned Firezone to be more than a simple tool
+deploying your own WireGuard-based VPN server.
+
+Fast-forward
+[4,500 GitHub stars](https://github.com/firezone/firezone/stargazers), a
+[Y Combinator backed funding round](https://techcrunch.com/2022/03/30/ycombinator-open-source-startups-winter-22-demo-day/),
+and [130 releases](https://github.com/firezone/firezone/releases) later --
+Firezone has now grown into something more than just a self-hosted tool to
+manage your WireGuard configurations.
+
+We now count over 3,000 Firezone instances running in the wild
+(possibly much more -- we allow users to
+[disable telemetry](/docs/reference/telemetry)) securing private networks for
+hobbyists, schools, non-profits, and businesses with hundreds of employees.
+
+
+
+To be clear, Firezone is successful in large part because WireGuard itself is
+successful. In an industry brimming with enterprise security bloatware and
+endless acronyms, WireGuard's a breath of fresh air. Every issue I've thought I
+had with it turned out to be user error. How we ever got by without it is a
+mystery to me.
+
+But I could go on and on about WireGuard's strengths. Let's back up for a minute
+-- what is a VPN, and why is one needed at all? To answer that we'll need to go
+back to the formation of the Internet itself.
+
+#### The purpose of a VPN
+
+You see, the early Internet had only a handful of entities connected to it --
+connecting to the Internet was expensive, after all. Typically only banks,
+universities, and other large institutions could justify the cost.
+
+So when you connected your organization to the Internet and began receiving
+packets, it was clear which entity it was from based on its allocated IPv4
+address range. Since there were so few entities connected, it was clear who you
+communicated with. It was clear who to contact (and blame) in case any issues
+arose.
+
+But, as access to the Internet became cheaper, more types of entities could
+afford to connect. As more entities connected, the number of resources on the
+Internet grew, and its
+[value increased quadratically](https://en.wikipedia.org/wiki/Metcalfe%27s_law).
+Soon, all types of entities wanted to connect -- local governments, schools,
+small businesses. Internet Service Providers began offering connections to mere
+individuals. Eventually there were so many entities on the Internet that
+identifying who you were communicating with was no longer trivial. Since you
+couldn't easily know who you were talking to, you couldn't always trust them to
+behave.
+
+And thus, firewalls were born. Firewalls keep packets of information out from
+entities you don't wish to communicate with and let packets in from those you
+do.
+
+
+
+And this worked well for some time. However, as the Internet grew even larger, a
+problem arose: firewalls required you to know _in advance_ who you'd like to
+communicate with, adding them to your configuration, and likewise removing the
+ones you didn't. As you might imagine, it quickly became unwieldy to keep these
+configurations up to date.
+
+So a clever solution was developed: what if you could dynamically add and remove
+entities to the firewall configuration on the fly?
+
+And thus, stateful firewalls were born. I should pause here and clarify that
+stateful firewalls are sometimes confused with
+[Network Address Translation (NAT)](https://en.wikipedia.org/wiki/Network_address_translation),
+since they're often found on the same device. But there's an important
+distinction: A stateful firewall _remembers_ stuff it's seen in order to to
+update its configuration dynamically, whereas NAT can behave statically.
+
+Stateful firewalls exist in nearly every consumer router and datacenter gateway
+connected to the Internet today. There's a very high likelihood the Internet
+connection you're reading this from is behind one or several of them. They've
+been largely successful at serving their intended purpose.
+
+
+
+However, this post wouldn't be very interesting if we stopped there.
+
+You see, there's still one fundamental problem with stateful firewalls,
+particularly as it relates to remote access. For two-way communication to occur,
+one entity (namely the one "behind" the firewall) must always initiate. This
+means that entities outside the firewall can never communicate to those inside,
+_even if the outside entities are trusted_. To do that, you'd have to add a
+configuration rule to expect an outside entity to talk in, which means we're
+back to managing firewall configurations again.
+
+This is where VPNs come in. A VPN _disguises_ an outside entity as an inside
+one, thereby allowing communication by default.
+
+After the firewall authenticates the outside entity, they both agree to package
+up the information packets between each other so that the Internet routers in
+between forward them properly. This creates a kind of network within a network:
+the original packets with their network attributes are packaged into another
+packet with more network attributes, thus giving this technology its name:
+Virtual Private Network.
+
+So a VPN is just a technology that authenticates an outside, untrusted entity to
+a protected network. And WireGuard is the best VPN technology we have so far. As
+far as VPNs go, there's nothing faster, more secure, or more robust.
+
+#### The challenge with trust
+
+But there's a security risk with this arrangement: once the outsider is
+authenticated, all of the entities inside the firewall perimeter now trust its
+packets completely. What if an untrusted entity managed to obtain a VPN
+connection? One misconfiguration, stolen credential, or hijacked connection
+would result in a perimeter breach. Not good.
+
+The solution to this problem is aptly named
+[Zero Trust Architecture (ZTA)](https://en.wikipedia.org/wiki/Zero_trust_security_model).
+The idea with ZTA is to do away with using network zone (or perceived network
+zone in the case of a VPN) for determining whether to trust communication. All
+network zones are considered _untrusted_ by default. Suddenly the network
+perimeter we had before vanishes -- inside and outside entities are equally
+untrusted.
+
+Then how does an entity come to be trusted? We still authenticate them as usual,
+but there's a key difference: with ZTA, we authenticate entities each time the
+communication is requested, on the fly. Not once at the perimeter. And since the
+perimeter is gone, the protected entity itself (or a proxy) authenticates the
+untrusted entity. But wait, what happened to the firewall?
+
+This presents a dilemma. If we use a firewall to protect entities, they're
+shielded outside the perimeter, but left unprotected inside the perimeter. And
+if we choose ZTA, we only trust entities we've authenticated directly, but must
+expose ourselves to _all_ outside entities in order to do so.
+
+#### The solution
+
+Firezone solves this problem with a third entity, called an access broker, which
+works as follows:
+
+
+
+1. The protected entity is deployed behind a stateful firewall.
+1. The protected entity then initiates and maintains a bi-directional control
+ channel to the broker.
+1. Whenever an untrusted entity wants access to the protected resource, it
+ notifies the broker.
+1. If the broker determines access is granted, it notifies the protected entity
+ that the now-trusted entity is allowed in.
+1. The protected entity then initiates communication to the now-trusted entity
+ _directly_. The stateful firewall's configuration is dynamically updated,
+ allowing communication to happen from the now-trusted entity to the protected
+ entity.
+
+So we're able to both authenticate the untrusted entity at the time of request,
+yet also keep our protected entity behind a firewall to keep it invisible to the
+public Internet. In fast, _both_ entities can live behind a stateful firewall
+and the technique would still work -- the principles are the same.
+
+As it turns out, this approach is nothing new. It's how web browsers and VoIP
+systems have established peer to peer connections for low-latency audio and
+video chat for decades.
+
+Firezone 1.0 makes this process transparent, but also goes one step further by
+exposing granular controls to allow or deny access based on attributes like
+which group a user is a member of and so on.
+
+Of course if you wanted to use Firezone 1.0 like a traditional perimeter-based
+VPN and then transition to finer-grined access controls over time, you can do
+that as well. We understand the realities of legacy processes and systems, so we
+designed 1.0 to be flexible enough to suit the needs of both.
+
+And while we were at it, we decided to build a slew of new features for 1.0 as
+well, most notably a cloud-managed admin portal and native clients. Check our
+[product roadmap](/product/roadmap) for more details on what's coming in 1.0.
+
+#### Next steps
+
+To help ensure a bug-free experience for our users, we'll be rolling out 1.0 in
+phases, starting with an early access preview aiming to launch mid-Q3 of this
+year. If you're interesting in joining the early access program,
+[head here to fill out the form](/product/early-access) and we'll be in touch.
+
+Until then, feel free to [follow our roadmap](/product/roadmap) or
+[watch our GitHub repository](https://www.github.com/firezone/firezone) for
+updates. Comments welcome!
diff --git a/website/src/app/blog/layout.tsx b/website/src/app/blog/layout.tsx
index 6451e997f..6fe3d33e9 100644
--- a/website/src/app/blog/layout.tsx
+++ b/website/src/app/blog/layout.tsx
@@ -4,18 +4,27 @@ import Image from "next/image";
export default function Layout({ children }: { children: React.ReactNode }) {
return (
-
+
{children}
-
-
+
+
+
+ Firezone Newsletter
+
+
+ Sign up with your email to receive roadmap updates, how-tos, and
+ product announcements from the Firezone team.
+
+
+
);
diff --git a/website/src/app/blog/page.tsx b/website/src/app/blog/page.tsx
index a7fcd2d19..1cf3801c6 100644
--- a/website/src/app/blog/page.tsx
+++ b/website/src/app/blog/page.tsx
@@ -1,131 +1,73 @@
+import { Metadata } from "next";
import gravatar from "@/lib/gravatar";
import Link from "next/link";
import Image from "next/image";
-import { ArrowRightIcon } from "@heroicons/react/20/solid";
import NewsletterSignup from "@/components/NewsletterSignup";
+import SummaryCard from "@/components/Blog/SummaryCard";
+
+export const metadata: Metadata = {
+ title: "Blog • Firezone",
+ description: "Announcements, tutorials, and more from the Firezone team.",
+};
export default function Page() {
return (
-
-
+
+
-
- Firezone Blog
+
+ Blog
-
+
Announcements, tutorials, and more from the Firezone team.
-
-
-
-
-
- Announcement
-
- October 17, 2022
-
-
- Release 0.6.0
-
-
- Today, I'm excited to announce we've closed the{" "}
-
- first public issue{" "}
-
- on our GitHub repository, more than a year after it was originally
- opened: Containerization support! We're also releasing preliminary
- support for SAML 2.0 identity providers like Okta and OneLogin.
+
+
+
+ Firezone comes from humble roots.
-
-
-
-
- Jamil Bou Kheir
-
-
-
- Read more
-
-
-
-
-
-
-
-
- Announcement
-
- July 25, 2022
-
-
- Release 0.5.0
-
-
- As the first post on our new blog, we thought it'd be fitting to
- kick things off with a release announcement. So without further
- ado, we're excited to announce: Firezone{" "}
-
- 0.5.0 is here
-
- ! It's packed with new features, bug fixes, and other improvements
- — more on that below.
+
+ When we launched on Hacker News nearly two years ago, we never
+ envisioned Firezone to be more than a simple tool for managing
+ your WireGuard configurations.
-
-
-
-
- Jamil Bou Kheir
-
-
-
- Read more
-
-
-
-
+
+
+ Today, I'm excited to announce we've closed the first public issue
+ on our GitHub repository, more than a year after it was originally
+ opened: Containerization support! We're also releasing preliminary
+ support for SAML 2.0 identity providers like Okta and OneLogin.
+
+
+
+ As the first post on our new blog, we thought it'd be fitting to
+ kick things off with a release announcement. So without further ado,
+ we're excited to announce: Firezone 0.5.0 is here! It's packed with
+ new features, bug fixes, and other improvements — more on that
+ below.
+
diff --git a/website/src/app/docs/administer/backup/readme.mdx b/website/src/app/docs/administer/backup/readme.mdx
index 9a627ac10..9b87c32e9 100644
--- a/website/src/app/docs/administer/backup/readme.mdx
+++ b/website/src/app/docs/administer/backup/readme.mdx
@@ -7,10 +7,13 @@ import SupportOptions from "@/components/SupportOptions";
Firezone can be safely backed up and restored in a couple of minutes under most
circumstances.
-
- This guide is written for Firezone deployments using **Docker Engine** on
- **Linux** only.
-
+Docker Engine
+on Linux only.
+`}
+/>
Unless your hosting provider supports taking live VM snapshots, you'll need to
stop Firezone before backing it up. This ensures the Postgres data directory is
diff --git a/website/src/app/docs/administer/debug-logs/readme.mdx b/website/src/app/docs/administer/debug-logs/readme.mdx
index 15c6a0a0f..157e9255b 100644
--- a/website/src/app/docs/administer/debug-logs/readme.mdx
+++ b/website/src/app/docs/administer/debug-logs/readme.mdx
@@ -2,9 +2,12 @@ import Alert from "@/components/DocsAlert";
# Debug Logs
-
- This article is written for Docker based deployments of Firezone.
-
+
Docker deployments of Firezone consist of 3 running containers:
diff --git a/website/src/app/docs/administer/regen-keys/readme.mdx b/website/src/app/docs/administer/regen-keys/readme.mdx
index 94bc752f8..cbf1b50e6 100644
--- a/website/src/app/docs/administer/regen-keys/readme.mdx
+++ b/website/src/app/docs/administer/regen-keys/readme.mdx
@@ -11,17 +11,24 @@ do so using the same bootstrap scripts that were used when installing Firezone.
## Regenerate secrets
-
- Replacing the `DATABASE_ENCRYPTION_KEY` will render all encrypted data in the
- database useless. This **will** break your Firezone install unless you are
- starting with an empty database. You have been warned.
-
+DATABASE_ENCRYPTION_KEY will render all encrypted data in the
+database useless. This will break your Firezone install unless you are
+starting with an empty database. You have been warned.
+`}
+/>
-
- Replacing `GUARDIAN_SECRET_KEY`, `SECRET_KEY_BASE`, `LIVE_VIEW_SIGNING_SALT`,
- `COOKIE_SIGNING_SALT`, and `COOKIE_ENCRYPTION_SALT` will reset all browser
- sessions and REST API tokens.
-
+GUARDIAN_SECRET_KEY, SECRET_KEY_BASE,
+LIVE_VIEW_SIGNING_SALT,
+COOKIE_SIGNING_SALT, and COOKIE_ENCRYPTION_SALT
+will reset all browser sessions and REST API tokens.
+`}
+/>
Use the procedure below to regenerate secrets:
@@ -51,11 +58,14 @@ sudo firezone-ctl reconfigure
## Regenerate WireGuard private key
-
+
+`}
+/>
To regenerate WireGuard private key, simply move or rename the private key file.
Firezone will generate a new one on next start.
diff --git a/website/src/app/docs/administer/uninstall/readme.mdx b/website/src/app/docs/administer/uninstall/readme.mdx
index 3052bc6fb..d0cde3307 100644
--- a/website/src/app/docs/administer/uninstall/readme.mdx
+++ b/website/src/app/docs/administer/uninstall/readme.mdx
@@ -5,9 +5,12 @@ import Alert from "@/components/DocsAlert";
Firezone can be uninstalled using the steps below.
-
- This will irreversibly destroy ALL Firezone data and can't be undone.
-
+
diff --git a/website/src/app/docs/administer/upgrade/readme.mdx b/website/src/app/docs/administer/upgrade/readme.mdx
index 3923f44bd..f32947b76 100644
--- a/website/src/app/docs/administer/upgrade/readme.mdx
+++ b/website/src/app/docs/administer/upgrade/readme.mdx
@@ -7,11 +7,14 @@ import Image from "next/image";
Upgrading Firezone will pause all VPN sessions and temporarily bring down the
web UI.
-
- Automatic rollbacks are still under development. We recommend backing up
- relevant [files and folders](/docs/reference/file-and-directory-locations)
- before upgrading in case anything goes wrong.
-
+files and folders
+before upgrading in case anything goes wrong.
+`}
+/>
Follow the steps below to upgrade Firezone:
diff --git a/website/src/app/docs/authenticate/local-auth/readme.mdx b/website/src/app/docs/authenticate/local-auth/readme.mdx
index dd72f6211..5e51565db 100644
--- a/website/src/app/docs/authenticate/local-auth/readme.mdx
+++ b/website/src/app/docs/authenticate/local-auth/readme.mdx
@@ -7,14 +7,17 @@ the Firezone portal. Administrators can add users and assign their passwords on
the `/users` page. See [Add users](/docs/user-guides/add-users) for more
details.
-
- Although local authentication is quick and easy to get started with, you can
- limit attack surface by [disabling local
- authentication](#disabling-local-authentication) altogether. See our
- [OIDC](/docs/authenticate/oidc) or [SAML](/docs/authenticate/saml) guides for
- details. For production deployments it's usually a good idea to **disable
- local authentication** and enforce MFA through your identity provider.
-
+disabling local
+authentication altogether. See our
+OIDC or SAML
+ guides for details. For production deployments it's usually a good idea to disable
+local authentication and enforce MFA through your identity provider.
+`}
+/>
If you choose to keep Local authentication enabled, we recommend
[enabling TOTP-based MFA ](/docs/authenticate/multi-factor) for any accounts
diff --git a/website/src/app/docs/authenticate/readme.mdx b/website/src/app/docs/authenticate/readme.mdx
index d932d06c4..278fab04f 100644
--- a/website/src/app/docs/authenticate/readme.mdx
+++ b/website/src/app/docs/authenticate/readme.mdx
@@ -10,10 +10,13 @@ Firezone supports the following authentication methods:
1. [SSO authentication via OpenID Connect](/docs/authenticate/oidc)
1. [SSO authentication via SAML 2.0](/docs/authenticate/saml)
-
- If your Identity Provider doesn't work with the methods listed above, [contact
- us](/contact/sales) about a custom integration.
-
+contact us about a custom integration.
+`}
+/>
## Integrate an SSO provider
@@ -47,7 +50,8 @@ Config ID for that particular provider.
For example, the OIDC config below:
-
- This guide assumes you have completed the prerequisite steps (e.g. generate
- self-signed X.509 certificates) outlined
- [here](/docs/authenticate/saml#prerequisites).
-
+here.
+`}
+/>
Firezone supports Single Sign-On (SSO) using JumpCloud through the generic SAML
2.0 connector. This guide will walk you through how to configure the
@@ -37,7 +40,8 @@ the bottom-right.
Your JumpCloud configuration should now resemble the following:
-
- This guide assumes you have completed the prerequisite steps (e.g. generate
- self-signed X.509 certificates) outlined
- [here](/docs/authenticate/saml#prerequisites).
-
+here.
+`}
+/>
Firezone supports Single Sign-On (SSO) using Okta through the generic SAML 2.0
connector. This guide will walk you through how to configure the integration.
@@ -31,7 +34,8 @@ values during setup:
[Okta's documentation](https://help.okta.com/oie/en-us/Content/Topics/Apps/Apps_App_Integration_Wizard_SAML.htm)
contains additional details on the purpose of each configuration setting.
-
- This guide assumes you have completed the prerequisite steps (e.g. generate
- self-signed X.509 certificates) outlined
- [here](/docs/authenticate/saml#prerequisites).
-
+here.
+`}
+/>
Firezone supports Single Sign-On (SSO) using OneLogin through the generic SAML
2.0 connector. This guide will walk you through how to configure the
@@ -35,7 +38,8 @@ The following fields should be filled out on this page:
[OneLogin's docs](https://onelogin.service-now.com/support?id=kb_article&sys_id=912bb23edbde7810fe39dde7489619de&kb_category=93e869b0db185340d5505eea4b961934)
provide a good overview of each field's purpose.
-
-You're entering unsupported territory. This is not for the faint of
-heart and will require being able to figure out snags you may hit on your own.
+
-If you're very comfortable with your environment of choice, then read on to
-learn how to build Firezone from source.
-
-
-
-
-You will need to setup your own service management for Firezone (eg.
-`runit`, `systemd`, shell scripts). You will also need to install and configure
-your own database (eg. `postgres`) and reverse proxy (eg. `caddy`, `nginx`).
-
-Info about database configuration is
-[here](/docs/deploy/advanced/external-database/#configure-firezone-to-connect),
+here,
and info about configuring a reverse proxy is
-[here](/docs/deploy/advanced/reverse-proxy/#proxy-requirements).
-
-
+here.
+`}
+/>
## Prerequisites
-
- Check the `.tool-versions` file
- [here](https://github.com/firezone/firezone/blob/legacy/.tool-versions) for
- the versions we use for Erlang, Elixir, and Node. If your system supports it,
- you can install these using
- [asdf-vm](https://asdf-vm.com/guide/getting-started.html) using a similar
- `.tool-versions` of your own to match versions. Your system's package manager
- may have them as well.
-
+.tool-versions file
+here for
+the versions we use for Erlang, Elixir, and Node. If your system supports it,
+you can install these using
+asdf-vm using a similar
+.tool-versions of your own to match versions. Your system's package manager
+may have them as well.
+`}
+/>
**These must be available in the user's path that runs Firezone.**
@@ -90,9 +95,12 @@ up. Once that's done, you can use `firezone start` to start Firezone and run
it to log into Firezone from a web browser to start setting up your brand new
custom instance that you built by hand with a little bit of elbow grease :)
-
- As mentioned at the top, it's recommended to use some sort of service
- management to start and stop Firezone easily without having to manually do it
- using the `firezone` binary directly. But the choice is yours, since you're in
- control!
-
+firezone binary directly. But the choice is yours, since
+you're in control!
+`}
+/>
diff --git a/website/src/app/docs/deploy/advanced/external-database/readme.mdx b/website/src/app/docs/deploy/advanced/external-database/readme.mdx
index 8436c29d4..9f17e83da 100644
--- a/website/src/app/docs/deploy/advanced/external-database/readme.mdx
+++ b/website/src/app/docs/deploy/advanced/external-database/readme.mdx
@@ -17,12 +17,15 @@ database services like Amazon RDS. See the
[configuration ](#configure-firezone-to-connect) section below for more
information configuring Firezone with an external DB.
-
- Configuring Firezone to use an external database can be complicated and
- error-prone. We recommend using the bundled Postgres for Omnibus-based
- deployments or the official Postgres Docker image for Docker-based deployments
- if possible.
-
+
## Configure Firezone to Connect
@@ -48,11 +51,14 @@ the DB (fields in bold required):
For more information, see the
[environment variable reference ](/docs/reference/env-vars).
-
- The official `postgres` docker image can be configured by setting environment
- variables for the container. See the Postgres image
- [documentation](https://hub.docker.com/_/postgres) for more details.
-
+postgres docker image can be configured by setting environment
+variables for the container. See the Postgres image
+documentation for more details.
+`}
+/>
diff --git a/website/src/app/docs/deploy/advanced/reverse-proxy/readme.mdx b/website/src/app/docs/deploy/advanced/reverse-proxy/readme.mdx
index 290ebd2f3..45d3b6b4c 100644
--- a/website/src/app/docs/deploy/advanced/reverse-proxy/readme.mdx
+++ b/website/src/app/docs/deploy/advanced/reverse-proxy/readme.mdx
@@ -2,13 +2,16 @@ import Alert from "@/components/DocsAlert";
# Custom Reverse Proxy
-
- Using a custom reverse proxy is an advanced configuration. The default bundled
- Nginx proxy (Omnibus-based deployments) and Caddy (Docker-based deployments)
- is suitable for the vast majority of use cases and is recommended for most
- users. There are important security risks if the reverse proxy is not set up
- correctly.
-
+
## Introduction
@@ -33,24 +36,24 @@ reverse proxy.
[X-Forwarded-For header works](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For),
this is needed to parse the actual client's IP address to prevent IP spoofing.
-
-The `external_trusted_proxies` list automatically implicitly includes the
+external_trusted_proxies list automatically implicitly includes the
following private CIDR ranges, even if they're not specified in the
configuration file:
-
-- `127.0.0.0/8`
-- `10.0.0.0/8`
-- `172.16.0.0/12`
-- `192.168.0.0/16`
-- `::1/128`
-- `fc00::/7`
+
+
127.0.0.0/8
+
10.0.0.0/8
+
172.16.0.0/12
+
192.168.0.0/16
+
::1/128
+
fc00::/7
+
This means any web requests originating from these IPs are automatically ignored
-from the `X-Forwarded-For` headers. If you're accessing Firezone from any IPs in
-this range (as seen by the Firezone web app), be sure to add them to the
-`default['firezone']['phoenix']['clients']` configuration option instead.
-
-
+from the X-Forwarded-For headers. If you're accessing Firezone from
+any IPs in this range (as seen by the Firezone web app), be sure to add them to
+the default['firezone']['phoenix']['clients'] configuration option
+instead. `} />
Read more about the configuration options
[here](/docs/reference/configuration-file).
diff --git a/website/src/app/docs/deploy/docker/readme.mdx b/website/src/app/docs/deploy/docker/readme.mdx
index 72516be56..b7542bcdb 100644
--- a/website/src/app/docs/deploy/docker/readme.mdx
+++ b/website/src/app/docs/deploy/docker/readme.mdx
@@ -32,11 +32,14 @@ Docker offers a number of benefits over the old
- `443/tcp`: To access the web UI.
- `51820/udp`: VPN traffic listen port.
-
- Before deploying Firezone in **production**, you'll need a valid DNS record
- pointing to this instance. See [Prepare to
- Deploy](/docs/deploy/#prepare-to-deploy) if you haven't done this already.
-
+production, you'll need a valid DNS record
+pointing to this instance. See Prepare to
+Deploy if you haven't done this already.
+`}
+/>
## Step 2: Install server
@@ -155,10 +158,13 @@ on start.
## Step 5: Install client apps
-
- Firezone currently uses WireGuard's [open-source client
- apps](https://www.wireguard.com/install).
-
+
+open-source client apps.
+`}
+/>
Once successfully deployed, users and devices can be added to connect to the VPN
server:
diff --git a/website/src/app/docs/deploy/omnibus/readme.mdx b/website/src/app/docs/deploy/omnibus/readme.mdx
index 675ada405..5429ed8e6 100644
--- a/website/src/app/docs/deploy/omnibus/readme.mdx
+++ b/website/src/app/docs/deploy/omnibus/readme.mdx
@@ -4,14 +4,15 @@ import SupportOptions from "@/components/SupportOptions";
# Install Firezone with Omnibus
-
+Docker deployment guide to get started.
Read below to continue with an Omnibus-based deployment.
-
-
+`}
+/>
Firezone can be deployed on a server running a supported
[Linux distribution ](/docs/deploy/omnibus/supported-platforms) in a few minutes
@@ -29,18 +30,24 @@ to get started.
- `443/tcp`: To access the web UI.
- `51820/udp`: VPN traffic listen port.
-
- Before deploying Firezone in **production**, you'll need a valid DNS record
- pointing to this instance. See [Prepare to
- Deploy](/docs/deploy/#prepare-to-deploy) if you haven't done this already.
-
+production, you'll need a valid DNS
+record pointing to this instance. See
+Prepare to Deploy if you haven't done this already.
+`}
+/>
-
- Firezone modifies the kernel netfilter and routing tables. Other programs that
- modify the Linux routing table or firewall may interfere with Firezone’s
- operation. For help troubleshooting connectivity issues, see the
- [troubleshooting guide](/docs/administer/troubleshoot).
-
+troubleshooting guide.
+`}
+/>
## Step 2: Install server
diff --git a/website/src/app/docs/deploy/readme.mdx b/website/src/app/docs/deploy/readme.mdx
index 9c1f1074a..908657407 100644
--- a/website/src/app/docs/deploy/readme.mdx
+++ b/website/src/app/docs/deploy/readme.mdx
@@ -94,12 +94,13 @@ You have two options for deploying Firezone:
Docker is the easiest way to install, manage, and upgrade Firezone and is the
preferred method of deployment.
-
-
+scheduled for End-of-Life in 2024. As such,
support for Omnibus-based deployments will be removed starting with Firezone
0.8. To transition to Docker from Omnibus today, follow our
-[migration guide](/docs/administer/migrate).
-
-
+migration guide.
+`}
+/>
diff --git a/website/src/app/docs/deploy/security-considerations/readme.mdx b/website/src/app/docs/deploy/security-considerations/readme.mdx
index 6724a7e01..53da23881 100644
--- a/website/src/app/docs/deploy/security-considerations/readme.mdx
+++ b/website/src/app/docs/deploy/security-considerations/readme.mdx
@@ -46,11 +46,14 @@ authentication altogether by setting
deployments). Local authentication can also be disabled on the
`/settings/security` page.
-
- Ensure you've set up a working [OIDC](/docs/authenticate/oidc) or
- [SAML](/docs/authenticate/saml)-based authentication provider before disabling
- the local authentication method.
-
+OIDC
+or SAML-based authentication provider before disabling
+the local authentication method.
+`}
+/>
## Reporting security issues
diff --git a/website/src/app/docs/layout.tsx b/website/src/app/docs/layout.tsx
index 6d46dff9f..c936c10d2 100644
--- a/website/src/app/docs/layout.tsx
+++ b/website/src/app/docs/layout.tsx
@@ -6,7 +6,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
-
+
{children}
diff --git a/website/src/app/docs/reference/configuration-file/readme.mdx b/website/src/app/docs/reference/configuration-file/readme.mdx
index 8384980f5..3dc444c97 100644
--- a/website/src/app/docs/reference/configuration-file/readme.mdx
+++ b/website/src/app/docs/reference/configuration-file/readme.mdx
@@ -2,11 +2,14 @@ import Alert from "@/components/DocsAlert";
# Omnibus configuration options
-
+
+ Docker-based deployments visit the
+ Environment Variables page.
+ `}
+/>
To configure Omnibus-based deployments of Firezone:
diff --git a/website/src/app/docs/reference/rest-api/readme.mdx b/website/src/app/docs/reference/rest-api/readme.mdx
index 00f71373f..e6ee2df3c 100644
--- a/website/src/app/docs/reference/rest-api/readme.mdx
+++ b/website/src/app/docs/reference/rest-api/readme.mdx
@@ -20,7 +20,10 @@ its output to a file instead:
docker compose -f $HOME/.firezone/docker-compose.yml exec firezone bin/create-api-token > fz_token
```
-
- API tokens generated from the CLI are owned by the primary administrator
- specified by the `DEFAULT_ADMIN_EMAIL` environment variable.
-
+DEFAULT_ADMIN_EMAIL environment variable.
+`}
+/>
diff --git a/website/src/app/docs/reference/telemetry/readme.mdx b/website/src/app/docs/reference/telemetry/readme.mdx
index bc760df55..28c8ffba0 100644
--- a/website/src/app/docs/reference/telemetry/readme.mdx
+++ b/website/src/app/docs/reference/telemetry/readme.mdx
@@ -70,13 +70,16 @@ instance of Firezone to our telemetry server:
## How to disable telemetry
-
- We _rely_ on product analytics to make Firezone better for everyone. Leaving
- telemetry enabled is the **single most valuable contribution** you can make to
- Firezone’s development. That said, we understand some users have higher
- privacy or security requirements and would prefer to disable telemetry
- altogether. If that’s you, keep reading.
-
+rely on product analytics to make Firezone better for everyone. Leaving
+telemetry enabled is the single most valuable contribution you can make to
+Firezone’s development. That said, we understand some users have higher
+privacy or security requirements and would prefer to disable telemetry
+altogether. If that’s you, keep reading.
+`}
+/>
Telemetry is enabled by default. To completely disable product telemetry:
diff --git a/website/src/app/docs/user-guides/client-instructions/readme.mdx b/website/src/app/docs/user-guides/client-instructions/readme.mdx
index 403aa2b41..0ef339987 100644
--- a/website/src/app/docs/user-guides/client-instructions/readme.mdx
+++ b/website/src/app/docs/user-guides/client-instructions/readme.mdx
@@ -32,7 +32,8 @@ To self generate a device config file, visit the domain provided by your
Firezone administrator. This URL will be specific to your company (in this
example it is `https://firezone.example.com`)
-
+
ipv6.method: method "auto" is not supported for WireGuard
-```
-
-
+
+`}
+/>
### Step 1: Install the WireGuard tools
@@ -142,7 +148,8 @@ To self generate a device config file, visit the domain provided by your
Firezone administrator. This URL will be specific to your company (in this
example it is `https://firezone.example.com`)
-
+
nmcli connection modify [old name] connection.id [new name]
-```
-
-
+
+`}
+/>
### Step 4: Connect/disconnect
diff --git a/website/src/app/docs/user-guides/use-cases/split-tunnel/readme.mdx b/website/src/app/docs/user-guides/use-cases/split-tunnel/readme.mdx
index e3a62c1dc..8a265ccba 100644
--- a/website/src/app/docs/user-guides/use-cases/split-tunnel/readme.mdx
+++ b/website/src/app/docs/user-guides/use-cases/split-tunnel/readme.mdx
@@ -16,7 +16,8 @@ AllowedIPs can be set globally on the `/settings/default` page or individually
for each device during creation. Changes will only apply to new WireGuard tunnel
configurations generated by Firezone.
-
- When deciding where to route a packet, Firezone chooses the egress interface
- corresponding to the most specific route first.
-
+
## Step 2 (optional): Set the DNS server(s)
@@ -46,10 +50,13 @@ the `/settings/default` page to override this value.
For split tunneling, this may be desired if you run a DNS server that resolves
internal hosts to private IPs reachable via Firezone.
-
+
+ (recommended), ensure the DNS IPs are included in AllowedIPs.
+ `}
+/>
## Step 3: Regenerate the device configurations
diff --git a/website/src/app/not-found.tsx b/website/src/app/not-found.tsx
new file mode 100644
index 000000000..ea417d4bd
--- /dev/null
+++ b/website/src/app/not-found.tsx
@@ -0,0 +1,49 @@
+import Link from "next/link";
+
+export default function NotFound() {
+ return (
+
+
+
+
+ Page not found.
+
+
+ Sorry, but the page you were looking for cannot be found.
+
+
+ You can go{" "}
+
+ back to the home page
+
+ , the{" "}
+
+ blog home
+
+ , the{" "}
+
+ docs home
+
+ , or{" "}
+
+ contact us
+ {" "}
+ if you're still having trouble.
+
Firezone is an open-source remote access platform built on
WireGuard®, a modern VPN protocol that's 4-6x faster than OpenVPN.
Deploy on your infrastructure and start onboarding users in minutes.
-
+
@@ -58,11 +58,11 @@ export default function Page() {
@@ -129,20 +129,20 @@ export default function Page() {
-
-
+
+
Integrate any identity provider to enforce 2FA / MFA
-
-
+
+
Define user-scoped access rules
-
-
+
+
Manage access with a snappy admin dashboard
@@ -157,8 +157,8 @@ export default function Page() {
{/* Feature section 2 */}
-
-
+
+
Performance comparison of VPN solutions (Osswald et al.)
-
+
FAST AND LIGHTWEIGHT
@@ -188,8 +188,8 @@ export default function Page() {
-
-
+
+
-
-
+
+
Auditable and{" "}
-
-
+
+
-
+
RUN ANYWHERE
@@ -242,20 +242,20 @@ export default function Page() {
-
-
+
+
VPC, data center, or on-prem
-
-
+
+
Auto-renewing SSL certs from Let's Encrypt via ACME
-
-
+
+
Flexible and configurable
@@ -279,17 +279,17 @@ export default function Page() {
-
+
Integrate your identity provider to enforce 2FA / MFA
-
+
Only allow connections from authenticated users and automatically
disable access for employees who have left. Firezone integrates with
any OIDC and SAML 2.0 compatible identity provider for single
sign-on (SSO).
-
+
-
+
Who can benefit using Firezone?
-
+
Easy to deploy and manage for individuals and organizations alike.
Only allow connections from authenticated users and automatically
disable access for employees who have left. Firezone integrates with
@@ -357,8 +357,8 @@ export default function Page() {
-
-
+
+
Individuals and homelab users
@@ -368,26 +368,26 @@ export default function Page() {
-
-
+
+
Effortless to deploy on any infrastructure
-
-
+
+
Community plan supports unlimited devices
-
-
+
+
Lightweight with minimal resource usage
-
-
+
+
Open-source and self-hosted
@@ -401,8 +401,8 @@ export default function Page() {
-
-
+
+
Growing businesses
@@ -412,26 +412,26 @@ export default function Page() {
-
-
+
+
Integrate your identity provider
-
-
+
+
Quickly onboard/offboard employees{" "}
-
-
+
+
Segment access for contractors
-
-
+
+
High performance, reduce bottlenecks
@@ -445,8 +445,8 @@ export default function Page() {
-
-
+
+
Remote organizations
@@ -456,26 +456,26 @@ export default function Page() {
-
-
+
+
Require periodic re-authentication
-
-
+
+
Enforce MFA / 2FA
-
-
+
+
Self-serve user portal
-
-
+
+
Export logs to your observability platform
@@ -489,8 +489,8 @@ export default function Page() {
-
-
+
+
Technical IT teams
@@ -500,26 +500,26 @@ export default function Page() {
-
-
+
+
Built on WireGuard®
-
-
+
+
No vendor lock-in
-
-
+
+
Supports OIDC and SAML 2.0
-
-
+
+
Flexible and configurable
@@ -538,10 +538,10 @@ export default function Page() {
-
+
Ready to get started?
-
+
Set up secure access and start onboarding users in minutes.
Copy and paste the command below on any Docker-supported host.
@@ -552,7 +552,7 @@ export default function Page() {
codeString="bash <(curl -fsSL https://github.com/firezone/firezone/raw/legacy/scripts/install.sh)"
/>
diff --git a/website/src/app/product/early-access/page.tsx b/website/src/app/product/early-access/page.tsx
index 7afad388b..999a9a994 100644
--- a/website/src/app/product/early-access/page.tsx
+++ b/website/src/app/product/early-access/page.tsx
@@ -1,39 +1,40 @@
-import EarlyAccessForm from "@/components/EarlyAccessForm"
-import Link from "next/link"
-import Image from "next/image"
-import { Metadata } from "next"
-import { CheckCircleIcon } from "@heroicons/react/24/solid"
-import ActionLink from "@/components/ActionLink"
+import EarlyAccessForm from "@/components/EarlyAccessForm";
+import Link from "next/link";
+import Image from "next/image";
+import { Metadata } from "next";
+import { HiCheckCircle } from "react-icons/hi2";
+import ActionLink from "@/components/ActionLink";
export const metadata: Metadata = {
- title: "1.0 Early Access • Firezone",
- description: "Get early access to Firezone 1.0.",
-}
+ title: "Early Access • Firezone",
+ description:
+ "Register for early access to try new Firezone features before they're released.",
+};
export default function EarlyAccess() {
return (
-
+
-
-
-
-
+
+
+
+
Request early access
-
- Firezone 1.0 is coming!
- Sign up below to get early access.
-
- {/* FIXME: Remove when announced
-
+
+ Firezone 1.0 is coming!
+
+ Sign up below to get early access.
+
+
+
Read the announcement
- */}
@@ -61,25 +62,25 @@ export default function EarlyAccess() {
-
+
1.0 Timeline
-
+
1
-
+
-
+
Announcement
-
- )
+ );
}
diff --git a/website/src/app/product/newsletter/_page.tsx b/website/src/app/product/newsletter/_page.tsx
new file mode 100644
index 000000000..1fa1decb1
--- /dev/null
+++ b/website/src/app/product/newsletter/_page.tsx
@@ -0,0 +1,20 @@
+import NewsletterSignup from "@/components/NewsletterSignup";
+
+export default function Page() {
+ return (
+
+
+
+
+ Firezone Newsletter
+
+
+ Sign up with your email to receive roadmap updates, how-to guides,
+ and product announcements from the Firezone team.
+
+
+
+
+
+ );
+}
diff --git a/website/src/app/product/newsletter/page.tsx b/website/src/app/product/newsletter/page.tsx
index 7d7e1062b..189622358 100644
--- a/website/src/app/product/newsletter/page.tsx
+++ b/website/src/app/product/newsletter/page.tsx
@@ -1,20 +1,10 @@
-import NewsletterSignup from "@/components/NewsletterSignup";
+import { Metadata } from "next";
+import Page from "./_page";
-export default function Page() {
- return (
-
-
-
-
- Firezone Newsletter
-
-
- Sign up with your email to receive roadmap updates, how-tos, and
- product announcements from the Firezone team.
-
-
-
-
-
- );
-}
+export const metadata: Metadata = {
+ title: "Newsletter Signup • Firezone",
+ description:
+ "Sign up to receive roadmap updates, how-to guides, and product announcements from the Firezone team.",
+};
+
+export default Page;
diff --git a/website/src/app/product/roadmap/_page.tsx b/website/src/app/product/roadmap/_page.tsx
new file mode 100644
index 000000000..52a619a1d
--- /dev/null
+++ b/website/src/app/product/roadmap/_page.tsx
@@ -0,0 +1,370 @@
+"use client";
+
+import { Metadata } from "next";
+import Link from "next/link";
+import CommitMarquee from "@/components/CommitMarquee";
+import ActionLink from "@/components/ActionLink";
+import JoinOurCommunity from "@/components/JoinOurCommunity";
+import { HiMegaphone, HiBeaker } from "react-icons/hi2";
+import { XMLParser } from "fast-xml-parser";
+import { useState, useEffect } from "react";
+import GitHubHtml from "@/components/GitHubHtml";
+
+export const metadata: Metadata = {
+ title: "Product Roadmap • Firezone",
+ description: "Recently shipped, in progress, and future updates to Firezone.",
+};
+
+function RoadmapItem({
+ title,
+ href,
+ type,
+ date,
+ entryId,
+ children,
+}: {
+ href: string;
+ title: string;
+ type: string;
+ date?: string;
+ entryId?: string;
+ children: React.ReactNode;
+}) {
+ function badge(type: string) {
+ switch (type) {
+ case "release":
+ return (
+
+ {type}
+
+ );
+ case "1.0":
+ case "feature":
+ return (
+
+ {type}
+
+ );
+ case "refactor":
+ case "website":
+ return (
+
+ {type}
+
+ );
+ case "docs":
+ return (
+
+ {type}
+
+ );
+ }
+ }
+ return (
+
+ {/* TODO: Consider automating this with the GitHub API */}
+
+
+ Website / Docs
+
+
+
+ We've added a new{" "}
+
+ early access page
+ {" "}
+ to allow users to sign up to test new Firezone features and
+ releases.
+
+
+ A new{" "}
+
+ team page
+ {" "}
+ has been added to showcase the team behind Firezone.
+
+
+ Our website now sports a new color palette, font, and spacing
+ consistent with the Firezone product.
+
+
+
+
+
+
+ In progress
+
+
+ Things we're actively working on and plan to ship in the next
+ release or two.
+
+
+
+
+
+ Sign up for early access
+ {" "}
+ to test new Firezone features and releases.
+
+
+ Firezone 1.0
+
+
+
+ Automated user and group provisioning via just-in-time (JIT)
+ provisioning or SCIM 2.0.
+
+
+ More robust support for SAML 2.0, OIDC, and magic link
+ authentication methods.
+
+
+ Control access to protected Resources on a per-group basis.
+
+
+ Native Firezone client for macOS and iOS.
+
+
+ Automatic holepunching and STUN/TURN discovery for Clients and
+ Gateways.
+
+
+ Resolve DNS queries for protected Resources using Firezone's
+ built-in DNS while forwarding other queries to a configurable
+ upstream DNS server.
+
+
+ Native Firezone client for Android.
+
+
+ Support for High availability (HA) deployments of the Firezone
+ Gateway.
+
+
+
+
+
+
+ Under consideration
+
+
+ Things we're still investigating, architecting, or in the process
+ of prioritizing.{" "}
+ (feedback welcome!)
+
+
+
+ Native Firezone client for Windows.
+
+
+ Support for service accounts to allow automated access to
+ protected Resources. Requires headless clients for
+ Linux/Windows.
+
+
+ Native Firezone client for Linux.
+
+
+ Log admin portal configuration changes and end-user access to
+ protected Resources to achieve compliance with regulatory
+ requirements.
+
+
+
+
+
+
+
+
+
+ Want to stay updated on our progress?
+
+
+
+ Subscribe to our newsletter.
+
+
+
+
+
+
+ We're building Firezone{" "}
+ in the open.
+
+
+ We're open source because we believe better transparency leads
+ to better security. After all, how can you trust what you can't
+ see?
+
+
+
+ See what we're working on
+
+ .
+
+
+
+
+
+
+ );
+}
diff --git a/website/src/app/product/roadmap/page.tsx b/website/src/app/product/roadmap/page.tsx
index ed3cdcb0b..950b199fb 100644
--- a/website/src/app/product/roadmap/page.tsx
+++ b/website/src/app/product/roadmap/page.tsx
@@ -1,360 +1,9 @@
-"use client";
+import { Metadata } from "next";
+import Page from "./_page";
-import Link from "next/link";
-import CommitMarquee from "@/components/CommitMarquee";
-import ActionLink from "@/components/ActionLink";
-import JoinOurCommunity from "@/components/JoinOurCommunity";
-import { MegaphoneIcon, BeakerIcon } from "@heroicons/react/24/solid";
-import { XMLParser } from "fast-xml-parser";
-import { useState, useEffect } from "react";
-import GitHubHtml from "@/components/GitHubHtml";
+export const metadata: Metadata = {
+ title: "Product Roadmap • Firezone",
+ description: "See what we're working on and what's coming next.",
+};
-function RoadmapItem({
- title,
- href,
- type,
- date,
- entryId,
- children,
-}: {
- href: string;
- title: string;
- type: string;
- date?: string;
- entryId?: string;
- children: React.ReactNode;
-}) {
- function badge(type: string) {
- switch (type) {
- case "release":
- return (
-
- {type}
-
- );
- case "1.0":
- case "feature":
- return (
-
- {type}
-
- );
- case "refactor":
- case "website":
- return (
-
- {type}
-
- );
- case "docs":
- return (
-
- {type}
-
- );
- }
- }
- return (
-
- {/* TODO: Consider automating this with the GitHub API */}
-
-
- Website / Docs
-
-
-
- We've added a new{" "}
-
- early access page
- {" "}
- to allow users to sign up to test new Firezone features and
- releases.
-
-
- A new{" "}
-
- team page
- {" "}
- has been added to showcase the team behind Firezone.
-
-
- Our website now sports a new color palette, font, and spacing
- consistent with the Firezone product.
-
-
-
-
-
-
- In progress
-
-
- Things we're actively working on and plan to ship in the next
- release or two.
-
-
-
-
-
- Sign up for early access
- {" "}
- to test new Firezone features and releases.
-
-
- Firezone 1.0
-
-
-
- Automated user and group provisioning via just-in-time (JIT)
- provisioning or SCIM 2.0.
-
-
- More robust support for SAML 2.0, OIDC, and magic link
- authentication methods.
-
-
- Control access to protected Resources on a per-group basis.
-
-
- Native Firezone client for macOS and iOS.
-
-
- Automatic holepunching and STUN/TURN discovery for Clients and
- Gateways.
-
-
- Resolve DNS queries for protected Resources using Firezone's
- built-in DNS while forwarding other queries to a configurable
- upstream DNS server.
-
-
- Native Firezone client for Android.
-
-
- Support for High availability (HA) deployments of the Firezone
- Gateway.
-
-
-
-
-
-
- Under consideration
-
-
- Things we're still investigating, architecting, or in the process
- of prioritizing.{" "}
- (feedback welcome!)
-
-
-
- Native Firezone client for Windows.
-
-
- Support for service accounts to allow automated access to
- protected Resources. Requires headless clients for
- Linux/Windows.
-
-
- Native Firezone client for Linux.
-
-
- Log admin portal configuration changes and end-user access to
- protected Resources to achieve compliance with regulatory
- requirements.
-
-
-
-
-
-
-
- Want to stay updated on our progress?
-
-
- Subscribe to our newsletter.
-
-
-
-
-
- We're building Firezone{" "}
- in the open.
-
-
- We're open source because we believe better transparency leads
- to better security. After all, how can you trust what you can't
- see?
-
diff --git a/website/src/components/EarlyAccessForm/index.tsx b/website/src/components/EarlyAccessForm/index.tsx
index 94064d891..6cb85fdb9 100644
--- a/website/src/components/EarlyAccessForm/index.tsx
+++ b/website/src/components/EarlyAccessForm/index.tsx
@@ -3,21 +3,21 @@ import Link from "next/link";
export default function EarlyAccessForm() {
return (
-
+
-
+
FAQ
-
+
Why sign up for early access?
Be among the first to try Firezone 1.0
-
Shape the product roadmap with prioritized feedback
+
Accelerate the roadmap with prioritized feedback
Dedicated Slack channel for onboarding and support
Free unlimited usage during the beta period
-
+
What's new in 1.0?
@@ -32,6 +32,15 @@ export default function EarlyAccessForm() {
Automatic failover, load balancing
*/}
+
+ How much will it cost?
+
+
+ We're still working out pricing details for the 1.0 release and will
+ launch an updated pricing page when we have more to share. Our goal is
+ to price Firezone competitively among other products in the space with
+ a cost that scales predictably according to the value it provides.
+