- Currently Happening
+
+ Shipped
The Supabase Content Storm
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 70da7c553bd..2eca99b5ab3 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -1,8 +1,8 @@
# Usage
-# Start: docker-compose up
-# With helpers: docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-# Stop: docker-compose down
-# Destroy: docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
+# Start: docker compose up
+# With helpers: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
+# Stop: docker compose down
+# Destroy: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
version: "3.8"
@@ -197,9 +197,15 @@ services:
- log_min_messages=fatal # prevents Realtime polling queries from appearing in logs
restart: unless-stopped
ports:
- - ${POSTGRES_PORT}:5432
+ # Pass down internal port because it's set dynamically by other services
+ - ${POSTGRES_PORT}:${POSTGRES_PORT}
environment:
POSTGRES_HOST: /var/run/postgresql
+ PGPORT: ${POSTGRES_PORT}
+ POSTGRES_PORT: ${POSTGRES_PORT}
+ PGPASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ PGDATABASE: ${POSTGRES_DB}
+ POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./volumes/db/roles.sql:/docker-entrypoint-initdb.d/roles.sql
diff --git a/docker/volumes/db/roles.sql b/docker/volumes/db/roles.sql
index b369bf5af99..a592043ee5b 100644
--- a/docker/volumes/db/roles.sql
+++ b/docker/volumes/db/roles.sql
@@ -1,5 +1,5 @@
-- NOTE: change to your own passwords for production environments
-\set pgpass `echo "$PGPASSWORD"`
+\set pgpass `echo "$POSTGRES_PASSWORD"`
ALTER USER authenticator WITH PASSWORD :'pgpass';
ALTER USER pgbouncer WITH PASSWORD :'pgpass';
diff --git a/examples/caching/with-cloudflare-workers-kv/package-lock.json b/examples/caching/with-cloudflare-workers-kv/package-lock.json
index f4c473270b7..a38f4405af4 100644
--- a/examples/caching/with-cloudflare-workers-kv/package-lock.json
+++ b/examples/caching/with-cloudflare-workers-kv/package-lock.json
@@ -54,217 +54,258 @@
"dev": true
},
"node_modules/@miniflare/cache": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.5.1.tgz",
- "integrity": "sha512-qH5PC4zb7mHdQHlcaOuP0KUXuRbNSuB/HU7gpoeplV8J6CgNJGceVmQCZVZLycgDKZtAlhyGE1gkpJmeW7GCyw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.11.0.tgz",
+ "integrity": "sha512-L/kc9AzidPwFuk2fwHpAEePi0kNBk6FWUq3ln+9beRCDrPEpfVrDRFpNleF1NFZz5//oeVMuo8F0IVUQGzR7+Q==",
"dev": true,
"dependencies": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
"http-cache-semantics": "^4.1.0",
- "undici": "5.5.1"
+ "undici": "5.9.1"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/cli-parser": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.5.1.tgz",
- "integrity": "sha512-itlMDe9jwO806mkNkg3G70QYoG9YQHW6V10AF9L5b8J4LYt/V78uCEJSwNnCpL7zfKrScRPtDfXZxhrFzMXiUw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.11.0.tgz",
+ "integrity": "sha512-JUmyRzEGAS6CouvXJwBh8p44onfw3KRpfq5JGXEuHModOGjTp6li7PQyCTNPV2Hv/7StAXWnTFGXeAqyDHuTig==",
"dev": true,
"dependencies": {
- "@miniflare/shared": "2.5.1",
+ "@miniflare/shared": "2.11.0",
"kleur": "^4.1.4"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/core": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.5.1.tgz",
- "integrity": "sha512-0oEBLV5AM3xxs6TS+7/fn4MSGNBfhUFVv41R8uc72H1a89+kBfRoz+xYI2RnJ3Yo+we66UgU3fXdG+R2KyESlQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.11.0.tgz",
+ "integrity": "sha512-UFMFiCG0co36VpZkgFrSBnrxo71uf1x+cjlzzJi3khmMyDlnLu4RuIQsAqvKbYom6fi3G9Q8lTgM7JuOXFyjhw==",
"dev": true,
"dependencies": {
"@iarna/toml": "^2.2.5",
- "@miniflare/shared": "2.5.1",
- "@miniflare/watcher": "2.5.1",
+ "@miniflare/queues": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/watcher": "2.11.0",
"busboy": "^1.6.0",
"dotenv": "^10.0.0",
"kleur": "^4.1.4",
"set-cookie-parser": "^2.4.8",
- "undici": "5.5.1",
+ "undici": "5.9.1",
"urlpattern-polyfill": "^4.0.3"
},
+ "engines": {
+ "node": ">=16.13"
+ }
+ },
+ "node_modules/@miniflare/d1": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/d1/-/d1-2.11.0.tgz",
+ "integrity": "sha512-aDdBVQZ2C0Zs3+Y9ZbRctmuQxozPfpumwJ/6NG6fBadANvune/hW7ddEoxyteIEU9W3IgzVj8s4by4VvasX90A==",
+ "dev": true,
+ "dependencies": {
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0"
+ },
"engines": {
"node": ">=16.7"
}
},
"node_modules/@miniflare/durable-objects": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.5.1.tgz",
- "integrity": "sha512-AZEGSA9LMA6vBzwADAzr81RBSWYlMfa/cDHnHaFL31w4mQwMUcqXOvemoqe6sTSq1KI0TTtvYbxPt0Lui8tEPw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.11.0.tgz",
+ "integrity": "sha512-0cKJaMgraTEU1b4kqK8cjD2oTeOjA6QU3Y+lWiZT/k1PMHZULovrSFnjii7qZ8npf4VHSIN6XYPxhyxRyEM65Q==",
"dev": true,
"dependencies": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/storage-memory": "2.5.1",
- "undici": "5.5.1"
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/storage-memory": "2.11.0",
+ "undici": "5.9.1"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/html-rewriter": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.5.1.tgz",
- "integrity": "sha512-fdO1qme8ukucejRz5yXJN/F4B9qEDRbBLPOEG94zwx8bHGGIo5VX15+J6oHubhjifLwzNuvOcg16Bu5dyR1KxQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.11.0.tgz",
+ "integrity": "sha512-olTqmuYTHnoTNtiA0vjQ/ixRfbwgPzDrAUbtXDCYW45VFbHfDVJrJGZX3Jg0HpSlxy86Zclle1SUxGbVDzxsBg==",
"dev": true,
"dependencies": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
"html-rewriter-wasm": "^0.4.1",
- "undici": "5.5.1"
+ "undici": "5.9.1"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/http-server": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.5.1.tgz",
- "integrity": "sha512-K+VoBU0LN8/oku/JWLEyX8wrp9fiaTC8/dosbY/6VWizyIrgQze16uD21GnK5+NBtbCAtLRryS5dZ3PnhiTR1w==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.11.0.tgz",
+ "integrity": "sha512-sMLcrDFzqqAvnQmAUH0hRTo8sBjW79VZYfnIH5FAGSGcKX6kdAGs9RStdYZ4CftQCBAEQScX0KBsMx5FwJRe9Q==",
"dev": true,
"dependencies": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/web-sockets": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/web-sockets": "2.11.0",
"kleur": "^4.1.4",
"selfsigned": "^2.0.0",
- "undici": "5.5.1",
+ "undici": "5.9.1",
"ws": "^8.2.2",
"youch": "^2.2.2"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/kv": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.5.1.tgz",
- "integrity": "sha512-ODTUqI7on3egHluBpFHifO0a9QFQUZscciASWKxGOt8VDp1vp0vIfU9ykQZrdZYFVeSKNVlUNqNQx+NMYZ6gIg==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.11.0.tgz",
+ "integrity": "sha512-3m9dL2HBBN170V1JvwjjucR5zl4G3mlcsV6C1E7A2wLl2Z2TWvIx/tSY9hrhkD96dFnejwJ9qmPMbXMMuynhjg==",
"dev": true,
"dependencies": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
+ },
+ "engines": {
+ "node": ">=16.13"
+ }
+ },
+ "node_modules/@miniflare/queues": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/queues/-/queues-2.11.0.tgz",
+ "integrity": "sha512-fLHjdrNLKhn0LZM/aii/9GsAttFd+lWlGzK8HOg1R0vhfKBwEub4zntjMmOfFbDm1ntc21tdMK7n3ldUphwh5w==",
+ "dev": true,
+ "dependencies": {
+ "@miniflare/shared": "2.11.0"
},
"engines": {
"node": ">=16.7"
}
},
+ "node_modules/@miniflare/r2": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.11.0.tgz",
+ "integrity": "sha512-MKuyJ/gGNsK3eWbGdygvozqcyaZhM3C6NGHvoaZwH503dwN569j5DpatTWiHGFeDeSu64VqcIsGehz05GDUaag==",
+ "dev": true,
+ "dependencies": {
+ "@miniflare/shared": "2.11.0",
+ "undici": "5.9.1"
+ },
+ "engines": {
+ "node": ">=16.13"
+ }
+ },
"node_modules/@miniflare/runner-vm": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.5.1.tgz",
- "integrity": "sha512-7U7BPgzaikwWkAMonlmyy4lDpW1H7mqHFr7NdK9kA6BbXZ2GY6uro69QsGw0c4Y/vyKBodKiqXAq53iGdM3Kug==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.11.0.tgz",
+ "integrity": "sha512-bkVSuvCf5+VylqN8lTiLxIYqYcKFbl+BywZGwGQndPC/3wh42J00mM0jw4hRbvXgwuBhlUyCVpEXtYlftFFT/g==",
"dev": true,
"dependencies": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/scheduler": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.5.1.tgz",
- "integrity": "sha512-ybho5Kg3Cfl4E0JleKAbiv/RTA+/PVqH6Y/PuCH2oowSM7qeAvFkrwiRvxtN7BuAl+5lsGyVxFe4gL+weXohEw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.11.0.tgz",
+ "integrity": "sha512-DPdzINhdWeS99eIicGoluMsD4pLTTAWNQbgCv3CTwgdKA3dxdvMSCkNqZzQLiALzvk9+rSfj46FlH++HE7o7/w==",
"dev": true,
"dependencies": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
"cron-schedule": "^3.0.4"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/shared": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.5.1.tgz",
- "integrity": "sha512-DObgqbFml3qetIBtZa8fNqkBqUH9XtI6rdrWtTYVrx0rzKsd5PDf6gdMoxy7v1rr9zBAipKJxrcBqlEgjPl53Q==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.11.0.tgz",
+ "integrity": "sha512-fWMqq3ZkWAg+k7CnyzMV/rZHugwn+/JxvVzCxrtvxzwotTN547THlOxgZe8JAP23U9BiTxOfpTfnLvFEjAmegw==",
"dev": true,
"dependencies": {
- "ignore": "^5.1.8",
- "kleur": "^4.1.4"
+ "@types/better-sqlite3": "^7.6.0",
+ "kleur": "^4.1.4",
+ "npx-import": "^1.1.3",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/sites": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.5.1.tgz",
- "integrity": "sha512-7V/fAzR50LYgMcOfoCaoppqBCjagBpGWFbZgMyJi/Hj4oVlSIzxo+424hzdjitNzikCpv+AryF9tXfy9j6qiOg==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.11.0.tgz",
+ "integrity": "sha512-qbefKdWZUJgsdLf+kCw03sn3h/92LZgJAbkOpP6bCrfWkXlJ37EQXO4KWdhn4Ghc7A6GwU1s1I/mdB64B3AewQ==",
"dev": true,
"dependencies": {
- "@miniflare/kv": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/storage-file": "2.5.1"
+ "@miniflare/kv": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/storage-file": "2.11.0"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/storage-file": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.5.1.tgz",
- "integrity": "sha512-o12KFXgc1M0nHD98mrA/IqwBsJ6KYLWH9NaTwqLhxhpGz/KSo5kWb7z/vrz2I/Rk2XR/gHSYQm2XR9XE6IJCdA==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.11.0.tgz",
+ "integrity": "sha512-beWF/lTX74x7AiaSB+xQxywPSNdhtEKvqDkRui8eOJ5kqN2o4UaleLKQGgqmCw3WyHRIsckV7If1qpbNiLtWMw==",
"dev": true,
"dependencies": {
- "@miniflare/shared": "2.5.1",
- "@miniflare/storage-memory": "2.5.1"
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/storage-memory": "2.11.0"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/storage-memory": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.5.1.tgz",
- "integrity": "sha512-LIdBEFcwY7yLCeowO34p5bajRsvU1XuQjXIqcgfiCVt1+qa3D0seELTpW1NSFEJzxulVtu/KsScEug9GipEt7A==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.11.0.tgz",
+ "integrity": "sha512-s0AhPww7fq/Jz80NbPb+ffhcVRKnfPi7H1dHTRTre2Ud23EVJjAWl2gat42x8NOT/Fu3/o/7A72DWQQJqfO98A==",
"dev": true,
"dependencies": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/watcher": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.5.1.tgz",
- "integrity": "sha512-8oOdgWA7CZ7uIAwbjqSrhDnuQXRJqd9e3yDHsMa91E/jkC/GDmlt5SJh6VEMlNDtBGWd661IpVErZf7injI52w==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.11.0.tgz",
+ "integrity": "sha512-RUfjz2iYcsQXLcGySemJl98CJ2iierbWsPGWZhIVZI+NNhROkEy77g/Q+lvP2ATwexG3/dUSfdJ3P8aH+sI4Ig==",
"dev": true,
"dependencies": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@miniflare/web-sockets": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.5.1.tgz",
- "integrity": "sha512-GyXHoDAI5LDF87rmD+d0cSoN7Xs2pCYjSyUR6Vf6exkS4CN6F/Rtr8vIM5+om9kRkS6qxAyOYjWeEqBOjLm/og==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.11.0.tgz",
+ "integrity": "sha512-NC8RKrmxrO0hZmwpzn5g4hPGA2VblnFTIBobmWoxuK95eW49zfs7dtE/PyFs+blsGv3CjTIjHVSQ782K+C6HFA==",
"dev": true,
"dependencies": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "undici": "5.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "undici": "5.9.1",
"ws": "^8.2.2"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
}
},
"node_modules/@supabase/functions-js": {
@@ -320,6 +361,21 @@
"@supabase/storage-js": "^1.7.2"
}
},
+ "node_modules/@types/better-sqlite3": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz",
+ "integrity": "sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "18.11.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz",
+ "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==",
+ "dev": true
+ },
"node_modules/@types/phoenix": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz",
@@ -355,6 +411,15 @@
"node": ">=6.14.2"
}
},
+ "node_modules/builtins": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+ "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -390,6 +455,20 @@
"node-fetch": "2.6.7"
}
},
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
@@ -822,6 +901,29 @@
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
"dev": true
},
+ "node_modules/execa": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
+ "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^3.0.1",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
"node_modules/ext": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
@@ -849,6 +951,18 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/html-rewriter-wasm": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz",
@@ -861,13 +975,25 @@
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
"dev": true
},
- "node_modules/ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "node_modules/human-signals": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz",
+ "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==",
"dev": true,
"engines": {
- "node": ">= 4"
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-typedarray": {
@@ -875,6 +1001,12 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
"node_modules/itty-router": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/itty-router/-/itty-router-2.6.1.tgz",
@@ -894,6 +1026,18 @@
"node": ">=6"
}
},
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
@@ -903,6 +1047,12 @@
"sourcemap-codec": "^1.4.8"
}
},
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
"node_modules/mime": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
@@ -915,39 +1065,54 @@
"node": ">=10.0.0"
}
},
+ "node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/miniflare": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.5.1.tgz",
- "integrity": "sha512-PT56C/j7U6n7WDxnIUHu0d8EY/gedPRsta2b+LsrIHGZPSkxAcPzf2DgbbPU7obv0C4hT9H0GL1fWpWtr2SbDQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.11.0.tgz",
+ "integrity": "sha512-QA18I1VQXdCo4nBtPJUcUDxW8c9xbc5ex5F61jwhkGVOISSnYdEheolESmjr8MYk28xwi0XD1ozS4rLaTONd+w==",
"dev": true,
"dependencies": {
- "@miniflare/cache": "2.5.1",
- "@miniflare/cli-parser": "2.5.1",
- "@miniflare/core": "2.5.1",
- "@miniflare/durable-objects": "2.5.1",
- "@miniflare/html-rewriter": "2.5.1",
- "@miniflare/http-server": "2.5.1",
- "@miniflare/kv": "2.5.1",
- "@miniflare/runner-vm": "2.5.1",
- "@miniflare/scheduler": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/sites": "2.5.1",
- "@miniflare/storage-file": "2.5.1",
- "@miniflare/storage-memory": "2.5.1",
- "@miniflare/web-sockets": "2.5.1",
+ "@miniflare/cache": "2.11.0",
+ "@miniflare/cli-parser": "2.11.0",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/d1": "2.11.0",
+ "@miniflare/durable-objects": "2.11.0",
+ "@miniflare/html-rewriter": "2.11.0",
+ "@miniflare/http-server": "2.11.0",
+ "@miniflare/kv": "2.11.0",
+ "@miniflare/queues": "2.11.0",
+ "@miniflare/r2": "2.11.0",
+ "@miniflare/runner-vm": "2.11.0",
+ "@miniflare/scheduler": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/sites": "2.11.0",
+ "@miniflare/storage-file": "2.11.0",
+ "@miniflare/storage-memory": "2.11.0",
+ "@miniflare/web-sockets": "2.11.0",
"kleur": "^4.1.4",
"semiver": "^1.1.0",
"source-map-support": "^0.5.20",
- "undici": "5.5.1"
+ "undici": "5.9.1"
},
"bin": {
"miniflare": "bootstrap.js"
},
"engines": {
- "node": ">=16.7"
+ "node": ">=16.13"
},
"peerDependencies": {
- "@miniflare/storage-redis": "2.5.1",
+ "@miniflare/storage-redis": "2.11.0",
"cron-schedule": "^3.0.4",
"ioredis": "^4.27.9"
},
@@ -1032,12 +1197,93 @@
"node-gyp-build-test": "build-test.js"
}
},
+ "node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npx-import": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/npx-import/-/npx-import-1.1.4.tgz",
+ "integrity": "sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^6.1.0",
+ "parse-package-name": "^1.0.0",
+ "semver": "^7.3.7",
+ "validate-npm-package-name": "^4.0.0"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-package-name": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-package-name/-/parse-package-name-1.0.0.tgz",
+ "integrity": "sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==",
+ "dev": true
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/path-to-regexp": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
"integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
"dev": true
},
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/rollup-plugin-inject": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
@@ -1089,10 +1335,52 @@
"node": ">=6"
}
},
+ "node_modules/semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/set-cookie-parser": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.0.tgz",
- "integrity": "sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz",
+ "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"node_modules/source-map": {
@@ -1138,6 +1426,18 @@
"node": ">=10.0.0"
}
},
+ "node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -1157,9 +1457,9 @@
}
},
"node_modules/undici": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz",
- "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==",
+ "version": "5.9.1",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.9.1.tgz",
+ "integrity": "sha512-6fB3a+SNnWEm4CJbgo0/CWR8RGcOCQP68SF4X0mxtYTq2VNN8T88NYrWVBAeSX+zb7bny2dx2iYhP3XHi00omg==",
"dev": true,
"engines": {
"node": ">=12.18"
@@ -1183,6 +1483,18 @@
"node": ">=6.14.2"
}
},
+ "node_modules/validate-npm-package-name": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz",
+ "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==",
+ "dev": true,
+ "dependencies": {
+ "builtins": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -1213,6 +1525,21 @@
"webidl-conversions": "^3.0.0"
}
},
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/wrangler": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.0.16.tgz",
@@ -1243,9 +1570,9 @@
}
},
"node_modules/ws": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
- "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"dev": true,
"engines": {
"node": ">=10.0.0"
@@ -1277,6 +1604,12 @@
"node": ">=0.10.32"
}
},
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/youch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/youch/-/youch-2.2.2.tgz",
@@ -1324,171 +1657,203 @@
"dev": true
},
"@miniflare/cache": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.5.1.tgz",
- "integrity": "sha512-qH5PC4zb7mHdQHlcaOuP0KUXuRbNSuB/HU7gpoeplV8J6CgNJGceVmQCZVZLycgDKZtAlhyGE1gkpJmeW7GCyw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.11.0.tgz",
+ "integrity": "sha512-L/kc9AzidPwFuk2fwHpAEePi0kNBk6FWUq3ln+9beRCDrPEpfVrDRFpNleF1NFZz5//oeVMuo8F0IVUQGzR7+Q==",
"dev": true,
"requires": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
"http-cache-semantics": "^4.1.0",
- "undici": "5.5.1"
+ "undici": "5.9.1"
}
},
"@miniflare/cli-parser": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.5.1.tgz",
- "integrity": "sha512-itlMDe9jwO806mkNkg3G70QYoG9YQHW6V10AF9L5b8J4LYt/V78uCEJSwNnCpL7zfKrScRPtDfXZxhrFzMXiUw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.11.0.tgz",
+ "integrity": "sha512-JUmyRzEGAS6CouvXJwBh8p44onfw3KRpfq5JGXEuHModOGjTp6li7PQyCTNPV2Hv/7StAXWnTFGXeAqyDHuTig==",
"dev": true,
"requires": {
- "@miniflare/shared": "2.5.1",
+ "@miniflare/shared": "2.11.0",
"kleur": "^4.1.4"
}
},
"@miniflare/core": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.5.1.tgz",
- "integrity": "sha512-0oEBLV5AM3xxs6TS+7/fn4MSGNBfhUFVv41R8uc72H1a89+kBfRoz+xYI2RnJ3Yo+we66UgU3fXdG+R2KyESlQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.11.0.tgz",
+ "integrity": "sha512-UFMFiCG0co36VpZkgFrSBnrxo71uf1x+cjlzzJi3khmMyDlnLu4RuIQsAqvKbYom6fi3G9Q8lTgM7JuOXFyjhw==",
"dev": true,
"requires": {
"@iarna/toml": "^2.2.5",
- "@miniflare/shared": "2.5.1",
- "@miniflare/watcher": "2.5.1",
+ "@miniflare/queues": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/watcher": "2.11.0",
"busboy": "^1.6.0",
"dotenv": "^10.0.0",
"kleur": "^4.1.4",
"set-cookie-parser": "^2.4.8",
- "undici": "5.5.1",
+ "undici": "5.9.1",
"urlpattern-polyfill": "^4.0.3"
}
},
- "@miniflare/durable-objects": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.5.1.tgz",
- "integrity": "sha512-AZEGSA9LMA6vBzwADAzr81RBSWYlMfa/cDHnHaFL31w4mQwMUcqXOvemoqe6sTSq1KI0TTtvYbxPt0Lui8tEPw==",
+ "@miniflare/d1": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/d1/-/d1-2.11.0.tgz",
+ "integrity": "sha512-aDdBVQZ2C0Zs3+Y9ZbRctmuQxozPfpumwJ/6NG6fBadANvune/hW7ddEoxyteIEU9W3IgzVj8s4by4VvasX90A==",
"dev": true,
"requires": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/storage-memory": "2.5.1",
- "undici": "5.5.1"
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0"
+ }
+ },
+ "@miniflare/durable-objects": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.11.0.tgz",
+ "integrity": "sha512-0cKJaMgraTEU1b4kqK8cjD2oTeOjA6QU3Y+lWiZT/k1PMHZULovrSFnjii7qZ8npf4VHSIN6XYPxhyxRyEM65Q==",
+ "dev": true,
+ "requires": {
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/storage-memory": "2.11.0",
+ "undici": "5.9.1"
}
},
"@miniflare/html-rewriter": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.5.1.tgz",
- "integrity": "sha512-fdO1qme8ukucejRz5yXJN/F4B9qEDRbBLPOEG94zwx8bHGGIo5VX15+J6oHubhjifLwzNuvOcg16Bu5dyR1KxQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.11.0.tgz",
+ "integrity": "sha512-olTqmuYTHnoTNtiA0vjQ/ixRfbwgPzDrAUbtXDCYW45VFbHfDVJrJGZX3Jg0HpSlxy86Zclle1SUxGbVDzxsBg==",
"dev": true,
"requires": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
"html-rewriter-wasm": "^0.4.1",
- "undici": "5.5.1"
+ "undici": "5.9.1"
}
},
"@miniflare/http-server": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.5.1.tgz",
- "integrity": "sha512-K+VoBU0LN8/oku/JWLEyX8wrp9fiaTC8/dosbY/6VWizyIrgQze16uD21GnK5+NBtbCAtLRryS5dZ3PnhiTR1w==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.11.0.tgz",
+ "integrity": "sha512-sMLcrDFzqqAvnQmAUH0hRTo8sBjW79VZYfnIH5FAGSGcKX6kdAGs9RStdYZ4CftQCBAEQScX0KBsMx5FwJRe9Q==",
"dev": true,
"requires": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/web-sockets": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/web-sockets": "2.11.0",
"kleur": "^4.1.4",
"selfsigned": "^2.0.0",
- "undici": "5.5.1",
+ "undici": "5.9.1",
"ws": "^8.2.2",
"youch": "^2.2.2"
}
},
"@miniflare/kv": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.5.1.tgz",
- "integrity": "sha512-ODTUqI7on3egHluBpFHifO0a9QFQUZscciASWKxGOt8VDp1vp0vIfU9ykQZrdZYFVeSKNVlUNqNQx+NMYZ6gIg==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.11.0.tgz",
+ "integrity": "sha512-3m9dL2HBBN170V1JvwjjucR5zl4G3mlcsV6C1E7A2wLl2Z2TWvIx/tSY9hrhkD96dFnejwJ9qmPMbXMMuynhjg==",
"dev": true,
"requires": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
+ }
+ },
+ "@miniflare/queues": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/queues/-/queues-2.11.0.tgz",
+ "integrity": "sha512-fLHjdrNLKhn0LZM/aii/9GsAttFd+lWlGzK8HOg1R0vhfKBwEub4zntjMmOfFbDm1ntc21tdMK7n3ldUphwh5w==",
+ "dev": true,
+ "requires": {
+ "@miniflare/shared": "2.11.0"
+ }
+ },
+ "@miniflare/r2": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.11.0.tgz",
+ "integrity": "sha512-MKuyJ/gGNsK3eWbGdygvozqcyaZhM3C6NGHvoaZwH503dwN569j5DpatTWiHGFeDeSu64VqcIsGehz05GDUaag==",
+ "dev": true,
+ "requires": {
+ "@miniflare/shared": "2.11.0",
+ "undici": "5.9.1"
}
},
"@miniflare/runner-vm": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.5.1.tgz",
- "integrity": "sha512-7U7BPgzaikwWkAMonlmyy4lDpW1H7mqHFr7NdK9kA6BbXZ2GY6uro69QsGw0c4Y/vyKBodKiqXAq53iGdM3Kug==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.11.0.tgz",
+ "integrity": "sha512-bkVSuvCf5+VylqN8lTiLxIYqYcKFbl+BywZGwGQndPC/3wh42J00mM0jw4hRbvXgwuBhlUyCVpEXtYlftFFT/g==",
"dev": true,
"requires": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
}
},
"@miniflare/scheduler": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.5.1.tgz",
- "integrity": "sha512-ybho5Kg3Cfl4E0JleKAbiv/RTA+/PVqH6Y/PuCH2oowSM7qeAvFkrwiRvxtN7BuAl+5lsGyVxFe4gL+weXohEw==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.11.0.tgz",
+ "integrity": "sha512-DPdzINhdWeS99eIicGoluMsD4pLTTAWNQbgCv3CTwgdKA3dxdvMSCkNqZzQLiALzvk9+rSfj46FlH++HE7o7/w==",
"dev": true,
"requires": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
"cron-schedule": "^3.0.4"
}
},
"@miniflare/shared": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.5.1.tgz",
- "integrity": "sha512-DObgqbFml3qetIBtZa8fNqkBqUH9XtI6rdrWtTYVrx0rzKsd5PDf6gdMoxy7v1rr9zBAipKJxrcBqlEgjPl53Q==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.11.0.tgz",
+ "integrity": "sha512-fWMqq3ZkWAg+k7CnyzMV/rZHugwn+/JxvVzCxrtvxzwotTN547THlOxgZe8JAP23U9BiTxOfpTfnLvFEjAmegw==",
"dev": true,
"requires": {
- "ignore": "^5.1.8",
- "kleur": "^4.1.4"
+ "@types/better-sqlite3": "^7.6.0",
+ "kleur": "^4.1.4",
+ "npx-import": "^1.1.3",
+ "picomatch": "^2.3.1"
}
},
"@miniflare/sites": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.5.1.tgz",
- "integrity": "sha512-7V/fAzR50LYgMcOfoCaoppqBCjagBpGWFbZgMyJi/Hj4oVlSIzxo+424hzdjitNzikCpv+AryF9tXfy9j6qiOg==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.11.0.tgz",
+ "integrity": "sha512-qbefKdWZUJgsdLf+kCw03sn3h/92LZgJAbkOpP6bCrfWkXlJ37EQXO4KWdhn4Ghc7A6GwU1s1I/mdB64B3AewQ==",
"dev": true,
"requires": {
- "@miniflare/kv": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/storage-file": "2.5.1"
+ "@miniflare/kv": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/storage-file": "2.11.0"
}
},
"@miniflare/storage-file": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.5.1.tgz",
- "integrity": "sha512-o12KFXgc1M0nHD98mrA/IqwBsJ6KYLWH9NaTwqLhxhpGz/KSo5kWb7z/vrz2I/Rk2XR/gHSYQm2XR9XE6IJCdA==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.11.0.tgz",
+ "integrity": "sha512-beWF/lTX74x7AiaSB+xQxywPSNdhtEKvqDkRui8eOJ5kqN2o4UaleLKQGgqmCw3WyHRIsckV7If1qpbNiLtWMw==",
"dev": true,
"requires": {
- "@miniflare/shared": "2.5.1",
- "@miniflare/storage-memory": "2.5.1"
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/storage-memory": "2.11.0"
}
},
"@miniflare/storage-memory": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.5.1.tgz",
- "integrity": "sha512-LIdBEFcwY7yLCeowO34p5bajRsvU1XuQjXIqcgfiCVt1+qa3D0seELTpW1NSFEJzxulVtu/KsScEug9GipEt7A==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.11.0.tgz",
+ "integrity": "sha512-s0AhPww7fq/Jz80NbPb+ffhcVRKnfPi7H1dHTRTre2Ud23EVJjAWl2gat42x8NOT/Fu3/o/7A72DWQQJqfO98A==",
"dev": true,
"requires": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
}
},
"@miniflare/watcher": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.5.1.tgz",
- "integrity": "sha512-8oOdgWA7CZ7uIAwbjqSrhDnuQXRJqd9e3yDHsMa91E/jkC/GDmlt5SJh6VEMlNDtBGWd661IpVErZf7injI52w==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.11.0.tgz",
+ "integrity": "sha512-RUfjz2iYcsQXLcGySemJl98CJ2iierbWsPGWZhIVZI+NNhROkEy77g/Q+lvP2ATwexG3/dUSfdJ3P8aH+sI4Ig==",
"dev": true,
"requires": {
- "@miniflare/shared": "2.5.1"
+ "@miniflare/shared": "2.11.0"
}
},
"@miniflare/web-sockets": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.5.1.tgz",
- "integrity": "sha512-GyXHoDAI5LDF87rmD+d0cSoN7Xs2pCYjSyUR6Vf6exkS4CN6F/Rtr8vIM5+om9kRkS6qxAyOYjWeEqBOjLm/og==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.11.0.tgz",
+ "integrity": "sha512-NC8RKrmxrO0hZmwpzn5g4hPGA2VblnFTIBobmWoxuK95eW49zfs7dtE/PyFs+blsGv3CjTIjHVSQ782K+C6HFA==",
"dev": true,
"requires": {
- "@miniflare/core": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "undici": "5.5.1",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "undici": "5.9.1",
"ws": "^8.2.2"
}
},
@@ -1545,6 +1910,21 @@
"@supabase/storage-js": "^1.7.2"
}
},
+ "@types/better-sqlite3": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz",
+ "integrity": "sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/node": {
+ "version": "18.11.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz",
+ "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==",
+ "dev": true
+ },
"@types/phoenix": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz",
@@ -1576,6 +1956,15 @@
"node-gyp-build": "^4.3.0"
}
},
+ "builtins": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+ "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+ "dev": true,
+ "requires": {
+ "semver": "^7.0.0"
+ }
+ },
"busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -1605,6 +1994,17 @@
"node-fetch": "2.6.7"
}
},
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
"d": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
@@ -1837,6 +2237,23 @@
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
"dev": true
},
+ "execa": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
+ "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^3.0.1",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ }
+ },
"ext": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
@@ -1859,6 +2276,12 @@
"dev": true,
"optional": true
},
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
"html-rewriter-wasm": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz",
@@ -1871,10 +2294,16 @@
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
"dev": true
},
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "human-signals": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz",
+ "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true
},
"is-typedarray": {
@@ -1882,6 +2311,12 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
"itty-router": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/itty-router/-/itty-router-2.6.1.tgz",
@@ -1898,6 +2333,15 @@
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
"dev": true
},
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
"magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
@@ -1907,36 +2351,51 @@
"sourcemap-codec": "^1.4.8"
}
},
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
"mime": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"dev": true
},
+ "mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true
+ },
"miniflare": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.5.1.tgz",
- "integrity": "sha512-PT56C/j7U6n7WDxnIUHu0d8EY/gedPRsta2b+LsrIHGZPSkxAcPzf2DgbbPU7obv0C4hT9H0GL1fWpWtr2SbDQ==",
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.11.0.tgz",
+ "integrity": "sha512-QA18I1VQXdCo4nBtPJUcUDxW8c9xbc5ex5F61jwhkGVOISSnYdEheolESmjr8MYk28xwi0XD1ozS4rLaTONd+w==",
"dev": true,
"requires": {
- "@miniflare/cache": "2.5.1",
- "@miniflare/cli-parser": "2.5.1",
- "@miniflare/core": "2.5.1",
- "@miniflare/durable-objects": "2.5.1",
- "@miniflare/html-rewriter": "2.5.1",
- "@miniflare/http-server": "2.5.1",
- "@miniflare/kv": "2.5.1",
- "@miniflare/runner-vm": "2.5.1",
- "@miniflare/scheduler": "2.5.1",
- "@miniflare/shared": "2.5.1",
- "@miniflare/sites": "2.5.1",
- "@miniflare/storage-file": "2.5.1",
- "@miniflare/storage-memory": "2.5.1",
- "@miniflare/web-sockets": "2.5.1",
+ "@miniflare/cache": "2.11.0",
+ "@miniflare/cli-parser": "2.11.0",
+ "@miniflare/core": "2.11.0",
+ "@miniflare/d1": "2.11.0",
+ "@miniflare/durable-objects": "2.11.0",
+ "@miniflare/html-rewriter": "2.11.0",
+ "@miniflare/http-server": "2.11.0",
+ "@miniflare/kv": "2.11.0",
+ "@miniflare/queues": "2.11.0",
+ "@miniflare/r2": "2.11.0",
+ "@miniflare/runner-vm": "2.11.0",
+ "@miniflare/scheduler": "2.11.0",
+ "@miniflare/shared": "2.11.0",
+ "@miniflare/sites": "2.11.0",
+ "@miniflare/storage-file": "2.11.0",
+ "@miniflare/storage-memory": "2.11.0",
+ "@miniflare/web-sockets": "2.11.0",
"kleur": "^4.1.4",
"semiver": "^1.1.0",
"source-map-support": "^0.5.20",
- "undici": "5.5.1"
+ "undici": "5.9.1"
}
},
"ms": {
@@ -1980,12 +2439,68 @@
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz",
"integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg=="
},
+ "npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "requires": {
+ "path-key": "^4.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true
+ }
+ }
+ },
+ "npx-import": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/npx-import/-/npx-import-1.1.4.tgz",
+ "integrity": "sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==",
+ "dev": true,
+ "requires": {
+ "execa": "^6.1.0",
+ "parse-package-name": "^1.0.0",
+ "semver": "^7.3.7",
+ "validate-npm-package-name": "^4.0.0"
+ }
+ },
+ "onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^4.0.0"
+ }
+ },
+ "parse-package-name": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-package-name/-/parse-package-name-1.0.0.tgz",
+ "integrity": "sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
"path-to-regexp": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
"integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
"dev": true
},
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
"rollup-plugin-inject": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
@@ -2030,10 +2545,40 @@
"integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==",
"dev": true
},
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
"set-cookie-parser": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.0.tgz",
- "integrity": "sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz",
+ "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"source-map": {
@@ -2070,6 +2615,12 @@
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
"dev": true
},
+ "strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true
+ },
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -2089,9 +2640,9 @@
}
},
"undici": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.5.1.tgz",
- "integrity": "sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==",
+ "version": "5.9.1",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.9.1.tgz",
+ "integrity": "sha512-6fB3a+SNnWEm4CJbgo0/CWR8RGcOCQP68SF4X0mxtYTq2VNN8T88NYrWVBAeSX+zb7bny2dx2iYhP3XHi00omg==",
"dev": true
},
"urlpattern-polyfill": {
@@ -2108,6 +2659,15 @@
"node-gyp-build": "^4.3.0"
}
},
+ "validate-npm-package-name": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz",
+ "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==",
+ "dev": true,
+ "requires": {
+ "builtins": "^5.0.0"
+ }
+ },
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -2135,6 +2695,15 @@
"webidl-conversions": "^3.0.0"
}
},
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
"wrangler": {
"version": "2.0.16",
"resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.0.16.tgz",
@@ -2156,9 +2725,9 @@
}
},
"ws": {
- "version": "8.8.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
- "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
+ "version": "8.11.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+ "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"dev": true,
"requires": {}
},
@@ -2173,6 +2742,12 @@
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
"integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug=="
},
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"youch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/youch/-/youch-2.2.2.tgz",
diff --git a/examples/user-management/expo-user-management/package-lock.json b/examples/user-management/expo-user-management/package-lock.json
index cf092799d1f..cd37665857e 100644
--- a/examples/user-management/expo-user-management/package-lock.json
+++ b/examples/user-management/expo-user-management/package-lock.json
@@ -7486,9 +7486,9 @@
}
},
"node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"engines": {
"node": ">=0.10"
}
@@ -25876,9 +25876,9 @@
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
},
"decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og=="
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
},
"deep-equal": {
"version": "1.1.1",
diff --git a/examples/user-management/nuxtjs-user-management/package-lock.json b/examples/user-management/nuxtjs-user-management/package-lock.json
index 9d71565dd1e..b56ae56ac2e 100644
--- a/examples/user-management/nuxtjs-user-management/package-lock.json
+++ b/examples/user-management/nuxtjs-user-management/package-lock.json
@@ -5135,9 +5135,9 @@
}
},
"node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"engines": {
"node": ">=0.10"
}
@@ -17870,9 +17870,9 @@
}
},
"decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
},
"deepmerge": {
"version": "4.2.2",
diff --git a/examples/user-management/react-user-management/package-lock.json b/examples/user-management/react-user-management/package-lock.json
index bfbb8adf04f..534a7c7ab75 100644
--- a/examples/user-management/react-user-management/package-lock.json
+++ b/examples/user-management/react-user-management/package-lock.json
@@ -6397,9 +6397,9 @@
"integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw=="
},
"node_modules/decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"engines": {
"node": ">=0.10"
}
@@ -26699,9 +26699,9 @@
"integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw=="
},
"decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
},
"dedent": {
"version": "0.7.0",
diff --git a/i18n/README.es.md b/i18n/README.es.md
index a653d1b2492..602393663a2 100644
--- a/i18n/README.es.md
+++ b/i18n/README.es.md
@@ -71,17 +71,134 @@ Supabase es una [plataforma alojada](https://app.supabase.com). Te puedes regist
Nuestra librería de cliente es modular. Cada sub-librería es una implementación independiente para cada sistema externo. Esta es una de las formas de apoyar las herramientas existentes.
-- **`supabase-{lang}`**: Combina librerías y agrega mejoras.
- - `postgrest-{lang}`: Librería de cliente para trabajar con [PostgREST](https://github.com/postgrest/postgrest)
- - `realtime-{lang}`: Librería de cliente para trabajar con [Realtime](https://github.com/supabase/realtime)
- - `gotrue-{lang}`: Librería de cliente para trabajar con [GoTrue](https://github.com/netlify/gotrue)
-
-| Repositorio | Oficial | Comunidad |
-| --------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **`supabase-{lang}`** | [`JS`](https://github.com/supabase/supabase-js) | [`C#`](https://github.com/supabase/supabase-csharp) \| [`Flutter`](https://github.com/supabase/supabase-flutter) \| [`Python`](https://github.com/supabase/supabase-py) \| `Rust` |
-| `postgrest-{lang}` | [`JS`](https://github.com/supabase/postgrest-js) | [`C#`](https://github.com/supabase/postgrest-csharp) \| [`Dart`](https://github.com/supabase/postgrest-dart) \| [`Python`](https://github.com/supabase/postgrest-py) \| [`Rust`](https://github.com/supabase/postgrest-rs) |
-| `realtime-{lang}` | [`JS`](https://github.com/supabase/realtime-js) | [`C#`](https://github.com/supabase/realtime-csharp) \| [`Dart`](https://github.com/supabase/realtime-dart) \| [`Python`](https://github.com/supabase/realtime-py) \| `Rust` |
-| `gotrue-{lang}` | [`JS`](https://github.com/supabase/gotrue-js) | [`C#`](https://github.com/supabase/gotrue-csharp) \| [`Dart`](https://github.com/supabase/gotrue-dart) \| [`Python`](https://github.com/supabase/gotrue-py) \| `Rust` |
+
diff --git a/package-lock.json b/package-lock.json
index f0df444fb07..a623b4950f1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9827,6 +9827,36 @@
"react-dom": "<18.0.0"
}
},
+ "node_modules/@testing-library/react-hooks": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz",
+ "integrity": "sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "react-error-boundary": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0",
+ "react": "^16.9.0 || ^17.0.0",
+ "react-dom": "^16.9.0 || ^17.0.0",
+ "react-test-renderer": "^16.9.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-test-renderer": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@testing-library/user-event": {
"version": "13.5.0",
"resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
@@ -9963,12 +9993,6 @@
"classnames": "*"
}
},
- "node_modules/@types/crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==",
- "dev": true
- },
"node_modules/@types/d3-color": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz",
@@ -11822,6 +11846,80 @@
"npm": ">=5"
}
},
+ "node_modules/aws-sdk": {
+ "version": "2.1275.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1275.0.tgz",
+ "integrity": "sha512-GP7oS0BTh012pAMnNSVVQQrhfubeLH2moLUQQiuk9cPrqQYeP74BU3nnALM30CoFNzX+DwLanOeFU+KMfUGLHg==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "4.9.2",
+ "events": "1.1.1",
+ "ieee754": "1.1.13",
+ "jmespath": "0.16.0",
+ "querystring": "0.2.0",
+ "sax": "1.2.1",
+ "url": "0.10.3",
+ "util": "^0.12.4",
+ "uuid": "8.0.0",
+ "xml2js": "0.4.19"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/aws-sdk/node_modules/events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/aws-sdk/node_modules/ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+ "dev": true
+ },
+ "node_modules/aws-sdk/node_modules/punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+ "dev": true
+ },
+ "node_modules/aws-sdk/node_modules/url": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
+ "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "node_modules/aws-sdk/node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "node_modules/aws-sdk/node_modules/uuid": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz",
+ "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/axe-core": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz",
@@ -14256,11 +14354,6 @@
"node": "*"
}
},
- "node_modules/crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
- },
"node_modules/css-blank-pseudo": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
@@ -20160,6 +20253,21 @@
"node": ">=6"
}
},
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -22379,6 +22487,15 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/jmespath": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
+ "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/join-component": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz",
@@ -29744,6 +29861,22 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true
},
+ "node_modules/react-error-boundary": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
+ "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "react": ">=16.13.1"
+ }
+ },
"node_modules/react-fast-compare": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
@@ -32401,6 +32534,12 @@
"node": ">=12.0.0"
}
},
+ "node_modules/sax": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
+ "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==",
+ "dev": true
+ },
"node_modules/saxes": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
@@ -36895,6 +37034,25 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
"dev": true
},
+ "node_modules/xml2js": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "dev": true,
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~9.0.1"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/xmlchars": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
@@ -37435,7 +37593,6 @@
"common": "*",
"config": "*",
"configcat-js": "^5.6.0",
- "crypto-js": "^4.1.1",
"dayjs": "^1.11.0",
"file-saver": "^2.0.5",
"generate-password": "^1.7.0",
@@ -37484,6 +37641,7 @@
"uniforms-bootstrap4": "^3.6.2",
"uniforms-bridge-json-schema": "^3.6.2",
"uuid": "^8.3.2",
+ "valtio": "^1.7.6",
"yup": "^0.32.11",
"yup-password": "^0.2.2",
"zxcvbn": "^4.4.2"
@@ -37497,11 +37655,11 @@
"@storybook/react": "^6.4.19",
"@storybook/testing-library": "^0.0.9",
"@tailwindcss/typography": "^0.5.2",
- "@testing-library/dom": "^8.11.1",
- "@testing-library/react": "^12.1.2",
+ "@testing-library/dom": "^8.19.0",
+ "@testing-library/react": "^12.1.5",
+ "@testing-library/react-hooks": "^8.0.1",
"@testing-library/user-event": "^13.5.0",
"@types/blueimp-md5": "^2.18.0",
- "@types/crypto-js": "^4.0.2",
"@types/file-saver": "^2.0.2",
"@types/json-logic-js": "^1.2.1",
"@types/lodash": "^4.14.172",
@@ -37522,6 +37680,7 @@
"@types/uuid": "^8.3.4",
"@types/zxcvbn": "^4.4.1",
"autoprefixer": "10.4.2",
+ "aws-sdk": "^2.1275.0",
"babel-loader": "^8.2.3",
"common": "*",
"config": "*",
@@ -37705,6 +37864,11 @@
"resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz",
"integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw=="
},
+ "studio/node_modules/proxy-compare": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.3.0.tgz",
+ "integrity": "sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ=="
+ },
"studio/node_modules/react-resize-detector": {
"version": "6.7.8",
"resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-6.7.8.tgz",
@@ -37765,6 +37929,46 @@
"node": ">=4.2.0"
}
},
+ "studio/node_modules/valtio": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.7.6.tgz",
+ "integrity": "sha512-zsGrCCYOIpy8egQxftduFyJusF/BMu3CganhHKUOE/I6t6V6yA1MDfZZkrYoWYCGkC3rSBYcIHEEsoYQM9lV2w==",
+ "dependencies": {
+ "proxy-compare": "2.3.0",
+ "use-sync-external-store": "1.2.0"
+ },
+ "engines": {
+ "node": ">=12.7.0"
+ },
+ "peerDependencies": {
+ "@babel/helper-module-imports": ">=7.12",
+ "@babel/types": ">=7.13",
+ "aslemammad-vite-plugin-macro": ">=1.0.0-alpha.1",
+ "babel-plugin-macros": ">=3.0",
+ "react": ">=16.8",
+ "vite": ">=2.8.6"
+ },
+ "peerDependenciesMeta": {
+ "@babel/helper-module-imports": {
+ "optional": true
+ },
+ "@babel/types": {
+ "optional": true
+ },
+ "aslemammad-vite-plugin-macro": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
"studio/node_modules/webpack-bundle-analyzer": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.3.0.tgz",
@@ -44398,6 +44602,16 @@
"@types/react-dom": "<18.0.0"
}
},
+ "@testing-library/react-hooks": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz",
+ "integrity": "sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.12.5",
+ "react-error-boundary": "^3.1.0"
+ }
+ },
"@testing-library/user-event": {
"version": "13.5.0",
"resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz",
@@ -44523,12 +44737,6 @@
"classnames": "*"
}
},
- "@types/crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==",
- "dev": true
- },
"@types/d3-color": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.3.tgz",
@@ -46055,6 +46263,73 @@
"awesome-imperative-promise": "^1.0.1"
}
},
+ "aws-sdk": {
+ "version": "2.1275.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1275.0.tgz",
+ "integrity": "sha512-GP7oS0BTh012pAMnNSVVQQrhfubeLH2moLUQQiuk9cPrqQYeP74BU3nnALM30CoFNzX+DwLanOeFU+KMfUGLHg==",
+ "dev": true,
+ "requires": {
+ "buffer": "4.9.2",
+ "events": "1.1.1",
+ "ieee754": "1.1.13",
+ "jmespath": "0.16.0",
+ "querystring": "0.2.0",
+ "sax": "1.2.1",
+ "url": "0.10.3",
+ "util": "^0.12.4",
+ "uuid": "8.0.0",
+ "xml2js": "0.4.19"
+ },
+ "dependencies": {
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+ "dev": true
+ },
+ "url": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
+ "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "uuid": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz",
+ "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==",
+ "dev": true
+ }
+ }
+ },
"axe-core": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz",
@@ -48012,11 +48287,6 @@
"randomfill": "^1.0.3"
}
},
- "crypto-js": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
- "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
- },
"css-blank-pseudo": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
@@ -53030,6 +53300,15 @@
"integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
"dev": true
},
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -54820,6 +55099,12 @@
}
}
},
+ "jmespath": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
+ "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==",
+ "dev": true
+ },
"join-component": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz",
@@ -60267,6 +60552,15 @@
}
}
},
+ "react-error-boundary": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
+ "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.12.5"
+ }
+ },
"react-fast-compare": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
@@ -62150,6 +62444,12 @@
"source-map-js": ">=0.6.2 <2.0.0"
}
},
+ "sax": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
+ "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==",
+ "dev": true
+ },
"saxes": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
@@ -63067,11 +63367,11 @@
"@tailwindcss/typography": "^0.5.2",
"@tanstack/react-query": "^4.16.1",
"@tanstack/react-query-devtools": "^4.16.1",
- "@testing-library/dom": "^8.11.1",
- "@testing-library/react": "^12.1.2",
+ "@testing-library/dom": "^8.19.0",
+ "@testing-library/react": "^12.1.5",
+ "@testing-library/react-hooks": "*",
"@testing-library/user-event": "^13.5.0",
"@types/blueimp-md5": "^2.18.0",
- "@types/crypto-js": "^4.0.2",
"@types/file-saver": "^2.0.2",
"@types/json-logic-js": "^1.2.1",
"@types/lodash": "^4.14.172",
@@ -63095,13 +63395,13 @@
"analytics-node": "^3.5.0",
"autoprefixer": "10.4.2",
"awesome-debounce-promise": "^2.1.0",
+ "aws-sdk": "^2.1275.0",
"babel-loader": "^8.2.3",
"blueimp-md5": "^2.19.0",
"clipboard": "^2.0.8",
"common": "*",
"config": "*",
"configcat-js": "^5.6.0",
- "crypto-js": "^4.1.1",
"dayjs": "^1.11.0",
"file-saver": "^2.0.5",
"generate-password": "^1.7.0",
@@ -63158,6 +63458,7 @@
"uniforms-bootstrap4": "^3.6.2",
"uniforms-bridge-json-schema": "^3.6.2",
"uuid": "^8.3.2",
+ "valtio": "^1.7.6",
"yup": "^0.32.11",
"yup-password": "^0.2.2",
"zxcvbn": "^4.4.2"
@@ -63308,6 +63609,11 @@
"resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-9.3.1.tgz",
"integrity": "sha512-/Yvsd2D7miYB4HLJ3hOOS0+vnowQpaT75FsHzr/y5M9P4q9bwa7RcbW2YdH6KZBn8ceLbKGnHxMZ1CHliGHUFw=="
},
+ "proxy-compare": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.3.0.tgz",
+ "integrity": "sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ=="
+ },
"react-resize-detector": {
"version": "6.7.8",
"resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-6.7.8.tgz",
@@ -63351,6 +63657,15 @@
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
"dev": true
},
+ "valtio": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/valtio/-/valtio-1.7.6.tgz",
+ "integrity": "sha512-zsGrCCYOIpy8egQxftduFyJusF/BMu3CganhHKUOE/I6t6V6yA1MDfZZkrYoWYCGkC3rSBYcIHEEsoYQM9lV2w==",
+ "requires": {
+ "proxy-compare": "2.3.0",
+ "use-sync-external-store": "1.2.0"
+ }
+ },
"webpack-bundle-analyzer": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.3.0.tgz",
@@ -66375,6 +66690,22 @@
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
"dev": true
},
+ "xml2js": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "dev": true,
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~9.0.1"
+ }
+ },
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==",
+ "dev": true
+ },
"xmlchars": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
diff --git a/package.json b/package.json
index 4a605d28309..bf893aa1978 100644
--- a/package.json
+++ b/package.json
@@ -22,10 +22,10 @@
"dev:www": "turbo run dev --filter=www --parallel",
"lint": "turbo run lint",
"format": "prettier --write \"apps/**/*.{js,jsx,ts,tsx,css,md,json}\"",
- "docker:dev": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up --renew-anon-volumes",
- "docker:up": "cd docker && docker-compose up",
- "docker:down": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down --remove-orphans",
- "docker:remove": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml rm -vfs",
+ "docker:dev": "cd docker && docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up --renew-anon-volumes",
+ "docker:up": "cd docker && docker compose up",
+ "docker:down": "cd docker && docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down --remove-orphans",
+ "docker:remove": "cd docker && docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml rm -vfs",
"test": "jest",
"test:studio": "turbo run test --filter=studio",
"perf:kong": "ab -t 5 -c 20 -T application/json http://localhost:8000/",
diff --git a/spec/cli_v1_commands.yaml b/spec/cli_v1_commands.yaml
index e0799ffd7c0..fabffeb3733 100644
--- a/spec/cli_v1_commands.yaml
+++ b/spec/cli_v1_commands.yaml
@@ -1,7 +1,7 @@
clispec: '001'
info:
id: cli
- version: 1.24.0
+ version: 1.27.0
title: Supabase CLI
language: sh
source: https://github.com/supabase/cli
@@ -58,6 +58,11 @@ commands:
usage: supabase vanity-subdomains get
subcommands: []
flags:
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
- id: project-ref
name: --project-ref
description: Project ref of the Supabase project.
@@ -72,6 +77,11 @@ commands:
usage: supabase vanity-subdomains delete
subcommands: []
flags:
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
- id: project-ref
name: --project-ref
description: Project ref of the Supabase project.
@@ -89,6 +99,11 @@ commands:
description: |
The desired vanity subdomain to use for your Supabase project.
default_value: ''
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
- id: project-ref
name: --project-ref
description: Project ref of the Supabase project.
@@ -111,6 +126,11 @@ commands:
description: |
The desired vanity subdomain to use for your Supabase project.
default_value: ''
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
- id: project-ref
name: --project-ref
description: Project ref of the Supabase project.
@@ -372,6 +392,11 @@ commands:
name: --db-allow-cidr
description: CIDR to allow DB connections from.
default_value: '[]'
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
- id: project-ref
name: --project-ref
description: Project ref of the Supabase project.
@@ -384,6 +409,63 @@ commands:
usage: supabase network-restrictions get
subcommands: []
flags:
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
+ - id: project-ref
+ name: --project-ref
+ description: Project ref of the Supabase project.
+ default_value: ''
+ - id: supabase-network-bans
+ title: supabase network-bans
+ summary: Manage network bans
+ description: |-
+ Network bans are IPs that get temporarily blocked if their traffic pattern looks abusive (e.g. multiple failed auth attempts).
+
+ The subcommands help you view the current bans, and unblock IPs if desired.
+ tags:
+ - management-api
+ links: []
+ subcommands:
+ - supabase-network-bans-get
+ - supabase-network-bans-remove
+ flags: []
+ - id: supabase-network-bans-remove
+ title: supabase network-bans remove
+ summary: Remove a network ban
+ tags: []
+ links: []
+ usage: supabase network-bans remove [flags]
+ subcommands: []
+ flags:
+ - id: db-unban-ip
+ name: --db-unban-ip
+ description: IP to allow DB connections from.
+ default_value: '[]'
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
+ - id: project-ref
+ name: --project-ref
+ description: Project ref of the Supabase project.
+ default_value: ''
+ - id: supabase-network-bans-get
+ title: supabase network-bans get
+ summary: Get the current network bans
+ tags: []
+ links: []
+ usage: supabase network-bans get
+ subcommands: []
+ flags:
+ - id: experimental
+ name: --experimental
+ description: enable experimental features
+ required: true
+ default_value: 'false'
- id: project-ref
name: --project-ref
description: Project ref of the Supabase project.
@@ -407,6 +489,10 @@ commands:
usage: supabase migration repair [flags]
subcommands: []
flags:
+ - id: password
+ name: -p, --password
+ description: Password to your remote Postgres database.
+ default_value: ''
- id: status
name: --status <[ applied | reverted ]>
description: Version status to update.
@@ -722,6 +808,7 @@ commands:
links: []
subcommands:
- supabase-db-diff
+ - supabase-db-dump
- supabase-db-lint
- supabase-db-push
- supabase-db-remote
@@ -804,6 +891,22 @@ commands:
name: -s, --schema
description: List of schema to include.
default_value: '[public]'
+ - id: supabase-db-dump
+ title: supabase db dump
+ summary: Dumps schemas from the remote database
+ tags: []
+ links: []
+ usage: supabase db dump [flags]
+ subcommands: []
+ flags:
+ - id: file
+ name: -f, --file
+ description: File path to save the dumped schema.
+ default_value: ''
+ - id: password
+ name: -p, --password
+ description: Password to your remote Postgres database.
+ default_value: ''
- id: supabase-db-diff
title: supabase db diff
summary: Diffs the local database for schema changes
@@ -814,7 +917,7 @@ commands:
flags:
- id: file
name: -f, --file
- description: Saves schema diff to a file.
+ description: Saves schema diff to a new migration file.
default_value: ''
- id: linked
name: --linked
diff --git a/spec/common-cli-sections.json b/spec/common-cli-sections.json
index 9ce2b34c7e0..4481a05bacf 100644
--- a/spec/common-cli-sections.json
+++ b/spec/common-cli-sections.json
@@ -17,33 +17,9 @@
"title": "general",
"items": [
{
- "id": "supabase-test",
- "title": "supabase test",
- "slug": "supabase-test",
- "type": "cli-command"
- },
- {
- "id": "supabase-test-db",
- "title": "supabase test db",
- "slug": "supabase-test-db",
- "type": "cli-command"
- },
- {
- "id": "supabase-stop",
- "title": "supabase stop",
- "slug": "supabase-stop",
- "type": "cli-command"
- },
- {
- "id": "supabase-status",
- "title": "supabase status",
- "slug": "supabase-status",
- "type": "cli-command"
- },
- {
- "id": "supabase-start",
- "title": "supabase start",
- "slug": "supabase-start",
+ "id": "supabase-init",
+ "title": "supabase init",
+ "slug": "supabase-init",
"type": "cli-command"
},
{
@@ -59,9 +35,33 @@
"type": "cli-command"
},
{
- "id": "supabase-init",
- "title": "supabase init",
- "slug": "supabase-init",
+ "id": "supabase-start",
+ "title": "supabase start",
+ "slug": "supabase-start",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-stop",
+ "title": "supabase stop",
+ "slug": "supabase-stop",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-status",
+ "title": "supabase status",
+ "slug": "supabase-status",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-test",
+ "title": "supabase test",
+ "slug": "supabase-test",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-test-db",
+ "title": "supabase test db",
+ "slug": "supabase-test-db",
"type": "cli-command"
},
{
@@ -88,12 +88,36 @@
"title": "Database",
"items": [
{ "id": "supabase-db", "title": "supabase db", "slug": "supabase-db", "type": "cli-command" },
+ {
+ "id": "supabase-db-dump",
+ "title": "supabase db dump",
+ "slug": "supabase-db-dump",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-db-push",
+ "title": "supabase db push",
+ "slug": "supabase-db-push",
+ "type": "cli-command"
+ },
{
"id": "supabase-db-reset",
"title": "supabase db reset",
"slug": "supabase-db-reset",
"type": "cli-command"
},
+ {
+ "id": "supabase-db-diff",
+ "title": "supabase db diff",
+ "slug": "supabase-db-diff",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-db-lint",
+ "title": "supabase db lint",
+ "slug": "supabase-db-lint",
+ "type": "cli-command"
+ },
{
"id": "supabase-db-remote",
"title": "supabase db remote",
@@ -105,24 +129,6 @@
"title": "supabase db remote commit",
"slug": "supabase-db-remote-commit",
"type": "cli-command"
- },
- {
- "id": "supabase-db-push",
- "title": "supabase db push",
- "slug": "supabase-db-push",
- "type": "cli-command"
- },
- {
- "id": "supabase-db-lint",
- "title": "supabase db lint",
- "slug": "supabase-db-lint",
- "type": "cli-command"
- },
- {
- "id": "supabase-db-diff",
- "title": "supabase db diff",
- "slug": "supabase-db-diff",
- "type": "cli-command"
}
]
},
@@ -155,35 +161,6 @@
}
]
},
- {
- "title": "secrets",
- "items": [
- {
- "id": "supabase-secrets",
- "title": "supabase secrets",
- "slug": "supabase-secrets",
- "type": "cli-command"
- },
- {
- "id": "supabase-secrets-unset",
- "title": "supabase secrets unset",
- "slug": "supabase-secrets-unset",
- "type": "cli-command"
- },
- {
- "id": "supabase-secrets-set",
- "title": "supabase secrets set",
- "slug": "supabase-secrets-set",
- "type": "cli-command"
- },
- {
- "id": "supabase-secrets-list",
- "title": "supabase secrets list",
- "slug": "supabase-secrets-list",
- "type": "cli-command"
- }
- ]
- },
{
"title": "projects",
"items": [
@@ -193,17 +170,17 @@
"slug": "supabase-projects",
"type": "cli-command"
},
- {
- "id": "supabase-projects-list",
- "title": "supabase projects list",
- "slug": "supabase-projects-list",
- "type": "cli-command"
- },
{
"id": "supabase-projects-create",
"title": "supabase projects create",
"slug": "supabase-projects-create",
"type": "cli-command"
+ },
+ {
+ "id": "supabase-projects-list",
+ "title": "supabase projects list",
+ "slug": "supabase-projects-list",
+ "type": "cli-command"
}
]
},
@@ -233,18 +210,18 @@
"slug": "supabase-functions",
"type": "cli-command"
},
- {
- "id": "supabase-functions-serve",
- "title": "supabase functions serve",
- "slug": "supabase-functions-serve",
- "type": "cli-command"
- },
{
"id": "supabase-functions-new",
"title": "supabase functions new",
"slug": "supabase-functions-new",
"type": "cli-command"
},
+ {
+ "id": "supabase-functions-serve",
+ "title": "supabase functions serve",
+ "slug": "supabase-functions-serve",
+ "type": "cli-command"
+ },
{
"id": "supabase-functions-deploy",
"title": "supabase functions deploy",
@@ -259,6 +236,35 @@
}
]
},
+ {
+ "title": "secrets",
+ "items": [
+ {
+ "id": "supabase-secrets",
+ "title": "supabase secrets",
+ "slug": "supabase-secrets",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-secrets-set",
+ "title": "supabase secrets set",
+ "slug": "supabase-secrets-set",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-secrets-list",
+ "title": "supabase secrets list",
+ "slug": "supabase-secrets-list",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-secrets-unset",
+ "title": "supabase secrets unset",
+ "slug": "supabase-secrets-unset",
+ "type": "cli-command"
+ }
+ ]
+ },
{
"title": "Domains",
"items": [
@@ -269,21 +275,9 @@
"type": "cli-command"
},
{
- "id": "supabase-domains-reverify",
- "title": "supabase domains reverify",
- "slug": "supabase-domains-reverify",
- "type": "cli-command"
- },
- {
- "id": "supabase-domains-get",
- "title": "supabase domains get",
- "slug": "supabase-domains-get",
- "type": "cli-command"
- },
- {
- "id": "supabase-domains-delete",
- "title": "supabase domains delete",
- "slug": "supabase-domains-delete",
+ "id": "supabase-domains-activate",
+ "title": "supabase domains activate",
+ "slug": "supabase-domains-activate",
"type": "cli-command"
},
{
@@ -293,9 +287,21 @@
"type": "cli-command"
},
{
- "id": "supabase-domains-activate",
- "title": "supabase domains activate",
- "slug": "supabase-domains-activate",
+ "id": "supabase-domains-get",
+ "title": "supabase domains get",
+ "slug": "supabase-domains-get",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-domains-reverify",
+ "title": "supabase domains reverify",
+ "slug": "supabase-domains-reverify",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-domains-delete",
+ "title": "supabase domains delete",
+ "slug": "supabase-domains-delete",
"type": "cli-command"
}
]
@@ -309,28 +315,51 @@
"slug": "supabase-vanity-subdomains",
"type": "cli-command"
},
- {
- "id": "supabase-vanity-subdomains-check-availability",
- "title": "supabase vanity-subdomains check-availability",
- "slug": "supabase-vanity-subdomains-check-availability",
- "type": "cli-command"
- },
{
"id": "supabase-vanity-subdomains-activate",
"title": "supabase vanity-subdomains activate",
"slug": "supabase-vanity-subdomains-activate",
"type": "cli-command"
},
+ {
+ "id": "supabase-vanity-subdomains-get",
+ "title": "supabase vanity-subdomains get",
+ "slug": "supabase-vanity-subdomains-get",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-vanity-subdomains-check-availability",
+ "title": "supabase vanity-subdomains check-availability",
+ "slug": "supabase-vanity-subdomains-check-availability",
+ "type": "cli-command"
+ },
{
"id": "supabase-vanity-subdomains-delete",
"title": "supabase vanity-subdomains delete",
"slug": "supabase-vanity-subdomains-delete",
"type": "cli-command"
+ }
+ ]
+ },
+ {
+ "title": "Network Bans",
+ "items": [
+ {
+ "id": "supabase-network-bans",
+ "title": "supabase network-bans",
+ "slug": "supabase-network-bans",
+ "type": "cli-command"
},
{
- "id": "supabase-vanity-subdomains-get",
- "title": "supabase vanity-subdomains get",
- "slug": "supabase-vanity-subdomains-get",
+ "id": "supabase-network-bans-get",
+ "title": "supabase network-bans get",
+ "slug": "supabase-network-bans-get",
+ "type": "cli-command"
+ },
+ {
+ "id": "supabase-network-bans-remove",
+ "title": "supabase network-bans remove",
+ "slug": "supabase-network-bans-remove",
"type": "cli-command"
}
]
diff --git a/spec/common-client-libs-sections.json b/spec/common-client-libs-sections.json
index f1afe0b46b5..d80a1e8b3fb 100644
--- a/spec/common-client-libs-sections.json
+++ b/spec/common-client-libs-sections.json
@@ -616,107 +616,103 @@
"product": "auth",
"type": "function",
"libs": ["js"]
- }
- ]
- },
- {
- "title": "Auth Admin",
- "libs": ["js", "js_v1"],
- "items": [
+ },
{
"id": "admin-api",
- "title": "Overview",
+ "title": "Auth Admin",
"slug": "admin-api",
"libs": ["js", "js_v1"],
- "type": "function"
- },
- {
- "id": "get-user-by-id",
- "title": "Retrieve a user",
- "slug": "auth-admin-getuserbyid",
- "product": "auth-admin",
"type": "function",
- "libs": ["js"]
- },
- {
- "id": "list-users",
- "title": "List all users",
- "slug": "auth-admin-listusers",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js", "js_v1"]
- },
- {
- "id": "create-user",
- "title": "Create a user",
- "slug": "auth-admin-createuser",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js", "js_v1"]
- },
- {
- "id": "delete-user",
- "title": "Delete a user",
- "slug": "auth-admin-deleteuser",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js", "js_v1"]
- },
- {
- "id": "invite-user-by-email",
- "title": "Send an email invite link",
- "slug": "auth-admin-inviteuserbyemail",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js", "js_v1"]
- },
- {
- "id": "reset-password-for-email",
- "title": "Send a password reset request",
- "slug": "auth-admin-resetpasswordforemail",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js"]
- },
- {
- "id": "generate-link",
- "title": "Generate an email link",
- "slug": "auth-admin-generatelink",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js"]
- },
- {
- "id": "send-mobile-otp",
- "title": "Send a one-time passcode",
- "slug": "auth-api-sendmobileotp",
- "product": "auth-server",
- "type": "function",
- "libs": ["js_v1"]
- },
- {
- "id": "update-user-by-id",
- "title": "Update a user",
- "slug": "auth-admin-updateuserbyid",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js", "js_v1"]
- },
- {
- "id": "mfa-list-factors",
- "title": "List all factors for a user",
- "slug": "auth-admin-mfa-listfactors",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js"]
- },
- {
- "id": "mfa-delete-factor",
- "title": "Delete a factor for a user",
- "slug": "auth-admin-mfa-deletefactor",
- "product": "auth-admin",
- "type": "function",
- "libs": ["js"]
+ "items": [
+ {
+ "id": "get-user-by-id",
+ "title": "Retrieve a user",
+ "slug": "auth-admin-getuserbyid",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js"]
+ },
+ {
+ "id": "list-users",
+ "title": "List all users",
+ "slug": "auth-admin-listusers",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js", "js_v1"]
+ },
+ {
+ "id": "create-user",
+ "title": "Create a user",
+ "slug": "auth-admin-createuser",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js", "js_v1"]
+ },
+ {
+ "id": "delete-user",
+ "title": "Delete a user",
+ "slug": "auth-admin-deleteuser",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js", "js_v1"]
+ },
+ {
+ "id": "invite-user-by-email",
+ "title": "Send an email invite link",
+ "slug": "auth-admin-inviteuserbyemail",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js", "js_v1"]
+ },
+ {
+ "id": "reset-password-for-email",
+ "title": "Send a password reset request",
+ "slug": "auth-admin-resetpasswordforemail",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js"]
+ },
+ {
+ "id": "generate-link",
+ "title": "Generate an email link",
+ "slug": "auth-admin-generatelink",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js"]
+ },
+ {
+ "id": "send-mobile-otp",
+ "title": "Send a one-time passcode",
+ "slug": "auth-api-sendmobileotp",
+ "product": "auth-server",
+ "type": "function",
+ "libs": ["js_v1"]
+ },
+ {
+ "id": "update-user-by-id",
+ "title": "Update a user",
+ "slug": "auth-admin-updateuserbyid",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js", "js_v1"]
+ },
+ {
+ "id": "mfa-list-factors",
+ "title": "List all factors for a user",
+ "slug": "auth-admin-mfa-listfactors",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js"]
+ },
+ {
+ "id": "mfa-delete-factor",
+ "title": "Delete a factor for a user",
+ "slug": "auth-admin-mfa-deletefactor",
+ "product": "auth-admin",
+ "type": "function",
+ "libs": ["js"]
+ }
+ ]
}
]
},
diff --git a/spec/common-self-hosting-storage-sections.json b/spec/common-self-hosting-storage-sections.json
index 323772b2a6a..cdcd9bcf537 100644
--- a/spec/common-self-hosting-storage-sections.json
+++ b/spec/common-self-hosting-storage-sections.json
@@ -135,13 +135,6 @@
"summary": "Retrieve object info",
"type": "operation"
},
- {
- "id": "retrieve-object-info",
- "title": "Retrieve object info",
- "slug": "retrieve-object-info",
- "summary": "Retrieve object info",
- "type": "operation"
- },
{
"id": "copies-an-object",
"title": "Copies an object",
diff --git a/spec/examples/examples.yml b/spec/examples/examples.yml
index d2bc4403b6e..393fc81e279 100644
--- a/spec/examples/examples.yml
+++ b/spec/examples/examples.yml
@@ -114,13 +114,13 @@ functions:
title: 'signUp()'
$ref: '@supabase/gotrue-js.GoTrueClient.signUp'
notes: |
- - By default, the user needs to verify their email address before logging in. To turn this off, disable **Confirm email** in [your project](https://app.supabase.com/project/_/auth/settings).
+ - By default, the user needs to verify their email address before logging in. To turn this off, disable **Confirm email** in [your project](https://app.supabase.com/project/_/auth/providers).
- **Confirm email** determines if users need to confirm their email address after signing up.
- If **Confirm email** is enabled, a `user` is returned but `session` is null.
- If **Confirm email** is disabled, both a `user` and a `session` are returned.
- - When the user confirms their email address, they are redirected to the [`SITE_URL`](https://supabase.com/docs/reference/auth/config#site_url) by default. You can modify your `SITE_URL` or add additional redirect URLs in [your project](https://app.supabase.com/project/_/auth/settings).
+ - By default, when the user confirms their email address, they are redirected to the [`SITE_URL`](https://supabase.com/docs/reference/auth/config#site_url). You can modify your `SITE_URL` or add additional redirect URLs in [your project](https://app.supabase.com/project/_/auth/url-configuration).
- If signUp() is called for an existing confirmed user:
- - If **Confirm email** is enabled in [your project](https://app.supabase.com/project/_/auth/settings), an obfuscated/fake user object is returned.
+ - If **Confirm email** is enabled in [your project](https://app.supabase.com/project/_/auth/providers), an obfuscated/fake user object is returned.
- If **Confirm email** is disabled, the error message, `User already registered` is returned.
- To fetch the currently logged-in user, refer to [`getUser()`](/docs/reference/javascript/auth-getuser).
examples:
@@ -192,7 +192,7 @@ functions:
- This method is used for passwordless sign-ins where a OTP is sent to the user's email or phone number.
- If you're using an email, you can configure whether you want the user to receive a magiclink or a OTP.
- If you're using phone, you can configure whether you want the user to receive a OTP.
- - The magic link's destination URL is determined by the [`SITE_URL`](https://supabase.com/docs/reference/auth/config#site_url). You can modify the `SITE_URL` or add additional redirect urls in [your project](https://app.supabase.com/project/_/auth/settings).
+ - The magic link's destination URL is determined by the [`SITE_URL`](https://supabase.com/docs/reference/auth/config#site_url). You can modify the `SITE_URL` or add additional redirect URLs in [your project](https://app.supabase.com/project/_/auth/url-configuration).
examples:
- id: sign-in-with-email.
name: Sign in with email.
@@ -236,7 +236,7 @@ functions:
isSpotlight: false
description: |
When the third-party provider successfully authenticates the user, the provider will redirect the user to the URL specified in the `redirectTo` parameter. This parameter defaults to the [`SITE_URL`](https://supabase.com/docs/reference/auth/config#site_url). It does not redirect the user immediately after invoking this method.
- You can modify the `SITE_URL` or add additional redirect urls in [your project](https://app.supabase.com/project/_/auth/settings).
+ You can modify the `SITE_URL` or add additional redirect URLs in [your project](https://app.supabase.com/project/_/auth/url-configuration).
js: |
```js
const { data, error } = await supabase.auth.signInWithOAuth({
@@ -334,7 +334,7 @@ functions:
notes: |
- In order to use the `updateUser()` method, the user needs to be signed in first.
- By Default, email updates sends a confirmation link to both the user's current and new email.
- To only send a confirmation link to the user's new email, disable **Secure email change** in your project's [email auth provider settings](https://app.supabase.com/project/_/auth/settings).
+ To only send a confirmation link to the user's new email, disable **Secure email change** in your project's [email auth provider settings](https://app.supabase.com/project/_/auth/providers).
examples:
- id: update-the-email-for-an-authenticated-user
name: Update the email for an authenticated user
diff --git a/spec/supabase_dart_v0--old.yml b/spec/supabase_dart_v0--old.yml
deleted file mode 100644
index 90dab81a758..00000000000
--- a/spec/supabase_dart_v0--old.yml
+++ /dev/null
@@ -1,2183 +0,0 @@
-openref: 0.1
-
-info:
- id: reference/dart
- title: Getting started
- description: |
-
- Supabase Dart.
-
- definition: ../../spec/enrichments/tsdoc_v1/combined.json
- slugPrefix: '/'
- specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_dart_v0.yml
- libraries:
- - name: 'Dart'
- id: 'dart'
- version: '0.0.1'
-
-pages:
- Installing:
- description: |
- ## Dart
-
- Dart libraries are built and supported by the community.
-
- ```bash
- dart pub add supabase
- ```
-
- Find the source code on [GitHub](https://github.com/supabase/supabase-dart).
-
- ## Flutter
-
- For Flutter project, you can use [supabase_flutter](https://github.com/supabase/supabase-flutter).
-
- ```bash
- flutter pub add supabase_flutter
- ```
-
- `supabase_flutter` plugin uses `supabase` plugin internally, and it adds some Flutter specific functionality such as handling deeplinks coming back from magic link verifications.
- If you are creating a Flutter application, we recommend using `supabase_flutter` instead of `supabase`.
-
- For the most part `supabase_flutter` shares the same API as `supabase` with few exceptions such as initialization or OAuth sign in.
-
- Initializing:
- description: |
- ## Dart
- You can initialize a new Supabase client using the `SupabaseClient()` method.
-
- The Supabase client is your entrypoint to the rest of the Supabase functionality
- and is the easiest way to interact with everything we offer within the Supabase ecosystem.
-
-
- ## Flutter
-
- For `supabase_flutter`, you will be using the static `initialize()` method on `Supabase` class.
-
- examples:
- - name: Dart SupabaseClient()
- dart: |
- ```dart
- final supabase = SupabaseClient('https://xyzcompany.supabase.co', 'public-anon-key');
- ```
- - name: Flutter initialize()
- dart: |
- ```dart title="main.dart"
- Future main() async {
- await Supabase.initialize(url: 'https://xyzcompany.supabase.co', anonKey: 'public-anon-key');
- runApp(MyApp());
- }
- ```
-
- auth.signUp():
- description: |
- Creates a new user.
- notes: |
- - By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- - If "Email Confirmations" is turned on, a user is returned but session will be null
- - If "Email Confirmations" is turned off, both a `user` and a `session` will be returned
- - When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- examples:
- - name: Sign up.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase.auth.signUp('example@email.com', 'example-password');
-
- final user = res.data?.user;
- final error = res.error;
- ```
- - name: Sign up with third-party providers.
- hideCodeBlock: true
- description: |
- If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/v0/auth-signinwithprovider) method available on `supabase_flutter`.
-
- auth.signIn():
- description: |
- Log in an existing user, or login via a third-party provider.
- notes: |
- - A user can sign up via email, phone number.
- - If you provide `email` without a `password`, the user will be sent a magic link.
- - The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- - Similarly, if you provide `phone` without a `password`, the user will be sent a one time password.
- - If you are looking to sign users in with OAuth in Flutter apps, go to [`signInWithProvider()`](/docs/reference/dart/v0/auth-signinwithprovider).
- examples:
- - name: Sign in with email.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase.auth.signIn(email: 'example@email.com', password: 'example-password');
-
- final user = res.data?.user;
- final error = res.error;
- ```
- - name: Sign in with magic link.
- description: If email is provided, but no password is provided, the user will be sent a "magic link" to their email address, which they can click to open your application with a valid session. By default, a given user can only request a Magic Link once every 60 seconds.
- dart: |
- ```dart
- final res = await supabase.auth.signIn(email: 'example@email.com');
-
- final error = res.error;
- ```
- - name: Get OAuth sign in URL.
- description: |
- Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth.
- If you are looking to sign in a user via OAuth on Flutter app, go to [`signInWithProvider()`](/docs/reference/dart/v0/auth-signinwithprovider).
- dart: |
- ```dart
- final res = await supabase.auth.signIn(provider: Provider.github);
-
- final url = res.data?.url;
- final error = res.error;
- ```
- auth.signInWithProvider():
- description: |
- Signs the user in using third party OAuth providers.
- notes: |
- - `auth.signInWithProvider()` is only available on `supabase_flutter`
- - It will open the browser to the relevant login page.
- examples:
- - name: Sign in with provider.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase.auth.signInWithProvider(Provider.github);
-
- final error = res.error;
- ```
- - name: With `redirectTo`
- description: |
- Specify the redirect link to bring back the user via deeplink.
- Note that `redirectTo` should be null for Flutter Web.
- dart: |
- ```dart
- final res = await supabase.auth.signInWithProvider(
- Provider.github,
- options: AuthOptions(
- redirectTo: kIsWeb
- ? null
- : 'io.supabase.flutter://reset-callback/'),
- );
-
- final error = res.error;
- ```
- - name: With scopes
- description: |
- If you need additional data from an OAuth provider, you can include a space-separated list of scopes in your request to get back an OAuth provider token.
- You may also need to specify the scopes in the provider's OAuth app settings, depending on the provider.
- dart: |
- ```dart
- const { user, session, error } = await supabase.auth.signIn({
- provider: 'github'
- }, {
- scopes: 'repo gist notifications'
- })
- const oAuthToken = session.provider_token // use to access provider API
- ```
- auth.signOut():
- description: |
- Signs out the current user, if there is a logged in user.
- examples:
- - name: Sign out
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase.auth.signOut();
-
- final error = res.error;
- ```
-
- auth.session():
- description: |
- Returns the session data, if there is an active session.
- examples:
- - name: Get the session data
- isSpotlight: true
- dart: |
- ```dart
- final session = supabase.auth.session();
- ```
-
- auth.user():
- description: |
- Returns the user data, if there is a logged in user.
- examples:
- - name: Get the logged in user
- isSpotlight: true
- dart: |
- ```dart
- final user = supabase.auth.user();
- ```
-
- auth.update():
- description: |
- Updates user data, if there is a logged in user.
- notes: |
- It's generally better to store user data in a table inside your public schema (i.e. `public.users`).
- Use the `update()` method if you have data which rarely changes or is specific only to the logged in user.
- examples:
- - name: Update a user's metadata.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase.auth.update(
- UserAttributes(data: {'hello': 'world'})
- );
-
- final error = res.error;
- ```
-
- auth.onAuthStateChange():
- description: |
- Receive a notification every time an auth event happens.
- examples:
- - name: Listen to auth changes
- isSpotlight: true
- dart: |
- ```dart
- final subscription = supabase.auth.onAuthStateChange((event, session) {
- print(session?.user?.id);
- // handle auth state change
- });
- ```
-
- Reset Password (Email):
- description: |
- Sends a reset request to an email address.
- notes: |
- Sends a reset request to an email address.
-
- When the user clicks the reset link in the email they will be forwarded to:
-
- `#access_token=x&refresh_token=y&expires_in=z&token_type=bearer&type=recovery`
-
- Your app must detect `type=recovery` in the fragment and display a password reset form to the user.
-
- You should then use the access_token in the url and new password to update the user as follows:
-
- ```dart
- final res = await supabase.auth.api.updateUser(
- accessToken,
- UserAttributes(password: 'NEW_PASSWORD'),
- );
- ```
- examples:
- - name: Reset password
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase.auth.api.resetPasswordForEmail('user@example.com');
-
- final error = res.error;
- ```
- - name: Reset password for Flutter
- isSpotlight: true
- dart: |
- You can pass `redirectTo` to open the app via deeplink when user opens the password reset email.
- ```dart
- final res = await supabase.auth.api.resetPasswordForEmail(
- 'user@example.com',
- options: AuthOptions(redirectTo: kIsWeb
- ? null
- : 'io.supabase.flutter://reset-callback/'),
- );
-
- final error = res.error;
- ```
- invoke():
- title: 'invoke()'
- description: |
- Invokes a Supabase Function. See the [guide](/docs/guides/functions) for details on writing Functions.
- notes: |
- - Requires an Authorization header.
- - Invoke params generally match the [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) spec.
- examples:
- - name: Basic invocation.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabaseClient.functions.invoke('hello', body: {'foo': 'baa'});
- final data = res.data;
- final error = res.error;
- ```
- - name: Specifying response type.
- description: |
- By default, `invoke()` will parse the response as JSON. You can parse the response in the following formats: `json`, `blob`, `text`, and `arrayBuffer`.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabaseClient.functions.invoke(
- 'hello',
- body: {'foo': 'baa'},
- responseType: ResponseType.text,
- );
- final data = res.data;
- final error = res.error;
- ```
- - name: Parsing custom headers.
- description: |
- Any `headers` will be passed through to the function. A common pattern is to pass a logged-in user's JWT token as an Authorization header.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabaseClient.functions.invoke(
- 'hello',
- body: {'foo': 'baa'},
- headers: {
- 'Authorization': 'Bearer ${supabase.auth.session()?.access_token}'
- },
- );
- ```
- select():
- description: |
- Performs vertical filtering with SELECT.
- title: 'Fetch data: select()'
- notes: |
- - By default, Supabase projects will return a maximum of 1,000 rows. This setting can be changed in Project API Settings. It's recommended that you keep it low to limit the payload size of accidental or malicious requests. You can use `range()` queries to paginate through your data.
- - `select()` can be combined with [Modifiers](/docs/reference/dart/using-modifiers)
- - `select()` can be combined with [Filters](/docs/reference/dart/using-filters)
- - If using the Supabase hosted platform `apikey` is technically a reserved keyword, since the API gateway will pluck it out for authentication. [It should be avoided as a column name](https://github.com/supabase/supabase/issues/5465).
- examples:
- - name: Getting your data
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .select()
- .execute();
-
- final data = res.data;
- final error = res.error;
- ```
- - name: Selecting specific columns
- description: You can select specific fields from your tables.
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .select('name')
- .execute();
- ```
- - name: Query foreign tables
- description: If your database has relationships, you can query related tables too.
- dart: |
- ```dart
- final res = await supabase
- .from('countries')
- .select('''
- name,
- cities (
- name
- )
- ''')
- .execute();
- ```
- - name: Query the same foreign table multiple times
- description: |
- Sometimes you will need to query the same foreign table twice.
- In this case, you can use the name of the joined column to identify
- which join you intend to use. For convenience, you can also give an
- alias for each column. For example, if we had a shop of products,
- and we wanted to get the supplier and the purchaser at the same time
- (both in the users) table:
- dart: |
- ```dart
- final res = await supabase
- .from('products')
- .select('''
- id,
- supplier:supplier_id ( name ),
- purchaser:purchaser_id ( name )
- ''')
- .execute();
- ```
- - name: Filtering with inner joins
- description: |
- If you want to filter a table based on a child table's values you can use the `!inner()` function. For example, if you wanted
- to select all rows in a `message` table which belong to a user with the `username` "Jane":
- dart: |
- ```dart
- final res = await supabase
- .from('messages')
- .select('*, users!inner(*)')
- .eq('users.username', 'Jane')
- .execute();
- ```
- - name: Querying with count option
- description: |
- You can get the number of rows by using the count option.
- Allowed values for count option are [exact](https://postgrest.org/en/stable/api.html#exact-count), [planned](https://postgrest.org/en/stable/api.html#planned-count) and [estimated](https://postgrest.org/en/stable/api.html#estimated-count).
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .select('name')
- .execute(count: CountOption.exact);
-
- final count = res.count;
- ```
- - name: Querying JSON data
- description: |
- If you have data inside of a JSONB column, you can apply select
- and query filters to the data values. Postgres offers a
- [number of operators](https://www.postgresql.org/docs/current/functions-json.html)
- for querying JSON data. Also see
- [PostgREST docs](http://postgrest.org/en/v7.0.0/api.html#json-columns) for more details.
- dart: |
- ```dart
- final res = await supabase
- .from('users')
- .select('''
- id, name,
- address->street
- ''')
- .eq('address->postcode', 90210)
- .execute();
- ```
- - name: Return data as CSV
- description: |
- By default the data is returned in JSON format, however you can also request for it to be returned as Comma Separated Values.
- dart: |
- ```dart
- final res = await supabase
- .from('users')
- .select()
- .csv()
- .execute();
- ```
-
- insert():
- description: |
- Performs an INSERT into the table.
- title: 'Create data: insert()'
- notes: |
- - By default, every time you run `insert()`, the client library will make a `select` to return the full record.
- This is convenient, but it can also cause problems if your Policies are not configured to allow the `select` operation.
- If you are using Row Level Security and you are encountering problems, try setting the `returning` param to `minimal`.
- examples:
- - name: Create a record
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .insert([
- {'name': 'The Shire', 'country_id': 554}
- ]).execute();
- ```
- - name: Bulk create
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .insert([
- {'name': 'The Shire', 'country_id': 554},
- {'name': 'Rohan', 'country_id': 555},
- ]).execute();
- ```
-
- update():
- description: |
- Performs an UPDATE on the table.
- title: 'Modify data: update()'
- notes: |
- - `update()` should always be combined with [Filters](/docs/reference/dart/using-filters) to target the item(s) you wish to update.
- examples:
- - name: Updating your data
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .update({ 'name': 'Middle Earth' })
- .match({ 'name': 'Auckland' })
- .execute();
- ```
- - name: Updating JSON data
- description: |
- Postgres offers a
- [number of operators](https://www.postgresql.org/docs/current/functions-json.html)
- for working with JSON data. Right now it is only possible to update an entire JSON document,
- but we are [working on ideas](https://github.com/PostgREST/postgrest/issues/465) for updating individual keys.
- dart: |
- ```dart
- final res = await supabase
- .from('users')
- .update({
- 'address': {
- 'street': 'Melrose Place',
- 'postcode': 90210
- }
- })
- .eq('address->postcode', 90210)
- .execute();
- ```
-
- upsert():
- description: |
- Performs an UPSERT into the table.
- title: 'Upsert data: upsert()'
- notes: |
- - Primary keys should be included in the data payload in order for an update to work correctly.
- - Primary keys must be natural, not surrogate. There are however, [workarounds](https://github.com/PostgREST/postgrest/issues/1118) for surrogate primary keys.
- examples:
- - name: Upsert your data
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase
- .from('messages')
- .upsert({ 'id': 3, 'message': 'foo', 'username': 'supabot' })
- .execute();
- ```
- - name: Upserting into tables with constraints
- description: |
- Running the following will cause supabase to upsert data into the `users` table.
- If the username 'supabot' already exists, the `onConflict` argument tells supabase to overwrite that row
- based on the column passed into `onConflict`.
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase
- .from('users')
- .upsert({ 'username': 'supabot' }, { 'onConflict': 'username' })
- .execute();
- ```
- - name: Return the exact number of rows
- description: |
- Allowed values for count option are `exact`, `planned` and `estimated`.
- dart: |
- ```dart
- final res = await supabase
- .from('users')
- .upsert({
- 'id': 3,
- 'message': 'foo',
- 'username': 'supabot'
- })
- .execute(count: CountOption.exact);
- ```
-
- delete():
- description: |
- Performs a DELETE on the table.
- title: 'Delete data: delete()'
- notes: |
- - `delete()` should always be combined with [Filters](/docs/reference/dart/using-filters) to target the item(s) you wish to delete.
- examples:
- - name: Delete records
- isSpotlight: true
- dart: |
- ```dart
- final res = await supabase
- .from('cities')
- .delete()
- .match({ 'id': 666 })
- .execute();
- ```
-
- rpc():
- title: 'Stored Procedures: rpc()'
- description: |
- You can call stored procedures as a "Remote Procedure Call".
-
- That's a fancy way of saying that you can put some logic into your database then call it from anywhere.
- It's especially useful when the logic rarely changes - like password resets and updates.
- examples:
- - name: Call a stored procedure
- isSpotlight: true
- description: This is an example invoking a stored procedure.
- dart: |
- ```dart
- final res = await supabase
- .rpc('hello_world')
- .execute();
- ```
- - name: With Parameters
- dart: |
- ```dart
- final res = await supabase
- .rpc('echo_city', params: { 'name': 'The Shire' })
- .execute();
- ```
- - name: With count option
- description: |
- You can specify a count option to get the row count along with your data.
- Allowed values for count option are `exact`, `planned` and `estimated`.
- dart: |
- ```dart
- final res = await supabase
- .rpc('hello_world')
- .execute(count: CountOption.exact);
- ```
-
- subscribe():
- description: |
- Subscribe to realtime changes in your database.
- title: 'on().subscribe()'
- notes: |
- - Realtime is disabled by default for new Projects for better database performance and security. You can turn it on by [managing replication](/docs/guides/api#managing-realtime).
- - If you want to receive the "previous" data for updates and deletes, you will need to set `REPLICA IDENTITY` to `FULL`, like this: `ALTER TABLE your_table REPLICA IDENTITY FULL;`
- examples:
- - name: Listen to all database changes
- isSpotlight: true
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries')
- .on(SupabaseEventTypes.all, (payload) {
- // Handle realtime payload
- })
- .subscribe();
- ```
- - name: Listening to a specific table
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries')
- .on(SupabaseEventTypes.all, (payload) {
- // Handle realtime payload
- })
- .subscribe();
- ```
- - name: Listening to inserts
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries')
- .on(SupabaseEventTypes.insert, (payload) {
- // Handle realtime payload
- })
- .subscribe();
- ```
- - name: Listening to updates
- description: |
- By default, Supabase will send only the updated record. If you want to receive the previous values as well you can
- enable full replication for the table you are listening too:
-
- ```sql
- alter table "your_table" replica identity full;
- ```
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries')
- .on(SupabaseEventTypes.update, (payload) {
- // Handle realtime payload
- })
- .subscribe();
- ```
- - name: Listening to deletes
- description: |
- By default, Supabase does not send deleted records. If you want to receive the deleted record you can
- enable full replication for the table you are listening too:
-
- ```sql
- alter table "your_table" replica identity full;
- ```
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries')
- .on(SupabaseEventTypes.delete, (payload) {
- // Handle realtime payload
- })
- .subscribe();
- ```
- - name: Listening to multiple events
- description: You can chain listeners if you want to listen to multiple events for each table.
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries')
- .on(SupabaseEventTypes.insert, handleInsert)
- .on(SupabaseEventTypes.delete, handleDelete)
- .subscribe();
- ```
- - name: Listening to row level changes
- description: You can listen to individual rows using the format `{table}:{col}=eq.{val}` - where `{col}` is the column name, and `{val}` is the value which you want to match.
- dart: |
- ```dart
- final mySubscription = supabase
- .from('countries:id=eq.200')
- .on(SupabaseEventTypes.update, handleRecordUpdated)
- .subscribe();
- ```
-
- removeSubscription():
- description: |
- Removes an active subscription and returns the number of open connections.
- title: 'removeSubscription()'
- notes: |
- - Removing subscriptions is a great way to maintain the performance of your project's database. Supabase will automatically handle cleanup 30 seconds after a user is disconnected, but unused subscriptions may cause degradation as more users are simultaneously subscribed.
- examples:
- - name: Remove a subscription
- isSpotlight: true
- dart: |
- ```dart
- supabase.removeSubscription(mySubscription);
- ```
-
- getSubscriptions():
- description: |
- Returns an array of all your subscriptions.
- title: 'getSubscriptions()'
- examples:
- - name: Get all subscriptions
- isSpotlight: true
- dart: |
- ```dart
- final subscriptions = supabase.getSubscriptions();
- ```
-
- stream():
- description: |
- Notifies of data at the queried table.
- title: 'stream()'
- notes: |
- - `stream()` will emit the initial data as well as any further change on the database as `Stream` of `List