Compare commits
50 Commits
@nhost/apo
...
@nhost/rea
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1446a8f13b | ||
|
|
ff75998e93 | ||
|
|
9cc044ca9f | ||
|
|
c65e44b8d6 | ||
|
|
9ec73b4c22 | ||
|
|
94b70e0ce9 | ||
|
|
d108dff4f4 | ||
|
|
7a8e771a72 | ||
|
|
f8fb4bbedd | ||
|
|
c6b1c33a8e | ||
|
|
65b36eff13 | ||
|
|
c192cb9503 | ||
|
|
94ff290264 | ||
|
|
78781ebfec | ||
|
|
63d6059981 | ||
|
|
022d49fb25 | ||
|
|
3bd1aa4d53 | ||
|
|
f3cca4997b | ||
|
|
0fd7a487d6 | ||
|
|
1bb032c1e7 | ||
|
|
2c97db68b5 | ||
|
|
714f2872ee | ||
|
|
65fc26a0e8 | ||
|
|
86a56f28c1 | ||
|
|
6e8abe28d6 | ||
|
|
39925ff5ca | ||
|
|
583a77ed0d | ||
|
|
e704831500 | ||
|
|
95948dd5b9 | ||
|
|
247b69c952 | ||
|
|
7d15b76402 | ||
|
|
b1ae65fd72 | ||
|
|
0063fd1840 | ||
|
|
743a7e6507 | ||
|
|
078652861f | ||
|
|
39840cfd95 | ||
|
|
940a36a68f | ||
|
|
77b109b3df | ||
|
|
15907d65e6 | ||
|
|
7d7d16fa71 | ||
|
|
3f39e48cbd | ||
|
|
97ade32869 | ||
|
|
8583af8290 | ||
|
|
a28193a6ba | ||
|
|
9d6c64430a | ||
|
|
519d1bf5cb | ||
|
|
5ffb0320b5 | ||
|
|
6607e73cc2 | ||
|
|
b4bac161a5 | ||
|
|
37d15377c8 |
15
.github/workflows/contributors.yaml
vendored
Normal file
15
.github/workflows/contributors.yaml
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
name: Add contributors
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
contrib-readme-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: A job to automate contrib in readme
|
||||||
|
steps:
|
||||||
|
- name: Contribute List
|
||||||
|
uses: akhilmhdh/contributors-readme-action@v2.3.4
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
201
README.md
201
README.md
@@ -1,8 +1,8 @@
|
|||||||
<div align="center">
|

|
||||||
<img width="237" src="https://raw.githubusercontent.com/nhost/nhost/main/assets/logo.png"/>
|
|
||||||
|
|
||||||
<br />
|
<div align="center">
|
||||||
<br />
|
|
||||||
|
# Nhost
|
||||||
|
|
||||||
<a href="https://docs.nhost.io/get-started">Quickstart</a>
|
<a href="https://docs.nhost.io/get-started">Quickstart</a>
|
||||||
<span> • </span>
|
<span> • </span>
|
||||||
@@ -20,9 +20,9 @@
|
|||||||
<hr />
|
<hr />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
**Nhost is a serverless backend for web and mobile apps** built with the following things in mind:
|
**Nhost is a open-source GraphQL backend,** built with the following things in mind:
|
||||||
|
|
||||||
- Open Source
|
- Open-Source
|
||||||
- Developer Productivity
|
- Developer Productivity
|
||||||
- SQL
|
- SQL
|
||||||
- GraphQL
|
- GraphQL
|
||||||
@@ -110,7 +110,7 @@ First and foremost: **Star and watch this repository** to stay up-to-date.
|
|||||||
|
|
||||||
Also, follow Nhost on [GitHub Discussions](https://github.com/nhost/nhost/discussions), our [Blog](https://nhost.io/blog), and on [Twitter](https://twitter.com/nhostio). You can chat with the team and other members on [Discord](https://discord.com/invite/9V7Qb2U) and follow our tutorials and other video material at [YouTube](https://www.youtube.com/channel/UCJ7irtvV9Y0EQMxpabb6ntg?view_as=subscriber).
|
Also, follow Nhost on [GitHub Discussions](https://github.com/nhost/nhost/discussions), our [Blog](https://nhost.io/blog), and on [Twitter](https://twitter.com/nhostio). You can chat with the team and other members on [Discord](https://discord.com/invite/9V7Qb2U) and follow our tutorials and other video material at [YouTube](https://www.youtube.com/channel/UCJ7irtvV9Y0EQMxpabb6ntg?view_as=subscriber).
|
||||||
|
|
||||||
## Nhost is Open Source
|
### Nhost is Open Source
|
||||||
|
|
||||||
This repository, and most of our other open source projects, are licensed under the MIT license.
|
This repository, and most of our other open source projects, are licensed under the MIT license.
|
||||||
|
|
||||||
@@ -122,6 +122,189 @@ Here are some ways of contributing to making Nhost better:
|
|||||||
- Join our [Discord](https://discord.com/invite/9V7Qb2U) and connect with other members to share and learn from.
|
- Join our [Discord](https://discord.com/invite/9V7Qb2U) and connect with other members to share and learn from.
|
||||||
- Send a pull request to any of our [open source repositories](https://github.com/nhost) on Github. Check our [contribution guide](https://github.com/nhost/nhost/blob/main/CONTRIBUTING.md) for more details about how to contribute. We're looking forward to your contribution!
|
- Send a pull request to any of our [open source repositories](https://github.com/nhost) on Github. Check our [contribution guide](https://github.com/nhost/nhost/blob/main/CONTRIBUTING.md) for more details about how to contribute. We're looking forward to your contribution!
|
||||||
|
|
||||||
## Security
|
### Contributors
|
||||||
|
|
||||||
If you discover a security vulnerability within Nhost, please e-mail [security@nhost.io](mailto:security@nhost.io). All security vulnerabilities will be promptly addressed.
|
<!-- readme: contributors -start -->
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/plmercereau">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/24897252?v=4" width="100;" alt="plmercereau"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Pilou</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/elitan">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/331818?v=4" width="100;" alt="elitan"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Johan Eliasson</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/szilarddoro">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/310881?v=4" width="100;" alt="szilarddoro"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Szilárd Dóró</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/nunopato">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/1523504?v=4" width="100;" alt="nunopato"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Nuno Pato</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/subatuba21">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/34824571?v=4" width="100;" alt="subatuba21"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Subha Das</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/guicurcio">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/20285232?v=4" width="100;" alt="guicurcio"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Guido Curcio</b></sub>
|
||||||
|
</a>
|
||||||
|
</td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/sebagudelo">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/43288271?v=4" width="100;" alt="sebagudelo"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Sebagudelo</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/mrinalwahal">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/9859731?v=4" width="100;" alt="mrinalwahal"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Mrinal Wahal</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/gdangelo">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/4352286?v=4" width="100;" alt="gdangelo"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Grégory D'Angelo</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/FuzzyReason">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/62517920?v=4" width="100;" alt="FuzzyReason"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Vadim Smirnov</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/subhendukundu">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/20059141?v=4" width="100;" alt="subhendukundu"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Subhendu Kundu</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/chrtze">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/3797215?v=4" width="100;" alt="chrtze"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Christopher Möller</b></sub>
|
||||||
|
</a>
|
||||||
|
</td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/jerryjappinen">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/1101002?v=4" width="100;" alt="jerryjappinen"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Jerry Jäppinen</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/mustafa-hanif">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/30019262?v=4" width="100;" alt="mustafa-hanif"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Mustafa Hanif</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/Savinvadim1312">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/16936043?v=4" width="100;" alt="Savinvadim1312"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Savin Vadim</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/ahmic">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/13452362?v=4" width="100;" alt="ahmic"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Amir Ahmic</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/akd-io">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/30059155?v=4" width="100;" alt="akd-io"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Anders Kjær Damgaard</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/rustyb">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/53086?v=4" width="100;" alt="rustyb"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Colin Broderick</b></sub>
|
||||||
|
</a>
|
||||||
|
</td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/dohomi">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/489221?v=4" width="100;" alt="dohomi"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Dominic Garms</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/alveshelio">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/8176422?v=4" width="100;" alt="alveshelio"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Helio Alves</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/nkhdo">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/26102306?v=4" width="100;" alt="nkhdo"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Hoang Do</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/ghoshnirmalya">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/6391763?v=4" width="100;" alt="ghoshnirmalya"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Nirmalya Ghosh</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/timpratim">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/32492961?v=4" width="100;" alt="timpratim"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Pratim</b></sub>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/quentin-decre">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/1137511?v=4" width="100;" alt="quentin-decre"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Quentin Decré</b></sub>
|
||||||
|
</a>
|
||||||
|
</td></tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="https://github.com/komninoschat">
|
||||||
|
<img src="https://avatars.githubusercontent.com/u/29049104?v=4" width="100;" alt="komninoschat"/>
|
||||||
|
<br />
|
||||||
|
<sub><b>Komninos</b></sub>
|
||||||
|
</a>
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<!-- readme: contributors -end -->
|
||||||
|
|||||||
@@ -18,9 +18,14 @@ In this guide, we'll keep the example simple. We're not using a frontend framewo
|
|||||||
|
|
||||||
Create a new folder called `nhost-todos`, and initialize a new JavaScript app there:
|
Create a new folder called `nhost-todos`, and initialize a new JavaScript app there:
|
||||||
|
|
||||||
|
Using npm package manager
|
||||||
```sh
|
```sh
|
||||||
npm init -y
|
npm init -y
|
||||||
# or
|
```
|
||||||
|
or
|
||||||
|
|
||||||
|
Using Yarn package manager
|
||||||
|
```sh
|
||||||
yarn init -y
|
yarn init -y
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -28,9 +33,13 @@ yarn init -y
|
|||||||
|
|
||||||
Install Nhost JavaScript SDK:
|
Install Nhost JavaScript SDK:
|
||||||
|
|
||||||
|
Using npm package manager
|
||||||
```sh
|
```sh
|
||||||
npm install @nhost/nhost-js
|
npm install @nhost/nhost-js
|
||||||
# or
|
```
|
||||||
|
or
|
||||||
|
Using Yarn package manager
|
||||||
|
```sh
|
||||||
yarn add @nhost/nhost-js
|
yarn add @nhost/nhost-js
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -409,10 +409,41 @@ const Component = () => {
|
|||||||
|
|
||||||
## User data
|
## User data
|
||||||
|
|
||||||
<!-- TODO ellaborate -->
|
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const userData = useUserData()
|
const { id, email, displayName, avatarUrl, isAnonymous, locale, defaultRole, roles, metadata, createdAt } = useUserData()
|
||||||
|
```
|
||||||
|
|
||||||
|
| Name | Type | Default | Notes |
|
||||||
|
| ------------- | ------------- | ---------------- | ------------------------------------------------------ |
|
||||||
|
| `id` | string | | User's unique identifier (uuid) |
|
||||||
|
| `email` | string | | User's email address |
|
||||||
|
| `displayName` | string | `""` | User's display name |
|
||||||
|
| `avatarUrl` | string | `""` | The URL to the user's profile picture |
|
||||||
|
| `isAnonymous` | boolean | `false` | Whether or not the user is anonymous |
|
||||||
|
| `locale` | string | `"en"` | A two-characters locale |
|
||||||
|
| `defaultRole` | string | `"user"` | The default role of the user |
|
||||||
|
| `roles` | string[] | `["me", "user"]` | The roles assigned to the user |
|
||||||
|
| `metadata` | JSON object | `null` | Additional attributes used for user information |
|
||||||
|
| `createdAt` | string | | The date-time when the user has been created |
|
||||||
|
|
||||||
|
Example of an authenticated user:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"avatarUrl": "https://s.gravatar.com/avatar/3020737ed9d932c6665111a5550454d2?r=g&default=blank",
|
||||||
|
"createdAt": "2022-04-11T16:33:14.780439+00:00",
|
||||||
|
"defaultRole": "user",
|
||||||
|
"displayName": "Grégory D'Angelo",
|
||||||
|
"email": "greg@nhost.io",
|
||||||
|
"id": "05e054c7-a722-42e7-90a6-3f77a2f118c8",
|
||||||
|
"isAnonymous": false,
|
||||||
|
"locale": "en",
|
||||||
|
"metadata": {
|
||||||
|
"lastName": "D'Angelo",
|
||||||
|
"firstName": "Grégory"
|
||||||
|
},
|
||||||
|
"roles": ["user", "me"]
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Avatar
|
### Avatar
|
||||||
@@ -445,7 +476,7 @@ const Avatar = () => {
|
|||||||
### Display name
|
### Display name
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { displayName } from '@nhost/react'
|
import { useDisplayName } from '@nhost/react'
|
||||||
|
|
||||||
const Avatar = () => {
|
const Avatar = () => {
|
||||||
const displayName = useDisplayName()
|
const displayName = useDisplayName()
|
||||||
|
|||||||
@@ -64,5 +64,5 @@ const nhost = new NhostClient({
|
|||||||
| `autoLogin` | boolean | `true` | If set to `true`, the client will detect credentials in the current URL that could have been sent during an email verification or an Oauth authentication. It will also automatically authenticate all the active tabs in the current browser. |
|
| `autoLogin` | boolean | `true` | If set to `true`, the client will detect credentials in the current URL that could have been sent during an email verification or an Oauth authentication. It will also automatically authenticate all the active tabs in the current browser. |
|
||||||
| `autoRefreshToken` | boolean | `true` | If set to `true`, the JWT (access token) will be automatically refreshed before it expires. |
|
| `autoRefreshToken` | boolean | `true` | If set to `true`, the JWT (access token) will be automatically refreshed before it expires. |
|
||||||
| `clientStorageGetter` | (key:string) => string \| null | use localStorage | Nhost stores a refresh token in `localStorage` so the session can be restored when starting the browser. |
|
| `clientStorageGetter` | (key:string) => string \| null | use localStorage | Nhost stores a refresh token in `localStorage` so the session can be restored when starting the browser. |
|
||||||
| `clientStorageGetter` | (key: string, value: string \| null | use localStorage | |
|
| `clientStorageSetter` | (key: string, value: string \| null | use localStorage | |
|
||||||
| `refreshIntervalTime` | | |
|
| `refreshIntervalTime` | | |
|
||||||
|
|||||||
@@ -4,40 +4,67 @@ title: 'Protecting routes'
|
|||||||
|
|
||||||
## React Router
|
## React Router
|
||||||
|
|
||||||
You can protect routes by creating an `AuthGate` component when using `@nhost/react` with [React Router](https://reactrouter.com/web/guides/quick-start).
|
> This example uses the latest version of [React Router (v6)](https://reactrouter.com/docs/en/v6).
|
||||||
|
|
||||||
|
You can protect routes by creating a wrapper component, `ProtectedRoute`, to implement the authentication logic using `@nhost/react`.
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { Redirect } from 'react-router-dom'
|
// src/components/ProtectedRoute.js
|
||||||
import { useAuthenticationStatus } from '@nhost/react'
|
|
||||||
|
|
||||||
export function AuthGate(children) {
|
import { useAuthenticationStatus } from '@nhost/react';
|
||||||
const { isLoading, isAuthenticated } = useAuthenticationStatus()
|
import { Navigate, Outlet, useLocation } from 'react-router-dom';
|
||||||
|
|
||||||
|
const ProtectedRoute = () => {
|
||||||
|
const { isAuthenticated, isLoading } = useAuthenticationStatus();
|
||||||
|
const location = useLocation();
|
||||||
|
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return <div>Loading...</div>
|
return <div>Loading...</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isAuthenticated) {
|
if (!isAuthenticated) {
|
||||||
return <Redirect to="/login" />
|
return <Navigate to="/login" />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return children
|
return <Outlet />;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
export default ProtectedRoute;
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, in your React Router, wrap the `AuthGate` component around the routes you want to protect:
|
So, if the user is not authenticated, we redirect him to the `/login` route using the [`Navigate`](https://reactrouter.com/docs/en/v6/api#navigate) component from React Router. Otherwise, we render the [`Outlet`](https://reactrouter.com/docs/en/v6/api#outlet) component, also provided by React Router, to render the `ProtectedRoute` child route elements.
|
||||||
|
|
||||||
|
Then, in your `App.js` file, you can use a [layout route](https://reactrouter.com/docs/en/v6/getting-started/concepts#layout-route) to wrap the `ProtectedRoute` component around the routes you want to protect:
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
<Router>
|
// src/App.js
|
||||||
<Switch>
|
|
||||||
<Route path="/login">
|
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
||||||
<Login />
|
import { NhostReactProvider } from '@nhost/react';
|
||||||
</Route>
|
|
||||||
<Route path="/" exact>
|
import ProtectedRoute from './components/ProtectedRoute';
|
||||||
<AuthGate> // <--- Use AuthGate component like this
|
|
||||||
<div>My protected dashboard</div>
|
import Home from './pages/Home';
|
||||||
</AuthGate>
|
import Login from './pages/Login';
|
||||||
</Route>
|
import Dashboard from './pages/Dashboard';
|
||||||
</Switch>
|
import Profile from './pages/Profile';
|
||||||
</Router>
|
|
||||||
|
import { nhost } from './lib/nhost';
|
||||||
|
|
||||||
|
export function App() {
|
||||||
|
return (
|
||||||
|
<NhostReactProvider nhost={nhost}>
|
||||||
|
<BrowserRouter>
|
||||||
|
<Routes>
|
||||||
|
<Route path="/" element={<Home />} />
|
||||||
|
<Route path="/login" element={<Login />} />
|
||||||
|
<Route path="/dashboard" element={<ProtectedRoute />}>
|
||||||
|
<Route index element={<Dashboard />} />
|
||||||
|
<Route path="profile" element={<Profile />} />
|
||||||
|
</Route>
|
||||||
|
</Routes>
|
||||||
|
</BrowserRouter>
|
||||||
|
</NhostReactProvider>
|
||||||
|
);
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
"name": "nhost-documentation",
|
"name": "nhost-documentation",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next",
|
"dev": "next",
|
||||||
"build:next": "next build",
|
"build:next": "next build",
|
||||||
@@ -38,6 +37,7 @@
|
|||||||
"swagger-ui-react": "^4.5.2"
|
"swagger-ui-react": "^4.5.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^17.0.21",
|
||||||
"@types/react": "^17.0.37",
|
"@types/react": "^17.0.37",
|
||||||
"autoprefixer": "^10.4.0",
|
"autoprefixer": "^10.4.0",
|
||||||
"next-sitemap": "^1.6.203",
|
"next-sitemap": "^1.6.203",
|
||||||
|
|||||||
@@ -1,46 +1,57 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
|
||||||
<url><loc>https://docs.nhost.io</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/authentication</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/authentication</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/cli-workflow</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/cli-workflow</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/quick-start</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/quick-start</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/upgrade</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/upgrade</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/authentication</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/database</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/database</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/nhost</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/nhost</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/serverless-functions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/serverless-functions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/storage</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/storage</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/cli</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/cli</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/nextjs</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/hasura-auth</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/react</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/nextjs</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.648Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/sdk</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/react</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/supporting-libraries</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/sdk</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/cli-workflow/install-cli</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/cli-workflow/install-cli</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/cli-workflow/local-changes</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/cli-workflow/local-changes</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/cli-workflow/metadata-and-serverless-functions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/cli-workflow/metadata-and-serverless-functions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/cli-workflow/workflow-setup</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/cli-workflow/workflow-setup</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/quick-start/javascript-client</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/quick-start/javascript-client</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/quick-start/permissions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/quick-start/permissions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/get-started/quick-start/schema</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/get-started/quick-start/schema</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-methods</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/email-templates</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/authentication/social-login</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-methods</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/authentication/user-management</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-with-facebook</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/database/graphql</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-with-github</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/database/permissions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-with-google</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/nhost/environment-variables</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-with-linkedin</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/nhost/github-integration</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/sign-in-with-spotify</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/nhost/local-development</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/social-sign-in</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/platform/serverless-functions/event-triggers</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/authentication/user-management</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/nextjs/server-side</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/database/graphql</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/react/apollo</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/database/permissions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/react/hooks</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/nhost/environment-variables</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/sdk/authentication</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/nhost/github-integration</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/sdk/functions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/nhost/local-development</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/sdk/graphql</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/platform/serverless-functions/event-triggers</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/sdk/storage</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/hasura-auth/api-reference</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/supporting-libraries/react-apollo</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/hasura-auth/configuration</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
<url><loc>https://docs.nhost.io/reference/supporting-libraries/react-auth</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-02-21T10:17:26.089Z</lastmod></url>
|
<url><loc>https://docs.nhost.io/reference/hasura-auth/environment-variables</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/hasura-auth/installation</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/hasura-auth/schema</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/nextjs/configuration</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/nextjs/protecting-routes</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/react/apollo</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/react/hooks</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/react/protecting-routes</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/sdk/authentication</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/sdk/functions</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/sdk/graphql</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
|
<url><loc>https://docs.nhost.io/reference/sdk/storage</loc><changefreq>daily</changefreq><priority>0.7</priority><lastmod>2022-04-08T13:10:11.649Z</lastmod></url>
|
||||||
</urlset>
|
</urlset>
|
||||||
@@ -10,9 +10,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/client": "^3.5.10",
|
"@apollo/client": "^3.5.10",
|
||||||
"@nhost/nextjs": "^1.0.8",
|
"@nhost/nextjs": "^1.0.10",
|
||||||
"@nhost/react": "^0.4.6",
|
"@nhost/react": "^0.5.0",
|
||||||
"@nhost/react-apollo": "^4.0.8",
|
"@nhost/react-apollo": "^4.0.10",
|
||||||
"graphql": "^16.3.0",
|
"graphql": "^16.3.0",
|
||||||
"next": "12.1.0",
|
"next": "12.1.0",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
|
|||||||
@@ -136,31 +136,31 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz#d27e7e76c87a460a4da99c5bfdb1618dcd6cd064"
|
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz#d27e7e76c87a460a4da99c5bfdb1618dcd6cd064"
|
||||||
integrity sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==
|
integrity sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==
|
||||||
|
|
||||||
"@nhost/apollo@^0.3.6":
|
"@nhost/apollo@^0.3.7":
|
||||||
version "0.3.6"
|
version "0.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/apollo/-/apollo-0.3.6.tgz#c3902c8ea9250bbe7428098ddfe145d9a2d82f2f"
|
resolved "https://registry.yarnpkg.com/@nhost/apollo/-/apollo-0.3.7.tgz#761d3d60519df60caaa7220909ab11bd2c629e3a"
|
||||||
integrity sha512-+UtPMKPkqQ9MuJ24TQB0p59uytoyBXOBYLJ0SEHvs6cAfhkOkLljk+WhWSBhUdRkD+k4iRmHrVvVCyVzLGFRPg==
|
integrity sha512-NH1WCC5D6K/Ft8/EXYIgeAhOBq5Gt1OtX9U9RzV2IqmVRGigDw+YlXr8P5GRPAzBeZUVWrM1wvBt+oBk8zw/7g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/core" "^0.3.7"
|
"@nhost/core" "^0.3.8"
|
||||||
graphql "16"
|
graphql "16"
|
||||||
subscriptions-transport-ws "^0.11.0"
|
subscriptions-transport-ws "^0.11.0"
|
||||||
|
|
||||||
"@nhost/core@^0.3.7":
|
"@nhost/core@^0.3.8":
|
||||||
version "0.3.7"
|
version "0.3.8"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/core/-/core-0.3.7.tgz#115cd770dc8ea1d277a71802958c89c1aa83578b"
|
resolved "https://registry.yarnpkg.com/@nhost/core/-/core-0.3.8.tgz#0269ab5daa36b1bdd2b2864c174809a86d4d2a7a"
|
||||||
integrity sha512-sQZp+aet/gCbu4R7cLgRbOrZarfBc1ZTuUwsfpVChLCYtVlPtY5ZWk4pfvU9tbfGEpmbkC4Bk9KqD9AFOzT27A==
|
integrity sha512-6mOv23H16n0YN0voXdXSGS18rUELe1YI2+HXMRlaeksCib4BvSf28lsideEOjFnyfHA3Y4wAX1SMxnyaEj1qaQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
axios "^0.25.0"
|
axios "^0.25.0"
|
||||||
broadcast-channel "^4.10.0"
|
broadcast-channel "^4.10.0"
|
||||||
js-cookie "^3.0.1"
|
js-cookie "^3.0.1"
|
||||||
xstate "^4.30.5"
|
xstate "^4.30.5"
|
||||||
|
|
||||||
"@nhost/hasura-auth-js@^1.0.7":
|
"@nhost/hasura-auth-js@^1.0.9":
|
||||||
version "1.0.7"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/hasura-auth-js/-/hasura-auth-js-1.0.7.tgz#2c6a81d64155bd8b24bbf314154ed2e40396b151"
|
resolved "https://registry.yarnpkg.com/@nhost/hasura-auth-js/-/hasura-auth-js-1.0.9.tgz#7e5cfe7a59b18778352dd6d2bef368c765ce9886"
|
||||||
integrity sha512-fj2aNY3gTt89SLMe3H4MYA50EhZz0OcBUdnES8sv1raOJyxjH94+8TfBVT0xNUqvubOM0J+0ewHAnDCkbodbXA==
|
integrity sha512-d0UDfakzUO9N0/4RRy9NptoOLgpcRmr2F5XxVVzqLYX67+XzZoqT+LMhOF8spKP4+JqFlKFgqbNulmuRRc5FfA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/core" "^0.3.7"
|
"@nhost/core" "^0.3.8"
|
||||||
|
|
||||||
"@nhost/hasura-storage-js@^0.2.0":
|
"@nhost/hasura-storage-js@^0.2.0":
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
@@ -169,38 +169,38 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
axios "^0.21.1"
|
axios "^0.21.1"
|
||||||
|
|
||||||
"@nhost/nextjs@^1.0.8":
|
"@nhost/nextjs@^1.0.10":
|
||||||
version "1.0.8"
|
version "1.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/nextjs/-/nextjs-1.0.8.tgz#761a447fd6aaef43625d82c0304b027d62360d76"
|
resolved "https://registry.yarnpkg.com/@nhost/nextjs/-/nextjs-1.0.10.tgz#ac78e1b32b6a89e6379179108c49d71cf23aeed8"
|
||||||
integrity sha512-lej1ZlSzh7+FNEizZuXrH4De9emRD7wvW8+huwRhTkFTxislsBuZt2tDrzktkRa5sdHSnyYyuVwZY3TEsm3JmA==
|
integrity sha512-BTNe4KHhWLbRKd8XfppYncLIohXZ0C+oCTZApVwwgVexqdQ5dxhObw0nQin2K7TlP2Mis+Ldzjjn3SO/hcb3xw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/nhost-js" "^1.0.7"
|
"@nhost/nhost-js" "^1.0.9"
|
||||||
cookies "^0.8.0"
|
cookies "^0.8.0"
|
||||||
|
|
||||||
"@nhost/nhost-js@^1.0.7":
|
"@nhost/nhost-js@^1.0.9":
|
||||||
version "1.0.7"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/nhost-js/-/nhost-js-1.0.7.tgz#90ccac91f5d61d32caa8544029b71d47aa7c8b2f"
|
resolved "https://registry.yarnpkg.com/@nhost/nhost-js/-/nhost-js-1.0.9.tgz#a1b0bc0c35e15ade2867da4d211b1f81f3bc5e28"
|
||||||
integrity sha512-XBy370bVfP2IYAozeSu62/caQ+bvwvFjj+76LjatqYc7PhHwJV/Kd5SIyvWgqLFO1xQ3kAX0if137IGC+dgBOw==
|
integrity sha512-/SZLk3Be560scVAbUswcRSE4RMwf6M7xanbNLqGUuI/sr1Ir253WPhaD2YWXZChP1v2LBzONhdJNI2g7u1NzoA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/hasura-auth-js" "^1.0.7"
|
"@nhost/hasura-auth-js" "^1.0.9"
|
||||||
"@nhost/hasura-storage-js" "^0.2.0"
|
"@nhost/hasura-storage-js" "^0.2.0"
|
||||||
axios "^0.23.0"
|
axios "^0.23.0"
|
||||||
jwt-decode "^3.1.2"
|
jwt-decode "^3.1.2"
|
||||||
query-string "^7.0.1"
|
query-string "^7.0.1"
|
||||||
|
|
||||||
"@nhost/react-apollo@^4.0.8":
|
"@nhost/react-apollo@^4.0.10":
|
||||||
version "4.0.8"
|
version "4.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/react-apollo/-/react-apollo-4.0.8.tgz#69c015086837c1aaa828c566f33e22b6c852529a"
|
resolved "https://registry.yarnpkg.com/@nhost/react-apollo/-/react-apollo-4.0.10.tgz#d28819019f35aff7fb69a3b485489ab0492643e1"
|
||||||
integrity sha512-G9F5AFLhXJV67MKvraRwSrJpkebqd/oEGgznK5knGL+B9FYuuXtBVbr5m95ESyYkYL+y3iPU3BY5GufL/9pCGw==
|
integrity sha512-MTIBk9aQVCIfVR17eEKM6ssELadpDhIAh2ERjaZY8+i9KMgVyjEt0s4842nl1Bwq7OFIXf5GRykr3RtTjuT/Ug==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/apollo" "^0.3.6"
|
"@nhost/apollo" "^0.3.7"
|
||||||
|
|
||||||
"@nhost/react@^0.4.6":
|
"@nhost/react@^0.5.0":
|
||||||
version "0.4.6"
|
version "0.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/react/-/react-0.4.6.tgz#e7f01d9cd1d3d24999a3a68a7b9c72cb3ef8fe04"
|
resolved "https://registry.yarnpkg.com/@nhost/react/-/react-0.5.0.tgz#5276ae7e13691f32ceaa0e6ca2460ef2605820f6"
|
||||||
integrity sha512-bqQI2T91tDI0PkVpnfcCDsQUWgXqwcrU6r29S7u4dziEt5RVG0NJjjg2SK35VbqZvJ9vU5z0KHM+4Cd5PKql2g==
|
integrity sha512-d89I3Q1Y6+9QJ6jP9yU9xrEJv8dCvTwll7tctd7emqZyPWGgInLpmZ9OA+/xrannowck5MsgaBdz0zxQ9bjJBA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/nhost-js" "^1.0.7"
|
"@nhost/nhost-js" "^1.0.9"
|
||||||
"@xstate/react" "^2.0.1"
|
"@xstate/react" "^2.0.1"
|
||||||
immer "^9.0.12"
|
immer "^9.0.12"
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,13 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Nhost React+Apollo demo</title>
|
<title>Vite App</title>
|
||||||
</head>
|
</head>
|
||||||
|
<body>
|
||||||
<body>
|
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
</body>
|
</body>
|
||||||
|
</html>
|
||||||
</html>
|
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ table:
|
|||||||
name: provider_requests
|
name: provider_requests
|
||||||
schema: auth
|
schema: auth
|
||||||
configuration:
|
configuration:
|
||||||
custom_column_names:
|
|
||||||
redirect_url: redirectUrl
|
|
||||||
custom_name: authProviderRequests
|
custom_name: authProviderRequests
|
||||||
custom_root_fields:
|
custom_root_fields:
|
||||||
delete: deleteAuthProviderRequests
|
delete: deleteAuthProviderRequests
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost-examples/react-apollo",
|
"name": "@nhost-examples/react-apollo",
|
||||||
"version": "0.2.0",
|
"version": "0.0.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/client": "^3.5.10",
|
"@apollo/client": "^3.5.10",
|
||||||
"@nhost/react": "^0.4.6",
|
"@nhost/react": "^0.5.0",
|
||||||
"@nhost/react-apollo": "^4.0.8",
|
"@nhost/react-apollo": "^4.0.10",
|
||||||
"@rsuite/icons": "^1.0.2",
|
"@rsuite/icons": "^1.0.2",
|
||||||
"jwt-decode": "^3.1.2",
|
"jwt-decode": "^3.1.2",
|
||||||
|
"less": "^4.1.2",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
"react-icons": "^4.3.1",
|
"react-icons": "^4.3.1",
|
||||||
"react-json-view": "^1.21.3",
|
"react-json-view": "^1.21.3",
|
||||||
"react-router-dom": "^6.2.1",
|
"react-router": "^6.3.0",
|
||||||
|
"react-router-dom": "^6.3.0",
|
||||||
"rsuite": "^5.7.1"
|
"rsuite": "^5.7.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -38,14 +40,10 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/react": "^17.0.39",
|
"@types/react": "^17.0.43",
|
||||||
"@types/react-dom": "^17.0.11",
|
"@types/react-dom": "^17.0.14",
|
||||||
"@vitejs/plugin-react": "^1.2.0",
|
"@vitejs/plugin-react": "^1.3.0",
|
||||||
"@xstate/inspect": "^0.6.2",
|
"typescript": "^4.6.3",
|
||||||
"graphql": "15.7.2",
|
"vite": "^2.9.1"
|
||||||
"less": "^4.1.2",
|
|
||||||
"typescript": "^4.5.5",
|
|
||||||
"vite": "^2.8.5",
|
|
||||||
"ws": "^8.5.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import React from 'react'
|
||||||
import { Link } from 'react-router-dom'
|
import { Link } from 'react-router-dom'
|
||||||
import { Panel } from 'rsuite'
|
import { Panel } from 'rsuite'
|
||||||
|
|
||||||
@@ -19,11 +20,11 @@ export const AboutPage: React.FC = () => (
|
|||||||
<li>React</li>
|
<li>React</li>
|
||||||
<li>React-router</li>
|
<li>React-router</li>
|
||||||
<li>RSuite</li>
|
<li>RSuite</li>
|
||||||
<li>...and of course, the Nhost React client</li>
|
<li>and of course, the Nhost React client</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
Noew let's go to the <Link to="/">index page</Link>
|
Noew let's go to the <Link to="/">index page</Link>
|
||||||
</div>
|
</div>
|
||||||
</Panel>
|
</Panel>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,17 +1,20 @@
|
|||||||
import './App.css'
|
/* eslint-disable react/react-in-jsx-scope */
|
||||||
|
import { useEffect } from 'react'
|
||||||
|
import { Link, Route, Routes, useLocation, useNavigate } from 'react-router-dom'
|
||||||
|
import { Container, Content, Header, Nav, Navbar } from 'rsuite'
|
||||||
|
|
||||||
import { useAuthenticated, useSignOut } from '@nhost/react'
|
import { useAuthenticated, useSignOut } from '@nhost/react'
|
||||||
import ExitIcon from '@rsuite/icons/Exit'
|
import ExitIcon from '@rsuite/icons/Exit'
|
||||||
import { Routes, Route, Link, useNavigate, useLocation } from 'react-router-dom'
|
|
||||||
import { Container, Header, Navbar, Content, Nav } from 'rsuite'
|
|
||||||
import { useEffect } from 'react'
|
|
||||||
import { SignInPage } from './sign-in'
|
|
||||||
import { AuthGate, PublicGate } from './components/auth-gates'
|
import { AuthGate, PublicGate } from './components/auth-gates'
|
||||||
|
import { AboutPage } from './About'
|
||||||
|
import { ApolloPage } from './apollo'
|
||||||
import Home from './Home'
|
import Home from './Home'
|
||||||
import { ProfilePage } from './profile'
|
import { ProfilePage } from './profile'
|
||||||
import { ApolloPage } from './apollo'
|
import { SignInPage } from './sign-in'
|
||||||
import { SignUpPage } from './sign-up'
|
import { SignUpPage } from './sign-up'
|
||||||
import { AboutPage } from './About'
|
|
||||||
|
import './App.css'
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const isAuthenticated = useAuthenticated()
|
const isAuthenticated = useAuthenticated()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import React from 'react'
|
||||||
import { Panel } from 'rsuite'
|
import { Panel } from 'rsuite'
|
||||||
|
|
||||||
const HomePage: React.FC = () => {
|
const HomePage: React.FC = () => {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import { gql } from '@apollo/client'
|
import React from 'react'
|
||||||
import { Panel, Table } from 'rsuite'
|
import { Panel, Table } from 'rsuite'
|
||||||
|
|
||||||
|
import { gql } from '@apollo/client'
|
||||||
import { useAuthQuery } from '@nhost/react-apollo'
|
import { useAuthQuery } from '@nhost/react-apollo'
|
||||||
|
|
||||||
const GET_BOOKS = gql`
|
const GET_BOOKS = gql`
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
import React from 'react'
|
||||||
import { Navigate, useLocation } from 'react-router-dom'
|
import { Navigate, useLocation } from 'react-router-dom'
|
||||||
|
|
||||||
import { useAuthenticationStatus } from '@nhost/react'
|
import { useAuthenticationStatus } from '@nhost/react'
|
||||||
|
|
||||||
export const AuthGate: React.FC = ({ children }) => {
|
export const AuthGate: React.FC = ({ children }) => {
|
||||||
|
|||||||
@@ -1,18 +1,15 @@
|
|||||||
import { Button, Input, Message } from 'rsuite'
|
import React, { useEffect, useState } from 'react'
|
||||||
import { useNavigate } from 'react-router-dom'
|
import { useNavigate } from 'react-router-dom'
|
||||||
|
import { Button, Input, Message } from 'rsuite'
|
||||||
|
|
||||||
import { useSignInEmailPasswordless } from '@nhost/react'
|
import { useSignInEmailPasswordless } from '@nhost/react'
|
||||||
import React, { useState, useEffect } from 'react'
|
|
||||||
|
|
||||||
export const EmailPasswordlessForm: React.FC = () => {
|
export const EmailPasswordlessForm: React.FC = () => {
|
||||||
const [email, setEmail] = useState('')
|
const [email, setEmail] = useState('')
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
const { signInEmailPasswordless, isError, isSuccess, error } = useSignInEmailPasswordless(
|
const { signInEmailPasswordless, isError, isSuccess, error } = useSignInEmailPasswordless({
|
||||||
// TODO correct this once the new packages are released
|
redirectTo: '/profile'
|
||||||
undefined,
|
})
|
||||||
{
|
|
||||||
redirectTo: '/profile'
|
|
||||||
}
|
|
||||||
)
|
|
||||||
const [showError, setShowError] = useState(true)
|
const [showError, setShowError] = useState(true)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setShowError(false)
|
setShowError(false)
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
|
/* eslint-disable react/react-in-jsx-scope */
|
||||||
|
import { FaFacebook, FaGithub, FaGoogle } from 'react-icons/fa'
|
||||||
import { IconButton } from 'rsuite'
|
import { IconButton } from 'rsuite'
|
||||||
import { FaGithub, FaGoogle, FaFacebook } from 'react-icons/fa'
|
|
||||||
import { Icon } from '@rsuite/icons'
|
|
||||||
import { useProviderLink } from '@nhost/react'
|
import { useProviderLink } from '@nhost/react'
|
||||||
|
import { Icon } from '@rsuite/icons'
|
||||||
|
|
||||||
export const OAuthLinks: React.FC = () => {
|
export const OAuthLinks: React.FC = () => {
|
||||||
// TODO show how to use options
|
// TODO show how to use options
|
||||||
|
|||||||
14
examples/react-apollo/src/env.d.ts
vendored
14
examples/react-apollo/src/env.d.ts
vendored
@@ -1,10 +1,10 @@
|
|||||||
/// <reference types="vite/client" />
|
/// <reference types="vite/client" />
|
||||||
|
|
||||||
interface ImportMetaEnv {
|
interface ImportMetaEnv {
|
||||||
readonly VITE_NHOST_URL: string
|
readonly VITE_NHOST_URL: string
|
||||||
// more env variables...
|
// more env variables...
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ImportMeta {
|
interface ImportMeta {
|
||||||
readonly env: ImportMetaEnv
|
readonly env: ImportMetaEnv
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import ReactDOM from 'react-dom'
|
import ReactDOM from 'react-dom'
|
||||||
import App from './App'
|
import { BrowserRouter } from 'react-router-dom'
|
||||||
|
|
||||||
import { NhostClient, NhostReactProvider } from '@nhost/react'
|
import { NhostClient, NhostReactProvider } from '@nhost/react'
|
||||||
|
import { NhostApolloProvider } from '@nhost/react-apollo'
|
||||||
|
|
||||||
import 'rsuite/styles/index.less' // or 'rsuite/dist/rsuite.min.css'
|
import 'rsuite/styles/index.less' // or 'rsuite/dist/rsuite.min.css'
|
||||||
|
|
||||||
import { BrowserRouter } from 'react-router-dom'
|
import App from './App'
|
||||||
import { NhostApolloProvider } from '@nhost/react-apollo'
|
|
||||||
|
|
||||||
const nhost = new NhostClient({
|
const nhost = new NhostClient({
|
||||||
backendUrl: import.meta.env.VITE_NHOST_URL || 'http://localhost:1337'
|
backendUrl: import.meta.env.VITE_NHOST_URL || 'http://localhost:1337'
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
import { useChangeEmail, useEmail } from '@nhost/react'
|
/* eslint-disable react/react-in-jsx-scope */
|
||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { Button, FlexboxGrid, Input, Message, Panel, toaster, Notification } from 'rsuite'
|
import { Button, FlexboxGrid, Input, Message, Notification, Panel, toaster } from 'rsuite'
|
||||||
|
|
||||||
|
import { useChangeEmail, useEmail } from '@nhost/react'
|
||||||
|
|
||||||
export const ChangeEmail: React.FC = () => {
|
export const ChangeEmail: React.FC = () => {
|
||||||
const [newEmail, setNewEmail] = useState('')
|
const [newEmail, setNewEmail] = useState('')
|
||||||
const email = useEmail()
|
const email = useEmail()
|
||||||
const { changeEmail, error, needsEmailVerification } = useChangeEmail(
|
const { changeEmail, error, needsEmailVerification } = useChangeEmail({
|
||||||
// TODO correct this once the new packages are released
|
redirectTo: '/profile'
|
||||||
undefined,
|
})
|
||||||
{
|
|
||||||
redirectTo: '/profile'
|
|
||||||
}
|
|
||||||
)
|
|
||||||
const [errorMessage, setErrorMessage] = useState('')
|
const [errorMessage, setErrorMessage] = useState('')
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
import { useChangePassword } from '@nhost/react'
|
import React from 'react'
|
||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { Button, FlexboxGrid, Input, Message, Panel, toaster, Notification } from 'rsuite'
|
import { Button, FlexboxGrid, Input, Message, Notification, Panel, toaster } from 'rsuite'
|
||||||
|
|
||||||
|
import { useChangePassword } from '@nhost/react'
|
||||||
|
|
||||||
export const ChangePassword: React.FC = () => {
|
export const ChangePassword: React.FC = () => {
|
||||||
const [password, setPassword] = useState('')
|
const [password, setPassword] = useState('')
|
||||||
const { changePassword, isSuccess, error } = useChangePassword()
|
const { changePassword, isSuccess, error } = useChangePassword()
|
||||||
const [errorMessage, setErrorMessage] = useState('')
|
const [errorMessage, setErrorMessage] = useState('')
|
||||||
|
|
||||||
|
// * See https://github.com/rsuite/rsuite/issues/2336
|
||||||
|
useEffect(() => {
|
||||||
|
toaster.push(<div />)
|
||||||
|
}, [])
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isSuccess) {
|
if (isSuccess) {
|
||||||
setPassword('')
|
setPassword('')
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import decode from 'jwt-decode'
|
import decode from 'jwt-decode'
|
||||||
|
import React from 'react'
|
||||||
import ReactJson from 'react-json-view'
|
import ReactJson from 'react-json-view'
|
||||||
import { Button, Col, Panel, Row } from 'rsuite'
|
import { Button, Col, Panel, Row } from 'rsuite'
|
||||||
|
|
||||||
import { useAccessToken, useNhostClient, useUserData } from '@nhost/react'
|
import { useAccessToken, useNhostClient, useUserData } from '@nhost/react'
|
||||||
|
|
||||||
import { ChangeEmail } from './change-email'
|
import { ChangeEmail } from './change-email'
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import { useConfigMfa } from '@nhost/react'
|
import React from 'react'
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
import { Button, Input, Panel } from 'rsuite'
|
import { Button, Input, Panel } from 'rsuite'
|
||||||
|
|
||||||
|
import { useConfigMfa } from '@nhost/react'
|
||||||
|
|
||||||
export const Mfa: React.FC = () => {
|
export const Mfa: React.FC = () => {
|
||||||
const [code, setCode] = useState('')
|
const [code, setCode] = useState('')
|
||||||
const { generateQrCode, activateMfa, isActivated, isGenerated, qrCodeDataUrl } = useConfigMfa()
|
const { generateQrCode, activateMfa, isActivated, isGenerated, qrCodeDataUrl } = useConfigMfa()
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { Button, Divider, Input, Message } from 'rsuite'
|
|
||||||
import { useSignInEmailPassword } from '@nhost/react'
|
|
||||||
import React, { useEffect, useState } from 'react'
|
import React, { useEffect, useState } from 'react'
|
||||||
import { NavLink } from 'react-router-dom'
|
import { NavLink } from 'react-router-dom'
|
||||||
|
import { Button, Divider, Input, Message } from 'rsuite'
|
||||||
|
|
||||||
|
import { useSignInEmailPassword } from '@nhost/react'
|
||||||
|
|
||||||
const Footer: React.FC = () => (
|
const Footer: React.FC = () => (
|
||||||
<div>
|
<div>
|
||||||
@@ -80,7 +81,14 @@ export const EmailPassword: React.FC = () => {
|
|||||||
</Message>
|
</Message>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Button appearance="primary" onClick={() => signInEmailPassword(email, password)} block>
|
<Button
|
||||||
|
appearance="primary"
|
||||||
|
onClick={async () => {
|
||||||
|
const result = await signInEmailPassword(email, password)
|
||||||
|
console.log(result)
|
||||||
|
}}
|
||||||
|
block
|
||||||
|
>
|
||||||
Sign in
|
Sign in
|
||||||
</Button>
|
</Button>
|
||||||
<Button as={NavLink} block to="/sign-in/forgot-password">
|
<Button as={NavLink} block to="/sign-in/forgot-password">
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Button } from 'rsuite'
|
|
||||||
import { NavLink } from 'react-router-dom'
|
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
import { NavLink } from 'react-router-dom'
|
||||||
|
import { Button } from 'rsuite'
|
||||||
|
|
||||||
import { EmailPasswordlessForm } from '../components/email-passwordless-form'
|
import { EmailPasswordlessForm } from '../components/email-passwordless-form'
|
||||||
export const EmailPasswordless: React.FC = () => {
|
export const EmailPasswordless: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,15 +1,12 @@
|
|||||||
import { Button, Divider, Input, Message, Notification, toaster } from 'rsuite'
|
|
||||||
import { useResetPassword } from '@nhost/react'
|
|
||||||
import React, { useEffect, useState } from 'react'
|
import React, { useEffect, useState } from 'react'
|
||||||
import { NavLink } from 'react-router-dom'
|
import { NavLink } from 'react-router-dom'
|
||||||
|
import { Button, Divider, Input, Message, Notification, toaster } from 'rsuite'
|
||||||
|
|
||||||
|
import { useResetPassword } from '@nhost/react'
|
||||||
|
|
||||||
export const ForgotPassword: React.FC = () => {
|
export const ForgotPassword: React.FC = () => {
|
||||||
const [email, setEmail] = useState('')
|
const [email, setEmail] = useState('')
|
||||||
const { resetPassword, isSent, error } = useResetPassword(
|
const { resetPassword, isSent, error } = useResetPassword({ redirectTo: '/profile' })
|
||||||
// TODO correct this once the new packages are released
|
|
||||||
undefined,
|
|
||||||
{ redirectTo: '/profile' }
|
|
||||||
)
|
|
||||||
|
|
||||||
const [errorMessage, setErrorMessage] = useState('')
|
const [errorMessage, setErrorMessage] = useState('')
|
||||||
// * Set error message from the authentication hook errors
|
// * Set error message from the authentication hook errors
|
||||||
@@ -25,7 +22,7 @@ export const ForgotPassword: React.FC = () => {
|
|||||||
if (isSent) {
|
if (isSent) {
|
||||||
toaster.push(
|
toaster.push(
|
||||||
<Notification type="info" header="Info" closable>
|
<Notification type="info" header="Info" closable>
|
||||||
An email has been sent with a passwordless authentication link, so you'll be able to
|
An email has been sent with a passwordless authentication link, so you will be able to
|
||||||
authenticate and change your password.
|
authenticate and change your password.
|
||||||
</Notification>
|
</Notification>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
/* eslint-disable jsx-a11y/anchor-is-valid */
|
import React from 'react'
|
||||||
|
import { FaLock } from 'react-icons/fa'
|
||||||
import { Link, NavLink, Route, Routes } from 'react-router-dom'
|
import { Link, NavLink, Route, Routes } from 'react-router-dom'
|
||||||
import { Button, Divider, FlexboxGrid, IconButton, Panel } from 'rsuite'
|
import { Button, Divider, FlexboxGrid, IconButton, Panel } from 'rsuite'
|
||||||
|
|
||||||
import { Icon } from '@rsuite/icons'
|
import { Icon } from '@rsuite/icons'
|
||||||
import { FaLock } from 'react-icons/fa'
|
|
||||||
|
|
||||||
import { OAuthLinks } from '../components'
|
import { OAuthLinks } from '../components'
|
||||||
import { VerificationEmailSent } from '../verification-email-sent'
|
import { VerificationEmailSent } from '../verification-email-sent'
|
||||||
|
|
||||||
import { EmailPassword } from './email-password'
|
import { EmailPassword } from './email-password'
|
||||||
import { ForgotPassword } from './forgot-password'
|
|
||||||
import { EmailPasswordless } from './email-passwordless'
|
import { EmailPasswordless } from './email-passwordless'
|
||||||
|
import { ForgotPassword } from './forgot-password'
|
||||||
// import { useSignInAnonymous } from '@nhost/react'
|
// import { useSignInAnonymous } from '@nhost/react'
|
||||||
|
|
||||||
const Index: React.FC = () => (
|
const Index: React.FC = () => (
|
||||||
@@ -48,7 +50,7 @@ export const SignInPage: React.FC = () => {
|
|||||||
</FlexboxGrid.Item>
|
</FlexboxGrid.Item>
|
||||||
</FlexboxGrid>
|
</FlexboxGrid>
|
||||||
<Divider />
|
<Divider />
|
||||||
Don't have an account? <Link to="/sign-up">Sign up</Link>
|
Don‘t have an account? <Link to="/sign-up">Sign up</Link>
|
||||||
{/* or{' '}
|
{/* or{' '}
|
||||||
<a href="#" onClick={signIn}>
|
<a href="#" onClick={signIn}>
|
||||||
enter the app anonymously
|
enter the app anonymously
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import { Button, Input, Message } from 'rsuite'
|
/* eslint-disable react/react-in-jsx-scope */
|
||||||
import { useSignUpEmailPassword } from '@nhost/react'
|
|
||||||
import { useEffect, useMemo, useState } from 'react'
|
import { useEffect, useMemo, useState } from 'react'
|
||||||
import { NavLink, useNavigate } from 'react-router-dom'
|
import { NavLink, useNavigate } from 'react-router-dom'
|
||||||
|
import { Button, Input, Message } from 'rsuite'
|
||||||
|
|
||||||
|
import { useSignUpEmailPassword } from '@nhost/react'
|
||||||
|
|
||||||
export const EmailPassword: React.FC = () => {
|
export const EmailPassword: React.FC = () => {
|
||||||
const [email, setEmail] = useState('')
|
const [email, setEmail] = useState('')
|
||||||
@@ -14,12 +16,8 @@ export const EmailPassword: React.FC = () => {
|
|||||||
)
|
)
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
const [confirmPassword, setConfirmPassword] = useState('')
|
const [confirmPassword, setConfirmPassword] = useState('')
|
||||||
const { signUpEmailPassword, error, needsEmailVerification, isSuccess } = useSignUpEmailPassword(
|
const { signUpEmailPassword, error, needsEmailVerification, isSuccess } =
|
||||||
// TODO change once the new packages have been release
|
useSignUpEmailPassword(options)
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
options
|
|
||||||
)
|
|
||||||
const [errorMessage, setErrorMessage] = useState('')
|
const [errorMessage, setErrorMessage] = useState('')
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (needsEmailVerification) navigate('/sign-up/verification-email-sent')
|
if (needsEmailVerification) navigate('/sign-up/verification-email-sent')
|
||||||
@@ -90,9 +88,10 @@ export const EmailPassword: React.FC = () => {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
appearance="primary"
|
appearance="primary"
|
||||||
onClick={() => {
|
onClick={async () => {
|
||||||
setErrorMessage('')
|
setErrorMessage('')
|
||||||
signUpEmailPassword(email, password)
|
const result = await signUpEmailPassword(email, password)
|
||||||
|
console.log(result)
|
||||||
}}
|
}}
|
||||||
block
|
block
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Button } from 'rsuite'
|
|
||||||
import { NavLink } from 'react-router-dom'
|
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
import { NavLink } from 'react-router-dom'
|
||||||
|
import { Button } from 'rsuite'
|
||||||
|
|
||||||
import { EmailPasswordlessForm } from '../components/email-passwordless-form'
|
import { EmailPasswordlessForm } from '../components/email-passwordless-form'
|
||||||
export const EmailPasswordless: React.FC = () => {
|
export const EmailPasswordless: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
import { Icon } from '@rsuite/icons'
|
import React from 'react'
|
||||||
import { FaLock } from 'react-icons/fa'
|
import { FaLock } from 'react-icons/fa'
|
||||||
import { Button, Divider, FlexboxGrid, IconButton, Panel } from 'rsuite'
|
|
||||||
import { Link, NavLink, Route, Routes } from 'react-router-dom'
|
import { Link, NavLink, Route, Routes } from 'react-router-dom'
|
||||||
|
import { Button, Divider, FlexboxGrid, IconButton, Panel } from 'rsuite'
|
||||||
|
|
||||||
|
import { Icon } from '@rsuite/icons'
|
||||||
|
|
||||||
import { OAuthLinks } from '../components'
|
import { OAuthLinks } from '../components'
|
||||||
import { VerificationEmailSent } from '../verification-email-sent'
|
import { VerificationEmailSent } from '../verification-email-sent'
|
||||||
|
|
||||||
import { EmailPassword } from './email-password'
|
import { EmailPassword } from './email-password'
|
||||||
import { EmailPasswordless } from './email-passwordless'
|
import { EmailPasswordless } from './email-passwordless'
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { useAuthenticated } from '@nhost/react'
|
|
||||||
import React, { useEffect } from 'react'
|
import React, { useEffect } from 'react'
|
||||||
import { useNavigate } from 'react-router-dom'
|
import { useNavigate } from 'react-router-dom'
|
||||||
|
|
||||||
|
import { useAuthenticated } from '@nhost/react'
|
||||||
|
|
||||||
export const VerificationEmailSent: React.FC = () => {
|
export const VerificationEmailSent: React.FC = () => {
|
||||||
const isAuthenticated = useAuthenticated()
|
const isAuthenticated = useAuthenticated()
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2"
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2"
|
||||||
integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==
|
integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==
|
||||||
|
|
||||||
"@babel/core@^7.16.12":
|
"@babel/core@^7.17.8":
|
||||||
version "7.17.8"
|
version "7.17.8"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
|
||||||
integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
|
integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.16.7"
|
"@babel/helper-plugin-utils" "^7.16.7"
|
||||||
|
|
||||||
"@babel/plugin-transform-react-jsx@^7.16.7":
|
"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.3":
|
||||||
version "7.17.3"
|
version "7.17.3"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
|
||||||
integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==
|
integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==
|
||||||
@@ -296,31 +296,31 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0"
|
resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0"
|
||||||
integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==
|
integrity sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==
|
||||||
|
|
||||||
"@nhost/apollo@^0.3.6":
|
"@nhost/apollo@^0.3.7":
|
||||||
version "0.3.6"
|
version "0.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/apollo/-/apollo-0.3.6.tgz#c3902c8ea9250bbe7428098ddfe145d9a2d82f2f"
|
resolved "https://registry.yarnpkg.com/@nhost/apollo/-/apollo-0.3.7.tgz#761d3d60519df60caaa7220909ab11bd2c629e3a"
|
||||||
integrity sha512-+UtPMKPkqQ9MuJ24TQB0p59uytoyBXOBYLJ0SEHvs6cAfhkOkLljk+WhWSBhUdRkD+k4iRmHrVvVCyVzLGFRPg==
|
integrity sha512-NH1WCC5D6K/Ft8/EXYIgeAhOBq5Gt1OtX9U9RzV2IqmVRGigDw+YlXr8P5GRPAzBeZUVWrM1wvBt+oBk8zw/7g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/core" "^0.3.7"
|
"@nhost/core" "^0.3.8"
|
||||||
graphql "16"
|
graphql "16"
|
||||||
subscriptions-transport-ws "^0.11.0"
|
subscriptions-transport-ws "^0.11.0"
|
||||||
|
|
||||||
"@nhost/core@^0.3.7":
|
"@nhost/core@^0.3.8":
|
||||||
version "0.3.7"
|
version "0.3.8"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/core/-/core-0.3.7.tgz#115cd770dc8ea1d277a71802958c89c1aa83578b"
|
resolved "https://registry.yarnpkg.com/@nhost/core/-/core-0.3.8.tgz#0269ab5daa36b1bdd2b2864c174809a86d4d2a7a"
|
||||||
integrity sha512-sQZp+aet/gCbu4R7cLgRbOrZarfBc1ZTuUwsfpVChLCYtVlPtY5ZWk4pfvU9tbfGEpmbkC4Bk9KqD9AFOzT27A==
|
integrity sha512-6mOv23H16n0YN0voXdXSGS18rUELe1YI2+HXMRlaeksCib4BvSf28lsideEOjFnyfHA3Y4wAX1SMxnyaEj1qaQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
axios "^0.25.0"
|
axios "^0.25.0"
|
||||||
broadcast-channel "^4.10.0"
|
broadcast-channel "^4.10.0"
|
||||||
js-cookie "^3.0.1"
|
js-cookie "^3.0.1"
|
||||||
xstate "^4.30.5"
|
xstate "^4.30.5"
|
||||||
|
|
||||||
"@nhost/hasura-auth-js@^1.0.7":
|
"@nhost/hasura-auth-js@^1.0.9":
|
||||||
version "1.0.7"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/hasura-auth-js/-/hasura-auth-js-1.0.7.tgz#2c6a81d64155bd8b24bbf314154ed2e40396b151"
|
resolved "https://registry.yarnpkg.com/@nhost/hasura-auth-js/-/hasura-auth-js-1.0.9.tgz#7e5cfe7a59b18778352dd6d2bef368c765ce9886"
|
||||||
integrity sha512-fj2aNY3gTt89SLMe3H4MYA50EhZz0OcBUdnES8sv1raOJyxjH94+8TfBVT0xNUqvubOM0J+0ewHAnDCkbodbXA==
|
integrity sha512-d0UDfakzUO9N0/4RRy9NptoOLgpcRmr2F5XxVVzqLYX67+XzZoqT+LMhOF8spKP4+JqFlKFgqbNulmuRRc5FfA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/core" "^0.3.7"
|
"@nhost/core" "^0.3.8"
|
||||||
|
|
||||||
"@nhost/hasura-storage-js@^0.2.0":
|
"@nhost/hasura-storage-js@^0.2.0":
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
@@ -329,34 +329,34 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
axios "^0.21.1"
|
axios "^0.21.1"
|
||||||
|
|
||||||
"@nhost/nhost-js@^1.0.7":
|
"@nhost/nhost-js@^1.0.9":
|
||||||
version "1.0.7"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/nhost-js/-/nhost-js-1.0.7.tgz#90ccac91f5d61d32caa8544029b71d47aa7c8b2f"
|
resolved "https://registry.yarnpkg.com/@nhost/nhost-js/-/nhost-js-1.0.9.tgz#a1b0bc0c35e15ade2867da4d211b1f81f3bc5e28"
|
||||||
integrity sha512-XBy370bVfP2IYAozeSu62/caQ+bvwvFjj+76LjatqYc7PhHwJV/Kd5SIyvWgqLFO1xQ3kAX0if137IGC+dgBOw==
|
integrity sha512-/SZLk3Be560scVAbUswcRSE4RMwf6M7xanbNLqGUuI/sr1Ir253WPhaD2YWXZChP1v2LBzONhdJNI2g7u1NzoA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/hasura-auth-js" "^1.0.7"
|
"@nhost/hasura-auth-js" "^1.0.9"
|
||||||
"@nhost/hasura-storage-js" "^0.2.0"
|
"@nhost/hasura-storage-js" "^0.2.0"
|
||||||
axios "^0.23.0"
|
axios "^0.23.0"
|
||||||
jwt-decode "^3.1.2"
|
jwt-decode "^3.1.2"
|
||||||
query-string "^7.0.1"
|
query-string "^7.0.1"
|
||||||
|
|
||||||
"@nhost/react-apollo@^4.0.8":
|
"@nhost/react-apollo@^4.0.10":
|
||||||
version "4.0.8"
|
version "4.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/react-apollo/-/react-apollo-4.0.8.tgz#69c015086837c1aaa828c566f33e22b6c852529a"
|
resolved "https://registry.yarnpkg.com/@nhost/react-apollo/-/react-apollo-4.0.10.tgz#d28819019f35aff7fb69a3b485489ab0492643e1"
|
||||||
integrity sha512-G9F5AFLhXJV67MKvraRwSrJpkebqd/oEGgznK5knGL+B9FYuuXtBVbr5m95ESyYkYL+y3iPU3BY5GufL/9pCGw==
|
integrity sha512-MTIBk9aQVCIfVR17eEKM6ssELadpDhIAh2ERjaZY8+i9KMgVyjEt0s4842nl1Bwq7OFIXf5GRykr3RtTjuT/Ug==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/apollo" "^0.3.6"
|
"@nhost/apollo" "^0.3.7"
|
||||||
|
|
||||||
"@nhost/react@^0.4.6":
|
"@nhost/react@^0.5.0":
|
||||||
version "0.4.6"
|
version "0.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@nhost/react/-/react-0.4.6.tgz#e7f01d9cd1d3d24999a3a68a7b9c72cb3ef8fe04"
|
resolved "https://registry.yarnpkg.com/@nhost/react/-/react-0.5.0.tgz#5276ae7e13691f32ceaa0e6ca2460ef2605820f6"
|
||||||
integrity sha512-bqQI2T91tDI0PkVpnfcCDsQUWgXqwcrU6r29S7u4dziEt5RVG0NJjjg2SK35VbqZvJ9vU5z0KHM+4Cd5PKql2g==
|
integrity sha512-d89I3Q1Y6+9QJ6jP9yU9xrEJv8dCvTwll7tctd7emqZyPWGgInLpmZ9OA+/xrannowck5MsgaBdz0zxQ9bjJBA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@nhost/nhost-js" "^1.0.7"
|
"@nhost/nhost-js" "^1.0.9"
|
||||||
"@xstate/react" "^2.0.1"
|
"@xstate/react" "^2.0.1"
|
||||||
immer "^9.0.12"
|
immer "^9.0.12"
|
||||||
|
|
||||||
"@rollup/pluginutils@^4.1.2":
|
"@rollup/pluginutils@^4.2.0":
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.0.tgz#a14bbd058fdbba0a5647143b16ed0d86fb60bd08"
|
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.0.tgz#a14bbd058fdbba0a5647143b16ed0d86fb60bd08"
|
||||||
integrity sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==
|
integrity sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==
|
||||||
@@ -394,7 +394,7 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
|
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
|
||||||
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
|
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
|
||||||
|
|
||||||
"@types/react-dom@^17.0.11":
|
"@types/react-dom@^17.0.14":
|
||||||
version "17.0.14"
|
version "17.0.14"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f"
|
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f"
|
||||||
integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==
|
integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==
|
||||||
@@ -409,7 +409,7 @@
|
|||||||
"@types/prop-types" "*"
|
"@types/prop-types" "*"
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react@*", "@types/react@^17.0.39":
|
"@types/react@*", "@types/react@^17.0.43":
|
||||||
version "17.0.43"
|
version "17.0.43"
|
||||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55"
|
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55"
|
||||||
integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==
|
integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==
|
||||||
@@ -423,17 +423,17 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
|
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
|
||||||
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
|
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
|
||||||
|
|
||||||
"@vitejs/plugin-react@^1.2.0":
|
"@vitejs/plugin-react@^1.3.0":
|
||||||
version "1.2.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-1.2.0.tgz#4cfb4c0475e93885e56d66ff15e12ef4c34b0af0"
|
resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-1.3.0.tgz#efd4b4383edc12780cd8d230c2daa9d266690bb9"
|
||||||
integrity sha512-Rywwt0IXXg6yQ0hv3cMT3mtdDcGIw31mGaa+MMMAT651LhoXLF2yFy4LrakiTs7UKs7RPBo9eNgaS8pgl2A6Qw==
|
integrity sha512-H+yIupjUE4a+E4oeWUv4xUJIMR0DWBIMUG/DYgvj0J9Vu1rdHAlJ5JdbI+N1KDUD7Ee2fZ1DMPZ/NBg6mXtoCw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.16.12"
|
"@babel/core" "^7.17.8"
|
||||||
"@babel/plugin-transform-react-jsx" "^7.16.7"
|
"@babel/plugin-transform-react-jsx" "^7.17.3"
|
||||||
"@babel/plugin-transform-react-jsx-development" "^7.16.7"
|
"@babel/plugin-transform-react-jsx-development" "^7.16.7"
|
||||||
"@babel/plugin-transform-react-jsx-self" "^7.16.7"
|
"@babel/plugin-transform-react-jsx-self" "^7.16.7"
|
||||||
"@babel/plugin-transform-react-jsx-source" "^7.16.7"
|
"@babel/plugin-transform-react-jsx-source" "^7.16.7"
|
||||||
"@rollup/pluginutils" "^4.1.2"
|
"@rollup/pluginutils" "^4.2.0"
|
||||||
react-refresh "^0.11.0"
|
react-refresh "^0.11.0"
|
||||||
resolve "^1.22.0"
|
resolve "^1.22.0"
|
||||||
|
|
||||||
@@ -458,13 +458,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.3.0"
|
tslib "^2.3.0"
|
||||||
|
|
||||||
"@xstate/inspect@^0.6.2":
|
|
||||||
version "0.6.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/@xstate/inspect/-/inspect-0.6.4.tgz#dd12abb30375dcb0471b81e8db3b81377cd00be6"
|
|
||||||
integrity sha512-2Gz5wu/RdpeLEpQ93qWQe/lDybJHQq8NzgWyB/EmDUBhOggCeZu4JqJCT7/RsQ7FNSEenZILFbNTftOY00Kg4A==
|
|
||||||
dependencies:
|
|
||||||
fast-safe-stringify "^2.0.7"
|
|
||||||
|
|
||||||
"@xstate/react@^2.0.1":
|
"@xstate/react@^2.0.1":
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@xstate/react/-/react-2.0.1.tgz#2b4717369d419e78a6c67f2dfcd1a3be9abce2d9"
|
resolved "https://registry.yarnpkg.com/@xstate/react/-/react-2.0.1.tgz#2b4717369d419e78a6c67f2dfcd1a3be9abce2d9"
|
||||||
@@ -682,131 +675,131 @@ errno@^0.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
prr "~1.0.1"
|
prr "~1.0.1"
|
||||||
|
|
||||||
esbuild-android-64@0.14.27:
|
esbuild-android-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz#b868bbd9955a92309c69df628d8dd1945478b45c"
|
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.32.tgz#cf23a9c6052bb48901f5541c7e5a4168495fca36"
|
||||||
integrity sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==
|
integrity sha512-q1qjB2UcoWehR9Yp9dO2RdJUeLLrXAYsbOU4tkYa+GmJzxTwuvOrMdvaemsXYqb7F4STVTca9KpfqGicEChtUg==
|
||||||
|
|
||||||
esbuild-android-arm64@0.14.27:
|
esbuild-android-arm64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz#e7d6430555e8e9c505fd87266bbc709f25f1825c"
|
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.32.tgz#5840407c8d8b577eea847eecce8df9610c0f58fd"
|
||||||
integrity sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==
|
integrity sha512-bs1uu+RuM15f8yjFc0FhPDE/6NID4fKl7beDVsGCme6Q8ld2IzRXmp5QaHurlcH93PFyQnUgVvdahIWgtK2QZw==
|
||||||
|
|
||||||
esbuild-darwin-64@0.14.27:
|
esbuild-darwin-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz#4dc7484127564e89b4445c0a560a3cb50b3d68e1"
|
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.32.tgz#c6defc12a60f27408f1a30bb233c9d0e66ea2a55"
|
||||||
integrity sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==
|
integrity sha512-6MekflAld28wYtzanwZTxQlxMPeYw/yv1ToFG2hpo3LGxOIE2mBD5IJaMCcyy1//EYvGnGToO3p6XKdbS8E1QQ==
|
||||||
|
|
||||||
esbuild-darwin-arm64@0.14.27:
|
esbuild-darwin-arm64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz#469e59c665f84a8ed323166624c5e7b9b2d22ac1"
|
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.32.tgz#fc878496516a90fc4982ee7cf8f2d2f484dbd64a"
|
||||||
integrity sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==
|
integrity sha512-BHYIjiPDYQTD+4zwqdqRo+I2bbg3fn9mah/gZm4SCCy+7uwTTYOYobIunHT7wVCgxnFCr50PJUdaMrEoCImRbw==
|
||||||
|
|
||||||
esbuild-freebsd-64@0.14.27:
|
esbuild-freebsd-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz#895df03bf5f87094a56c9a5815bf92e591903d70"
|
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.32.tgz#c136e8e8bab8e7ea95a7fbe4b689d2c940bf48f2"
|
||||||
integrity sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==
|
integrity sha512-6BOBhtfAf9AlfjL1AvtfVOxwY82tHPfYrA0lskJpFjfiEMGTLU6e0vdOwb4+4x++gGz49azuGK0woYqdfL03uw==
|
||||||
|
|
||||||
esbuild-freebsd-arm64@0.14.27:
|
esbuild-freebsd-arm64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz#0b72a41a6b8655e9a8c5608f2ec1afdcf6958441"
|
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.32.tgz#46668a10e5a51665ed800b10a02b757bf6bc6fbf"
|
||||||
integrity sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==
|
integrity sha512-zIRR4gKQW56p/xLM8TlpxVBNiX0w3VoR9ZxfH4nrfJ7QiL0SYHRy8YPL5C7zMWRjSze2WxQRHfS9bHKdVrVXBw==
|
||||||
|
|
||||||
esbuild-linux-32@0.14.27:
|
esbuild-linux-32@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz#43b8ba3803b0bbe7f051869c6a8bf6de1e95de28"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.32.tgz#ac51a64f26f638618ff62a1a966babe065bc54cc"
|
||||||
integrity sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==
|
integrity sha512-kn0AkGtPvzA6xiv93/mavvZ7DVinu/ewh2F2S0/8mE8/PXi3D4+svZ6V3beV5DIH7vcHVuGhoooWav8HPF04tg==
|
||||||
|
|
||||||
esbuild-linux-64@0.14.27:
|
esbuild-linux-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz#dc8072097327ecfadba1735562824ce8c05dd0bd"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.32.tgz#a3dfeb772f339fb34f0ff61df753a70a01be243a"
|
||||||
integrity sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==
|
integrity sha512-Ie+PMvrPj/HCOmSc0QubKttDxP2iBtPzDu+b+V3HGDGwkGmVpDkyXx1NXp5LjkIphIay2QekMwy1dSw3KDqCew==
|
||||||
|
|
||||||
esbuild-linux-arm64@0.14.27:
|
esbuild-linux-arm64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz#c52b58cbe948426b1559910f521b0a3f396f10b8"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.32.tgz#df2fead5c0d9228eede866359f35b3e0eef4e192"
|
||||||
integrity sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==
|
integrity sha512-ykoqKaxX95nB+lk2K/+qxr0ke+BxkeVi0yKOnymCR5Ive7IZDHa4BJX53NEGSBKLfWPwKE6SXTz8qcEewSntoA==
|
||||||
|
|
||||||
esbuild-linux-arm@0.14.27:
|
esbuild-linux-arm@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz#df869dbd67d4ee3a04b3c7273b6bd2b233e78a18"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.32.tgz#64633aa6491e91d935324cf041795ebce18c071b"
|
||||||
integrity sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==
|
integrity sha512-R/Bvn/YQNDyvfN0SERh/I7hKPqN+nSSruQdVeiYEJ+jc3fUi73jXYAscpTQgIBeER/yXnEsgJGU/UQ9+sscr7A==
|
||||||
|
|
||||||
esbuild-linux-mips64le@0.14.27:
|
esbuild-linux-mips64le@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz#a2b646d9df368b01aa970a7b8968be6dd6b01d19"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.32.tgz#f0a7a083e8fdfb6e4edffb93ec27de2c5d732f01"
|
||||||
integrity sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==
|
integrity sha512-IilnlBexpHpt/5po0cle/L/S6CYnwaq23UuAqWzxp+opHLOCNnyANpC1jOoP551aRx4JuZ7z3xZZ7bYQZB147w==
|
||||||
|
|
||||||
esbuild-linux-ppc64le@0.14.27:
|
esbuild-linux-ppc64le@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz#9a21af766a0292578a3009c7408b8509cac7cefd"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.32.tgz#dc22b766dd4ddd20c28febe36e8b92b9c11faa63"
|
||||||
integrity sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==
|
integrity sha512-TR6l5nWZbfq7jSY+1vsiQjT4m67NWplNhbX6GBieZq6DBt0nTx1XgTZAdKROF7jTuaK7YrCYlPXtfO3w86Mysw==
|
||||||
|
|
||||||
esbuild-linux-riscv64@0.14.27:
|
esbuild-linux-riscv64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz#344a27f91568056a5903ad5841b447e00e78d740"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.32.tgz#0ae09eee847de5993cbe1529591d5ca17c7303c5"
|
||||||
integrity sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==
|
integrity sha512-aSOcUzTeIAslfri8e+bMpyzQuxhcIiNhWyuCGGXum2PtxwYiUqR8/UCMYfwYtYkhr1yABOFOfs83mm9KBy5qCQ==
|
||||||
|
|
||||||
esbuild-linux-s390x@0.14.27:
|
esbuild-linux-s390x@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz#73a7309bd648a07ef58f069658f989a5096130db"
|
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.32.tgz#1297f9f130cd93495e7ce25c63a79dab223b89de"
|
||||||
integrity sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==
|
integrity sha512-dNlip+EvexxKjRZitFCWCd7DVk64c7R5ySr8aFEMHCb/RriNiyDxYJGzYWm4EMJsMRMupMUHlMY64BAa3Op9FA==
|
||||||
|
|
||||||
esbuild-netbsd-64@0.14.27:
|
esbuild-netbsd-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz#482a587cdbd18a6c264a05136596927deb46c30a"
|
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.32.tgz#902bf5ba7c54db9c7274f019c4d006b1b963fb7d"
|
||||||
integrity sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==
|
integrity sha512-Pa3QByYqxzlBFQQQhjYBPg3WUfSjwibqzh1hC6mPDRUHnCeUcrLoBuIiG4xqOYEpQM9/kDowIBsrGIQEVWWdQA==
|
||||||
|
|
||||||
esbuild-openbsd-64@0.14.27:
|
esbuild-openbsd-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz#e99f8cdc63f1628747b63edd124d53cf7796468d"
|
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.32.tgz#0fbfbdf555deeb05a8915daf0b71168d09773437"
|
||||||
integrity sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==
|
integrity sha512-uWKKqpCjkMY8TCIobFvaSETonQY3OrmgnoTCC3tF+lvMoneYjppB6akx7L5Xv0kP+1tnSbrIof1ca8PfqGUyjw==
|
||||||
|
|
||||||
esbuild-sunos-64@0.14.27:
|
esbuild-sunos-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz#8611d825bcb8239c78d57452e83253a71942f45c"
|
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.32.tgz#d493ca5222703dd0b8c489324d1517cd622618e8"
|
||||||
integrity sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==
|
integrity sha512-Ar+u3mBk0oVV4Fwv/qlinJZNIPPtTBSG+1W42o8lOaVxJ+rJgecDoeUN+5uyd9at0BK1SVrQ1qZ4wjHKB0qFpQ==
|
||||||
|
|
||||||
esbuild-windows-32@0.14.27:
|
esbuild-windows-32@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz#c06374206d4d92dd31d4fda299b09f51a35e82f6"
|
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.32.tgz#c6b0f4cf952c6f562a32fe763acab9fb8cb3912a"
|
||||||
integrity sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==
|
integrity sha512-rLMsbflMY6Hjh3rmQnCDVZahJQ7n+XfT6o1+no5pHRpDlMh38MHthgGh35q+EcOMgrGP3ppnw70rhJq80SaYTQ==
|
||||||
|
|
||||||
esbuild-windows-64@0.14.27:
|
esbuild-windows-64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz#756631c1d301dfc0d1a887deed2459ce4079582f"
|
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.32.tgz#2ad9322a963fd26bb4818ad1c0ee7acde63ebb81"
|
||||||
integrity sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==
|
integrity sha512-OHnMMxYufVgLXIMnwLynLMKguHMrsVnWcehieSP9i6ZX31KEsOFYWrorcnTWOn4rbZVLSL10ofxLuVIgRW3SWw==
|
||||||
|
|
||||||
esbuild-windows-arm64@0.14.27:
|
esbuild-windows-arm64@0.14.32:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz#ad7e187193dcd18768b16065a950f4441d7173f4"
|
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.32.tgz#bb589106c0fd5d582cce62bd7995a6e5db52e7b4"
|
||||||
integrity sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==
|
integrity sha512-ddavy6IPUBySMfqDfG243TgtuqwQBNJQJPVaA4DaavmMfpBsUxFrSV+HzBWXTKU3I9EcuoEvIATLuQ7NJKxjwg==
|
||||||
|
|
||||||
esbuild@^0.14.14:
|
esbuild@^0.14.27:
|
||||||
version "0.14.27"
|
version "0.14.32"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.27.tgz#41fe0f1b6b68b9f77cac025009bc54bb96e616f1"
|
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.32.tgz#f55245ccd4b820707147ac4cc69a2c3e1a76af03"
|
||||||
integrity sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==
|
integrity sha512-RuzVUP/bkStmnVHK6Gh3gjaMjfXNLqBqvYVDiS9JKl5KdRdRLUeW5Wo8NrbL7cL6CW7Cyak7SvACqyPOBuA8vA==
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
esbuild-android-64 "0.14.27"
|
esbuild-android-64 "0.14.32"
|
||||||
esbuild-android-arm64 "0.14.27"
|
esbuild-android-arm64 "0.14.32"
|
||||||
esbuild-darwin-64 "0.14.27"
|
esbuild-darwin-64 "0.14.32"
|
||||||
esbuild-darwin-arm64 "0.14.27"
|
esbuild-darwin-arm64 "0.14.32"
|
||||||
esbuild-freebsd-64 "0.14.27"
|
esbuild-freebsd-64 "0.14.32"
|
||||||
esbuild-freebsd-arm64 "0.14.27"
|
esbuild-freebsd-arm64 "0.14.32"
|
||||||
esbuild-linux-32 "0.14.27"
|
esbuild-linux-32 "0.14.32"
|
||||||
esbuild-linux-64 "0.14.27"
|
esbuild-linux-64 "0.14.32"
|
||||||
esbuild-linux-arm "0.14.27"
|
esbuild-linux-arm "0.14.32"
|
||||||
esbuild-linux-arm64 "0.14.27"
|
esbuild-linux-arm64 "0.14.32"
|
||||||
esbuild-linux-mips64le "0.14.27"
|
esbuild-linux-mips64le "0.14.32"
|
||||||
esbuild-linux-ppc64le "0.14.27"
|
esbuild-linux-ppc64le "0.14.32"
|
||||||
esbuild-linux-riscv64 "0.14.27"
|
esbuild-linux-riscv64 "0.14.32"
|
||||||
esbuild-linux-s390x "0.14.27"
|
esbuild-linux-s390x "0.14.32"
|
||||||
esbuild-netbsd-64 "0.14.27"
|
esbuild-netbsd-64 "0.14.32"
|
||||||
esbuild-openbsd-64 "0.14.27"
|
esbuild-openbsd-64 "0.14.32"
|
||||||
esbuild-sunos-64 "0.14.27"
|
esbuild-sunos-64 "0.14.32"
|
||||||
esbuild-windows-32 "0.14.27"
|
esbuild-windows-32 "0.14.32"
|
||||||
esbuild-windows-64 "0.14.27"
|
esbuild-windows-64 "0.14.32"
|
||||||
esbuild-windows-arm64 "0.14.27"
|
esbuild-windows-arm64 "0.14.32"
|
||||||
|
|
||||||
escalade@^3.1.1:
|
escalade@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
@@ -833,11 +826,6 @@ eventemitter3@^4.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
|
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
|
||||||
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
|
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
|
||||||
|
|
||||||
fast-safe-stringify@^2.0.7:
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
|
|
||||||
integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
|
|
||||||
|
|
||||||
fbemitter@^3.0.0:
|
fbemitter@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3"
|
resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3"
|
||||||
@@ -930,11 +918,6 @@ graphql-tag@^2.12.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.1.0"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
graphql@15.7.2:
|
|
||||||
version "15.7.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.7.2.tgz#85ab0eeb83722977151b3feb4d631b5f2ab287ef"
|
|
||||||
integrity sha512-AnnKk7hFQFmU/2I9YSQf3xw44ctnSFCfp3zE0N6W174gqe9fWG/2rKaKxROK7CcI3XtERpjEKFqts8o319Kf7A==
|
|
||||||
|
|
||||||
graphql@16:
|
graphql@16:
|
||||||
version "16.3.0"
|
version "16.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.3.0.tgz#a91e24d10babf9e60c706919bb182b53ccdffc05"
|
resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.3.0.tgz#a91e24d10babf9e60c706919bb182b53ccdffc05"
|
||||||
@@ -1225,7 +1208,7 @@ pify@^4.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||||
|
|
||||||
postcss@^8.4.6:
|
postcss@^8.4.12:
|
||||||
version "8.4.12"
|
version "8.4.12"
|
||||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
|
||||||
integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
|
integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
|
||||||
@@ -1324,18 +1307,18 @@ react-refresh@^0.11.0:
|
|||||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
|
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
|
||||||
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
|
integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
|
||||||
|
|
||||||
react-router-dom@^6.2.1:
|
react-router-dom@^6.3.0:
|
||||||
version "6.2.2"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442"
|
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d"
|
||||||
integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==
|
integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==
|
||||||
dependencies:
|
dependencies:
|
||||||
history "^5.2.0"
|
history "^5.2.0"
|
||||||
react-router "6.2.2"
|
react-router "6.3.0"
|
||||||
|
|
||||||
react-router@6.2.2:
|
react-router@6.3.0, react-router@^6.3.0:
|
||||||
version "6.2.2"
|
version "6.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.2.tgz#495e683a0c04461eeb3d705fe445d6cf42f0c249"
|
resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557"
|
||||||
integrity sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==
|
integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
history "^5.2.0"
|
history "^5.2.0"
|
||||||
|
|
||||||
@@ -1555,7 +1538,7 @@ tslib@^2.1.0, tslib@^2.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
||||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
||||||
|
|
||||||
typescript@^4.5.5:
|
typescript@^4.6.3:
|
||||||
version "4.6.3"
|
version "4.6.3"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c"
|
||||||
integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==
|
integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==
|
||||||
@@ -1597,13 +1580,13 @@ use-subscription@^1.3.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
|
|
||||||
vite@^2.8.5:
|
vite@^2.9.1:
|
||||||
version "2.8.6"
|
version "2.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-2.8.6.tgz#32d50e23c99ca31b26b8ccdc78b1d72d4d7323d3"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.1.tgz#84bce95fae210a7beb566a0af06246748066b48f"
|
||||||
integrity sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==
|
integrity sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.14.14"
|
esbuild "^0.14.27"
|
||||||
postcss "^8.4.6"
|
postcss "^8.4.12"
|
||||||
resolve "^1.22.0"
|
resolve "^1.22.0"
|
||||||
rollup "^2.59.0"
|
rollup "^2.59.0"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -1632,11 +1615,6 @@ wrappy@1:
|
|||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
|
||||||
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
|
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
|
||||||
|
|
||||||
ws@^8.5.0:
|
|
||||||
version "8.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
|
|
||||||
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
|
|
||||||
|
|
||||||
xstate@^4.30.5:
|
xstate@^4.30.5:
|
||||||
version "4.30.6"
|
version "4.30.6"
|
||||||
resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.30.6.tgz#62b6dea37a500e0e1c0ff7c553a801eea5119554"
|
resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.30.6.tgz#62b6dea37a500e0e1c0ff7c553a801eea5119554"
|
||||||
|
|||||||
@@ -1,5 +1,20 @@
|
|||||||
# @nhost/apollo
|
# @nhost/apollo
|
||||||
|
|
||||||
|
## 0.3.9
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- @nhost/core@0.3.10
|
||||||
|
|
||||||
|
## 0.3.8
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [2c97db6]
|
||||||
|
- @nhost/core@0.3.9
|
||||||
|
|
||||||
## 0.3.7
|
## 0.3.7
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/apollo",
|
"name": "@nhost/apollo",
|
||||||
"version": "0.3.7",
|
"version": "0.3.9",
|
||||||
"description": "Nhost Apollo Client library",
|
"description": "Nhost Apollo Client library",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
# @nhost/core
|
# @nhost/core
|
||||||
|
|
||||||
|
## 0.3.10
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 63d6059: Set onTokenChanged before the state interpreter started
|
||||||
|
Fixes [#384](https://github.com/nhost/nhost/issues/384), thanks [@noverby](https://github.com/noverby)
|
||||||
|
- 63d6059: Trigger onTokenChanged when token changes
|
||||||
|
Fixes [#373](https://github.com/nhost/nhost/issues/373), thanks [@yureckey](https://github.com/yureckey)
|
||||||
|
|
||||||
|
## 0.3.9
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 2c97db6: Keep authentication status and access token in sync
|
||||||
|
The authentication events where not set correctly, leading the main Nhost client not to update internal states of storage/graphql/functions sub-clients when using non-react clients.
|
||||||
|
The use of private fields (`#`) is also avoided as they conflict with the use of proxies in Vue, leading to errors in the upcoming Vue library.
|
||||||
|
Fixes #373 and #378
|
||||||
|
|
||||||
## 0.3.8
|
## 0.3.8
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/core",
|
"name": "@nhost/core",
|
||||||
"version": "0.3.8",
|
"version": "0.3.10",
|
||||||
"description": "Nhost core client library",
|
"description": "Nhost core client library",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ export class AuthClient {
|
|||||||
readonly backendUrl: string
|
readonly backendUrl: string
|
||||||
readonly clientUrl: string
|
readonly clientUrl: string
|
||||||
readonly machine: AuthMachine
|
readonly machine: AuthMachine
|
||||||
#interpreter?: AuthInterpreter
|
private _interpreter?: AuthInterpreter
|
||||||
#channel?: BroadcastChannel
|
private _channel?: BroadcastChannel
|
||||||
#subscriptions: Set<(client: AuthClient) => void> = new Set()
|
private _subscriptions: Set<(client: AuthClient) => void> = new Set()
|
||||||
|
|
||||||
constructor({
|
constructor({
|
||||||
backendUrl,
|
backendUrl,
|
||||||
@@ -45,8 +45,8 @@ export class AuthClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (typeof window !== 'undefined' && autoSignIn) {
|
if (typeof window !== 'undefined' && autoSignIn) {
|
||||||
this.#channel = new BroadcastChannel<string>('nhost')
|
this._channel = new BroadcastChannel<string>('nhost')
|
||||||
this.#channel.addEventListener('message', (token) => {
|
this._channel.addEventListener('message', (token) => {
|
||||||
const existingToken = this.interpreter?.state.context.refreshToken
|
const existingToken = this.interpreter?.state.context.refreshToken
|
||||||
if (this.interpreter && token !== existingToken) {
|
if (this.interpreter && token !== existingToken) {
|
||||||
this.interpreter.send({ type: 'TRY_TOKEN', token })
|
this.interpreter.send({ type: 'TRY_TOKEN', token })
|
||||||
@@ -56,16 +56,23 @@ export class AuthClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get interpreter(): AuthInterpreter | undefined {
|
get interpreter(): AuthInterpreter | undefined {
|
||||||
return this.#interpreter
|
return this._interpreter
|
||||||
}
|
}
|
||||||
set interpreter(interpreter: AuthInterpreter | undefined) {
|
set interpreter(interpreter: AuthInterpreter | undefined) {
|
||||||
this.#interpreter = interpreter
|
this._interpreter = interpreter
|
||||||
if (interpreter) {
|
if (interpreter) {
|
||||||
this.#subscriptions.forEach((fn) => fn(this))
|
this._subscriptions.forEach((fn) => fn(this))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onStart(fn: (interpreter: AuthClient) => void) {
|
onStart(fn: (client: AuthClient) => void) {
|
||||||
this.#subscriptions.add(fn)
|
if (this.interpreter) {
|
||||||
|
// * The interpreter is already available: we can add the listener straight ahead
|
||||||
|
fn(this)
|
||||||
|
} else {
|
||||||
|
// * The interpreter is not yet available: we add the listener to a queue that will be started when setting the interpreter
|
||||||
|
// * Note: in React, the Xstate interpreter does not start from the global state, but from the root component
|
||||||
|
this._subscriptions.add(fn)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -401,7 +401,12 @@ export const createAuthMachine = ({
|
|||||||
src: 'refreshToken',
|
src: 'refreshToken',
|
||||||
id: 'refreshToken',
|
id: 'refreshToken',
|
||||||
onDone: {
|
onDone: {
|
||||||
actions: ['saveSession', 'persist', 'resetTimer'],
|
actions: [
|
||||||
|
'saveSession',
|
||||||
|
'persist',
|
||||||
|
'resetTimer',
|
||||||
|
'reportTokenChanged'
|
||||||
|
],
|
||||||
target: 'pending'
|
target: 'pending'
|
||||||
},
|
},
|
||||||
onError: [
|
onError: [
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ export interface Typegen0 {
|
|||||||
| 'done.invoke.authenticateAnonymously'
|
| 'done.invoke.authenticateAnonymously'
|
||||||
| 'done.invoke.signInMfaTotp'
|
| 'done.invoke.signInMfaTotp'
|
||||||
| 'done.invoke.registerUser'
|
| 'done.invoke.registerUser'
|
||||||
|
| 'done.invoke.refreshToken'
|
||||||
| 'done.invoke.authenticateWithToken'
|
| 'done.invoke.authenticateWithToken'
|
||||||
saveRefreshToken: 'done.invoke.importRefreshToken'
|
saveRefreshToken: 'done.invoke.importRefreshToken'
|
||||||
saveInvalidEmail: 'SIGNIN_PASSWORD' | 'SIGNIN_PASSWORDLESS_EMAIL'
|
saveInvalidEmail: 'SIGNIN_PASSWORD' | 'SIGNIN_PASSWORDLESS_EMAIL'
|
||||||
|
|||||||
@@ -1,5 +1,29 @@
|
|||||||
# @nhost/hasura-auth-js
|
# @nhost/hasura-auth-js
|
||||||
|
|
||||||
|
## 1.0.11
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 63d6059: Add TSDoc information about Nhost client options
|
||||||
|
- 63d6059: Set onTokenChanged before the state interpreter started
|
||||||
|
Fixes [#384](https://github.com/nhost/nhost/issues/384), thanks [@noverby](https://github.com/noverby)
|
||||||
|
- 63d6059: Trigger onTokenChanged when token changes
|
||||||
|
Fixes [#373](https://github.com/nhost/nhost/issues/373), thanks [@yureckey](https://github.com/yureckey)
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- @nhost/core@0.3.10
|
||||||
|
|
||||||
|
## 1.0.10
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 2c97db6: Keep authentication status and access token in sync
|
||||||
|
The authentication events where not set correctly, leading the main Nhost client not to update internal states of storage/graphql/functions sub-clients when using non-react clients.
|
||||||
|
The use of private fields (`#`) is also avoided as they conflict with the use of proxies in Vue, leading to errors in the upcoming Vue library.
|
||||||
|
Fixes #373 and #378
|
||||||
|
- Updated dependencies [2c97db6]
|
||||||
|
- @nhost/core@0.3.9
|
||||||
|
|
||||||
## 1.0.9
|
## 1.0.9
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/hasura-auth-js",
|
"name": "@nhost/hasura-auth-js",
|
||||||
"version": "1.0.9",
|
"version": "1.0.11",
|
||||||
"description": "Hasura-auth client",
|
"description": "Hasura-auth client",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -53,9 +53,7 @@ const EMAIL_NEEDS_VERIFICATION: ApiError = {
|
|||||||
status: 102
|
status: 102
|
||||||
}
|
}
|
||||||
export class HasuraAuthClient {
|
export class HasuraAuthClient {
|
||||||
#client: AuthClient
|
private _client: AuthClient
|
||||||
private onTokenChangedSubscriptions: Set<AuthInterpreter> = new Set()
|
|
||||||
private onAuthStateChangedSubscriptions: Set<AuthInterpreter> = new Set()
|
|
||||||
|
|
||||||
constructor({
|
constructor({
|
||||||
url,
|
url,
|
||||||
@@ -69,7 +67,7 @@ export class HasuraAuthClient {
|
|||||||
start = true,
|
start = true,
|
||||||
Client = AuthClient
|
Client = AuthClient
|
||||||
}: NhostAuthConstructorParams) {
|
}: NhostAuthConstructorParams) {
|
||||||
this.#client = new Client({
|
this._client = new Client({
|
||||||
backendUrl: url,
|
backendUrl: url,
|
||||||
autoRefreshToken,
|
autoRefreshToken,
|
||||||
autoSignIn: autoLogin,
|
autoSignIn: autoLogin,
|
||||||
@@ -157,8 +155,8 @@ export class HasuraAuthClient {
|
|||||||
if ('provider' in params) {
|
if ('provider' in params) {
|
||||||
const { provider, options } = params
|
const { provider, options } = params
|
||||||
const providerUrl = encodeQueryParameters(
|
const providerUrl = encodeQueryParameters(
|
||||||
`${this.#client.backendUrl}/signin/provider/${provider}`,
|
`${this._client.backendUrl}/signin/provider/${provider}`,
|
||||||
rewriteRedirectTo(this.#client.clientUrl, options)
|
rewriteRedirectTo(this._client.clientUrl, options)
|
||||||
)
|
)
|
||||||
if (isBrowser()) {
|
if (isBrowser()) {
|
||||||
window.location.href = providerUrl
|
window.location.href = providerUrl
|
||||||
@@ -301,7 +299,7 @@ export class HasuraAuthClient {
|
|||||||
*/
|
*/
|
||||||
async resetPassword({ email, options }: ResetPasswordParams): Promise<ApiResetPasswordResponse> {
|
async resetPassword({ email, options }: ResetPasswordParams): Promise<ApiResetPasswordResponse> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const service = interpret(createResetPasswordMachine(this.#client))
|
const service = interpret(createResetPasswordMachine(this._client))
|
||||||
service.onTransition(({ event }) => {
|
service.onTransition(({ event }) => {
|
||||||
if (event.type === 'ERROR') return resolve({ error: event.error })
|
if (event.type === 'ERROR') return resolve({ error: event.error })
|
||||||
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
||||||
@@ -321,7 +319,7 @@ export class HasuraAuthClient {
|
|||||||
*/
|
*/
|
||||||
async changePassword(params: ChangePasswordParams): Promise<ApiChangePasswordResponse> {
|
async changePassword(params: ChangePasswordParams): Promise<ApiChangePasswordResponse> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const service = interpret(createChangePasswordMachine(this.#client))
|
const service = interpret(createChangePasswordMachine(this._client))
|
||||||
service.onTransition(({ event }) => {
|
service.onTransition(({ event }) => {
|
||||||
if (event.type === 'ERROR') return resolve({ error: event.error })
|
if (event.type === 'ERROR') return resolve({ error: event.error })
|
||||||
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
||||||
@@ -344,7 +342,7 @@ export class HasuraAuthClient {
|
|||||||
params: SendVerificationEmailParams
|
params: SendVerificationEmailParams
|
||||||
): Promise<ApiSendVerificationEmailResponse> {
|
): Promise<ApiSendVerificationEmailResponse> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const service = interpret(createSendVerificationEmailMachine(this.#client))
|
const service = interpret(createSendVerificationEmailMachine(this._client))
|
||||||
service.onTransition(({ event }) => {
|
service.onTransition(({ event }) => {
|
||||||
if (event.type === 'ERROR') return resolve({ error: event.error })
|
if (event.type === 'ERROR') return resolve({ error: event.error })
|
||||||
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
||||||
@@ -364,7 +362,7 @@ export class HasuraAuthClient {
|
|||||||
*/
|
*/
|
||||||
async changeEmail({ newEmail, options }: ChangeEmailParams): Promise<ApiChangeEmailResponse> {
|
async changeEmail({ newEmail, options }: ChangeEmailParams): Promise<ApiChangeEmailResponse> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const service = interpret(createChangeEmailMachine(this.#client))
|
const service = interpret(createChangeEmailMachine(this._client))
|
||||||
service.onTransition(({ event }) => {
|
service.onTransition(({ event }) => {
|
||||||
if (event.type === 'ERROR') return resolve({ error: event.error })
|
if (event.type === 'ERROR') return resolve({ error: event.error })
|
||||||
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
else if (event.type === 'SUCCESS') return resolve({ error: null })
|
||||||
@@ -414,17 +412,23 @@ export class HasuraAuthClient {
|
|||||||
* @docs https://docs.nhost.io/TODO
|
* @docs https://docs.nhost.io/TODO
|
||||||
*/
|
*/
|
||||||
onTokenChanged(fn: OnTokenChangedFunction): Function {
|
onTokenChanged(fn: OnTokenChangedFunction): Function {
|
||||||
if (this.#client.interpreter)
|
const listen = (interpreter: AuthInterpreter) =>
|
||||||
this.onTokenChangedSubscriptions.add(
|
interpreter.onTransition(({ event, context }) => {
|
||||||
this.#client.interpreter?.onTransition(({ event, context }) => {
|
if (event.type === 'TOKEN_CHANGED') fn(getSession(context))
|
||||||
if (event.type === 'TOKEN_CHANGED') fn(getSession(context))
|
})
|
||||||
})
|
|
||||||
)
|
if (this._client.interpreter) {
|
||||||
else {
|
const subscription = listen(this._client.interpreter)
|
||||||
console.log('onTokenChanged: no interpreter is set yet', fn)
|
return () => subscription.stop()
|
||||||
}
|
} else {
|
||||||
return () => {
|
this._client.onStart((client) => {
|
||||||
this.onTokenChangedSubscriptions.forEach((subscription) => subscription.stop())
|
listen(client.interpreter as AuthInterpreter)
|
||||||
|
})
|
||||||
|
return () => {
|
||||||
|
console.log(
|
||||||
|
'onTokenChanged was added before the interpreter started. Cannot unsubscribe listener.'
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -441,18 +445,23 @@ export class HasuraAuthClient {
|
|||||||
* @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-onauthstatechangedevent,-session
|
* @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-onauthstatechangedevent,-session
|
||||||
*/
|
*/
|
||||||
onAuthStateChanged(fn: AuthChangedFunction): Function {
|
onAuthStateChanged(fn: AuthChangedFunction): Function {
|
||||||
if (this.#client.interpreter)
|
const listen = (interpreter: AuthInterpreter) =>
|
||||||
this.onAuthStateChangedSubscriptions.add(
|
interpreter.onTransition(({ event, context }) => {
|
||||||
this.#client.interpreter?.onTransition(({ event, context }) => {
|
if (event.type === 'SIGNED_IN' || event.type === 'SIGNED_OUT')
|
||||||
if (event.type === 'SIGNED_IN') fn('SIGNED_IN', getSession(context))
|
fn(event.type, getSession(context))
|
||||||
else if (event.type === 'SIGNED_OUT') fn('SIGNED_OUT', getSession(context))
|
})
|
||||||
})
|
if (this._client.interpreter) {
|
||||||
)
|
const subscription = listen(this._client.interpreter)
|
||||||
else {
|
return () => subscription.stop()
|
||||||
console.log('onAuthStateChanged: no interpreter is set yet', fn)
|
} else {
|
||||||
}
|
this._client.onStart((client) => {
|
||||||
return () => {
|
listen(client.interpreter as AuthInterpreter)
|
||||||
this.onAuthStateChangedSubscriptions.forEach((subscription) => subscription.stop())
|
})
|
||||||
|
return () => {
|
||||||
|
console.log(
|
||||||
|
'onAuthStateChanged was added before the interpreter started. Cannot unsubscribe listener.'
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -474,7 +483,7 @@ export class HasuraAuthClient {
|
|||||||
* @docs https://docs.nhost.io/TODO
|
* @docs https://docs.nhost.io/TODO
|
||||||
*/
|
*/
|
||||||
isAuthenticated(): boolean {
|
isAuthenticated(): boolean {
|
||||||
return !!this.#client.interpreter?.state.matches({ authentication: 'signedIn' })
|
return !!this._client.interpreter?.state.matches({ authentication: 'signedIn' })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -543,7 +552,7 @@ export class HasuraAuthClient {
|
|||||||
* @docs https://docs.nhost.io/TODO
|
* @docs https://docs.nhost.io/TODO
|
||||||
*/
|
*/
|
||||||
getAccessToken(): string | undefined {
|
getAccessToken(): string | undefined {
|
||||||
return this.#client.interpreter?.state.context.accessToken.value ?? undefined
|
return this._client.interpreter?.state.context.accessToken.value ?? undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -590,7 +599,7 @@ export class HasuraAuthClient {
|
|||||||
* @docs https://docs.nhost.io/TODO
|
* @docs https://docs.nhost.io/TODO
|
||||||
*/
|
*/
|
||||||
getSession() {
|
getSession() {
|
||||||
return getSession(this.#client.interpreter?.state?.context)
|
return getSession(this._client.interpreter?.state?.context)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -604,7 +613,7 @@ export class HasuraAuthClient {
|
|||||||
* @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-getuser
|
* @docs https://docs.nhost.io/reference/sdk/authentication#nhost-auth-getuser
|
||||||
*/
|
*/
|
||||||
getUser() {
|
getUser() {
|
||||||
return this.#client.interpreter?.state?.context?.user || null
|
return this._client.interpreter?.state?.context?.user || null
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -613,7 +622,7 @@ export class HasuraAuthClient {
|
|||||||
*/
|
*/
|
||||||
private waitUntilReady(): Promise<AuthInterpreter> {
|
private waitUntilReady(): Promise<AuthInterpreter> {
|
||||||
const TIMEOUT_IN_SECONS = 15
|
const TIMEOUT_IN_SECONS = 15
|
||||||
const interpreter = this.#client.interpreter
|
const interpreter = this._client.interpreter
|
||||||
if (!interpreter) {
|
if (!interpreter) {
|
||||||
throw Error('Auth interpreter not set')
|
throw Error('Auth interpreter not set')
|
||||||
}
|
}
|
||||||
@@ -633,10 +642,10 @@ export class HasuraAuthClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private isReady() {
|
private isReady() {
|
||||||
return !!this.#client.interpreter?.state?.hasTag('ready')
|
return !!this._client.interpreter?.state?.hasTag('ready')
|
||||||
}
|
}
|
||||||
|
|
||||||
get client() {
|
get client() {
|
||||||
return this.#client
|
return this._client
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,14 +12,19 @@ import {
|
|||||||
export type { AuthClient, Provider, StorageGetter, StorageSetter, User }
|
export type { AuthClient, Provider, StorageGetter, StorageSetter, User }
|
||||||
export interface NhostAuthConstructorParams {
|
export interface NhostAuthConstructorParams {
|
||||||
url: string
|
url: string
|
||||||
|
/** Time interval until token refreshes, in seconds */
|
||||||
refreshIntervalTime?: number
|
refreshIntervalTime?: number
|
||||||
/** @deprecated Use clientStorageGetter and clientStorageSetter options instead */
|
/** @deprecated Use clientStorageGetter and clientStorageSetter options instead */
|
||||||
clientStorage?: ClientStorage
|
clientStorage?: ClientStorage
|
||||||
/** @deprecated Use clientStorageGetter and clientStorageSetter options instead */
|
/** @deprecated Use clientStorageGetter and clientStorageSetter options instead */
|
||||||
clientStorageType?: ClientStorageType
|
clientStorageType?: ClientStorageType
|
||||||
|
/** Define a way to get information about the refresh token and its exipration date */
|
||||||
clientStorageGetter?: StorageGetter
|
clientStorageGetter?: StorageGetter
|
||||||
|
/** Define a way to set information about the refresh token and its exipration date */
|
||||||
clientStorageSetter?: StorageSetter
|
clientStorageSetter?: StorageSetter
|
||||||
|
/** When set to true, will automatically refresh token before it expires */
|
||||||
autoRefreshToken?: boolean
|
autoRefreshToken?: boolean
|
||||||
|
/** When set to true, will parse the url on startup to check if it contains a refresh token to start the session with */
|
||||||
autoLogin?: boolean
|
autoLogin?: boolean
|
||||||
start?: boolean
|
start?: boolean
|
||||||
Client?: typeof AuthClient
|
Client?: typeof AuthClient
|
||||||
|
|||||||
@@ -1,5 +1,20 @@
|
|||||||
# @nhost/nextjs
|
# @nhost/nextjs
|
||||||
|
|
||||||
|
## 1.0.12
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @nhost/nhost-js@1.0.11
|
||||||
|
- @nhost/react@0.5.2
|
||||||
|
|
||||||
|
## 1.0.11
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [2c97db6]
|
||||||
|
- @nhost/nhost-js@1.0.10
|
||||||
|
- @nhost/react@0.5.1
|
||||||
|
|
||||||
## 1.0.10
|
## 1.0.10
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/nextjs",
|
"name": "@nhost/nextjs",
|
||||||
"version": "1.0.10",
|
"version": "1.0.12",
|
||||||
"description": "Nhost NextJS library",
|
"description": "Nhost NextJS library",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -1,5 +1,25 @@
|
|||||||
# @nhost/nhost-js
|
# @nhost/nhost-js
|
||||||
|
|
||||||
|
## 1.0.11
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- Updated dependencies [63d6059]
|
||||||
|
- @nhost/hasura-auth-js@1.0.11
|
||||||
|
|
||||||
|
## 1.0.10
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 2c97db6: Keep authentication status and access token in sync
|
||||||
|
The authentication events where not set correctly, leading the main Nhost client not to update internal states of storage/graphql/functions sub-clients when using non-react clients.
|
||||||
|
The use of private fields (`#`) is also avoided as they conflict with the use of proxies in Vue, leading to errors in the upcoming Vue library.
|
||||||
|
Fixes #373 and #378
|
||||||
|
- Updated dependencies [2c97db6]
|
||||||
|
- @nhost/hasura-auth-js@1.0.10
|
||||||
|
|
||||||
## 1.0.9
|
## 1.0.9
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/nhost-js",
|
"name": "@nhost/nhost-js",
|
||||||
"version": "1.0.9",
|
"version": "1.0.11",
|
||||||
"description": "Nhost JavaScript SDK",
|
"description": "Nhost JavaScript SDK",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -60,20 +60,22 @@ export class NhostClient {
|
|||||||
url: `${backendUrl}/v1/graphql`
|
url: `${backendUrl}/v1/graphql`
|
||||||
})
|
})
|
||||||
|
|
||||||
// set current token if token is already accessable
|
// * Set current token if token is already accessable
|
||||||
this.storage.setAccessToken(this.auth.getAccessToken())
|
this.storage.setAccessToken(this.auth.getAccessToken())
|
||||||
this.functions.setAccessToken(this.auth.getAccessToken())
|
this.functions.setAccessToken(this.auth.getAccessToken())
|
||||||
this.graphql.setAccessToken(this.auth.getAccessToken())
|
this.graphql.setAccessToken(this.auth.getAccessToken())
|
||||||
|
|
||||||
this.auth.client.onStart(() => {
|
this.auth.client.onStart(() => {
|
||||||
// update access token for clients
|
// * Set access token when signing out
|
||||||
this.auth.onAuthStateChanged((_event, session) => {
|
this.auth.onAuthStateChanged((_event, session) => {
|
||||||
this.storage.setAccessToken(session?.accessToken)
|
if (_event === 'SIGNED_OUT') {
|
||||||
this.functions.setAccessToken(session?.accessToken)
|
this.storage.setAccessToken(undefined)
|
||||||
this.graphql.setAccessToken(session?.accessToken)
|
this.functions.setAccessToken(undefined)
|
||||||
|
this.graphql.setAccessToken(undefined)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// update access token for clients
|
// * Update access token for clients, including when signin in
|
||||||
this.auth.onTokenChanged((session) => {
|
this.auth.onTokenChanged((session) => {
|
||||||
this.storage.setAccessToken(session?.accessToken)
|
this.storage.setAccessToken(session?.accessToken)
|
||||||
this.functions.setAccessToken(session?.accessToken)
|
this.functions.setAccessToken(session?.accessToken)
|
||||||
|
|||||||
@@ -1,5 +1,20 @@
|
|||||||
# @nhost/react-apollo
|
# @nhost/react-apollo
|
||||||
|
|
||||||
|
## 4.0.12
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @nhost/react@0.5.2
|
||||||
|
- @nhost/apollo@0.3.9
|
||||||
|
|
||||||
|
## 4.0.11
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 8583af8: correct documentation link in readme
|
||||||
|
- @nhost/apollo@0.3.8
|
||||||
|
- @nhost/react@0.5.1
|
||||||
|
|
||||||
## 4.0.10
|
## 4.0.10
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -38,4 +38,4 @@ ReactDOM.render(
|
|||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
[https://docs.nhost.io/reference/supporting-libraries/react-apollo](https://docs.nhost.io/reference/supporting-libraries/react-apollo)
|
[https://docs.nhost.io/reference/react/apollo](https://docs.nhost.io/reference/react/apollo)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/react-apollo",
|
"name": "@nhost/react-apollo",
|
||||||
"version": "4.0.10",
|
"version": "4.0.12",
|
||||||
"description": "Nhost React Apollo client",
|
"description": "Nhost React Apollo client",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -1,5 +1,18 @@
|
|||||||
# @nhost/react
|
# @nhost/react
|
||||||
|
|
||||||
|
## 0.5.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- @nhost/nhost-js@1.0.11
|
||||||
|
|
||||||
|
## 0.5.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [2c97db6]
|
||||||
|
- @nhost/nhost-js@1.0.10
|
||||||
|
|
||||||
## 0.5.0
|
## 0.5.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@nhost/react",
|
"name": "@nhost/react",
|
||||||
"version": "0.5.0",
|
"version": "0.5.2",
|
||||||
"description": "Nhost React library",
|
"description": "Nhost React library",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
2
pnpm-lock.yaml
generated
2
pnpm-lock.yaml
generated
@@ -83,6 +83,7 @@ importers:
|
|||||||
specifiers:
|
specifiers:
|
||||||
'@heroicons/react': ^1.0.5
|
'@heroicons/react': ^1.0.5
|
||||||
'@mailchimp/mailchimp_marketing': ^3.0.74
|
'@mailchimp/mailchimp_marketing': ^3.0.74
|
||||||
|
'@types/node': ^17.0.21
|
||||||
'@types/react': ^17.0.37
|
'@types/react': ^17.0.37
|
||||||
autoprefixer: ^10.4.0
|
autoprefixer: ^10.4.0
|
||||||
axios: ^0.24.0
|
axios: ^0.24.0
|
||||||
@@ -135,6 +136,7 @@ importers:
|
|||||||
react-syntax-highlighter: 15.4.5_react@17.0.2
|
react-syntax-highlighter: 15.4.5_react@17.0.2
|
||||||
swagger-ui-react: 4.8.0_react-dom@17.0.2+react@17.0.2
|
swagger-ui-react: 4.8.0_react-dom@17.0.2+react@17.0.2
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/node': 17.0.21
|
||||||
'@types/react': 17.0.40
|
'@types/react': 17.0.40
|
||||||
autoprefixer: 10.4.2_postcss@8.4.8
|
autoprefixer: 10.4.2_postcss@8.4.8
|
||||||
next-sitemap: 1.9.12_next@12.1.0
|
next-sitemap: 1.9.12_next@12.1.0
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"noImplicitAny": false,
|
"noImplicitAny": false,
|
||||||
"removeComments": true,
|
"removeComments": false,
|
||||||
"noLib": false,
|
"noLib": false,
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
|
|||||||
Reference in New Issue
Block a user