No files matched your search
@@ -146,3 +146,5 @@ To debug code, and to see changes in real time, it is often useful to have a loc
|
||||
```sh
|
||||
http://localhost:8082/
|
||||
```
|
||||
|
||||
For more information on Supabase Studio, see the [Supabase Studio readme](./studio/README.md).
|
||||
@@ -13,4 +13,8 @@ services:
|
||||
- 5555:8080
|
||||
db:
|
||||
volumes:
|
||||
- /var/lib/postgresql/data
|
||||
- ./dev/data.sql:/docker-entrypoint-initdb.d/data.sql
|
||||
storage:
|
||||
volumes:
|
||||
- /var/lib/storage
|
||||
@@ -154,5 +154,5 @@ services:
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
volumes:
|
||||
- /var/lib/postgresql/data
|
||||
- ./volumes/db/data:/var/lib/postgresql/data
|
||||
- ./volumes/db/init:/docker-entrypoint-initdb.d
|
||||
@@ -14,7 +14,7 @@
|
||||
"@supabase/supabase-js": "^1.11.15",
|
||||
"@supabase/ui": "^0.26.1",
|
||||
"@tailwindcss/typography": "^0.4.0",
|
||||
"next": "10.2.2",
|
||||
"next": "11.1.3",
|
||||
"react": "17.0.2",
|
||||
"react-dom": "17.0.2"
|
||||
},
|
||||
|
||||
@@ -9,11 +9,21 @@
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.10.4"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.14.5":
|
||||
version "7.14.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
|
||||
integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.14.0":
|
||||
version "7.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288"
|
||||
integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.14.9":
|
||||
version "7.15.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
|
||||
integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
|
||||
|
||||
"@babel/highlight@^7.10.4":
|
||||
version "7.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf"
|
||||
@@ -23,20 +33,26 @@
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/runtime@7.12.5":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
||||
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
|
||||
"@babel/plugin-syntax-jsx@7.14.5":
|
||||
version "7.14.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201"
|
||||
integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
|
||||
"@babel/runtime@7.15.3":
|
||||
version "7.15.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b"
|
||||
integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/types@7.8.3":
|
||||
version "7.8.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c"
|
||||
integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==
|
||||
"@babel/types@7.15.0":
|
||||
version "7.15.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd"
|
||||
integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==
|
||||
dependencies:
|
||||
esutils "^2.0.2"
|
||||
lodash "^4.17.13"
|
||||
"@babel/helper-validator-identifier" "^7.14.9"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@fullhuman/postcss-purgecss@^3.1.3":
|
||||
@@ -76,20 +92,25 @@
|
||||
resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-1.0.1.tgz#66d25f6441920bd5c2146ea27fd33995885452dd"
|
||||
integrity sha512-uikw2gKCmqnvjVxitecWfFLMOKyL9BTFcU4VM3hHj9OMwpkCr5Ke+MRMyY2/aQVmsYs4VTq7NCFX05MYwAHi3g==
|
||||
|
||||
"@next/env@10.2.2":
|
||||
version "10.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-10.2.2.tgz#cb61f6c29f349815108184c2f1926ada65458e28"
|
||||
integrity sha512-m0xOpl4F9z7R7Yt2OtJoo6ZUsFPdx+kuvZeoctH7T6lO66DmZL3W6MQDxso/ArkH8VOlDPZgeQVVBPf+I7wflA==
|
||||
"@napi-rs/triples@^1.0.3":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.1.0.tgz#88c35b72e79a20b79bb4c9b3e2817241a1c9f4f9"
|
||||
integrity sha512-XQr74QaLeMiqhStEhLn1im9EOMnkypp7MZOwQhGzqp2Weu5eQJbpPxWxixxlYRKWPOmJjsk6qYfYH9kq43yc2w==
|
||||
|
||||
"@next/polyfill-module@10.2.2":
|
||||
version "10.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.2.2.tgz#48d108dd562ed021dd23510c0ffe96badf5f9c04"
|
||||
integrity sha512-0t5Hw1Dr18TWP65qAnakRa8+jza6SAFOz0b2v67s5AVquAwXXlclR4SfUy3ahrRtjCqlbLEE/oFIzCGbyMYfVA==
|
||||
"@next/env@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/env/-/env-11.1.3.tgz#dc698e00259242012955e43a40788fcf21ba9e37"
|
||||
integrity sha512-5+vaeooJuWmICSlmVaAC8KG3O8hwKasACVfkHj58xQuCB5SW0TKW3hWxgxkBuefMBn1nM0yEVPKokXCsYjBtng==
|
||||
|
||||
"@next/react-dev-overlay@10.2.2":
|
||||
version "10.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.2.2.tgz#88fb5013d3df70bd37b854234c41d884e108a149"
|
||||
integrity sha512-uPslFPWvvZ8AdadGdK2/834UnJy6F+7071/ere6QpN88Ngzqx9lDIhjslEeFLRtpyBst4s1YUdbm69btVPdE5w==
|
||||
"@next/polyfill-module@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.3.tgz#95163973fe19f1827da32703d1fcb8198fb2c79a"
|
||||
integrity sha512-7yr9cr4a0SrBoVE8psxXWK1wTFc8UzsY8Wc2cWGL7qA0hgtqACHaXC47M1ByJB410hFZenGrpE+KFaT1unQMyw==
|
||||
|
||||
"@next/react-dev-overlay@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.3.tgz#5d08336931e48ebdb07d82b566223d0ee5941d2a"
|
||||
integrity sha512-zIwtMliSUR+IKl917ToFNB+0fD7bI5kYMdjHU/UEKpfIXAZPnXRHHISCvPDsczlr+bRsbjlUFW1CsNiuFedeuQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "7.12.11"
|
||||
anser "1.4.9"
|
||||
@@ -103,10 +124,37 @@
|
||||
stacktrace-parser "0.1.10"
|
||||
strip-ansi "6.0.0"
|
||||
|
||||
"@next/react-refresh-utils@10.2.2":
|
||||
version "10.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.2.2.tgz#69dd150e3656aebe63fc828916105f1472810488"
|
||||
integrity sha512-OL7r0iz+SiE9SMWcxZocUtEAHv0/TlBWxIE3KjjO1vWSU1r0gMrE2l2RxHfMLIPsl6CjAkcPxoaXlosFsJ2S5w==
|
||||
"@next/react-refresh-utils@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.3.tgz#fc2c1a4f2403db1a0179d31caa0a4cc811b8ab58"
|
||||
integrity sha512-144kD8q2nChw67V3AJJlPQ6NUJVFczyn10bhTynn9o2rY5DEnkzuBipcyMuQl2DqfxMkV7sn+yOCOYbrLCk9zg==
|
||||
|
||||
"@next/swc-darwin-arm64@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.3.tgz#062eb7871048fdb313304e42ace5f91402dbc39f"
|
||||
integrity sha512-TwP4krjhs+uU9pesDYCShEXZrLSbJr78p12e7XnLBBaNf20SgWLlVmQUT9gX9KbWan5V0sUbJfmcS8MRNHgYuA==
|
||||
|
||||
"@next/swc-darwin-x64@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.3.tgz#8bd515768d02e4c1e0cd80d33f3f29456ee890ee"
|
||||
integrity sha512-ZSWmkg/PxccHFNUSeBdrfaH8KwSkoeUtewXKvuYYt7Ph0yRsbqSyNIvhUezDua96lApiXXq6EL2d1THfeWomvw==
|
||||
|
||||
"@next/swc-linux-x64-gnu@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.3.tgz#40030577e6ee272afb0080b45468bea73208f46d"
|
||||
integrity sha512-PrTBN0iZudAuj4jSbtXcdBdmfpaDCPIneG4Oms4zcs93KwMgLhivYW082Mvlgx9QVEiRm7+RkFpIVtG/i7JitA==
|
||||
|
||||
"@next/swc-win32-x64-msvc@11.1.3":
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.3.tgz#2951cbc127f6ea57032a241fb94439cddb5d2482"
|
||||
integrity sha512-mRwbscVjRoHk+tDY7XbkT5d9FCwujFIQJpGp0XNb1i5OHCSDO8WW/C9cLEWS4LxKRbIZlTLYg1MTXqLQkvva8w==
|
||||
|
||||
"@node-rs/helper@1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c"
|
||||
integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==
|
||||
dependencies:
|
||||
"@napi-rs/triples" "^1.0.3"
|
||||
|
||||
"@nodelib/fs.scandir@2.1.4":
|
||||
version "2.1.4"
|
||||
@@ -129,18 +177,6 @@
|
||||
"@nodelib/fs.scandir" "2.1.4"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@opentelemetry/api@0.14.0":
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae"
|
||||
integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ==
|
||||
dependencies:
|
||||
"@opentelemetry/context-base" "^0.14.0"
|
||||
|
||||
"@opentelemetry/context-base@^0.14.0":
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001"
|
||||
integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw==
|
||||
|
||||
"@supabase/gotrue-js@^1.15.1":
|
||||
version "1.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@supabase/gotrue-js/-/gotrue-js-1.15.4.tgz#a21ec6aaac18af7b50242d0d358297960a144c52"
|
||||
@@ -329,11 +365,6 @@ available-typed-arrays@^1.0.2:
|
||||
dependencies:
|
||||
array.prototype.filter "^1.0.0"
|
||||
|
||||
babel-plugin-syntax-jsx@6.18.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
|
||||
integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
@@ -718,19 +749,19 @@ cssesc@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||
|
||||
cssnano-preset-simple@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-2.0.0.tgz#b55e72cb970713f425560a0e141b0335249e2f96"
|
||||
integrity sha512-HkufSLkaBJbKBFx/7aj5HmCK9Ni/JedRQm0mT2qBzMG/dEuJOLnMt2lK6K1rwOOyV4j9aSY+knbW9WoS7BYpzg==
|
||||
cssnano-preset-simple@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz#e95d0012699ca2c741306e9a3b8eeb495a348dbe"
|
||||
integrity sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001202"
|
||||
|
||||
cssnano-simple@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-2.0.0.tgz#930d9dcd8ba105c5a62ce719cb00854da58b5c05"
|
||||
integrity sha512-0G3TXaFxlh/szPEG/o3VcmCwl0N3E60XNb9YZZijew5eIs6fLjJuOPxQd9yEBaX2p/YfJtt49i4vYi38iH6/6w==
|
||||
cssnano-simple@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-3.0.0.tgz#a4b8ccdef4c7084af97e19bc5b93b4ecf211e90f"
|
||||
integrity sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==
|
||||
dependencies:
|
||||
cssnano-preset-simple "^2.0.0"
|
||||
cssnano-preset-simple "^3.0.0"
|
||||
|
||||
d@1, d@^1.0.1:
|
||||
version "1.0.1"
|
||||
@@ -922,11 +953,6 @@ escape-string-regexp@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
||||
|
||||
etag@1.8.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
@@ -1188,6 +1214,13 @@ ieee754@^1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
image-size@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750"
|
||||
integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==
|
||||
dependencies:
|
||||
queue "6.0.2"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
@@ -1438,7 +1471,7 @@ lodash.uniq@^4.5.0:
|
||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
lodash@^4.17.13, lodash@^4.17.20, lodash@^4.17.21:
|
||||
lodash@^4.17.20, lodash@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
@@ -1524,7 +1557,7 @@ ms@2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
||||
|
||||
nanoid@^3.1.22, nanoid@^3.1.23:
|
||||
nanoid@^3.1.23:
|
||||
version "3.1.23"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
|
||||
integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
|
||||
@@ -1541,18 +1574,18 @@ next-tick@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
||||
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
||||
|
||||
next@10.2.2:
|
||||
version "10.2.2"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-10.2.2.tgz#aadcc526e420282b4a735b0595041195d748a91d"
|
||||
integrity sha512-HPGSLrflWPvf3zEZSIk/uj0CZ+YYrpZwZS0PFAgXbEwb894iRuAPzglagqlzcCh7lg12RBEaKNIxhrVa5xgjtQ==
|
||||
next@11.1.3:
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/next/-/next-11.1.3.tgz#0226b283cb9890e446aea759db8a867de2b279ef"
|
||||
integrity sha512-ud/gKmnKQ8wtHC+pd1ZiqPRa7DdgulPkAk94MbpsspfNliwZkYs9SIYWhlLSyg+c661LzdUI2nZshvrtggSYWA==
|
||||
dependencies:
|
||||
"@babel/runtime" "7.12.5"
|
||||
"@babel/runtime" "7.15.3"
|
||||
"@hapi/accept" "5.0.2"
|
||||
"@next/env" "10.2.2"
|
||||
"@next/polyfill-module" "10.2.2"
|
||||
"@next/react-dev-overlay" "10.2.2"
|
||||
"@next/react-refresh-utils" "10.2.2"
|
||||
"@opentelemetry/api" "0.14.0"
|
||||
"@next/env" "11.1.3"
|
||||
"@next/polyfill-module" "11.1.3"
|
||||
"@next/react-dev-overlay" "11.1.3"
|
||||
"@next/react-refresh-utils" "11.1.3"
|
||||
"@node-rs/helper" "1.2.1"
|
||||
assert "2.0.0"
|
||||
ast-types "0.13.2"
|
||||
browserify-zlib "0.2.0"
|
||||
@@ -1563,13 +1596,14 @@ next@10.2.2:
|
||||
chokidar "3.5.1"
|
||||
constants-browserify "1.0.0"
|
||||
crypto-browserify "3.12.0"
|
||||
cssnano-simple "2.0.0"
|
||||
cssnano-simple "3.0.0"
|
||||
domain-browser "4.19.0"
|
||||
encoding "0.1.13"
|
||||
etag "1.8.1"
|
||||
find-cache-dir "3.3.1"
|
||||
get-orientation "1.1.2"
|
||||
https-browserify "1.0.0"
|
||||
image-size "1.0.0"
|
||||
jest-worker "27.0.0-next.5"
|
||||
native-url "0.3.4"
|
||||
node-fetch "2.6.1"
|
||||
@@ -1579,23 +1613,27 @@ next@10.2.2:
|
||||
p-limit "3.1.0"
|
||||
path-browserify "1.0.1"
|
||||
pnp-webpack-plugin "1.6.4"
|
||||
postcss "8.2.13"
|
||||
postcss "8.2.15"
|
||||
process "0.11.10"
|
||||
prop-types "15.7.2"
|
||||
querystring-es3 "0.2.1"
|
||||
raw-body "2.4.1"
|
||||
react-is "16.13.1"
|
||||
react-is "17.0.2"
|
||||
react-refresh "0.8.3"
|
||||
stream-browserify "3.0.0"
|
||||
stream-http "3.1.1"
|
||||
string_decoder "1.3.0"
|
||||
styled-jsx "3.3.2"
|
||||
styled-jsx "4.0.1"
|
||||
timers-browserify "2.0.12"
|
||||
tty-browserify "0.0.1"
|
||||
use-subscription "1.5.1"
|
||||
util "0.12.3"
|
||||
util "0.12.4"
|
||||
vm-browserify "1.1.2"
|
||||
watchpack "2.1.1"
|
||||
optionalDependencies:
|
||||
"@next/swc-darwin-arm64" "11.1.3"
|
||||
"@next/swc-darwin-x64" "11.1.3"
|
||||
"@next/swc-linux-x64-gnu" "11.1.3"
|
||||
"@next/swc-win32-x64-msvc" "11.1.3"
|
||||
|
||||
node-emoji@^1.8.1:
|
||||
version "1.10.0"
|
||||
@@ -1870,13 +1908,13 @@ postcss-value-parser@^4.1.0:
|
||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
|
||||
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
||||
|
||||
postcss@8.2.13:
|
||||
version "8.2.13"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f"
|
||||
integrity sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ==
|
||||
postcss@8.2.15:
|
||||
version "8.2.15"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65"
|
||||
integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==
|
||||
dependencies:
|
||||
colorette "^1.2.2"
|
||||
nanoid "^3.1.22"
|
||||
nanoid "^3.1.23"
|
||||
source-map "^0.6.1"
|
||||
|
||||
postcss@^6.0.9:
|
||||
@@ -1917,7 +1955,7 @@ process@0.11.10, process@^0.11.10:
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
||||
|
||||
prop-types@15.7.2, prop-types@^15.7.2:
|
||||
prop-types@^15.7.2:
|
||||
version "15.7.2"
|
||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
|
||||
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
|
||||
@@ -1983,6 +2021,13 @@ queue-microtask@^1.2.2:
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
||||
|
||||
queue@6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65"
|
||||
integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==
|
||||
dependencies:
|
||||
inherits "~2.0.3"
|
||||
|
||||
quick-lru@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
|
||||
@@ -2022,7 +2067,12 @@ react-dom@17.0.2:
|
||||
object-assign "^4.1.1"
|
||||
scheduler "^0.20.2"
|
||||
|
||||
react-is@16.13.1, react-is@^16.8.1:
|
||||
react-is@17.0.2:
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
|
||||
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
|
||||
|
||||
react-is@^16.8.1:
|
||||
version "16.13.1"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
@@ -2288,13 +2338,13 @@ strip-ansi@6.0.0:
|
||||
dependencies:
|
||||
ansi-regex "^5.0.0"
|
||||
|
||||
styled-jsx@3.3.2:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018"
|
||||
integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g==
|
||||
styled-jsx@4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.1.tgz#ae3f716eacc0792f7050389de88add6d5245b9e9"
|
||||
integrity sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==
|
||||
dependencies:
|
||||
"@babel/types" "7.8.3"
|
||||
babel-plugin-syntax-jsx "6.18.0"
|
||||
"@babel/plugin-syntax-jsx" "7.14.5"
|
||||
"@babel/types" "7.15.0"
|
||||
convert-source-map "1.7.0"
|
||||
loader-utils "1.2.3"
|
||||
source-map "0.7.3"
|
||||
@@ -2493,10 +2543,10 @@ util@0.10.3:
|
||||
dependencies:
|
||||
inherits "2.0.1"
|
||||
|
||||
util@0.12.3, util@^0.12.0:
|
||||
version "0.12.3"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888"
|
||||
integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==
|
||||
util@0.12.4, util@^0.12.0:
|
||||
version "0.12.4"
|
||||
resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253"
|
||||
integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
is-arguments "^1.0.4"
|
||||
|
||||
@@ -2,15 +2,32 @@ import Image from 'next/image'
|
||||
import Link from 'next/link'
|
||||
import Head from 'next/head'
|
||||
import { observer } from 'mobx-react-lite'
|
||||
import { Button, Typography } from '@supabase/ui'
|
||||
import { Button, IconGitHub, Typography } from '@supabase/ui'
|
||||
|
||||
import { API_URL } from 'lib/constants'
|
||||
import { useStore } from 'hooks'
|
||||
import { auth, GOTRUE_ENABLED } from 'lib/gotrue'
|
||||
|
||||
const Landing = () => {
|
||||
const { ui } = useStore()
|
||||
const { theme } = ui
|
||||
|
||||
async function handleGithubSignIn() {
|
||||
try {
|
||||
const { error } = await auth.signIn(
|
||||
{
|
||||
provider: 'github',
|
||||
},
|
||||
{
|
||||
redirectTo: process.env.NEXT_PUBLIC_SITE_URL,
|
||||
}
|
||||
)
|
||||
if (error) throw error
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="z-10 relative h-screen flex flex-col">
|
||||
<Head>
|
||||
@@ -38,7 +55,13 @@ const Landing = () => {
|
||||
type="success"
|
||||
className="ml-8 font-medium hover:text-gray-300 focus:outline-none focus:text-gray-300 transition duration-150 ease-in-out"
|
||||
>
|
||||
<Link href={`${API_URL}/login`}>Sign In</Link>
|
||||
{GOTRUE_ENABLED ? (
|
||||
<Button onClick={handleGithubSignIn} icon={<IconGitHub />}>
|
||||
Sign In With Github
|
||||
</Button>
|
||||
) : (
|
||||
<Link href={`${API_URL}/login`}>Sign In</Link>
|
||||
)}
|
||||
</Typography.Text>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -55,9 +78,15 @@ const Landing = () => {
|
||||
</p>
|
||||
</Typography.Text>
|
||||
<div className="mt-5 sm:mt-8 sm:flex sm:justify-center space-x-3">
|
||||
<Link href={`${API_URL}/login`}>
|
||||
<Button size="large">Sign In</Button>
|
||||
</Link>
|
||||
{GOTRUE_ENABLED ? (
|
||||
<Button onClick={handleGithubSignIn} size="large" icon={<IconGitHub />}>
|
||||
Sign In With Github
|
||||
</Button>
|
||||
) : (
|
||||
<Link href={`${API_URL}/login`}>
|
||||
<Button size="large">Sign In</Button>
|
||||
</Link>
|
||||
)}
|
||||
<Link href="https://supabase.com/docs">
|
||||
<Button size="large" type="default">
|
||||
Docs
|
||||
|
||||
@@ -46,7 +46,7 @@ const ProjectUsage: FC<Props> = ({ project }) => {
|
||||
<PanelHeader
|
||||
icon={<IconDatabase size="small" />}
|
||||
title="Database"
|
||||
href={`/project/${ref}/editor/table`}
|
||||
href={`/project/${ref}/editor`}
|
||||
/>
|
||||
<ChartHandler
|
||||
startDate={startDate}
|
||||
|
||||
@@ -49,13 +49,13 @@ const DrilldownPane: FC<Props> = ({ pane, jsonData, activeKey, onSelectKey = ()
|
||||
<div
|
||||
key={key}
|
||||
className={`
|
||||
${key === activeKey ? 'bg-gray-400' : ''}
|
||||
${key === activeKey ? 'bg-gray-100 dark:bg-gray-400' : ''}
|
||||
group flex items-center justify-between
|
||||
cursor-pointer py-2 px-5 hover:bg-gray-500
|
||||
cursor-pointer py-2 px-5 hover:bg-gray-100 dark:hover:bg-gray-500
|
||||
`}
|
||||
onClick={() => onSelectKey(key, pane)}
|
||||
>
|
||||
<Typography.Text small className="font-mono !text-blue-300">
|
||||
<Typography.Text small className="font-mono !text-blue-700 dark:!text-blue-300">
|
||||
{key}
|
||||
</Typography.Text>
|
||||
<div className={`${key === activeKey ? 'block' : 'hidden'} group-hover:block`}>
|
||||
@@ -67,13 +67,13 @@ const DrilldownPane: FC<Props> = ({ pane, jsonData, activeKey, onSelectKey = ()
|
||||
))}
|
||||
{keysWithoutChildren.map((key: string) => (
|
||||
<div key={key} className="py-2 px-5 flex space-x-2">
|
||||
<Typography.Text small className="font-mono !text-blue-300">
|
||||
<Typography.Text small className="font-mono !text-blue-700 dark:!text-blue-300">
|
||||
{key}:
|
||||
</Typography.Text>
|
||||
<Typography.Text
|
||||
small
|
||||
className={`font-mono break-all ${
|
||||
typeof jsonData[key] !== 'string' ? '!text-green-400' : '!text-yellow-500'
|
||||
typeof jsonData[key] !== 'string' ? '!text-green-700 dark:!text-green-400' : '!text-yellow-700 dark:!text-yellow-500'
|
||||
}`}
|
||||
>
|
||||
{isNull(jsonData[key])
|
||||
|
||||
@@ -5,6 +5,7 @@ import { observer } from 'mobx-react-lite'
|
||||
import { API_URL, IS_PLATFORM } from 'lib/constants'
|
||||
import { useStore } from 'hooks'
|
||||
import WithSidebar from './WithSidebar'
|
||||
import { auth, GOTRUE_ENABLED } from 'lib/gotrue'
|
||||
|
||||
/**
|
||||
* layout for dashboard homepage, account and org settings
|
||||
@@ -19,6 +20,22 @@ const AccountLayout = ({ children, title, breadcrumbs }: any) => {
|
||||
|
||||
const { app, ui } = useStore()
|
||||
|
||||
const onClickLogout = async () => {
|
||||
await auth.signOut()
|
||||
router.reload()
|
||||
}
|
||||
|
||||
let baseLogoutLink = {
|
||||
icon: '/icons/feather/power.svg',
|
||||
label: 'Logout',
|
||||
href: `${API_URL}/logout`,
|
||||
key: `${API_URL}/logout`,
|
||||
}
|
||||
|
||||
let logoutLink = GOTRUE_ENABLED
|
||||
? { ...baseLogoutLink, href: undefined, onClick: onClickLogout }
|
||||
: baseLogoutLink
|
||||
|
||||
const organizationsLinks = app.organizations
|
||||
.list()
|
||||
.map((x: any) => ({
|
||||
@@ -36,7 +53,6 @@ const AccountLayout = ({ children, title, breadcrumbs }: any) => {
|
||||
isActive: router.pathname == '/',
|
||||
label: 'All projects',
|
||||
href: '/',
|
||||
as: `/`,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -60,12 +76,7 @@ const AccountLayout = ({ children, title, breadcrumbs }: any) => {
|
||||
href: `/account/me`,
|
||||
key: `/account/me`,
|
||||
},
|
||||
{
|
||||
icon: '/img/power.svg',
|
||||
label: 'Logout',
|
||||
href: `${API_URL}/logout`,
|
||||
key: `${API_URL}/logout`,
|
||||
},
|
||||
logoutLink,
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import Link from 'next/link'
|
||||
import { CSSProperties, FC, ReactNode } from 'react'
|
||||
import { Menu, Typography, IconArrowUpRight, Badge } from '@supabase/ui'
|
||||
import { isUndefined } from 'lodash'
|
||||
import LayoutHeader from '../ProjectLayout/LayoutHeader'
|
||||
|
||||
interface Props {
|
||||
@@ -142,7 +143,24 @@ const LinksWithoutHeaders: FC<any> = ({ links, subitems, subitemsParentKey }) =>
|
||||
)
|
||||
}
|
||||
|
||||
const SidebarItem: FC<any> = ({ id, label, as, href, isActive, isSubitem, onClick, external }) => {
|
||||
const SidebarItem: FC<any> = ({ id, label, href, isActive, isSubitem, onClick, external }) => {
|
||||
if (isUndefined(href)) {
|
||||
return (
|
||||
<Menu.Item
|
||||
rounded
|
||||
key={id}
|
||||
style={{
|
||||
marginLeft: isSubitem && '.5rem',
|
||||
}}
|
||||
active={isActive ? true : false}
|
||||
onClick={onClick || (() => {})}
|
||||
icon={external && <IconArrowUpRight size={'tiny'} />}
|
||||
>
|
||||
{isSubitem ? <Typography.Text small>{label}</Typography.Text> : label}
|
||||
</Menu.Item>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<Link href={href || ''}>
|
||||
<a className="block" target={external ? '_blank' : '_self'}>
|
||||
|
||||
@@ -4,6 +4,8 @@ import { readOnly } from './supabaseClient'
|
||||
import { SupaResponse, User } from 'types'
|
||||
import { auth0 } from './auth0'
|
||||
import { flattenNamespaceOnUser } from './apiHelpers'
|
||||
import { config } from 'process'
|
||||
import { getAuth0Id, getAuthUser, getIdentity, GOTRUE_ENABLED } from 'lib/gotrue'
|
||||
|
||||
/**
|
||||
* Use this method on api routes to check if user is authenticated and having required permissions.
|
||||
@@ -32,7 +34,7 @@ export async function apiAuthenticate(
|
||||
try {
|
||||
// Check that they are logged in
|
||||
// If no error throw from getAccessToken. That's good, we can continue
|
||||
await auth0.getAccessToken(req, res)
|
||||
if (!(GOTRUE_ENABLED)) await auth0.getAccessToken(req, res)
|
||||
|
||||
const user = await fetchUser(req, res)
|
||||
if (!user) {
|
||||
@@ -53,16 +55,41 @@ export async function apiAuthenticate(
|
||||
* user with only id prop or detail object. It depends on requireUserDetail config
|
||||
*/
|
||||
async function fetchUser(req: NextApiRequest, res: NextApiResponse): Promise<any> {
|
||||
const session = auth0.getSession(req, res)
|
||||
let user_id_supabase = null
|
||||
let user_id_auth0 = null
|
||||
let gotrue_id = null
|
||||
let email = null
|
||||
if (GOTRUE_ENABLED) {
|
||||
const token = req.headers.authorization
|
||||
if (!token) {
|
||||
return res.status(401).end('Unauthorized: missing access token')
|
||||
}
|
||||
let { user: gotrue_user, error: authError } = await getAuthUser(token)
|
||||
if (authError) {
|
||||
throw authError
|
||||
}
|
||||
if (gotrue_user !== null) {
|
||||
gotrue_id = gotrue_user?.id
|
||||
email = gotrue_user.email
|
||||
|
||||
if (!session) {
|
||||
return null
|
||||
let { identity, error } = getIdentity(gotrue_user)
|
||||
if (error) throw error
|
||||
if (identity?.provider !== undefined) {
|
||||
user_id_auth0 = getAuth0Id(identity?.provider, identity?.id)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const session = auth0.getSession(req, res)
|
||||
if (!session) {
|
||||
return null
|
||||
}
|
||||
const { user: auth0_user } = session
|
||||
const flattened = flattenNamespaceOnUser('https://supabase.io', auth0_user)
|
||||
user_id_supabase = flattened.user_id_supabase
|
||||
user_id_auth0 = flattened.user_id_auth0
|
||||
email = flattened.email
|
||||
}
|
||||
|
||||
const { user: auth0_user } = session
|
||||
const flattened = flattenNamespaceOnUser('https://supabase.io', auth0_user)
|
||||
const { user_id_supabase, user_id_auth0, email } = flattened
|
||||
|
||||
if (user_id_supabase) {
|
||||
return {
|
||||
id: user_id_supabase,
|
||||
@@ -70,15 +97,15 @@ async function fetchUser(req: NextApiRequest, res: NextApiResponse): Promise<any
|
||||
}
|
||||
}
|
||||
|
||||
const { data } = await readOnly
|
||||
.from('users')
|
||||
.select(
|
||||
`
|
||||
const query = readOnly.from('users').select(
|
||||
`
|
||||
id, auth0_id, primary_email, username, first_name, last_name, mobile, is_alpha_user
|
||||
`
|
||||
)
|
||||
.eq('auth0_id', user_id_auth0)
|
||||
.single()
|
||||
)
|
||||
|
||||
const { data } = GOTRUE_ENABLED
|
||||
? await query.eq('gotrue_id', gotrue_id).single()
|
||||
: await await query.eq('auth0_id', user_id_auth0).single()
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { GOTRUE_ENABLED } from 'lib/gotrue'
|
||||
import { tryParseJson } from 'lib/helpers'
|
||||
import { SupaResponse } from 'types/base'
|
||||
|
||||
export function handleError<T>(e: any, requestId: string): SupaResponse<T> {
|
||||
@@ -65,3 +67,52 @@ export async function handleResponseError<T = unknown>(
|
||||
return { error } as unknown as SupaResponse<T>
|
||||
}
|
||||
}
|
||||
|
||||
export function getAccessToken() {
|
||||
// ignore if server-side
|
||||
if (typeof window === 'undefined') return ''
|
||||
|
||||
const tokenData = window?.localStorage['supabase.auth.token']
|
||||
if (!tokenData) {
|
||||
// try to get from url fragment
|
||||
const access_token = getParameterByName('access_token')
|
||||
if (access_token) return access_token
|
||||
else return undefined
|
||||
}
|
||||
const tokenObj = tryParseJson(tokenData)
|
||||
if (tokenObj === false) {
|
||||
return ''
|
||||
}
|
||||
return tokenObj.currentSession.access_token
|
||||
}
|
||||
|
||||
// get param from URL fragment
|
||||
function getParameterByName(name: string, url?: string) {
|
||||
// ignore if server-side
|
||||
if (typeof window === 'undefined') return ''
|
||||
|
||||
if (!url) url = window?.location?.href || ''
|
||||
// eslint-disable-next-line no-useless-escape
|
||||
name = name.replace(/[\[\]]/g, '\\$&')
|
||||
const regex = new RegExp('[?&#]' + name + '(=([^&#]*)|&|#|$)'),
|
||||
results = regex.exec(url)
|
||||
if (!results) return null
|
||||
if (!results[2]) return ''
|
||||
return decodeURIComponent(results[2].replace(/\+/g, ' '))
|
||||
}
|
||||
|
||||
export function constructHeaders(requestId: string, optionHeaders?: { [prop: string]: any }) {
|
||||
let headers: { [prop: string]: any } = {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
'X-Request-Id': requestId,
|
||||
...optionHeaders,
|
||||
}
|
||||
|
||||
if (GOTRUE_ENABLED) {
|
||||
const accessToken = getAccessToken()
|
||||
if (accessToken) headers.Authorization = `Bearer ${accessToken}`
|
||||
}
|
||||
|
||||
return headers
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { handleError, handleResponse, handleResponseError } from './base'
|
||||
import { handleError, handleResponse, handleResponseError, constructHeaders } from './base'
|
||||
import { uuidv4 } from '../../helpers'
|
||||
import { SupaResponse } from 'types/base'
|
||||
|
||||
@@ -8,19 +8,15 @@ export async function delete_<T = any>(
|
||||
options?: { [prop: string]: any }
|
||||
): Promise<SupaResponse<T>> {
|
||||
const requestId = uuidv4()
|
||||
const { headers, ...otherOptions } = options ?? {}
|
||||
try {
|
||||
const { headers: optionHeaders, ...otherOptions } = options ?? {}
|
||||
const headers = constructHeaders(requestId, optionHeaders)
|
||||
const response = await fetch(url, {
|
||||
method: 'DELETE',
|
||||
body: JSON.stringify(data),
|
||||
credentials: 'include',
|
||||
referrerPolicy: 'no-referrer-when-downgrade',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
'X-Request-Id': requestId,
|
||||
...headers,
|
||||
},
|
||||
headers,
|
||||
...otherOptions,
|
||||
})
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { handleError, handleResponse, handleResponseError } from './base'
|
||||
import { handleError, handleResponse, handleResponseError, constructHeaders } from './base'
|
||||
import { uuidv4 } from '../../helpers'
|
||||
import { SupaResponse } from 'types/base'
|
||||
|
||||
@@ -8,17 +8,13 @@ export async function get<T = any>(
|
||||
): Promise<SupaResponse<T>> {
|
||||
const requestId = uuidv4()
|
||||
try {
|
||||
const { headers, ...otherOptions } = options ?? {}
|
||||
const { headers: optionHeaders, ...otherOptions } = options ?? {}
|
||||
const headers = constructHeaders(requestId, optionHeaders)
|
||||
const response = await fetch(url, {
|
||||
method: 'GET',
|
||||
credentials: 'include',
|
||||
referrerPolicy: 'no-referrer-when-downgrade',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
'X-Request-Id': requestId,
|
||||
...headers,
|
||||
},
|
||||
headers,
|
||||
...otherOptions,
|
||||
})
|
||||
if (!response.ok) return handleResponseError(response, requestId)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { handleError, handleResponse, handleResponseError } from './base'
|
||||
import { constructHeaders, handleError, handleResponse, handleResponseError } from './base'
|
||||
import { uuidv4 } from '../../helpers'
|
||||
import { SupaResponse } from 'types/base'
|
||||
|
||||
@@ -9,18 +9,14 @@ export async function patch<T = any>(
|
||||
): Promise<SupaResponse<T>> {
|
||||
const requestId = uuidv4()
|
||||
try {
|
||||
const { headers, ...otherOptions } = options ?? {}
|
||||
const { headers: optionHeaders, ...otherOptions } = options ?? {}
|
||||
const headers = constructHeaders(requestId, optionHeaders)
|
||||
const response = await fetch(url, {
|
||||
method: 'PATCH',
|
||||
body: JSON.stringify(data),
|
||||
credentials: 'include',
|
||||
referrerPolicy: 'no-referrer-when-downgrade',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
'X-Request-Id': requestId,
|
||||
...headers,
|
||||
},
|
||||
headers,
|
||||
...otherOptions,
|
||||
})
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { handleError, handleResponse, handleResponseError } from './base'
|
||||
import { handleError, handleResponse, handleResponseError, constructHeaders } from './base'
|
||||
import { uuidv4 } from 'lib/helpers'
|
||||
import { SupaResponse } from 'types/base'
|
||||
|
||||
@@ -9,18 +9,14 @@ export async function post<T = any>(
|
||||
): Promise<SupaResponse<T>> {
|
||||
const requestId = uuidv4()
|
||||
try {
|
||||
const { headers, ...otherOptions } = options ?? {}
|
||||
const { headers: optionHeaders, ...otherOptions } = options ?? {}
|
||||
const headers = constructHeaders(requestId, optionHeaders)
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
credentials: 'include',
|
||||
referrerPolicy: 'no-referrer-when-downgrade',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
'X-Request-Id': requestId,
|
||||
...headers,
|
||||
},
|
||||
headers,
|
||||
...otherOptions,
|
||||
})
|
||||
if (!response.ok) return handleResponseError(response, requestId)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import { GoTrueClient, User } from '@supabase/gotrue-js'
|
||||
|
||||
export const GOTRUE_ENABLED = (process.env.NEXT_PUBLIC_GOTRUE_ENABLED === 'true') || false
|
||||
export const GOTRUE_URL = process.env.NEXT_PUBLIC_GOTRUE_URL || 'http://localhost:8000/auth/v1'
|
||||
|
||||
export const auth = new GoTrueClient({
|
||||
url: GOTRUE_URL,
|
||||
autoRefreshToken: true,
|
||||
})
|
||||
|
||||
export const getAuthUser = async (token: String): Promise<any> => {
|
||||
try {
|
||||
const { data: user, error } = await auth.api.getUser(token.replace('Bearer ', ''))
|
||||
if (error) throw error
|
||||
|
||||
return { user, error: null }
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return { user: null, error: err }
|
||||
}
|
||||
}
|
||||
|
||||
export const getAuth0Id = (provider: String, providerId: String): String => {
|
||||
return `${provider}|${providerId}`
|
||||
}
|
||||
|
||||
export const getIdentity = (gotrueUser: User) => {
|
||||
try {
|
||||
if (gotrueUser !== undefined && gotrueUser.identities !== undefined) {
|
||||
return { identity: gotrueUser.identities[0], error: null }
|
||||
}
|
||||
throw 'Missing identity'
|
||||
} catch (err) {
|
||||
return { identity: null, error: err }
|
||||
}
|
||||
}
|
||||
@@ -45,8 +45,8 @@ export const timeout = (ms: number) => {
|
||||
|
||||
export const getURL = () => {
|
||||
const url =
|
||||
process?.env?.SITE_URL && process.env.SITE_URL !== ''
|
||||
? process.env.SITE_URL
|
||||
process?.env?.NEXT_PUBLIC_SITE_URL && process.env.NEXT_PUBLIC_SITE_URL !== ''
|
||||
? process.env.NEXT_PUBLIC_SITE_URL
|
||||
: process?.env?.VERCEL_URL && process.env.VERCEL_URL !== ''
|
||||
? process.env.VERCEL_URL
|
||||
: 'https://app.supabase.io'
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"@supabase/grid": "^2.3.9",
|
||||
"@supabase/postgres-meta": "^0.26.1",
|
||||
"@supabase/react-data-grid": "^7.1.0-beta.7",
|
||||
"@supabase/supabase-js": "^1.27.0",
|
||||
"@supabase/supabase-js": "^1.28.0",
|
||||
"@supabase/ui": "^0.35.0",
|
||||
"ajv": "^8.6.3",
|
||||
"analytics-node": "^3.5.0",
|
||||
|
||||
@@ -20,7 +20,7 @@ const Error404: NextPage = ({}) => {
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<div className="w-full h-screen relative flex flex-col items-center justify-center mx-auto relative">
|
||||
<div className="w-full h-screen relative flex flex-col items-center justify-center mx-auto">
|
||||
<div className="absolute top-0 w-full max-w-7xl mx-auto pt-6 px-8 sm:px-6 lg:px-8">
|
||||
<nav className="relative flex items-center justify-between sm:h-10">
|
||||
<div className="flex items-center flex-grow flex-shrink-0 lg:flex-grow-0">
|
||||
|
||||
@@ -17,9 +17,10 @@ export default class ProjectStore extends PostgresMetaInterface<Project> {
|
||||
initialDataArray(value: Project[]) {
|
||||
const finalValue = value.map((project: any) => {
|
||||
const kpsVersion =
|
||||
project.services?.length > 0
|
||||
project?.services?.length > 0
|
||||
? project?.services[0]?.infrastructure[0]?.app_versions?.version
|
||||
: undefined
|
||||
|
||||
return { ...project, kpsVersion }
|
||||
})
|
||||
super.initialDataArray(finalValue)
|
||||
|
||||
@@ -56,6 +56,7 @@ Build a basic Todo List with Supabase and your favorite frontend framework:
|
||||
- Supabase in 6 minutes [Video](https://www.youtube.com/watch?v=c8DNV9yl0mg)
|
||||
- Let's build SupaAuth - Build an Authentication System using Supabase, Next.js and Typescript [6-part Blog Series](https://aalam.in/blog/supabase-auth-intro-setup-next)
|
||||
- In-depth self-hosting guide using Nginx [Blog](https://dev.to/chronsyn/self-hosting-with-supabase-1aii)
|
||||
- Build an Email and Social Auth for Next JS with Supabase, Tailwind CSS 3.0 and TypeScript [Blog](https://creativedesignsguru.com/next-js-supabase-auth/)
|
||||
|
||||
### Example apps
|
||||
|
||||
|
||||
@@ -31,15 +31,17 @@ This command will create a `supabase` folder which holds all the configuration f
|
||||
supabase start
|
||||
```
|
||||
|
||||
This command uses Docker Compose to start all the open source [services](/docs/#how-it-works) of Supabase. This command will take a while to run, there are a lot of services to build.
|
||||
This command uses Docker to start all the open source [services](/docs/#how-it-works) of Supabase. This command will take a while to run, there are a lot of services to build.
|
||||
|
||||
Once this is running, you will see an output that contains your local Supabase credentials:
|
||||
|
||||
```txt
|
||||
Started local development setup.
|
||||
API URL: http://localhost:54321
|
||||
DB URL: postgresql://postgres:postgres@localhost:5432/postgres
|
||||
anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiJ9.ZopqoUt20nEV9cklpv9e3yw3PVyZLmKs5qLD6nGL1SI
|
||||
|
||||
API URL: http://localhost:54321
|
||||
DB URL: postgresql://postgres:postgres@localhost:54322/postgres
|
||||
Studio URL: http://localhost:54323
|
||||
anon key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiJ9.ZopqoUt20nEV9cklpv9e3yw3PVyZLmKs5qLD6nGL1SI
|
||||
service_role key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIn0.M2d2z4SFn5C7HlJlaSLfrzuYim9nbY_XI40uWFN3hEE
|
||||
```
|
||||
|
||||
@@ -55,7 +57,7 @@ values={[
|
||||
|
||||
```sh
|
||||
# Default URL:
|
||||
postgresql://postgres:postgres@localhost:5432/postgres
|
||||
postgresql://postgres:postgres@localhost:54322/postgres
|
||||
```
|
||||
|
||||
The local Postgres instance can be accessed through [`psql`](https://www.postgresql.org/docs/current/app-psql.html)
|
||||
@@ -64,7 +66,7 @@ or any other Postgres client, such as [pgadmin](https://www.pgadmin.org/).
|
||||
For example:
|
||||
|
||||
```bash
|
||||
psql 'postgresql://postgres:postgres@localhost:5432/postgres'
|
||||
psql 'postgresql://postgres:postgres@localhost:54322/postgres'
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
@@ -81,13 +83,13 @@ You can learn more about these JWT headers in our [Resources](/docs/learn/auth-d
|
||||
|
||||
```sh
|
||||
curl 'http://localhost:54321/rest/v1/' \
|
||||
-H "apikey: SUPABASE_KEY" \
|
||||
-H "Authorization: Bearer SUPABASE_KEY"
|
||||
-H "apikey: <anon key>" \
|
||||
-H "Authorization: Bearer <anon key>"
|
||||
|
||||
http://localhost:54321/v1/rest/v1/ # REST (PostgREST)
|
||||
http://localhost:54321/v1/realtime/v1/ # Realtime
|
||||
http://localhost:54321/v1/storage/v1/ # Storage
|
||||
http://localhost:54321/v1/auth/v1/ # Auth (GoTrue)
|
||||
http://localhost:54321/rest/v1/ # REST (PostgREST)
|
||||
http://localhost:54321/realtime/v1/ # Realtime
|
||||
http://localhost:54321/storage/v1/ # Storage
|
||||
http://localhost:54321/auth/v1/ # Auth (GoTrue)
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
@@ -2,17 +2,13 @@ openref: 0.1
|
||||
|
||||
info:
|
||||
id: reference/cli
|
||||
title: Getting started
|
||||
title: About
|
||||
description: |
|
||||
|
||||
The Supabase CLI can be found in our [CLI](https://github.com/supabase/cli) repository.
|
||||
|
||||
The CLI is still under heavy development, but it will contain all the functionality for working with Supabase projects and the Supabase platform.
|
||||
|
||||
- [x] Running Supabase locally
|
||||
- [x] Self-hosting
|
||||
- [ ] Managing database migrations (in progress)
|
||||
- [ ] Pushing your local changes to production
|
||||
- [x] Managing database migrations
|
||||
- [x] Pushing your local changes to production
|
||||
- [ ] Manage your Supabase Account
|
||||
- [ ] Manage your Supabase Projects
|
||||
- [ ] Generating types directly from your database schema
|
||||
@@ -20,78 +16,194 @@ info:
|
||||
|
||||
## Installing the CLI
|
||||
|
||||
```bash
|
||||
npm install supabase -g
|
||||
```
|
||||
Installation instructions can be found [here](https://github.com/supabase/cli#install-the-cli).
|
||||
|
||||
There may be additional steps that you need to follow to setup the CLI. Located [here](https://supabase.com/docs/guides/local-development).
|
||||
## Support
|
||||
|
||||
Report issues to our [issue tracker](https://github.com/supabase/cli/issues).
|
||||
definition: spec/combined.json
|
||||
libraries:
|
||||
- name: 'sh'
|
||||
id: 'sh'
|
||||
version: '0.0.1'
|
||||
- name: "sh"
|
||||
id: "sh"
|
||||
version: "0.0.1"
|
||||
docs:
|
||||
path: reference/cli/
|
||||
sidebar:
|
||||
- name: 'About'
|
||||
- name: "About"
|
||||
items:
|
||||
- index
|
||||
- supabase init
|
||||
- name: 'Local Development'
|
||||
- name: "Command reference"
|
||||
items:
|
||||
- supabase help
|
||||
- supabase init
|
||||
- supabase start
|
||||
- supabase stop
|
||||
- supabase eject
|
||||
- supabase db branch list
|
||||
- supabase db branch create
|
||||
- supabase db branch delete
|
||||
- supabase db switch
|
||||
- supabase db changes
|
||||
- supabase db commit
|
||||
- supabase db reset
|
||||
- supabase db remote set
|
||||
- supabase db remote commit
|
||||
- supabase db push
|
||||
- supabase migration new
|
||||
- name: "Config reference"
|
||||
items:
|
||||
- Config reference
|
||||
|
||||
pages:
|
||||
supabase init:
|
||||
supabase help:
|
||||
description: |
|
||||
```bash
|
||||
supabase init
|
||||
```
|
||||
Help provides help for any command in the application.
|
||||
Simply type supabase help [path to command] for full details.
|
||||
|
||||
Usage:
|
||||
supabase help [command]
|
||||
```
|
||||
|
||||
This command will create a .supabase folder which holds all the configurations for developing your project locally. You don't need to check this into version control.
|
||||
supabase init:
|
||||
description: |
|
||||
```
|
||||
Initialize a project to use Supabase CLI.
|
||||
|
||||
After you run `supabase init` you will be guided through a series of questions, and if everything goes well, you will see an output similar to this:
|
||||
|
||||
```txt
|
||||
✔ Port for Supabase URL: · 8000
|
||||
✔ Port for PostgreSQL database: · 5432
|
||||
✔ Project initialized.
|
||||
Supabase URL: http://localhost:8000
|
||||
Supabase Key: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTYwMzk2ODgzNCwiZXhwIjoyNTUwNjUzNjM0LCJhdWQiOiIiLCJzdWIiOiIiLCJSb2xlIjoicG9zdGdyZXMifQ.magCcozTMKNrl76Tj2dsM7XTl_YH0v0ilajzAvIlw3U
|
||||
Database URL: postgres://postgres:postgres@localhost:5432/postgres
|
||||
|
||||
Run supabase start to start the local emulator.
|
||||
Usage:
|
||||
supabase init
|
||||
```
|
||||
|
||||
supabase start:
|
||||
description: |
|
||||
```bash
|
||||
supabase start
|
||||
```
|
||||
Start the Supabase local development setup.
|
||||
|
||||
Usage:
|
||||
supabase start
|
||||
```
|
||||
|
||||
This command uses Docker Compose to start all the open source [services](/docs/#how-it-works) of Supabase. This command will take a while to run, there are a lot of services to build.
|
||||
|
||||
Once this is running, you will see the health services in Docker Dashboard:
|
||||
|
||||

|
||||
|
||||
supabase stop:
|
||||
supabase db branch list:
|
||||
description: |
|
||||
```bash
|
||||
supabase stop
|
||||
```
|
||||
List branches.
|
||||
|
||||
Usage:
|
||||
supabase db branch list
|
||||
```
|
||||
|
||||
When you are finished with Supabase, run `supabase stop` to stop the Docker services.
|
||||
|
||||
supabase eject:
|
||||
supabase db branch create:
|
||||
description: |
|
||||
```bash
|
||||
supabase eject
|
||||
```
|
||||
Create a branch.
|
||||
|
||||
Usage:
|
||||
supabase db branch create <branch name>
|
||||
```
|
||||
|
||||
Run in any folder to create a `docker` folder with a `docker-compose.yml`. This is useful for self-hosting or adding custom configuration.
|
||||
supabase db branch delete:
|
||||
description: |
|
||||
```
|
||||
Delete a branch.
|
||||
|
||||
See our [Self Hosting](/docs/guides/hosting/overview) docs for more details.
|
||||
Usage:
|
||||
supabase db branch delete <branch name>
|
||||
```
|
||||
|
||||
supabase db switch:
|
||||
description: |
|
||||
```
|
||||
Switch branches.
|
||||
|
||||
Usage:
|
||||
supabase db switch <branch name>
|
||||
```
|
||||
|
||||
supabase db changes:
|
||||
description: |
|
||||
```
|
||||
Diffs the local database with current migrations, then print the diff to standard output.
|
||||
|
||||
Usage:
|
||||
supabase db changes
|
||||
```
|
||||
|
||||
supabase db commit:
|
||||
description: |
|
||||
```
|
||||
Diffs the local database with current migrations, writing it as a new migration.
|
||||
|
||||
Usage:
|
||||
supabase db commit <migration name>
|
||||
```
|
||||
|
||||
supabase db reset:
|
||||
description: |
|
||||
```
|
||||
Resets the local database to reflect current migrations. Any changes on the local database that is not committed will be lost.
|
||||
|
||||
Usage:
|
||||
supabase db reset
|
||||
```
|
||||
|
||||
supabase db remote set:
|
||||
description: |
|
||||
```
|
||||
Set the remote database to push migrations to.
|
||||
|
||||
Usage:
|
||||
supabase db remote set <remote database url>
|
||||
```
|
||||
|
||||
supabase db remote commit:
|
||||
description: |
|
||||
```
|
||||
Commit changes on the remote database since the last pushed migration.
|
||||
|
||||
Usage:
|
||||
supabase db remote commit
|
||||
```
|
||||
|
||||
supabase db push:
|
||||
description: |
|
||||
```
|
||||
Push new migrations to the remote database.
|
||||
|
||||
Usage:
|
||||
supabase db push
|
||||
```
|
||||
|
||||
supabase migration new:
|
||||
description: |
|
||||
```
|
||||
Create an empty migration.
|
||||
|
||||
Usage:
|
||||
supabase migration new <migration name>
|
||||
```
|
||||
|
||||
Config reference:
|
||||
description: |
|
||||
The config file resides in `supabase/config.json` after you run `supabase init`.
|
||||
|
||||
#### `projectId` (required)
|
||||
|
||||
A string used to distinguish different Supabase projects on the same host. Defaults to the working directory name when running `supabase init`.
|
||||
|
||||
#### `ports.api` (required)
|
||||
|
||||
Host port used for the API URL. Defaults to `54321`.
|
||||
|
||||
#### `ports.db` (required)
|
||||
|
||||
Host port used for the DB URL. Defaults to `54322`.
|
||||
|
||||
#### `ports.studio` (required)
|
||||
|
||||
Host port used for Supabase Studio. Defaults to `54323`.
|
||||
|
||||
#### `ports.inbucket` (optional)
|
||||
|
||||
Host port used for the web interface of Inbucket email testing server. When not specified, emails are automatically confirmed. When specified, emails are not sent to the recipient, but rather monitored and accessible via the web interface.
|
||||
|
||||
#### `dbVersion` (required)
|
||||
|
||||
Server version number used for the database. This needs to match the server version number of the remote database you intend to link to with `supabase db remote set`. You can retrieve it by running `SHOW server_version_num`.
|
||||
@@ -280,8 +280,8 @@ pages:
|
||||
})
|
||||
```
|
||||
|
||||
By default the API server points to the `public` schema. You can enable others database schemas within the Dashboard.
|
||||
Go to `Settings > API > Schema` and add the schema which you want to expose to on the API.
|
||||
By default the API server points to the `public` schema. You can enable other database schemas within the Dashboard.
|
||||
Go to `Settings > API > Schema` and add the schema which you want to expose to the API.
|
||||
|
||||
Note: each client connection can only access a single schema, so the code above can access the `other_schema` schema but cannot access the `public` schema.
|
||||
- name: Custom `fetch` implementation
|
||||
|
||||
@@ -6,23 +6,21 @@ This is a single repository for two different websites. Our documents were creat
|
||||
|
||||
Install the [Vercel CLI](https://vercel.com/cli).
|
||||
|
||||
You will need to run the marketing website and docs website separately.
|
||||
You will need to run the marketing website and docs website separately. To learn how to run both websites, see the [Development Guide](../DEVELOPERS.md) for more information.
|
||||
|
||||
```
|
||||
# tab 1
|
||||
make dev
|
||||
```sh
|
||||
# step 1
|
||||
cd supabase
|
||||
|
||||
# tab 2
|
||||
# step 2
|
||||
cd www
|
||||
|
||||
# step 3
|
||||
npm install
|
||||
npm run dev
|
||||
|
||||
# tab 3
|
||||
cd web/spec
|
||||
make
|
||||
npm install
|
||||
npm run gen:supabase
|
||||
npm run start
|
||||
# visit website
|
||||
http://localhost:3000
|
||||
```
|
||||
|
||||
In production, this setup is deployed as two different vercel websites (`docs` and `www`)
|
||||
@@ -31,6 +29,3 @@ In production, this setup is deployed as two different vercel websites (`docs` a
|
||||
|
||||
- Referencing resources in nested folders may not work for `web` (eg `/web/static/folder/nestedfolder/asset`) may not work.
|
||||
- Possibly need to prepend all images/assets in docs site with baseUrl.
|
||||
|
||||
<!-- // we need to check this -->
|
||||
<!-- - Don't use `Link` since that adds `/new` to the links. Use plain `a` tags when possible. -->
|
||||
@@ -0,0 +1,119 @@
|
||||
---
|
||||
title: 'Supabase Beta November 2021: Launch Week Recap'
|
||||
description: We wrapped up November with Supabase's third Launch Week. Here's all the awesome stuff that got shipped ...
|
||||
author: ant_wilson
|
||||
author_url: https://github.com/awalias
|
||||
author_image_url: https://github.com/awalias.png
|
||||
authorURL: https://github.com/awalias
|
||||
image: 2021-nov/release-nov-2021.jpg
|
||||
thumb: 2021-nov/release-nov-2021-cover.jpg
|
||||
tags:
|
||||
- release-notes
|
||||
date: '2021-12-15'
|
||||
toc_depth: 3
|
||||
---
|
||||
|
||||
We wrapped up November with Supabase's third Launch Week. It also happens to be 12 months since we moved from alpha to beta.
|
||||
|
||||
Here's all the awesome stuff that got shipped during Launch Week...
|
||||
|
||||
## Supabase Studio
|
||||
|
||||
We [open sourced the Dashboard](/blog/2021/11/30/supabase-studio) - it's now included in Self-Hosting, and the community are now able to contribute,
|
||||
which is going to help us move even faster! Expect many more updates to the dashboard over the coming weeks and months! [Read the code for yourself.](https://github.com/supabase/supabase/tree/master/studio)
|
||||
|
||||

|
||||
|
||||
## We acquired Logflare
|
||||
|
||||
We were early Logflare users, and found it to be one of the most impressive products we'd ever used. So impressive in fact, that we wanted to offer it's capabilities to our entire user base.
|
||||
You'll now find fully searchable Supabase API and database logs within the dashboard, and we're also in the process of open sourcing the codebase. [Read more about the acquisition](/blog/2021/12/02/supabase-acquires-logflare).
|
||||
|
||||

|
||||
|
||||
## Realtime Row Level Security
|
||||
|
||||
[Security rules now work for Realtime](/blog/2021/12/01/realtime-row-level-security-in-postgresql).
|
||||
All of your row level security policies now work with the realtime API, so you can limit streams and subscriptions on a per user basis (or any configuration you want!).
|
||||
|
||||
|
||||

|
||||
|
||||
## GraphQL is coming to Supabase
|
||||
|
||||
We heard you! And built a Postgres extension for [querying your database with GraphQL](/blog/2021/12/03/pg-graphql).
|
||||
This means that each GraphQL request is resolved by a single SQL statement and hits the theoretical minimum achievable network IO overhead of any GraphQL to SQL resolver.
|
||||
|
||||

|
||||
|
||||
## Supabase now runs on PostgreSQL 14
|
||||
|
||||
One of the most exciting things to happen in databases this year was the release of PG 14.
|
||||
Which is now the default database used on our hosted platform. Read more here about [why we're so excited about it](/blog/2021/11/28/whats-new-in-postgres-14).
|
||||
|
||||
|
||||

|
||||
|
||||
## PostgREST 9.0
|
||||
|
||||
PostgREST is the tool we use to introspect your schema and make your database available over a RESTful API.
|
||||
We also sponsor and help maintain this amazing open source project. Version 9.0 was just released and has also been rolled out to all new and existing Supabase projects on our hosted platform.
|
||||
[Check out the blog post](/blog/2021/11/28/postgrest-9) by Steve Chavez, the maintainer of PostgREST.
|
||||
|
||||

|
||||
|
||||
## Building a SaaS?
|
||||
|
||||
We have [a course for that](https://egghead.io/courses/build-a-saas-product-with-next-js-supabase-and-stripe-61f2bc20).
|
||||
You'll learn how to combine Next.js, Stripe, and Supabase to launch your business in no time at all.
|
||||
It's honestly mind blowing how quickly you can get products out the door with this stack. Oh and it's free.
|
||||
|
||||

|
||||
|
||||
## New Storage CDN
|
||||
|
||||
Serving your files in no time - Get eye wateringly fast load times for your media files. [Read all about the benefits](/blog/2021/12/03/launch-week-three-friday-five-more-things#supabase-cdn).
|
||||
|
||||

|
||||
|
||||
## How we Launch
|
||||
|
||||
We "open sourced" our launch methodology - Learn about how we plan, execute, and retrospect launch weeks internally. [Read the post](/blog/2021/11/26/supabase-how-we-launch).
|
||||
supabase monthly growth
|
||||
|
||||

|
||||
|
||||
## Community
|
||||
|
||||
### Highlights
|
||||
|
||||
- Community Day [blog](/blog/2021/11/29/community-day#new-tutorials-and-integration-guides)
|
||||
- The SupaSquad has been busy [blog](/blog/2021/11/29/community-day#supasquad-updates)
|
||||
- 10 startups on what they're building with Supabase [video](https://www.youtube.com/watch?v=QAm1x7KaLq4&list=PL5S4mPUpp4OuzQN-a_FY3OZQuYo4NmXvb&t=3s)
|
||||
- New official integration guides [blog](https://supabase.com/blog/2021/11/29/community-day#new-tutorials-and-integration-guides)
|
||||
- Add Supabase in Teta [video](https://www.youtube.com/watch?v=lt-Vebxk-Mk)
|
||||
- Auth flow with Remix and Supabase [video](https://www.youtube.com/watch?v=-KiH8feOHSc)
|
||||
- Discovering Supabase [video](https://www.youtube.com/watch?v=WToGeMIdoSY)
|
||||
- Next.js with Magic Links [blog](https://dev.to/dailydevtips1/authenticating-nextjs-with-supabase-auth-magic-links-363e)
|
||||
- Next.js + Auth0 + Supabase [blog](https://auth0.com/blog/using-nextjs-and-auth0-with-supabase/)
|
||||
|
||||
### TikTok
|
||||
|
||||
Supabase is [now on TikTok](https://www.tiktok.com/@supabase.com?) - Watch us ship to some questionable beats.
|
||||
|
||||

|
||||
|
||||
|
||||
### GitHub
|
||||
|
||||
We hit 25K stars!! [github.com/supabase/supabase](http://github.com/supabase/supabase)
|
||||
|
||||

|
||||
|
||||
## Get started
|
||||
|
||||
- Start using Supabase today: **[app.supabase.io](https://app.supabase.io/)**
|
||||
- Make sure to **[star us on GitHub](https://github.com/supabase/supabase)**
|
||||
- Follow us **[on Twitter](https://twitter.com/supabase)**
|
||||
- Subscribe to our **[YouTube channel](https://www.youtube.com/channel/UCNTVzV1InxHV-YR0fSajqPQ)**
|
||||
- Become a **[sponsor](https://github.com/sponsors/supabase)**
|
||||
@@ -0,0 +1,122 @@
|
||||
---
|
||||
title: 'Holiday Hackdays Winners 2021'
|
||||
description: Celebrating many amazing projects submitted to our Holiday Hackdays Hackathon.
|
||||
author: thor_schaeff
|
||||
author_url: https://github.com/thorwebdev
|
||||
author_image_url: https://github.com/thorwebdev.png
|
||||
authorURL: https://github.com/thorwebdev
|
||||
image: hackathon-winners/holiday-hackdays/holiday-hackdays-winners-og.png
|
||||
thumb: hackathon-winners/holiday-hackdays/holiday-hackdays-winners-og.png
|
||||
tags:
|
||||
- community
|
||||
- hackathon
|
||||
date: '2021-12-17'
|
||||
toc_depth: 2
|
||||
---
|
||||
|
||||
To cool down from [our latest launch week](/blog/2021/12/15/beta-november-2021-launch-week-recap) we (virtually) [sat down with y'all](https://youtu.be/TijBVcV4jXw) and started hacking, and once again we absolutely loved your hackathon submissions and are excited to send some extremely limited swag your way!
|
||||
|
||||
As always, it was challenging to pick the winners from all the great submissions! You can see all the amazing projects submitted on [madewithsupabase.com](https://www.madewithsupabase.com/holiday-hackdays). And now, without further ado, let's look at some of our favourites in more detail:
|
||||
|
||||
## Best Overall Project
|
||||
|
||||
### Winner
|
||||
|
||||
[Swappy.one](https://github.com/zernonia/swappy-one) - by [@zernonia](https://twitter.com/zernonia)
|
||||
|
||||
Zernonia is one of our [SupaSquad](https://supabase.com/docs/handbook/supasquad) members and continuously blows our minds with his creativity for the open-source projects he creates. For example, he's also the mastermind behind [madewithsupabase.com](https://www.madewithsupabase.com/), one of our favourite resources to see what y'all are building.
|
||||
|
||||
Now he can add a gold tee to his collection, and we're starting to run out of swag ideas to show our appreciation! (Send us some ideas on [Twitter](https://twitter.com/supabase)!)
|
||||
|
||||
[](https://github.com/zernonia/swappy-one)
|
||||
|
||||
### Runner Up
|
||||
|
||||
[Chivel](https://github.com/lalit2005/chivel) - by [@lalitcodes](https://twitter.com/lalitcodes) and [@ChapagainAshik](https://twitter.com/ChapagainAshik)
|
||||
|
||||
Chivel is a tool to quickly generate a landing page for your YouTube channel. For example check out this snazzy page that they've generated for the Supabase channel: [supabase.chivel.tk](https://supabase.chivel.tk/)!
|
||||
|
||||
A great idea that deserves some silver tees!
|
||||
|
||||
[](https://github.com/lalit2005/chivel)
|
||||
|
||||
## Best Realtime Project
|
||||
|
||||
### Winner
|
||||
|
||||
[rtPoll](https://github.com/emilioschepis/rtpoll) - by [@emilioschepis](https://twitter.com/emilioschepis) & brother Federico.
|
||||
|
||||
Brothers Emilio and Federico built a platform to quickly create polls and share them around. Seeing poll results is great, but you know what's even better? Exactly, seeing poll results in realtime!
|
||||
|
||||
[](https://github.com/emilioschepis/rtpoll)
|
||||
|
||||
### Runner Up
|
||||
|
||||
[e2ee-chat](https://github.com/arnu515/supabase-e2ee-chat) - by [@arnu5152](https://twitter.com/arnu5152)
|
||||
|
||||
A chat app is a fairly obvious use case for realtime syncing, but this project caught our eye because the chat is end-to-end encrypted!
|
||||
|
||||
[](https://github.com/arnu515/supabase-e2ee-chat)
|
||||
|
||||
## Best Christmas Themed
|
||||
|
||||
### Winner
|
||||
|
||||
[Santa Banter](https://github.com/Keoooo/santa-banter) - by [@AndyKeogh](https://twitter.com/AndyKeogh)
|
||||
|
||||
Not only do we love a good rhyme, but we also love Christmas themed jokes, so Andy's Santa Banter checks all the boxes. Head over there now to submit your best jokes!
|
||||
|
||||
[](https://github.com/Keoooo/santa-banter)
|
||||
|
||||
### Runner Up
|
||||
|
||||
[Holiday Sweater](https://github.com/Morel-Tech/ugly_sweater_app) - by [@mtwichel](https://twitter.com/mtwichel)
|
||||
|
||||
Ugly sweaters are an integral part of the Christmas Holidays. With Marcus' awesome Flutter app you can now vote on your favourite sweaters from around the globe!
|
||||
|
||||
[](https://github.com/Morel-Tech/ugly_sweater_app)
|
||||
|
||||
## Most Visually Pleasing
|
||||
|
||||
### Winner
|
||||
|
||||
[the get list](https://github.com/glowdex/wishlist) - by [@glowdexapp](https://github.com/glowdexapp)
|
||||
|
||||
This visually stunning website allows you to create a wishlist to share with your friends so they don't need to wreck their brains for gift ideas. Here, have a look at what I want this Christmas: [thegetlist.co/list/thorwebdev](https://www.thegetlist.co/list/thorwebdev).
|
||||
|
||||
[](https://github.com/glowdex/wishlist)
|
||||
|
||||
### Runner Up
|
||||
|
||||
[card creator](https://github.com/maggie-j-liu/card-creator) - by [maggie-j-liu](https://github.com/maggie-j-liu), [Arash](https://github.com/arashnrim), [@eiilla11](https://twitter.com/eiilla11), and [@_pranavnt](https://twitter.com/_pranavnt)
|
||||
|
||||
This team of high school hackers just keeps knocking it out of the park again. In our [Hacktoberfest Hackathon](https://supabase.com/blog/2021/10/14/hacktoberfest-hackathon-winners-2021#most-spookyfun) they already made it onto the podium. This time around they built this stunning greeting card platform that lets you send well wishes to your friends around the globe in no time. We love it!
|
||||
|
||||
[](https://youtu.be/Yx4N2bONA44)
|
||||
|
||||
## The Prizes
|
||||
|
||||
As is now tradition with Supabase Hackathons, the winners will receive an extremely limited edition gold medal shirt.
|
||||
|
||||

|
||||
|
||||
And the runner uppers will receive the same shirt but in silver. These shirts are limited to winners of the hackathon and will never be produced again. Keep them safe like your favourite NFTs!
|
||||
|
||||
## Hang out with us and the community
|
||||
|
||||
If you want to join the community and build with us, find other people using Supabase, or if you just want to chill and watch people build, come and join us in Discord!
|
||||
|
||||
[Join our Discord](https://discord.supabase.com)
|
||||
|
||||

|
||||
|
||||
### Get Started Guides
|
||||
|
||||
If you're inspired to build, check out some of the latest resources:
|
||||
|
||||
- [Build a SaaS product with Next.js, Supabase and Stripe](https://egghead.io/courses/build-a-saas-product-with-next-js-supabase-and-stripe-61f2bc20)
|
||||
- [Supabase & Sveltekit - Build Twitter in 75 minutes](https://youtu.be/mPQyckogDYc)
|
||||
- [Supabase Auth With Next.Js 12 Middleware](https://jitsu.com/blog/supabase-nextjs-middleware#what-were-going-to-build)
|
||||
- [Vue 3 & Supabase | Workout Tracker App](https://www.youtube.com/watch?v=3tF0fGkd4ho)
|
||||
- [Use Supabase Auth with Vue.js 3](https://vueschool.io/articles/vuejs-tutorials/use-supabase-auth-with-vue-js-3/)
|
||||
- [Dynamic Jamstack with Stencil and Supabase](https://ionicframework.com/blog/dynamic-jamstack-with-stencil-and-supabase)
|
||||
@@ -24,9 +24,7 @@ const BlogListItem = ({ blog }: Props) => {
|
||||
<Image
|
||||
layout="fill"
|
||||
src={
|
||||
!blog.thumb
|
||||
? `https://images.unsplash.com/photo-1569982175971-d92b01cf8694?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1`
|
||||
: `/images/blog/${blog.thumb}`
|
||||
!blog.thumb ? `/images/blog/blog-placeholder.png` : `/images/blog/${blog.thumb}`
|
||||
}
|
||||
objectFit="cover"
|
||||
className="transform duration-100 ease-in scale-100 group-hover:scale-105"
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useRouter } from 'next/router'
|
||||
import FooterLinks from 'data/Footer.json'
|
||||
import SectionContainer from '../Layouts/SectionContainer'
|
||||
import DarkModeToggle from '../DarkModeToggle'
|
||||
import Link from 'next/link'
|
||||
|
||||
type Props = {
|
||||
darkMode: boolean
|
||||
@@ -23,15 +24,19 @@ const Footer = (props: Props) => {
|
||||
<SectionContainer>
|
||||
<div className="xl:grid xl:grid-cols-3 xl:gap-8">
|
||||
<div className="space-y-8 xl:col-span-1">
|
||||
<img
|
||||
className="w-40"
|
||||
src={
|
||||
darkMode
|
||||
? `${basePath}/brand-assets/supabase-logo-wordmark--dark.svg`
|
||||
: `${basePath}/brand-assets/supabase-logo-wordmark--light.svg`
|
||||
}
|
||||
alt="Supabase"
|
||||
/>
|
||||
<Link href="#" as="/">
|
||||
<a>
|
||||
<img
|
||||
className="w-40"
|
||||
src={
|
||||
darkMode
|
||||
? `${basePath}/brand-assets/supabase-logo-wordmark--dark.svg`
|
||||
: `${basePath}/brand-assets/supabase-logo-wordmark--light.svg`
|
||||
}
|
||||
alt="Supabase"
|
||||
/>
|
||||
</a>
|
||||
</Link>
|
||||
<div className="flex space-x-6">
|
||||
<a href="https://twitter.com/supabase" className="text-gray-300 hover:text-gray-400">
|
||||
<span className="sr-only">Twitter</span>
|
||||
@@ -97,7 +102,9 @@ const Footer = (props: Props) => {
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-32 border-t dark:border-dark pt-8 flex justify-between">
|
||||
<p className="text-base text-gray-400 dark:text-dark-400">© Supabase Inc</p>
|
||||
<p className="mb-0 self-center text-base text-gray-400 dark:text-dark-400">
|
||||
© Supabase Inc
|
||||
</p>
|
||||
<DarkModeToggle darkMode={darkMode} updateTheme={updateTheme} />
|
||||
</div>
|
||||
</SectionContainer>
|
||||
|
||||
@@ -3,15 +3,13 @@ import Link from 'next/link'
|
||||
|
||||
function TextLink({ url, label }: any) {
|
||||
return (
|
||||
<a href={url}>
|
||||
<a className="block text-sm text-gray-400 dark:text-gray-400 mt-3">
|
||||
<div className="flex items-center">
|
||||
<span>{label}</span>
|
||||
<span className="ml-2">
|
||||
<IconArrowRight size="tiny" />
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
<a href={url} className="block text-sm text-gray-400 dark:text-gray-400 mt-3">
|
||||
<div className="flex items-center">
|
||||
<span>{label}</span>
|
||||
<span className="ml-2">
|
||||
<IconArrowRight size="tiny" />
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1868,9 +1868,9 @@
|
||||
"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
|
||||
},
|
||||
"node_modules/@next/env": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.4.tgz",
|
||||
"integrity": "sha512-QtZ6X5c6Zqa7oWs5csEmZ7xy+gLdtRKKg02SOT5l0Ziea4P5IU8mSOCyNC4fZmXewcRVjpbY+yGqAAP7hJUfOA=="
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.7.tgz",
|
||||
"integrity": "sha512-TNDqBV37wd95SiNdZsSUq8gnnrTwr+aN9wqy4Zxrxw4bC/jCHNsbK94DxjkG99VL30VCRXXDBTA1/Wa2jIpF9Q=="
|
||||
},
|
||||
"node_modules/@next/mdx": {
|
||||
"version": "10.2.3",
|
||||
@@ -1882,14 +1882,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/polyfill-module": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-12.0.4.tgz",
|
||||
"integrity": "sha512-mk9yCDNpfXINTJKFTZNgwYs7eqRFpc5D/49O/fKB59blihyKl1GY1sZ0l7a2bn5l1X/WuaZzcIfqnrwkneqeaQ=="
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-12.0.7.tgz",
|
||||
"integrity": "sha512-sA8LAMMlmcspIZw/jeQuJTyA3uGrqOhTBaQE+G9u6DPohqrBFRkaz7RzzJeqXkUXw600occsIBknSjyVd1R67A=="
|
||||
},
|
||||
"node_modules/@next/react-dev-overlay": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-12.0.4.tgz",
|
||||
"integrity": "sha512-9O0lXyzv5goFSmDwq9Hp8JE+DcObvd+bTXvmGSSvYR91AlIoVlH8/PwATx8Rf5YEuqggn/XKR1hn2kBYcbcGnA==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-12.0.7.tgz",
|
||||
"integrity": "sha512-dSQLgpZ5uzyittFtIHlJCLAbc0LlMFbRBSYuGsIlrtGyjYN+WMcnz8lK48VLxNPFGuB/hEzkWV4TW5Zu75+Fzg==",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "7.12.11",
|
||||
"anser": "1.4.9",
|
||||
@@ -1998,9 +1998,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/react-refresh-utils": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-12.0.4.tgz",
|
||||
"integrity": "sha512-kNUDmpBaJ+8Lb8CtKNynRFF9oijCjUKKru6Ont+JKhti9//5dNFFIcuo607bJSH86un06OEK0TZUt5XWVlbkjw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-12.0.7.tgz",
|
||||
"integrity": "sha512-Pglj1t+7RxH0txEqVcD8ZxrJgqLDmKvQDqxKq3ZPRWxMv7LTl7FVT2Pnb36QFeBwCvMVl67jxsADKsW0idz8sA==",
|
||||
"peerDependencies": {
|
||||
"react-refresh": "0.8.3",
|
||||
"webpack": "^4 || ^5"
|
||||
@@ -2012,9 +2012,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-android-arm64": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.4.tgz",
|
||||
"integrity": "sha512-6mXumia8ZPcy7bYu9kjItfWxrE6SFaJyqQDaFy9G9WrU9x3M1R1Yok8B2X1mboM8itD0tq+t3R/ebQEkkmevUw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.7.tgz",
|
||||
"integrity": "sha512-yViT7EEc7JqxncRT+ZTeTsrAYXLlcefo0Y0eAfYmmalGD2605L4FWAVrJi4WnrSLji7l+veczw1WBmNeHICKKA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2027,9 +2027,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-arm64": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.4.tgz",
|
||||
"integrity": "sha512-7WMen1qhF5JmjKD9S5IEgEoaPJOXyIZj/Nsqa8ZSWxdF5oogp3uYYbKb/rvMYoKzpIbjyoLH/OCM5lm5IFM4iw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.7.tgz",
|
||||
"integrity": "sha512-vhAyW2rDEUcQesRVaj0z1hSoz7QhDzzGd0V1/5/5i9YJOfOtyrPsVJ82tlf7BfXl6/Ep+eKNfWVIb5/Jv89EKg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2042,9 +2042,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-x64": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.4.tgz",
|
||||
"integrity": "sha512-PVgefMWjxP6CU1HQs39+Bfpjcue6qErJfvJ/+n2zimjLzyeQAmD6LM9f1lDSttW2LjKjasoxR5qkRNLVlqzlaA==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.7.tgz",
|
||||
"integrity": "sha512-km+6Rx6TvbraoQ1f0MXa69ol/x0RxzucFGa2OgZaYJERas0spy0iwW8hpASsGcf597D8VRW1x+R2C7ZdjVBSTw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2057,9 +2057,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm-gnueabihf": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.4.tgz",
|
||||
"integrity": "sha512-8xGQu3sJiIdriKiCux3jDJ9pwivELEg7z2zfW0CqmQMbKNB7qP9lc0pq6CxshtKyXRMczNWRMtQ3Cjwep+UvNg==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.7.tgz",
|
||||
"integrity": "sha512-d0zWr877YqZ2cf/DQy6obouaR39r0FPebcXj2nws9AC99m68CO2xVpWv9jT7mFvpY+T40HJisLH80jSZ2iQ9sA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -2072,9 +2072,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.4.tgz",
|
||||
"integrity": "sha512-HhEWcBkqGr3E7SYLtN9VnYUGamAWaLcXawHN33Em0WP7gzXrBqz0iIJNH7uEzHDS6980EqU/rrkLyhCHrYSZgQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.7.tgz",
|
||||
"integrity": "sha512-fdobh5u6gG13Gd5LkHhJ+W8tF9hbaFolRW99FhzArMe5/nMKlLdBymOxvitE3K4gSFQxbXJA6TbU0Vv0e59Kww==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2087,9 +2087,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-musl": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.4.tgz",
|
||||
"integrity": "sha512-oZyQ9wjtE7OX9RlnovP7izNx2AR/RzTuYWU4Ttim8ssABsipQSxSlfRaeb+Qi6jTc6k+lrPhjRfaZ+fGv/m2Ag==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.7.tgz",
|
||||
"integrity": "sha512-vx0c5Q3oIScFNT/4jI9rCe0yPzKuCqWOkiO/OOV0ixSI2gLhbrwDIcdkm79fKVn3i8JOJunxE4zDoFeR/g8xqQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2102,9 +2102,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-gnu": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.4.tgz",
|
||||
"integrity": "sha512-aBuf78QzL93T59Lk9kEGfHcA+9SzYIH7dGon1nqVxtAd2iqicKYNVaVcb38VKeiIBXMSUHXTdu6Ee053ZCOmSw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.7.tgz",
|
||||
"integrity": "sha512-9ITyp6s6uGVKNx3C/GP7GrYycbcwTADG7TdIXzXUxOOZORrdB1GNg3w/EL3Am4VMPPEpO6v1RfKo2IKZpVKfTA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2117,9 +2117,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-musl": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.4.tgz",
|
||||
"integrity": "sha512-yDgqUqL4H8M3Y0hv30ZyL9UvjnK4iXmD4I6iJz+XIHSRdA/VUiyKKoL7okf9hxr0mSxBtagbZ5A3qEoW/VliUQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.7.tgz",
|
||||
"integrity": "sha512-C+k+cygbIZXYfc+Hx2fNPUBEg7jzio+mniP5ywZevuTXW14zodIfQ3ZMoMJR8EpOVvYpjWFk2uAjiwqgx8vo/g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -2132,9 +2132,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.4.tgz",
|
||||
"integrity": "sha512-evDUrEYsUo+PMHsedaymfZO98VwV9wNFzuWVCyKgqg6SD1ZRpzbpqYQY7aINIuqZVdIWZElBE6EM+oxaj7PuWQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.7.tgz",
|
||||
"integrity": "sha512-7jTRjOKkDVnb5s7VoHT7eX+eyT/5BQJ/ljP2G56riAgKGqPL63/V7FXemLhhLT67D+OjoP8DRA2E2ne6IPHk4w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -2147,9 +2147,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-ia32-msvc": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.4.tgz",
|
||||
"integrity": "sha512-Lbmz0xlo8vW4EDWyzCfy3nGfqt7skqwxaERwe+vDVTBZ56mvJ5dsdyjqK24sxu4FFkWR7SaU4eNlHwZR+A3kTg==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.7.tgz",
|
||||
"integrity": "sha512-2u5pGDsk7H6gGxob2ATIojzlwKzgYsrijo7RRpXOiPePVqwPWg6/pmhaJzLdpfjaBgRg1NFmwSp/7Ump9X8Ijg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -2162,9 +2162,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-x64-msvc": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.4.tgz",
|
||||
"integrity": "sha512-f+7WNIJOno5QEelrmob+3vN5EZJb3KCkOrnvUsQ0+LCCD0dIPIhCjeHAh3BGj9msGu8ijnXvD7JxVxE5V26cnQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.7.tgz",
|
||||
"integrity": "sha512-frEWtbf+q8Oz4e2UqKJrNssk6DZ6/NLCQXn5/ORWE9dPAfe9XS6aK5FRZ6DuEPmmKd5gOoRkKJFFz5nYd+TeyQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -6590,17 +6590,17 @@
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/next": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-12.0.4.tgz",
|
||||
"integrity": "sha512-1pvjcSZBm5OLoGmDhp4JwKwIE798WbqUNLuyU7w6a2jUkdWaxOYtkE/ROXQTi2pXHj7+6rm68AvhxROLX2NHQg==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-12.0.7.tgz",
|
||||
"integrity": "sha512-sKO8GJJYfuk9c+q+zHSNumvff+wP7ufmOlwT6BuzwiYfFJ61VTTkfTcDLSJ+95ErQJiC54uS4Yg5JEE8H6jXRA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.15.4",
|
||||
"@hapi/accept": "5.0.2",
|
||||
"@napi-rs/triples": "1.0.3",
|
||||
"@next/env": "12.0.4",
|
||||
"@next/polyfill-module": "12.0.4",
|
||||
"@next/react-dev-overlay": "12.0.4",
|
||||
"@next/react-refresh-utils": "12.0.4",
|
||||
"@next/env": "12.0.7",
|
||||
"@next/polyfill-module": "12.0.7",
|
||||
"@next/react-dev-overlay": "12.0.7",
|
||||
"@next/react-refresh-utils": "12.0.7",
|
||||
"acorn": "8.5.0",
|
||||
"assert": "2.0.0",
|
||||
"browserify-zlib": "0.2.0",
|
||||
@@ -6642,7 +6642,7 @@
|
||||
"use-subscription": "1.5.1",
|
||||
"util": "0.12.4",
|
||||
"vm-browserify": "1.1.2",
|
||||
"watchpack": "2.1.1"
|
||||
"watchpack": "2.3.0"
|
||||
},
|
||||
"bin": {
|
||||
"next": "dist/bin/next"
|
||||
@@ -6651,23 +6651,23 @@
|
||||
"node": ">=12.22.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@next/swc-android-arm64": "12.0.4",
|
||||
"@next/swc-darwin-arm64": "12.0.4",
|
||||
"@next/swc-darwin-x64": "12.0.4",
|
||||
"@next/swc-linux-arm-gnueabihf": "12.0.4",
|
||||
"@next/swc-linux-arm64-gnu": "12.0.4",
|
||||
"@next/swc-linux-arm64-musl": "12.0.4",
|
||||
"@next/swc-linux-x64-gnu": "12.0.4",
|
||||
"@next/swc-linux-x64-musl": "12.0.4",
|
||||
"@next/swc-win32-arm64-msvc": "12.0.4",
|
||||
"@next/swc-win32-ia32-msvc": "12.0.4",
|
||||
"@next/swc-win32-x64-msvc": "12.0.4"
|
||||
"@next/swc-android-arm64": "12.0.7",
|
||||
"@next/swc-darwin-arm64": "12.0.7",
|
||||
"@next/swc-darwin-x64": "12.0.7",
|
||||
"@next/swc-linux-arm-gnueabihf": "12.0.7",
|
||||
"@next/swc-linux-arm64-gnu": "12.0.7",
|
||||
"@next/swc-linux-arm64-musl": "12.0.7",
|
||||
"@next/swc-linux-x64-gnu": "12.0.7",
|
||||
"@next/swc-linux-x64-musl": "12.0.7",
|
||||
"@next/swc-win32-arm64-msvc": "12.0.7",
|
||||
"@next/swc-win32-ia32-msvc": "12.0.7",
|
||||
"@next/swc-win32-x64-msvc": "12.0.7"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"fibers": ">= 3.1.0",
|
||||
"node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0",
|
||||
"react": "^17.0.2 || ^18.0.0",
|
||||
"react-dom": "^17.0.2 || ^18.0.0",
|
||||
"react": "^17.0.2 || ^18.0.0-0",
|
||||
"react-dom": "^17.0.2 || ^18.0.0-0",
|
||||
"sass": "^1.3.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
@@ -11025,9 +11025,9 @@
|
||||
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz",
|
||||
"integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz",
|
||||
"integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==",
|
||||
"dependencies": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
@@ -11108,20 +11108,6 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/webpack/node_modules/watchpack": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz",
|
||||
"integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==",
|
||||
"devOptional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/websocket": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
|
||||
@@ -12488,9 +12474,9 @@
|
||||
"integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
|
||||
},
|
||||
"@next/env": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.4.tgz",
|
||||
"integrity": "sha512-QtZ6X5c6Zqa7oWs5csEmZ7xy+gLdtRKKg02SOT5l0Ziea4P5IU8mSOCyNC4fZmXewcRVjpbY+yGqAAP7hJUfOA=="
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-12.0.7.tgz",
|
||||
"integrity": "sha512-TNDqBV37wd95SiNdZsSUq8gnnrTwr+aN9wqy4Zxrxw4bC/jCHNsbK94DxjkG99VL30VCRXXDBTA1/Wa2jIpF9Q=="
|
||||
},
|
||||
"@next/mdx": {
|
||||
"version": "10.2.3",
|
||||
@@ -12499,14 +12485,14 @@
|
||||
"requires": {}
|
||||
},
|
||||
"@next/polyfill-module": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-12.0.4.tgz",
|
||||
"integrity": "sha512-mk9yCDNpfXINTJKFTZNgwYs7eqRFpc5D/49O/fKB59blihyKl1GY1sZ0l7a2bn5l1X/WuaZzcIfqnrwkneqeaQ=="
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-12.0.7.tgz",
|
||||
"integrity": "sha512-sA8LAMMlmcspIZw/jeQuJTyA3uGrqOhTBaQE+G9u6DPohqrBFRkaz7RzzJeqXkUXw600occsIBknSjyVd1R67A=="
|
||||
},
|
||||
"@next/react-dev-overlay": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-12.0.4.tgz",
|
||||
"integrity": "sha512-9O0lXyzv5goFSmDwq9Hp8JE+DcObvd+bTXvmGSSvYR91AlIoVlH8/PwATx8Rf5YEuqggn/XKR1hn2kBYcbcGnA==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-12.0.7.tgz",
|
||||
"integrity": "sha512-dSQLgpZ5uzyittFtIHlJCLAbc0LlMFbRBSYuGsIlrtGyjYN+WMcnz8lK48VLxNPFGuB/hEzkWV4TW5Zu75+Fzg==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "7.12.11",
|
||||
"anser": "1.4.9",
|
||||
@@ -12583,75 +12569,75 @@
|
||||
}
|
||||
},
|
||||
"@next/react-refresh-utils": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-12.0.4.tgz",
|
||||
"integrity": "sha512-kNUDmpBaJ+8Lb8CtKNynRFF9oijCjUKKru6Ont+JKhti9//5dNFFIcuo607bJSH86un06OEK0TZUt5XWVlbkjw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-12.0.7.tgz",
|
||||
"integrity": "sha512-Pglj1t+7RxH0txEqVcD8ZxrJgqLDmKvQDqxKq3ZPRWxMv7LTl7FVT2Pnb36QFeBwCvMVl67jxsADKsW0idz8sA==",
|
||||
"requires": {}
|
||||
},
|
||||
"@next/swc-android-arm64": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.4.tgz",
|
||||
"integrity": "sha512-6mXumia8ZPcy7bYu9kjItfWxrE6SFaJyqQDaFy9G9WrU9x3M1R1Yok8B2X1mboM8itD0tq+t3R/ebQEkkmevUw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.0.7.tgz",
|
||||
"integrity": "sha512-yViT7EEc7JqxncRT+ZTeTsrAYXLlcefo0Y0eAfYmmalGD2605L4FWAVrJi4WnrSLji7l+veczw1WBmNeHICKKA==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-darwin-arm64": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.4.tgz",
|
||||
"integrity": "sha512-7WMen1qhF5JmjKD9S5IEgEoaPJOXyIZj/Nsqa8ZSWxdF5oogp3uYYbKb/rvMYoKzpIbjyoLH/OCM5lm5IFM4iw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.7.tgz",
|
||||
"integrity": "sha512-vhAyW2rDEUcQesRVaj0z1hSoz7QhDzzGd0V1/5/5i9YJOfOtyrPsVJ82tlf7BfXl6/Ep+eKNfWVIb5/Jv89EKg==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-darwin-x64": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.4.tgz",
|
||||
"integrity": "sha512-PVgefMWjxP6CU1HQs39+Bfpjcue6qErJfvJ/+n2zimjLzyeQAmD6LM9f1lDSttW2LjKjasoxR5qkRNLVlqzlaA==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.7.tgz",
|
||||
"integrity": "sha512-km+6Rx6TvbraoQ1f0MXa69ol/x0RxzucFGa2OgZaYJERas0spy0iwW8hpASsGcf597D8VRW1x+R2C7ZdjVBSTw==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-linux-arm-gnueabihf": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.4.tgz",
|
||||
"integrity": "sha512-8xGQu3sJiIdriKiCux3jDJ9pwivELEg7z2zfW0CqmQMbKNB7qP9lc0pq6CxshtKyXRMczNWRMtQ3Cjwep+UvNg==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.7.tgz",
|
||||
"integrity": "sha512-d0zWr877YqZ2cf/DQy6obouaR39r0FPebcXj2nws9AC99m68CO2xVpWv9jT7mFvpY+T40HJisLH80jSZ2iQ9sA==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-linux-arm64-gnu": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.4.tgz",
|
||||
"integrity": "sha512-HhEWcBkqGr3E7SYLtN9VnYUGamAWaLcXawHN33Em0WP7gzXrBqz0iIJNH7uEzHDS6980EqU/rrkLyhCHrYSZgQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.7.tgz",
|
||||
"integrity": "sha512-fdobh5u6gG13Gd5LkHhJ+W8tF9hbaFolRW99FhzArMe5/nMKlLdBymOxvitE3K4gSFQxbXJA6TbU0Vv0e59Kww==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-linux-arm64-musl": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.4.tgz",
|
||||
"integrity": "sha512-oZyQ9wjtE7OX9RlnovP7izNx2AR/RzTuYWU4Ttim8ssABsipQSxSlfRaeb+Qi6jTc6k+lrPhjRfaZ+fGv/m2Ag==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.7.tgz",
|
||||
"integrity": "sha512-vx0c5Q3oIScFNT/4jI9rCe0yPzKuCqWOkiO/OOV0ixSI2gLhbrwDIcdkm79fKVn3i8JOJunxE4zDoFeR/g8xqQ==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-linux-x64-gnu": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.4.tgz",
|
||||
"integrity": "sha512-aBuf78QzL93T59Lk9kEGfHcA+9SzYIH7dGon1nqVxtAd2iqicKYNVaVcb38VKeiIBXMSUHXTdu6Ee053ZCOmSw==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.7.tgz",
|
||||
"integrity": "sha512-9ITyp6s6uGVKNx3C/GP7GrYycbcwTADG7TdIXzXUxOOZORrdB1GNg3w/EL3Am4VMPPEpO6v1RfKo2IKZpVKfTA==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-linux-x64-musl": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.4.tgz",
|
||||
"integrity": "sha512-yDgqUqL4H8M3Y0hv30ZyL9UvjnK4iXmD4I6iJz+XIHSRdA/VUiyKKoL7okf9hxr0mSxBtagbZ5A3qEoW/VliUQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.7.tgz",
|
||||
"integrity": "sha512-C+k+cygbIZXYfc+Hx2fNPUBEg7jzio+mniP5ywZevuTXW14zodIfQ3ZMoMJR8EpOVvYpjWFk2uAjiwqgx8vo/g==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-win32-arm64-msvc": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.4.tgz",
|
||||
"integrity": "sha512-evDUrEYsUo+PMHsedaymfZO98VwV9wNFzuWVCyKgqg6SD1ZRpzbpqYQY7aINIuqZVdIWZElBE6EM+oxaj7PuWQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.7.tgz",
|
||||
"integrity": "sha512-7jTRjOKkDVnb5s7VoHT7eX+eyT/5BQJ/ljP2G56riAgKGqPL63/V7FXemLhhLT67D+OjoP8DRA2E2ne6IPHk4w==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-win32-ia32-msvc": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.4.tgz",
|
||||
"integrity": "sha512-Lbmz0xlo8vW4EDWyzCfy3nGfqt7skqwxaERwe+vDVTBZ56mvJ5dsdyjqK24sxu4FFkWR7SaU4eNlHwZR+A3kTg==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.7.tgz",
|
||||
"integrity": "sha512-2u5pGDsk7H6gGxob2ATIojzlwKzgYsrijo7RRpXOiPePVqwPWg6/pmhaJzLdpfjaBgRg1NFmwSp/7Ump9X8Ijg==",
|
||||
"optional": true
|
||||
},
|
||||
"@next/swc-win32-x64-msvc": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.4.tgz",
|
||||
"integrity": "sha512-f+7WNIJOno5QEelrmob+3vN5EZJb3KCkOrnvUsQ0+LCCD0dIPIhCjeHAh3BGj9msGu8ijnXvD7JxVxE5V26cnQ==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.7.tgz",
|
||||
"integrity": "sha512-frEWtbf+q8Oz4e2UqKJrNssk6DZ6/NLCQXn5/ORWE9dPAfe9XS6aK5FRZ6DuEPmmKd5gOoRkKJFFz5nYd+TeyQ==",
|
||||
"optional": true
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
@@ -16036,28 +16022,28 @@
|
||||
"peer": true
|
||||
},
|
||||
"next": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-12.0.4.tgz",
|
||||
"integrity": "sha512-1pvjcSZBm5OLoGmDhp4JwKwIE798WbqUNLuyU7w6a2jUkdWaxOYtkE/ROXQTi2pXHj7+6rm68AvhxROLX2NHQg==",
|
||||
"version": "12.0.7",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-12.0.7.tgz",
|
||||
"integrity": "sha512-sKO8GJJYfuk9c+q+zHSNumvff+wP7ufmOlwT6BuzwiYfFJ61VTTkfTcDLSJ+95ErQJiC54uS4Yg5JEE8H6jXRA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "7.15.4",
|
||||
"@hapi/accept": "5.0.2",
|
||||
"@napi-rs/triples": "1.0.3",
|
||||
"@next/env": "12.0.4",
|
||||
"@next/polyfill-module": "12.0.4",
|
||||
"@next/react-dev-overlay": "12.0.4",
|
||||
"@next/react-refresh-utils": "12.0.4",
|
||||
"@next/swc-android-arm64": "12.0.4",
|
||||
"@next/swc-darwin-arm64": "12.0.4",
|
||||
"@next/swc-darwin-x64": "12.0.4",
|
||||
"@next/swc-linux-arm-gnueabihf": "12.0.4",
|
||||
"@next/swc-linux-arm64-gnu": "12.0.4",
|
||||
"@next/swc-linux-arm64-musl": "12.0.4",
|
||||
"@next/swc-linux-x64-gnu": "12.0.4",
|
||||
"@next/swc-linux-x64-musl": "12.0.4",
|
||||
"@next/swc-win32-arm64-msvc": "12.0.4",
|
||||
"@next/swc-win32-ia32-msvc": "12.0.4",
|
||||
"@next/swc-win32-x64-msvc": "12.0.4",
|
||||
"@next/env": "12.0.7",
|
||||
"@next/polyfill-module": "12.0.7",
|
||||
"@next/react-dev-overlay": "12.0.7",
|
||||
"@next/react-refresh-utils": "12.0.7",
|
||||
"@next/swc-android-arm64": "12.0.7",
|
||||
"@next/swc-darwin-arm64": "12.0.7",
|
||||
"@next/swc-darwin-x64": "12.0.7",
|
||||
"@next/swc-linux-arm-gnueabihf": "12.0.7",
|
||||
"@next/swc-linux-arm64-gnu": "12.0.7",
|
||||
"@next/swc-linux-arm64-musl": "12.0.7",
|
||||
"@next/swc-linux-x64-gnu": "12.0.7",
|
||||
"@next/swc-linux-x64-musl": "12.0.7",
|
||||
"@next/swc-win32-arm64-msvc": "12.0.7",
|
||||
"@next/swc-win32-ia32-msvc": "12.0.7",
|
||||
"@next/swc-win32-x64-msvc": "12.0.7",
|
||||
"acorn": "8.5.0",
|
||||
"assert": "2.0.0",
|
||||
"browserify-zlib": "0.2.0",
|
||||
@@ -16099,7 +16085,7 @@
|
||||
"use-subscription": "1.5.1",
|
||||
"util": "0.12.4",
|
||||
"vm-browserify": "1.1.2",
|
||||
"watchpack": "2.1.1"
|
||||
"watchpack": "2.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"browserslist": {
|
||||
@@ -19386,9 +19372,9 @@
|
||||
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
|
||||
},
|
||||
"watchpack": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz",
|
||||
"integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz",
|
||||
"integrity": "sha512-MnN0Q1OsvB/GGHETrFeZPQaOelWh/7O+EiFlj8sM9GPjtQkis7k01aAxrg/18kTfoIVcLL+haEVFlXDaSRwKRw==",
|
||||
"requires": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
@@ -19435,19 +19421,6 @@
|
||||
"terser-webpack-plugin": "^5.1.3",
|
||||
"watchpack": "^2.2.0",
|
||||
"webpack-sources": "^3.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"watchpack": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz",
|
||||
"integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==",
|
||||
"devOptional": true,
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"webpack-sources": {
|
||||
|
||||
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 642 KiB |
|
After Width: | Height: | Size: 495 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 645 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 388 KiB |
|
After Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 792 KiB |
|
After Width: | Height: | Size: 832 KiB |
|
After Width: | Height: | Size: 928 KiB |
|
After Width: | Height: | Size: 1.3 MiB |