Compare commits
22 Commits
@nhost/das
...
@nhost/das
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
157e1b74b8 | ||
|
|
b3a475c60f | ||
|
|
3d62871db1 | ||
|
|
4f0368b95f | ||
|
|
463cb50c27 | ||
|
|
676c11f814 | ||
|
|
d8442a290b | ||
|
|
0db333353b | ||
|
|
7ea8120723 | ||
|
|
64a8f41d03 | ||
|
|
8e12ded94b | ||
|
|
564ce1ac2d | ||
|
|
b024817eb5 | ||
|
|
c1b024cf53 | ||
|
|
dbacbf140b | ||
|
|
0a9af5075c | ||
|
|
15168539d8 | ||
|
|
0d74217a4c | ||
|
|
9721527324 | ||
|
|
fd4d024bfc | ||
|
|
4c00a796eb | ||
|
|
07abea4c16 |
@@ -1,5 +1,24 @@
|
||||
# @nhost/dashboard
|
||||
|
||||
## 0.17.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4f0368b95: fix(account): don't break account settings page
|
||||
|
||||
## 0.17.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 64a8f41d0: chore(resources): lower the maximum allowed resources per service
|
||||
|
||||
## 0.17.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/react-apollo@5.0.25
|
||||
- @nhost/nextjs@1.13.27
|
||||
|
||||
## 0.17.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/dashboard",
|
||||
"version": "0.17.4",
|
||||
"version": "0.17.7",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"preinstall": "npx only-allow pnpm",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
query GetPersonalAccessTokens {
|
||||
personalAccessTokens: authRefreshTokens(
|
||||
where: { type: { _eq: "pat" } }
|
||||
where: { type: { _eq: pat } }
|
||||
order_by: { expiresAt: asc }
|
||||
) {
|
||||
id
|
||||
|
||||
@@ -5,6 +5,7 @@ import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
|
||||
import { Alert } from '@/components/ui/v2/Alert';
|
||||
import { Box } from '@/components/ui/v2/Box';
|
||||
import { Divider } from '@/components/ui/v2/Divider';
|
||||
import { Link } from '@/components/ui/v2/Link';
|
||||
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
|
||||
import { useProPlan } from '@/features/projects/common/hooks/useProPlan';
|
||||
import { ResourcesConfirmationDialog } from '@/features/projects/resources/settings/components/ResourcesConfirmationDialog';
|
||||
@@ -348,6 +349,13 @@ export default function ResourcesForm() {
|
||||
</Alert>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
<Box className="px-4 pb-4">
|
||||
<Alert severity="info">
|
||||
In case you need more resources, please reach out to us at{' '}
|
||||
<Link href="mailto:support@nhost.io">support@nhost.io</Link>.
|
||||
</Alert>
|
||||
</Box>
|
||||
</>
|
||||
) : (
|
||||
<Box className={twMerge('px-4', 'pb-4')}>
|
||||
|
||||
@@ -21,7 +21,7 @@ export const MIN_TOTAL_MEMORY =
|
||||
/**
|
||||
* The maximum total CPU that can be allocated.
|
||||
*/
|
||||
export const MAX_TOTAL_VCPU = 60 * RESOURCE_VCPU_MULTIPLIER;
|
||||
export const MAX_TOTAL_VCPU = 28 * RESOURCE_VCPU_MULTIPLIER;
|
||||
|
||||
/**
|
||||
* The maximum amount of memory that can be allocated in total.
|
||||
@@ -46,7 +46,7 @@ export const MIN_SERVICE_VCPU = 0.25 * RESOURCE_VCPU_MULTIPLIER;
|
||||
/**
|
||||
* The maximum amount of CPU that can be allocated per service.
|
||||
*/
|
||||
export const MAX_SERVICE_VCPU = 15 * RESOURCE_VCPU_MULTIPLIER;
|
||||
export const MAX_SERVICE_VCPU = 7 * RESOURCE_VCPU_MULTIPLIER;
|
||||
|
||||
/**
|
||||
* The minimum amount of memory that has to be allocated per service.
|
||||
|
||||
@@ -277,7 +277,16 @@ export default function FilesDataGrid(props: FilesDataGridProps) {
|
||||
throw new Error(fileError.message);
|
||||
}
|
||||
|
||||
triggerToast(`File has been uploaded successfully (${fileMetadata?.id})`);
|
||||
if (!fileMetadata) {
|
||||
throw new Error('File metadata is missing.');
|
||||
}
|
||||
|
||||
const fileId =
|
||||
'processedFiles' in fileMetadata
|
||||
? fileMetadata.processedFiles[0]?.id
|
||||
: fileMetadata.id;
|
||||
|
||||
triggerToast(`File has been uploaded successfully (${fileId})`);
|
||||
|
||||
await refetchFilesAndAggregate();
|
||||
} catch (uploadError) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Container } from '@/components/layout/Container';
|
||||
import { RetryableErrorBoundary } from '@/components/presentational/RetryableErrorBoundary';
|
||||
import { AccountSettingsLayout } from '@/features/account/settings/components/AccountSettingsLayout';
|
||||
import { PasswordSettings } from '@/features/account/settings/components/PasswordSettings';
|
||||
import { PATSettings } from '@/features/account/settings/components/PATSettings';
|
||||
@@ -10,8 +11,13 @@ export default function AccountSettingsPage() {
|
||||
className="grid max-w-5xl grid-flow-row gap-8 bg-transparent"
|
||||
rootClassName="bg-transparent"
|
||||
>
|
||||
<PasswordSettings />
|
||||
<PATSettings />
|
||||
<RetryableErrorBoundary>
|
||||
<PasswordSettings />
|
||||
</RetryableErrorBoundary>
|
||||
|
||||
<RetryableErrorBoundary>
|
||||
<PATSettings />
|
||||
</RetryableErrorBoundary>
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
60
dashboard/src/utils/__generated__/graphql.ts
generated
60
dashboard/src/utils/__generated__/graphql.ts
generated
@@ -3671,7 +3671,7 @@ export type AuthRefreshTokens = {
|
||||
refresh_token?: Maybe<Scalars['uuid']>;
|
||||
/** An object relationship */
|
||||
refresh_token_type: Auth_Refresh_Token_Types;
|
||||
type: Scalars['String'];
|
||||
type: Auth_Refresh_Token_Types_Enum;
|
||||
/** An object relationship */
|
||||
user: Users;
|
||||
userId: Scalars['uuid'];
|
||||
@@ -3747,7 +3747,7 @@ export type AuthRefreshTokens_Bool_Exp = {
|
||||
refreshTokenHash?: InputMaybe<String_Comparison_Exp>;
|
||||
refresh_token?: InputMaybe<Uuid_Comparison_Exp>;
|
||||
refresh_token_type?: InputMaybe<Auth_Refresh_Token_Types_Bool_Exp>;
|
||||
type?: InputMaybe<String_Comparison_Exp>;
|
||||
type?: InputMaybe<Auth_Refresh_Token_Types_Enum_Comparison_Exp>;
|
||||
user?: InputMaybe<Users_Bool_Exp>;
|
||||
userId?: InputMaybe<Uuid_Comparison_Exp>;
|
||||
};
|
||||
@@ -3782,7 +3782,7 @@ export type AuthRefreshTokens_Insert_Input = {
|
||||
refreshTokenHash?: InputMaybe<Scalars['String']>;
|
||||
refresh_token?: InputMaybe<Scalars['uuid']>;
|
||||
refresh_token_type?: InputMaybe<Auth_Refresh_Token_Types_Obj_Rel_Insert_Input>;
|
||||
type?: InputMaybe<Scalars['String']>;
|
||||
type?: InputMaybe<Auth_Refresh_Token_Types_Enum>;
|
||||
user?: InputMaybe<Users_Obj_Rel_Insert_Input>;
|
||||
userId?: InputMaybe<Scalars['uuid']>;
|
||||
};
|
||||
@@ -3795,7 +3795,6 @@ export type AuthRefreshTokens_Max_Fields = {
|
||||
id?: Maybe<Scalars['uuid']>;
|
||||
refreshTokenHash?: Maybe<Scalars['String']>;
|
||||
refresh_token?: Maybe<Scalars['uuid']>;
|
||||
type?: Maybe<Scalars['String']>;
|
||||
userId?: Maybe<Scalars['uuid']>;
|
||||
};
|
||||
|
||||
@@ -3806,7 +3805,6 @@ export type AuthRefreshTokens_Max_Order_By = {
|
||||
id?: InputMaybe<Order_By>;
|
||||
refreshTokenHash?: InputMaybe<Order_By>;
|
||||
refresh_token?: InputMaybe<Order_By>;
|
||||
type?: InputMaybe<Order_By>;
|
||||
userId?: InputMaybe<Order_By>;
|
||||
};
|
||||
|
||||
@@ -3818,7 +3816,6 @@ export type AuthRefreshTokens_Min_Fields = {
|
||||
id?: Maybe<Scalars['uuid']>;
|
||||
refreshTokenHash?: Maybe<Scalars['String']>;
|
||||
refresh_token?: Maybe<Scalars['uuid']>;
|
||||
type?: Maybe<Scalars['String']>;
|
||||
userId?: Maybe<Scalars['uuid']>;
|
||||
};
|
||||
|
||||
@@ -3829,7 +3826,6 @@ export type AuthRefreshTokens_Min_Order_By = {
|
||||
id?: InputMaybe<Order_By>;
|
||||
refreshTokenHash?: InputMaybe<Order_By>;
|
||||
refresh_token?: InputMaybe<Order_By>;
|
||||
type?: InputMaybe<Order_By>;
|
||||
userId?: InputMaybe<Order_By>;
|
||||
};
|
||||
|
||||
@@ -3901,7 +3897,7 @@ export type AuthRefreshTokens_Set_Input = {
|
||||
metadata?: InputMaybe<Scalars['jsonb']>;
|
||||
refreshTokenHash?: InputMaybe<Scalars['String']>;
|
||||
refresh_token?: InputMaybe<Scalars['uuid']>;
|
||||
type?: InputMaybe<Scalars['String']>;
|
||||
type?: InputMaybe<Auth_Refresh_Token_Types_Enum>;
|
||||
userId?: InputMaybe<Scalars['uuid']>;
|
||||
};
|
||||
|
||||
@@ -3921,7 +3917,7 @@ export type AuthRefreshTokens_Stream_Cursor_Value_Input = {
|
||||
metadata?: InputMaybe<Scalars['jsonb']>;
|
||||
refreshTokenHash?: InputMaybe<Scalars['String']>;
|
||||
refresh_token?: InputMaybe<Scalars['uuid']>;
|
||||
type?: InputMaybe<Scalars['String']>;
|
||||
type?: InputMaybe<Auth_Refresh_Token_Types_Enum>;
|
||||
userId?: InputMaybe<Scalars['uuid']>;
|
||||
};
|
||||
|
||||
@@ -5209,33 +5205,9 @@ export type Auth_Migrations_Variance_Fields = {
|
||||
export type Auth_Refresh_Token_Types = {
|
||||
__typename?: 'auth_refresh_token_types';
|
||||
comment?: Maybe<Scalars['String']>;
|
||||
/** An array relationship */
|
||||
refresh_tokens: Array<AuthRefreshTokens>;
|
||||
/** An aggregate relationship */
|
||||
refresh_tokens_aggregate: AuthRefreshTokens_Aggregate;
|
||||
value: Scalars['String'];
|
||||
};
|
||||
|
||||
|
||||
/** columns and relationships of "auth.refresh_token_types" */
|
||||
export type Auth_Refresh_Token_TypesRefresh_TokensArgs = {
|
||||
distinct_on?: InputMaybe<Array<AuthRefreshTokens_Select_Column>>;
|
||||
limit?: InputMaybe<Scalars['Int']>;
|
||||
offset?: InputMaybe<Scalars['Int']>;
|
||||
order_by?: InputMaybe<Array<AuthRefreshTokens_Order_By>>;
|
||||
where?: InputMaybe<AuthRefreshTokens_Bool_Exp>;
|
||||
};
|
||||
|
||||
|
||||
/** columns and relationships of "auth.refresh_token_types" */
|
||||
export type Auth_Refresh_Token_TypesRefresh_Tokens_AggregateArgs = {
|
||||
distinct_on?: InputMaybe<Array<AuthRefreshTokens_Select_Column>>;
|
||||
limit?: InputMaybe<Scalars['Int']>;
|
||||
offset?: InputMaybe<Scalars['Int']>;
|
||||
order_by?: InputMaybe<Array<AuthRefreshTokens_Order_By>>;
|
||||
where?: InputMaybe<AuthRefreshTokens_Bool_Exp>;
|
||||
};
|
||||
|
||||
/** aggregated selection of "auth.refresh_token_types" */
|
||||
export type Auth_Refresh_Token_Types_Aggregate = {
|
||||
__typename?: 'auth_refresh_token_types_aggregate';
|
||||
@@ -5264,8 +5236,6 @@ export type Auth_Refresh_Token_Types_Bool_Exp = {
|
||||
_not?: InputMaybe<Auth_Refresh_Token_Types_Bool_Exp>;
|
||||
_or?: InputMaybe<Array<Auth_Refresh_Token_Types_Bool_Exp>>;
|
||||
comment?: InputMaybe<String_Comparison_Exp>;
|
||||
refresh_tokens?: InputMaybe<AuthRefreshTokens_Bool_Exp>;
|
||||
refresh_tokens_aggregate?: InputMaybe<AuthRefreshTokens_Aggregate_Bool_Exp>;
|
||||
value?: InputMaybe<String_Comparison_Exp>;
|
||||
};
|
||||
|
||||
@@ -5275,10 +5245,25 @@ export enum Auth_Refresh_Token_Types_Constraint {
|
||||
RefreshTokenTypesPkey = 'refresh_token_types_pkey'
|
||||
}
|
||||
|
||||
export enum Auth_Refresh_Token_Types_Enum {
|
||||
/** Personal access token */
|
||||
Pat = 'pat',
|
||||
/** Regular refresh token */
|
||||
Regular = 'regular'
|
||||
}
|
||||
|
||||
/** Boolean expression to compare columns of type "auth_refresh_token_types_enum". All fields are combined with logical 'AND'. */
|
||||
export type Auth_Refresh_Token_Types_Enum_Comparison_Exp = {
|
||||
_eq?: InputMaybe<Auth_Refresh_Token_Types_Enum>;
|
||||
_in?: InputMaybe<Array<Auth_Refresh_Token_Types_Enum>>;
|
||||
_is_null?: InputMaybe<Scalars['Boolean']>;
|
||||
_neq?: InputMaybe<Auth_Refresh_Token_Types_Enum>;
|
||||
_nin?: InputMaybe<Array<Auth_Refresh_Token_Types_Enum>>;
|
||||
};
|
||||
|
||||
/** input type for inserting data into table "auth.refresh_token_types" */
|
||||
export type Auth_Refresh_Token_Types_Insert_Input = {
|
||||
comment?: InputMaybe<Scalars['String']>;
|
||||
refresh_tokens?: InputMaybe<AuthRefreshTokens_Arr_Rel_Insert_Input>;
|
||||
value?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
@@ -5322,7 +5307,6 @@ export type Auth_Refresh_Token_Types_On_Conflict = {
|
||||
/** Ordering options when selecting data from "auth.refresh_token_types". */
|
||||
export type Auth_Refresh_Token_Types_Order_By = {
|
||||
comment?: InputMaybe<Order_By>;
|
||||
refresh_tokens_aggregate?: InputMaybe<AuthRefreshTokens_Aggregate_Order_By>;
|
||||
value?: InputMaybe<Order_By>;
|
||||
};
|
||||
|
||||
@@ -19907,7 +19891,7 @@ export const GetWorkspaceMembersWorkspaceMemberInviteFragmentDoc = gql`
|
||||
export const GetPersonalAccessTokensDocument = gql`
|
||||
query GetPersonalAccessTokens {
|
||||
personalAccessTokens: authRefreshTokens(
|
||||
where: {type: {_eq: "pat"}}
|
||||
where: {type: {_eq: pat}}
|
||||
order_by: {expiresAt: asc}
|
||||
) {
|
||||
id
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/docs
|
||||
|
||||
## 0.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 564ce1ac2: docs: add docs about using custom URLs for the Nhost SDK
|
||||
|
||||
## 0.3.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -36,17 +36,35 @@ yarn add @nhost/nhost-js graphql
|
||||
|
||||
## Initializing
|
||||
|
||||
Initialize a single `nhost` instance using your Nhost backend URL:
|
||||
Initialize a single `nhost` instance using your Nhost `subdomain` and `region`:
|
||||
|
||||
```ts title=utils/nhost.ts
|
||||
```ts title=src/lib/nhost.ts
|
||||
import { NhostClient } from '@nhost/nhost-js'
|
||||
|
||||
const nhost = new NhostClient({
|
||||
export const nhost = new NhostClient({
|
||||
subdomain: '<your-subdomain>',
|
||||
region: '<your-region>'
|
||||
})
|
||||
```
|
||||
|
||||
## Using custom URLs
|
||||
|
||||
There are cases where you might want to use a custom URL for one or more of the
|
||||
services (e.g: when you are self-hosting or you are running services on custom
|
||||
ports). You can do this by passing in the custom URLs when initializing the
|
||||
Nhost client:
|
||||
|
||||
```ts title=src/lib/nhost.ts
|
||||
import { NhostClient } from '@nhost/nhost-js'
|
||||
|
||||
export const nhost = new NhostClient({
|
||||
authUrl: 'https://auth.mydomain.com',
|
||||
storageUrl: 'https://storage.mydomain.com',
|
||||
graphqlUrl: 'https://graphql.mydomain.com',
|
||||
functionsUrl: 'https://functions.mydomain.com'
|
||||
})
|
||||
```
|
||||
|
||||
## GraphQL Support
|
||||
|
||||
The Nhost client has a small GraphQL client built-in which is great to use server-side or in very simple frontend apps. For more serious frontend apps, we recommend using a more complete GraphQL client such as:
|
||||
|
||||
@@ -31,12 +31,12 @@ yarn add @nhost/nextjs graphql
|
||||
|
||||
## Initializing
|
||||
|
||||
Initialize a single `nhost` instance and wrap your app with the `NhostProvider`.
|
||||
|
||||
```jsx title=pages/_app.js
|
||||
import type { AppProps } from 'next/app'
|
||||
Initialize a single `nhost` instance using your Nhost `subdomain` and `region`,
|
||||
and wrap your app with the `NhostProvider`:
|
||||
|
||||
```tsx title=pages/_app.tsx
|
||||
import { NhostClient, NhostProvider } from '@nhost/nextjs'
|
||||
import type { AppProps } from 'next/app'
|
||||
|
||||
const nhost = new NhostClient({
|
||||
subdomain: '<your-subdomain>',
|
||||
@@ -60,6 +60,35 @@ The `nhost` instance created with the `NhostClient` above is the same as the [Ja
|
||||
|
||||
:::
|
||||
|
||||
## Using custom URLs
|
||||
|
||||
There are cases where you might want to use a custom URL for one or more of the
|
||||
services (e.g: when you are self-hosting or you are running services on custom
|
||||
ports). You can do this by passing in the custom URLs when initializing the
|
||||
Nhost client:
|
||||
|
||||
```tsx title=pages/_app.tsx
|
||||
import { NhostClient, NhostProvider } from '@nhost/nextjs'
|
||||
import type { AppProps } from 'next/app'
|
||||
|
||||
const nhost = new NhostClient({
|
||||
authUrl: 'https://auth.mydomain.com',
|
||||
storageUrl: 'https://storage.mydomain.com',
|
||||
graphqlUrl: 'https://graphql.mydomain.com',
|
||||
functionsUrl: 'https://functions.mydomain.com'
|
||||
})
|
||||
|
||||
function MyApp({ Component, pageProps }: AppProps) {
|
||||
return (
|
||||
<NhostProvider nhost={nhost} initial={pageProps.nhostSession}>
|
||||
<Component {...pageProps} />
|
||||
</NhostProvider>
|
||||
)
|
||||
}
|
||||
|
||||
export default MyApp
|
||||
```
|
||||
|
||||
## Server-Side Rendering (SSR)
|
||||
|
||||
You need to load the session from the server first from `getServerSideProps`. Once it is done, the `_app` component will make sure to load or update the session through `pageProps`.
|
||||
|
||||
@@ -31,17 +31,33 @@ yarn add @nhost/react graphql
|
||||
|
||||
## Initializing
|
||||
|
||||
After installation, initialize a single Nhost Client (`nhost`) under `src/lib/nhost.js`.
|
||||
Initialize a single `nhost` instance using your Nhost `subdomain` and `region`:
|
||||
|
||||
```jsx title=src/lib/nhost.js
|
||||
import { NhostClient } from '@nhost/react'
|
||||
|
||||
const nhost = new NhostClient({
|
||||
export const nhost = new NhostClient({
|
||||
subdomain: '<your-subdomain>',
|
||||
region: '<your-region>'
|
||||
})
|
||||
```
|
||||
|
||||
export { nhost }
|
||||
## Using custom URLs
|
||||
|
||||
There are cases where you might want to use a custom URL for one or more of the
|
||||
services (e.g: when you are self-hosting or you are running services on custom
|
||||
ports). You can do this by passing in the custom URLs when initializing the
|
||||
Nhost client:
|
||||
|
||||
```ts title=src/lib/nhost.ts
|
||||
import { NhostClient } from '@nhost/react'
|
||||
|
||||
export const nhost = new NhostClient({
|
||||
authUrl: 'https://auth.mydomain.com',
|
||||
storageUrl: 'https://storage.mydomain.com',
|
||||
graphqlUrl: 'https://graphql.mydomain.com',
|
||||
functionsUrl: 'https://functions.mydomain.com'
|
||||
})
|
||||
```
|
||||
|
||||
Import `nhost` and wrap your app with the `NhostProvider`.
|
||||
|
||||
@@ -31,12 +31,12 @@ yarn add @nhost/vue graphql
|
||||
|
||||
## Initializing
|
||||
|
||||
Initialize a single `nhost` instance, and install it as a plugin in your Vue app.
|
||||
Initialize a single `nhost` instance using your Nhost `subdomain` and `region`,
|
||||
and install it as a plugin in your Vue app:
|
||||
|
||||
```js title=src/main.js
|
||||
import { createApp } from 'vue'
|
||||
import { NhostClient } from '@nhost/vue'
|
||||
|
||||
import { createApp } from 'vue'
|
||||
import App from './App.vue'
|
||||
|
||||
const nhost = new NhostClient({
|
||||
@@ -46,3 +46,25 @@ const nhost = new NhostClient({
|
||||
|
||||
createApp(App).use(nhost).mount('#app')
|
||||
```
|
||||
|
||||
## Using custom URLs
|
||||
|
||||
There are cases where you might want to use a custom URL for one or more of the
|
||||
services (e.g: when you are self-hosting or you are running services on custom
|
||||
ports). You can do this by passing in the custom URLs when initializing the
|
||||
Nhost client:
|
||||
|
||||
```js title=src/main.js
|
||||
import { NhostClient } from '@nhost/vue'
|
||||
import { createApp } from 'vue'
|
||||
import App from './App.vue'
|
||||
|
||||
const nhost = new NhostClient({
|
||||
authUrl: 'https://auth.mydomain.com',
|
||||
storageUrl: 'https://storage.mydomain.com',
|
||||
graphqlUrl: 'https://graphql.mydomain.com',
|
||||
functionsUrl: 'https://functions.mydomain.com'
|
||||
})
|
||||
|
||||
createApp(App).use(nhost).mount('#app')
|
||||
```
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/docs",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
|
||||
3
examples/node-storage/.env.example
Normal file
3
examples/node-storage/.env.example
Normal file
@@ -0,0 +1,3 @@
|
||||
SUBDOMAIN="local"
|
||||
REGION=""
|
||||
ADMIN_SECRET="nhost-admin-secret"
|
||||
1
examples/node-storage/.gitignore
vendored
Normal file
1
examples/node-storage/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.secrets.nhost
|
||||
8
examples/node-storage/CHANGELOG.md
Normal file
8
examples/node-storage/CHANGELOG.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# @nhost-examples/node-storage
|
||||
|
||||
## 0.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4c00a796e: feat: add example for Storage + Node.js
|
||||
- @nhost/nhost-js@2.2.7
|
||||
30
examples/node-storage/README.md
Normal file
30
examples/node-storage/README.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Node.js Storage Example
|
||||
|
||||
This example demonstrates how to use the [Nhost Storage SDK](https://docs.nhost.io/reference/javascript/storage) in Node.js.
|
||||
|
||||
Make sure to install the dependencies:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
## Settting up the environment
|
||||
|
||||
Create a `.env` file in the root of the project with the following content:
|
||||
|
||||
```bash
|
||||
SUBDOMAIN=<your-subdomain>
|
||||
REGION=<your-region>
|
||||
ADMIN_SECRET=<your-admin-secret>
|
||||
```
|
||||
|
||||
You can use the `.env.example` file as a starting point.
|
||||
|
||||
## Running the example
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
The example will download a file from a public URL and upload it to your Nhost
|
||||
Storage bucket.
|
||||
1
examples/node-storage/nhost/config.yaml
Normal file
1
examples/node-storage/nhost/config.yaml
Normal file
@@ -0,0 +1 @@
|
||||
version: 3
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Потвърдете смяната на вашия имейл</h2>
|
||||
<p>Използвайте посочения линк, за да повърдите смяната на имейл:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Смени имейл
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Потвърждение за смяна на имейл
|
||||
18
examples/node-storage/nhost/emails/bg/email-verify/body.html
Normal file
18
examples/node-storage/nhost/emails/bg/email-verify/body.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Потвърдете вашия имейл</h2>
|
||||
<p>Използвайте посочения линк, за да потвърдите вашия имейл:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Потвърдете имейл
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Потвърждаване на имейл
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Смяна на парола</h2>
|
||||
<p>Използвайте посочения линк, за да смените вашата парола:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Смяна на парола
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Смяна на парола
|
||||
@@ -0,0 +1 @@
|
||||
Вашият код е ${code}.
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Магически линк за вход</h2>
|
||||
<p>Използвайте посочения линк за защитен и бърз вход:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Вход
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Магически линк за вход
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Potvrzení změny emailové adresy</h2>
|
||||
<p>Použijte tento odkaz k potvrzení změny emailové adresy:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Změnit email
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Změna vaší emailové adresy
|
||||
18
examples/node-storage/nhost/emails/cs/email-verify/body.html
Normal file
18
examples/node-storage/nhost/emails/cs/email-verify/body.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Ověření emailové adresy</h2>
|
||||
<p>Použijte tento odkaz k ověření vaší emailové adresy:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Ověřit emailovou adresu
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Ověření vaší emailové adresy
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Obnova hesla</h2>
|
||||
<p>Použijte tento odkaz k obnovení vašeho hesla:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Obnova hesla
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Obnova hesla
|
||||
@@ -0,0 +1 @@
|
||||
Váš kód je ${code}.
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Magický odkaz</h2>
|
||||
<p>Použijte tento odkaz k bezpečnému přihlášení:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Přihlášení
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Bezpečný odkaz k přihlášení
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Confirm Email Change</h2>
|
||||
<p>Use this link to confirm changing email:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Change email
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Change your email address
|
||||
18
examples/node-storage/nhost/emails/en/email-verify/body.html
Normal file
18
examples/node-storage/nhost/emails/en/email-verify/body.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Verify Email</h2>
|
||||
<p>Use this link to verify your email:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Verify Email
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Verify your email
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Reset Password</h2>
|
||||
<p>Use this link to reset your password:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Reset password
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Reset your password
|
||||
@@ -0,0 +1 @@
|
||||
Your code is ${code}.
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Magic Link</h2>
|
||||
<p>Use this link to securely sign in:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Sign In
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Secure sign-in link
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Confirmar cambio de correo electrónico</h2>
|
||||
<p>Utiliza el siguiente enlace para confirmar el cambio de correo:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Cambiar correo electrónico
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Cambiar dirección de correo electrónico
|
||||
18
examples/node-storage/nhost/emails/es/email-verify/body.html
Normal file
18
examples/node-storage/nhost/emails/es/email-verify/body.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Verificar correo electrónico</h2>
|
||||
<p>Utilza el siguiente enlace para verificar tu correo:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Verificar correo electrónico
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Verifica tu correo electrónico
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Recuperar contraseña</h2>
|
||||
<p>Utiliza el siguiente enlace para recuperar tu contraseña:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Recuperar contraseña
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Recuperar contraseña
|
||||
@@ -0,0 +1 @@
|
||||
Tu código es ${code}.
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Enlace mágico</h2>
|
||||
<p>Utiliza este enlace para iniciar sesión de forma segura:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Iniciar sesión
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Enlace de acceso seguro
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Confirmer changement de courriel</h2>
|
||||
<p>Utilisez ce lien pour confirmer le changement de courriel:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Changer courriel
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Changez votre adresse courriel
|
||||
18
examples/node-storage/nhost/emails/fr/email-verify/body.html
Normal file
18
examples/node-storage/nhost/emails/fr/email-verify/body.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Vérifiez votre courriel</h2>
|
||||
<p>Utilisez ce lien pour vérifier votre courriel:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Vérifier courriel
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Vérifier votre courriel
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Réinitializer votre mot de passe</h2>
|
||||
<p>Utilisez ce lien pour réinitializer votre mot de passe:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Réinitializer mot de passe
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Réinitialiser votre mot de passe
|
||||
@@ -0,0 +1 @@
|
||||
Votre code est ${code}.
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Lien magique</h2>
|
||||
<p>Utilisez ce lien pour vous connecter de façon sécuritaire:</p>
|
||||
<p>
|
||||
<a href="${link}">
|
||||
Connexion
|
||||
</a>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
Lien de connexion sécurisé
|
||||
145
examples/node-storage/nhost/nhost.toml
Normal file
145
examples/node-storage/nhost/nhost.toml
Normal file
@@ -0,0 +1,145 @@
|
||||
[global]
|
||||
|
||||
[hasura]
|
||||
version = 'v2.25.1-ce'
|
||||
adminSecret = '{{ secrets.HASURA_GRAPHQL_ADMIN_SECRET }}'
|
||||
webhookSecret = '{{ secrets.NHOST_WEBHOOK_SECRET }}'
|
||||
|
||||
[[hasura.jwtSecrets]]
|
||||
type = 'HS256'
|
||||
key = '{{ secrets.HASURA_GRAPHQL_JWT_SECRET }}'
|
||||
|
||||
[hasura.settings]
|
||||
corsDomain = ['*']
|
||||
devMode = true
|
||||
enableAllowList = false
|
||||
enableConsole = true
|
||||
enableRemoteSchemaPermissions = false
|
||||
enabledAPIs = ['metadata', 'graphql', 'pgdump', 'config']
|
||||
|
||||
[hasura.logs]
|
||||
level = 'warn'
|
||||
|
||||
[hasura.events]
|
||||
httpPoolSize = 100
|
||||
|
||||
[functions]
|
||||
[functions.node]
|
||||
version = 16
|
||||
|
||||
[auth]
|
||||
version = '0.20.1'
|
||||
|
||||
[auth.redirections]
|
||||
clientUrl = 'http://localhost:3000'
|
||||
|
||||
[auth.signUp]
|
||||
enabled = true
|
||||
|
||||
[auth.user]
|
||||
[auth.user.roles]
|
||||
default = 'user'
|
||||
allowed = ['user', 'me']
|
||||
|
||||
[auth.user.locale]
|
||||
default = 'en'
|
||||
allowed = ['en']
|
||||
|
||||
[auth.user.gravatar]
|
||||
enabled = true
|
||||
default = 'blank'
|
||||
rating = 'g'
|
||||
|
||||
[auth.user.email]
|
||||
|
||||
[auth.user.emailDomains]
|
||||
|
||||
[auth.session]
|
||||
[auth.session.accessToken]
|
||||
expiresIn = 900
|
||||
|
||||
[auth.session.refreshToken]
|
||||
expiresIn = 43200
|
||||
|
||||
[auth.method]
|
||||
[auth.method.anonymous]
|
||||
enabled = false
|
||||
|
||||
[auth.method.emailPasswordless]
|
||||
enabled = false
|
||||
|
||||
[auth.method.emailPassword]
|
||||
hibpEnabled = false
|
||||
emailVerificationRequired = true
|
||||
passwordMinLength = 9
|
||||
|
||||
[auth.method.smsPasswordless]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth]
|
||||
[auth.method.oauth.apple]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.azuread]
|
||||
tenant = 'common'
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.bitbucket]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.discord]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.facebook]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.github]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.gitlab]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.google]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.linkedin]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.spotify]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.strava]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.twitch]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.twitter]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.windowslive]
|
||||
enabled = false
|
||||
|
||||
[auth.method.oauth.workos]
|
||||
enabled = false
|
||||
|
||||
[auth.method.webauthn]
|
||||
enabled = false
|
||||
|
||||
[auth.method.webauthn.attestation]
|
||||
timeout = 60000
|
||||
|
||||
[auth.totp]
|
||||
enabled = false
|
||||
|
||||
[postgres]
|
||||
version = '14.6-20230406-2'
|
||||
|
||||
[provider]
|
||||
|
||||
[storage]
|
||||
version = '0.3.5'
|
||||
|
||||
[observability]
|
||||
[observability.grafana]
|
||||
adminPassword = '{{ secrets.GRAFANA_ADMIN_PASSWORD }}'
|
||||
22
examples/node-storage/package.json
Normal file
22
examples/node-storage/package.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "@nhost-examples/node-storage",
|
||||
"version": "0.0.2",
|
||||
"private": true,
|
||||
"description": "This is an example of how to use the Storage with Node.js",
|
||||
"main": "src/index.mjs",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "node src/index.mjs"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@nhost/nhost-js": "*",
|
||||
"dotenv": "^16.1.3",
|
||||
"form-data": "^4.0.0",
|
||||
"node-fetch": "^3.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.15.11"
|
||||
}
|
||||
}
|
||||
148
examples/node-storage/pnpm-lock.yaml
generated
Normal file
148
examples/node-storage/pnpm-lock.yaml
generated
Normal file
@@ -0,0 +1,148 @@
|
||||
lockfileVersion: '6.0'
|
||||
|
||||
dependencies:
|
||||
'@nhost/nhost-js':
|
||||
specifier: '*'
|
||||
version: 0.0.1-0
|
||||
dotenv:
|
||||
specifier: ^16.1.3
|
||||
version: 16.1.3
|
||||
form-data:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
node-fetch:
|
||||
specifier: ^3.3.0
|
||||
version: 3.3.0
|
||||
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^18.15.11
|
||||
version: 18.15.11
|
||||
|
||||
packages:
|
||||
|
||||
/@nhost/nhost-js@0.0.1-0:
|
||||
resolution: {integrity: sha512-fXAhovIYPpuzrSewFjaI3AYgp/iUj07A0+sgPUL73k61DwrPBt1wa533xjoupQVVB9KQHnYIXPJO8wn3pEvphQ==}
|
||||
dependencies:
|
||||
jwt-decode: 3.1.2
|
||||
query-string: 7.1.3
|
||||
dev: false
|
||||
|
||||
/@types/node@18.15.11:
|
||||
resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==}
|
||||
dev: true
|
||||
|
||||
/asynckit@0.4.0:
|
||||
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
|
||||
dev: false
|
||||
|
||||
/combined-stream@1.0.8:
|
||||
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dependencies:
|
||||
delayed-stream: 1.0.0
|
||||
dev: false
|
||||
|
||||
/data-uri-to-buffer@4.0.1:
|
||||
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
|
||||
engines: {node: '>= 12'}
|
||||
dev: false
|
||||
|
||||
/decode-uri-component@0.2.2:
|
||||
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
|
||||
engines: {node: '>=0.10'}
|
||||
dev: false
|
||||
|
||||
/delayed-stream@1.0.0:
|
||||
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: false
|
||||
|
||||
/dotenv@16.1.3:
|
||||
resolution: {integrity: sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==}
|
||||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
/fetch-blob@3.2.0:
|
||||
resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
|
||||
engines: {node: ^12.20 || >= 14.13}
|
||||
dependencies:
|
||||
node-domexception: 1.0.0
|
||||
web-streams-polyfill: 3.2.1
|
||||
dev: false
|
||||
|
||||
/filter-obj@1.1.0:
|
||||
resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/form-data@4.0.0:
|
||||
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
|
||||
engines: {node: '>= 6'}
|
||||
dependencies:
|
||||
asynckit: 0.4.0
|
||||
combined-stream: 1.0.8
|
||||
mime-types: 2.1.35
|
||||
dev: false
|
||||
|
||||
/formdata-polyfill@4.0.10:
|
||||
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
|
||||
engines: {node: '>=12.20.0'}
|
||||
dependencies:
|
||||
fetch-blob: 3.2.0
|
||||
dev: false
|
||||
|
||||
/jwt-decode@3.1.2:
|
||||
resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==}
|
||||
dev: false
|
||||
|
||||
/mime-db@1.52.0:
|
||||
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: false
|
||||
|
||||
/mime-types@2.1.35:
|
||||
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dependencies:
|
||||
mime-db: 1.52.0
|
||||
dev: false
|
||||
|
||||
/node-domexception@1.0.0:
|
||||
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
|
||||
engines: {node: '>=10.5.0'}
|
||||
dev: false
|
||||
|
||||
/node-fetch@3.3.0:
|
||||
resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
dependencies:
|
||||
data-uri-to-buffer: 4.0.1
|
||||
fetch-blob: 3.2.0
|
||||
formdata-polyfill: 4.0.10
|
||||
dev: false
|
||||
|
||||
/query-string@7.1.3:
|
||||
resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
|
||||
engines: {node: '>=6'}
|
||||
dependencies:
|
||||
decode-uri-component: 0.2.2
|
||||
filter-obj: 1.1.0
|
||||
split-on-first: 1.1.0
|
||||
strict-uri-encode: 2.0.0
|
||||
dev: false
|
||||
|
||||
/split-on-first@1.1.0:
|
||||
resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/strict-uri-encode@2.0.0:
|
||||
resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/web-streams-polyfill@3.2.1:
|
||||
resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
|
||||
engines: {node: '>= 8'}
|
||||
dev: false
|
||||
14
examples/node-storage/src/client.mjs
Normal file
14
examples/node-storage/src/client.mjs
Normal file
@@ -0,0 +1,14 @@
|
||||
import { NhostClient } from '@nhost/nhost-js'
|
||||
|
||||
/**
|
||||
* Create a new Nhost client.
|
||||
*
|
||||
* @returns {NhostClient} A new Nhost client.
|
||||
*/
|
||||
export function createClient() {
|
||||
return new NhostClient({
|
||||
subdomain: process.env.SUBDOMAIN,
|
||||
region: process.env.REGION,
|
||||
adminSecret: process.env.ADMIN_SECRET
|
||||
})
|
||||
}
|
||||
62
examples/node-storage/src/index.mjs
Normal file
62
examples/node-storage/src/index.mjs
Normal file
@@ -0,0 +1,62 @@
|
||||
import dotenv from 'dotenv'
|
||||
import FormData from 'form-data'
|
||||
import fetch from 'node-fetch'
|
||||
import { createClient } from './client.mjs'
|
||||
|
||||
dotenv.config()
|
||||
|
||||
const client = createClient()
|
||||
|
||||
async function uploadImage() {
|
||||
try {
|
||||
// Download image from remote URL
|
||||
const response = await fetch(
|
||||
'https://hips.hearstapps.com/hmg-prod/images/cute-cat-photos-1593441022.jpg?crop=1.00xw:0.753xh;0,0.153xh&resize=1200:*'
|
||||
)
|
||||
|
||||
if (!response.ok) {
|
||||
console.error('Image not found!')
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
const arrayBuffer = await response.arrayBuffer()
|
||||
|
||||
const formData = new FormData()
|
||||
formData.append('file[]', Buffer.from(arrayBuffer), 'cat.jpg')
|
||||
|
||||
// Upload file to Nhost Storage
|
||||
const { error: uploadError, fileMetadata } = await client.storage.upload({
|
||||
formData,
|
||||
headers: { ...formData.getHeaders() }
|
||||
})
|
||||
|
||||
if (uploadError) {
|
||||
console.error(uploadError)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
console.info(`File has been uploaded successfully!`)
|
||||
|
||||
const uploadedFile =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
console.info(`ID: ${uploadedFile?.id}`)
|
||||
|
||||
// Generate a presigned URL for the uploaded file
|
||||
const { error: presignError, presignedUrl: blurredImage } =
|
||||
await client.storage.getPresignedUrl({ fileId: uploadedFile.id })
|
||||
|
||||
if (presignError) {
|
||||
console.error(presignError)
|
||||
return
|
||||
}
|
||||
|
||||
console.info(`Presigned URL: ${blurredImage.url}`)
|
||||
} catch (error) {
|
||||
console.error(error.message)
|
||||
}
|
||||
}
|
||||
|
||||
uploadImage()
|
||||
@@ -1,5 +1,13 @@
|
||||
# @nhost-examples/vue-quickstart
|
||||
|
||||
## 0.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4c00a796e: chore(autoimports): update type definitions
|
||||
- @nhost/apollo@5.2.9
|
||||
- @nhost/vue@1.13.27
|
||||
|
||||
## 0.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
35
examples/vue-quickstart/auto-imports.d.ts
vendored
35
examples/vue-quickstart/auto-imports.d.ts
vendored
@@ -13,7 +13,9 @@ declare global {
|
||||
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
|
||||
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
|
||||
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
|
||||
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
|
||||
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
|
||||
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
|
||||
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
|
||||
const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
|
||||
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
|
||||
@@ -21,9 +23,6 @@ declare global {
|
||||
const extendRef: typeof import('@vueuse/core')['extendRef']
|
||||
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
|
||||
const isDefined: typeof import('@vueuse/core')['isDefined']
|
||||
const logicAnd: typeof import('@vueuse/core')['logicAnd']
|
||||
const logicNot: typeof import('@vueuse/core')['logicNot']
|
||||
const logicOr: typeof import('@vueuse/core')['logicOr']
|
||||
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
|
||||
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
|
||||
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
|
||||
@@ -48,6 +47,8 @@ declare global {
|
||||
const throttledRef: typeof import('@vueuse/core')['throttledRef']
|
||||
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
|
||||
const toReactive: typeof import('@vueuse/core')['toReactive']
|
||||
const toRef: typeof import('@vueuse/core')['toRef']
|
||||
const toValue: typeof import('@vueuse/core')['toValue']
|
||||
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
|
||||
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
|
||||
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
|
||||
@@ -56,6 +57,19 @@ declare global {
|
||||
const unrefElement: typeof import('@vueuse/core')['unrefElement']
|
||||
const until: typeof import('@vueuse/core')['until']
|
||||
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
|
||||
const useAnimate: typeof import('@vueuse/core')['useAnimate']
|
||||
const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']
|
||||
const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
|
||||
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
|
||||
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
|
||||
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
|
||||
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
|
||||
const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes']
|
||||
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
|
||||
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
|
||||
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
|
||||
const useArraySome: typeof import('@vueuse/core')['useArraySome']
|
||||
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
|
||||
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
|
||||
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
|
||||
const useBase64: typeof import('@vueuse/core')['useBase64']
|
||||
@@ -65,8 +79,8 @@ declare global {
|
||||
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
|
||||
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
|
||||
const useCached: typeof import('@vueuse/core')['useCached']
|
||||
const useClamp: typeof import('@vueuse/core')['useClamp']
|
||||
const useClipboard: typeof import('@vueuse/core')['useClipboard']
|
||||
const useCloned: typeof import('@vueuse/core')['useCloned']
|
||||
const useColorMode: typeof import('@vueuse/core')['useColorMode']
|
||||
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
|
||||
const useCounter: typeof import('@vueuse/core')['useCounter']
|
||||
@@ -133,12 +147,18 @@ declare global {
|
||||
const useOnline: typeof import('@vueuse/core')['useOnline']
|
||||
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
|
||||
const useParallax: typeof import('@vueuse/core')['useParallax']
|
||||
const useParentElement: typeof import('@vueuse/core')['useParentElement']
|
||||
const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver']
|
||||
const usePermission: typeof import('@vueuse/core')['usePermission']
|
||||
const usePointer: typeof import('@vueuse/core')['usePointer']
|
||||
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
|
||||
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
|
||||
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
|
||||
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
|
||||
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
|
||||
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
|
||||
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
|
||||
const usePrevious: typeof import('@vueuse/core')['usePrevious']
|
||||
const useRafFn: typeof import('@vueuse/core')['useRafFn']
|
||||
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
|
||||
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
|
||||
@@ -151,15 +171,18 @@ declare global {
|
||||
const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
|
||||
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
|
||||
const useShare: typeof import('@vueuse/core')['useShare']
|
||||
const useSorted: typeof import('@vueuse/core')['useSorted']
|
||||
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
|
||||
const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
|
||||
const useStepper: typeof import('@vueuse/core')['useStepper']
|
||||
const useStorage: typeof import('@vueuse/core')['useStorage']
|
||||
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
|
||||
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
|
||||
const useSupported: typeof import('@vueuse/core')['useSupported']
|
||||
const useSwipe: typeof import('@vueuse/core')['useSwipe']
|
||||
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
|
||||
const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
|
||||
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
|
||||
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
|
||||
const useThrottle: typeof import('@vueuse/core')['useThrottle']
|
||||
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
|
||||
@@ -171,6 +194,8 @@ declare global {
|
||||
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
|
||||
const useTitle: typeof import('@vueuse/core')['useTitle']
|
||||
const useToggle: typeof import('@vueuse/core')['useToggle']
|
||||
const useToNumber: typeof import('@vueuse/core')['useToNumber']
|
||||
const useToString: typeof import('@vueuse/core')['useToString']
|
||||
const useTransition: typeof import('@vueuse/core')['useTransition']
|
||||
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
|
||||
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
|
||||
@@ -189,7 +214,9 @@ declare global {
|
||||
const watchArray: typeof import('@vueuse/core')['watchArray']
|
||||
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
|
||||
const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
|
||||
const watchDeep: typeof import('@vueuse/core')['watchDeep']
|
||||
const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
|
||||
const watchImmediate: typeof import('@vueuse/core')['watchImmediate']
|
||||
const watchOnce: typeof import('@vueuse/core')['watchOnce']
|
||||
const watchPausable: typeof import('@vueuse/core')['watchPausable']
|
||||
const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost-examples/vue-quickstart",
|
||||
"version": "0.0.8",
|
||||
"version": "0.0.9",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/apollo
|
||||
|
||||
## 5.2.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/nhost-js@2.2.7
|
||||
|
||||
## 5.2.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/apollo",
|
||||
"version": "5.2.8",
|
||||
"version": "5.2.9",
|
||||
"description": "Nhost Apollo Client library",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @nhost/react-apollo
|
||||
|
||||
## 5.0.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/apollo@5.2.9
|
||||
- @nhost/react@2.0.21
|
||||
|
||||
## 5.0.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/react-apollo",
|
||||
"version": "5.0.24",
|
||||
"version": "5.0.25",
|
||||
"description": "Nhost React Apollo client",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/react-urql
|
||||
|
||||
## 2.0.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/react@2.0.21
|
||||
|
||||
## 2.0.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/react-urql",
|
||||
"version": "2.0.21",
|
||||
"version": "2.0.22",
|
||||
"description": "Nhost React URQL client",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -89,10 +89,10 @@
|
||||
},
|
||||
"packageManager": "pnpm@8.5.1",
|
||||
"engines": {
|
||||
"node": ">=16 <17",
|
||||
"node": ">=18 <19",
|
||||
"pnpm": ">=8.0.0"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "./config/.eslintrc.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/hasura-storage-js
|
||||
|
||||
## 2.1.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 4c00a796e: fix(upload): don't break upload in Node 18
|
||||
|
||||
## 2.1.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/hasura-storage-js",
|
||||
"version": "2.1.4",
|
||||
"version": "2.1.5",
|
||||
"description": "Hasura-storage client",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
@@ -62,8 +62,8 @@
|
||||
"docgen": "pnpm typedoc && docgen --config ./storage.docgen.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"fetch-ponyfill": "^7.1.0",
|
||||
"form-data": "^4.0.0",
|
||||
"isomorphic-unfetch": "^3.1.0",
|
||||
"xstate": "^4.33.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
import fetchPonyfill from 'fetch-ponyfill'
|
||||
import {
|
||||
ApiDeleteParams,
|
||||
ApiDeleteResponse,
|
||||
ApiGetPresignedUrlParams,
|
||||
ApiGetPresignedUrlResponse,
|
||||
ApiUploadParams,
|
||||
StorageUploadFormDataParams,
|
||||
StorageUploadResponse
|
||||
} from './utils/types'
|
||||
import { fetchUpload } from './utils/upload'
|
||||
|
||||
const { fetch } = fetchPonyfill()
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* This is an internal class.
|
||||
@@ -22,15 +24,20 @@ export class HasuraStorageApi {
|
||||
this.url = url
|
||||
}
|
||||
|
||||
async upload(params: ApiUploadParams): Promise<StorageUploadResponse> {
|
||||
const { formData } = params
|
||||
|
||||
async upload({
|
||||
formData,
|
||||
headers,
|
||||
bucketId,
|
||||
id,
|
||||
name
|
||||
}: StorageUploadFormDataParams): Promise<StorageUploadResponse> {
|
||||
return fetchUpload(this.url, formData, {
|
||||
accessToken: this.accessToken,
|
||||
adminSecret: this.adminSecret,
|
||||
bucketId: params.bucketId,
|
||||
fileId: params.id,
|
||||
name: params.name
|
||||
bucketId,
|
||||
fileId: id,
|
||||
name,
|
||||
headers
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -76,19 +76,18 @@ export class HasuraStorageClient {
|
||||
async upload(params: StorageUploadFileParams): Promise<StorageUploadResponse>
|
||||
async upload(params: StorageUploadFormDataParams): Promise<StorageUploadResponse>
|
||||
async upload(params: StorageUploadParams): Promise<StorageUploadResponse> {
|
||||
let formData: FormData
|
||||
|
||||
if ('file' in params) {
|
||||
formData = new FormData()
|
||||
formData.append('file', params.file)
|
||||
} else {
|
||||
formData = params.formData
|
||||
const formData = new FormData()
|
||||
|
||||
formData.append('file[]', params.file)
|
||||
|
||||
return this.api.upload({
|
||||
...params,
|
||||
formData
|
||||
})
|
||||
}
|
||||
|
||||
return this.api.upload({
|
||||
...params,
|
||||
formData
|
||||
})
|
||||
return this.api.upload(params)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -143,10 +143,16 @@ export const createFileUploadMachine = () =>
|
||||
if (error) {
|
||||
callback({ type: 'UPLOAD_ERROR', error })
|
||||
}
|
||||
if (fileMetadata) {
|
||||
if (fileMetadata && !('processedFiles' in fileMetadata)) {
|
||||
const { id, bucketId } = fileMetadata
|
||||
callback({ type: 'UPLOAD_DONE', id, bucketId })
|
||||
}
|
||||
|
||||
if (fileMetadata && 'processedFiles' in fileMetadata) {
|
||||
// TODO: Add support for multiple files
|
||||
const { id, bucketId } = fileMetadata.processedFiles[0]
|
||||
callback({ type: 'UPLOAD_DONE', id, bucketId })
|
||||
}
|
||||
})
|
||||
|
||||
return () => {}
|
||||
|
||||
@@ -39,13 +39,14 @@ export interface StorageUploadFormDataParams {
|
||||
id?: string
|
||||
name?: string
|
||||
bucketId?: string
|
||||
headers?: Record<string, string>
|
||||
}
|
||||
|
||||
// works in browser and server
|
||||
export type StorageUploadParams = StorageUploadFileParams | StorageUploadFormDataParams
|
||||
|
||||
export type StorageUploadResponse =
|
||||
| { fileMetadata: FileResponse; error: null }
|
||||
| { fileMetadata: FileResponse | { processedFiles: FileResponse[] }; error: null }
|
||||
| { fileMetadata: null; error: StorageErrorPayload }
|
||||
|
||||
export interface StorageImageTransformationParams {
|
||||
@@ -94,13 +95,6 @@ export interface FileResponse {
|
||||
uploadedByUserId: string
|
||||
}
|
||||
|
||||
export interface ApiUploadParams {
|
||||
formData: FormData
|
||||
id?: string
|
||||
name?: string
|
||||
bucketId?: string
|
||||
}
|
||||
|
||||
// TODO not implemented yet in hasura-storage
|
||||
// export interface ApiGetPresignedUrlParams extends StorageImageTransformationParams {
|
||||
export interface ApiGetPresignedUrlParams {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import fetchPonyfill from 'fetch-ponyfill'
|
||||
import FormData from 'form-data'
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
import { StorageErrorPayload, StorageUploadResponse } from './types'
|
||||
|
||||
/** Convert any string into ISO-8859-1 */
|
||||
@@ -12,6 +12,8 @@ export const toIso88591 = (fileName: string) => {
|
||||
}
|
||||
}
|
||||
|
||||
const { fetch } = fetchPonyfill()
|
||||
|
||||
export const fetchUpload = async (
|
||||
backendUrl: string,
|
||||
data: FormData,
|
||||
@@ -21,7 +23,8 @@ export const fetchUpload = async (
|
||||
fileId,
|
||||
bucketId,
|
||||
adminSecret,
|
||||
onUploadProgress
|
||||
onUploadProgress,
|
||||
headers: initialHeaders = {}
|
||||
}: {
|
||||
accessToken?: string
|
||||
name?: string
|
||||
@@ -29,9 +32,13 @@ export const fetchUpload = async (
|
||||
bucketId?: string
|
||||
adminSecret?: string
|
||||
onUploadProgress?: (event: { total: number; loaded: number }) => void
|
||||
headers?: Record<string, string>
|
||||
} = {}
|
||||
): Promise<StorageUploadResponse> => {
|
||||
const headers: HeadersInit = {}
|
||||
const headers: HeadersInit = {
|
||||
...initialHeaders
|
||||
}
|
||||
|
||||
if (fileId) {
|
||||
headers['x-nhost-file-id'] = fileId
|
||||
}
|
||||
@@ -58,16 +65,18 @@ export const fetchUpload = async (
|
||||
body: data as any // * https://github.com/form-data/form-data/issues/513
|
||||
})
|
||||
|
||||
const responseData = await response.json()
|
||||
|
||||
if (!response.ok) {
|
||||
const error: StorageErrorPayload = {
|
||||
status: response.status,
|
||||
message: await response.text(),
|
||||
message: responseData?.error?.message || response.statusText,
|
||||
// * errors from hasura-storage are not codified
|
||||
error: response.statusText
|
||||
}
|
||||
return { error, fileMetadata: null }
|
||||
}
|
||||
const fileMetadata = await response.json()
|
||||
const fileMetadata = responseData
|
||||
return { fileMetadata, error: null }
|
||||
} catch (e) {
|
||||
const error: StorageErrorPayload = {
|
||||
@@ -78,6 +87,7 @@ export const fetchUpload = async (
|
||||
return { error, fileMetadata: null }
|
||||
}
|
||||
}
|
||||
|
||||
// * Browser environment: XMLHttpRequest is available
|
||||
return new Promise((resolve) => {
|
||||
let xhr = new XMLHttpRequest()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import FormData from 'form-data'
|
||||
import fs from 'fs'
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { storage } from './utils/helpers'
|
||||
@@ -12,8 +11,17 @@ describe('test get presigned url of file', () => {
|
||||
|
||||
const { fileMetadata } = await storage.upload({ formData })
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const fileId =
|
||||
'processedFiles' in fileMetadata
|
||||
? fileMetadata.processedFiles[0]?.id
|
||||
: (fileMetadata.id as string)
|
||||
|
||||
const { presignedUrl, error } = await storage.getPresignedUrl({
|
||||
fileId: fileMetadata?.id as string
|
||||
fileId
|
||||
})
|
||||
|
||||
expect(presignedUrl).not.toBeNull()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import FormData from 'form-data'
|
||||
import fs from 'fs'
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { storage } from './utils/helpers'
|
||||
@@ -15,8 +14,17 @@ describe('test get file', () => {
|
||||
})
|
||||
expect(error).toBeNull()
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const fileId =
|
||||
'processedFiles' in fileMetadata
|
||||
? fileMetadata.processedFiles[0]?.id
|
||||
: (fileMetadata.id as string)
|
||||
|
||||
const url = storage.getPublicUrl({
|
||||
fileId: fileMetadata?.id as string
|
||||
fileId
|
||||
})
|
||||
|
||||
expect(url).toBeTruthy()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import FormData from 'form-data'
|
||||
import fs from 'fs'
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
import jpeg from 'jpeg-js'
|
||||
import pixelmatch from 'pixelmatch'
|
||||
import { beforeAll, describe, expect, it } from 'vitest'
|
||||
@@ -18,7 +17,15 @@ describe('Image transformation', () => {
|
||||
const { fileMetadata } = await storage.upload({
|
||||
formData: fd
|
||||
})
|
||||
fileId = fileMetadata?.id as string
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
fileId =
|
||||
'processedFiles' in fileMetadata
|
||||
? fileMetadata.processedFiles[0]?.id
|
||||
: (fileMetadata.id as string)
|
||||
})
|
||||
|
||||
it('should be able to change the image width in a public url', async () => {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import fetchPonyfill from 'fetch-ponyfill'
|
||||
import FormData from 'form-data'
|
||||
import fs from 'fs'
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { storage } from './utils/helpers'
|
||||
|
||||
const { fetch } = fetchPonyfill()
|
||||
|
||||
describe('test upload', () => {
|
||||
it('should upload a file from the file system', async () => {
|
||||
const fd = new FormData()
|
||||
@@ -44,8 +46,15 @@ describe('test upload', () => {
|
||||
id: RANDOM_UUID
|
||||
})
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const { id: fileId } =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
expect(error).toBeNull()
|
||||
expect(fileMetadata?.id).toBe(RANDOM_UUID)
|
||||
expect(fileId).toBe(RANDOM_UUID)
|
||||
})
|
||||
|
||||
it('should upload a file with specific name', async () => {
|
||||
@@ -59,8 +68,15 @@ describe('test upload', () => {
|
||||
name: FILE_NAME
|
||||
})
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const { name: fileName } =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
expect(error).toBeNull()
|
||||
expect(fileMetadata?.name).toBe(FILE_NAME)
|
||||
expect(fileName).toBe(FILE_NAME)
|
||||
})
|
||||
|
||||
it('should upload a file with a non-ISO 8859-1 name', async () => {
|
||||
@@ -72,8 +88,15 @@ describe('test upload', () => {
|
||||
name: '你 好'
|
||||
})
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const { name: fileName } =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
expect(error).toBeNull()
|
||||
expect(fileMetadata?.name).toMatchInlineSnapshot('"%E4%BD%A0%20%E5%A5%BD"')
|
||||
expect(fileName).toMatchInlineSnapshot('"%E4%BD%A0%20%E5%A5%BD"')
|
||||
})
|
||||
|
||||
it('should upload a file with specific id and name', async () => {
|
||||
@@ -89,9 +112,16 @@ describe('test upload', () => {
|
||||
name: FILE_NAME
|
||||
})
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const { id: fileId, name: fileName } =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
expect(error).toBeNull()
|
||||
expect(fileMetadata?.id).toBe(RANDOM_UUID)
|
||||
expect(fileMetadata?.name).toBe(FILE_NAME)
|
||||
expect(fileId).toBe(RANDOM_UUID)
|
||||
expect(fileName).toBe(FILE_NAME)
|
||||
})
|
||||
|
||||
it('should upload a file with specific bucket id', async () => {
|
||||
@@ -103,8 +133,15 @@ describe('test upload', () => {
|
||||
bucketId: 'default'
|
||||
})
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const { bucketId } =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
expect(error).toBeNull()
|
||||
expect(fileMetadata?.bucketId).toBe('default')
|
||||
expect(bucketId).toBe('default')
|
||||
})
|
||||
|
||||
it('should upload a file with specific bucket id (test-bucket)', async () => {
|
||||
@@ -116,7 +153,14 @@ describe('test upload', () => {
|
||||
bucketId: 'test-bucket'
|
||||
})
|
||||
|
||||
if (!fileMetadata) {
|
||||
throw new Error('fileMetadata is missing')
|
||||
}
|
||||
|
||||
const { bucketId } =
|
||||
'processedFiles' in fileMetadata ? fileMetadata.processedFiles[0] : fileMetadata
|
||||
|
||||
expect(error).toBeNull()
|
||||
expect(fileMetadata?.bucketId).toBe('test-bucket')
|
||||
expect(bucketId).toBe('test-bucket')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/nextjs
|
||||
|
||||
## 1.13.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/react@2.0.21
|
||||
|
||||
## 1.13.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/nextjs",
|
||||
"version": "1.13.26",
|
||||
"version": "1.13.27",
|
||||
"description": "Nhost NextJS library",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @nhost/nhost-js
|
||||
|
||||
## 2.2.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4c00a796e]
|
||||
- @nhost/hasura-storage-js@2.1.5
|
||||
|
||||
## 2.2.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/nhost-js",
|
||||
"version": "2.2.6",
|
||||
"version": "2.2.7",
|
||||
"description": "Nhost JavaScript SDK",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/react
|
||||
|
||||
## 2.0.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/nhost-js@2.2.7
|
||||
|
||||
## 2.0.20
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/react",
|
||||
"version": "2.0.20",
|
||||
"version": "2.0.21",
|
||||
"description": "Nhost React library",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @nhost/vue
|
||||
|
||||
## 1.13.27
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @nhost/nhost-js@2.2.7
|
||||
|
||||
## 1.13.26
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nhost/vue",
|
||||
"version": "1.13.26",
|
||||
"version": "1.13.27",
|
||||
"description": "Nhost Vue library",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
|
||||
173
pnpm-lock.yaml
generated
173
pnpm-lock.yaml
generated
@@ -846,6 +846,25 @@ importers:
|
||||
specifier: ^4.33.5
|
||||
version: 4.33.6
|
||||
|
||||
examples/node-storage:
|
||||
dependencies:
|
||||
'@nhost/nhost-js':
|
||||
specifier: '*'
|
||||
version: link:../../packages/nhost-js
|
||||
dotenv:
|
||||
specifier: ^16.1.3
|
||||
version: 16.1.3
|
||||
form-data:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
node-fetch:
|
||||
specifier: ^3.3.0
|
||||
version: 3.3.0
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^18.15.11
|
||||
version: 18.16.14
|
||||
|
||||
examples/react-apollo:
|
||||
dependencies:
|
||||
'@apollo/client':
|
||||
@@ -1403,12 +1422,12 @@ importers:
|
||||
|
||||
packages/hasura-storage-js:
|
||||
dependencies:
|
||||
fetch-ponyfill:
|
||||
specifier: ^7.1.0
|
||||
version: 7.1.0
|
||||
form-data:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
isomorphic-unfetch:
|
||||
specifier: ^3.1.0
|
||||
version: 3.1.0(encoding@0.1.13)
|
||||
xstate:
|
||||
specifier: ^4.33.5
|
||||
version: 4.33.6
|
||||
@@ -7062,7 +7081,7 @@ packages:
|
||||
dependencies:
|
||||
gqty: 2.3.0(graphql@16.6.0)
|
||||
graphql: 16.6.0
|
||||
undici: 5.12.0
|
||||
undici: 5.22.1
|
||||
dev: true
|
||||
|
||||
/@gqty/react@2.1.0(gqty@2.3.0)(graphql@16.6.0)(react@18.2.0):
|
||||
@@ -8144,7 +8163,7 @@ packages:
|
||||
'@types/jsonwebtoken': 9.0.0
|
||||
chalk: 4.1.2
|
||||
debug: 4.3.4
|
||||
dotenv: 16.0.3
|
||||
dotenv: 16.1.3
|
||||
graphql: 16.6.0
|
||||
graphql-request: 5.1.0(encoding@0.1.13)(graphql@16.6.0)
|
||||
http-proxy-agent: 5.0.0
|
||||
@@ -8177,7 +8196,7 @@ packages:
|
||||
'@types/jsonwebtoken': 8.5.9
|
||||
chalk: 4.1.2
|
||||
debug: 4.3.4
|
||||
dotenv: 16.0.3
|
||||
dotenv: 16.1.3
|
||||
graphql: 16.6.0
|
||||
graphql-request: 4.3.0(graphql@16.6.0)
|
||||
http-proxy-agent: 5.0.0
|
||||
@@ -8210,7 +8229,7 @@ packages:
|
||||
'@types/jsonwebtoken': 8.5.9
|
||||
chalk: 4.1.2
|
||||
debug: 4.3.4
|
||||
dotenv: 16.0.3
|
||||
dotenv: 16.1.3
|
||||
graphql: 16.6.0
|
||||
graphql-request: 4.3.0(graphql@16.6.0)
|
||||
http-proxy-agent: 5.0.0
|
||||
@@ -8496,7 +8515,7 @@ packages:
|
||||
engines: {node: ^8.13.0 || >=10.10.0}
|
||||
dependencies:
|
||||
'@grpc/proto-loader': 0.7.3
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@grpc/proto-loader@0.7.3:
|
||||
@@ -8671,7 +8690,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/istanbul-lib-coverage': 2.0.4
|
||||
'@types/istanbul-reports': 3.0.1
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@types/yargs': 15.0.14
|
||||
chalk: 4.1.2
|
||||
dev: true
|
||||
@@ -8682,7 +8701,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/istanbul-lib-coverage': 2.0.4
|
||||
'@types/istanbul-reports': 3.0.1
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@types/yargs': 16.0.4
|
||||
chalk: 4.1.2
|
||||
dev: true
|
||||
@@ -8694,7 +8713,7 @@ packages:
|
||||
'@jest/schemas': 29.0.0
|
||||
'@types/istanbul-lib-coverage': 2.0.4
|
||||
'@types/istanbul-reports': 3.0.1
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@types/yargs': 17.0.13
|
||||
chalk: 4.1.2
|
||||
|
||||
@@ -9782,7 +9801,7 @@ packages:
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
playwright-core: 1.34.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
@@ -12729,12 +12748,12 @@ packages:
|
||||
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
|
||||
dependencies:
|
||||
'@types/connect': 3.4.35
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
|
||||
/@types/bonjour@3.5.10:
|
||||
resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/chai-subset@1.3.3:
|
||||
@@ -12751,13 +12770,13 @@ packages:
|
||||
resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==}
|
||||
dependencies:
|
||||
'@types/express-serve-static-core': 4.17.28
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/connect@3.4.35:
|
||||
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
|
||||
/@types/cookie@0.4.1:
|
||||
resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
|
||||
@@ -12804,7 +12823,7 @@ packages:
|
||||
/@types/express-serve-static-core@4.17.28:
|
||||
resolution: {integrity: sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@types/qs': 6.9.7
|
||||
'@types/range-parser': 1.2.4
|
||||
|
||||
@@ -12830,20 +12849,20 @@ packages:
|
||||
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
|
||||
dependencies:
|
||||
'@types/minimatch': 5.1.2
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/glob@8.1.0:
|
||||
resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==}
|
||||
dependencies:
|
||||
'@types/minimatch': 5.1.2
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/graceful-fs@4.1.5:
|
||||
resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/hast@2.3.4:
|
||||
@@ -12864,7 +12883,7 @@ packages:
|
||||
/@types/http-proxy@1.17.8:
|
||||
resolution: {integrity: sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/is-ci@3.0.0:
|
||||
@@ -12923,19 +12942,19 @@ packages:
|
||||
/@types/jsonwebtoken@8.5.9:
|
||||
resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/jsonwebtoken@9.0.0:
|
||||
resolution: {integrity: sha512-mM4TkDpA9oixqg1Fv2vVpOFyIVLJjm5x4k0V+K/rEsizfjD7Tk7LKk3GTtbB7KCfP0FEHQtsZqFxYA0+sijNVg==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/keyv@3.1.4:
|
||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/linkify-it@3.0.2:
|
||||
@@ -12990,7 +13009,7 @@ packages:
|
||||
/@types/node-fetch@2.6.2:
|
||||
resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
form-data: 3.0.1
|
||||
dev: true
|
||||
|
||||
@@ -13008,15 +13027,11 @@ packages:
|
||||
/@types/node@18.11.17:
|
||||
resolution: {integrity: sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==}
|
||||
|
||||
/@types/node@18.11.18:
|
||||
resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
|
||||
|
||||
/@types/node@18.11.9:
|
||||
resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==}
|
||||
|
||||
/@types/node@18.16.14:
|
||||
resolution: {integrity: sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg==}
|
||||
dev: true
|
||||
|
||||
/@types/normalize-package-data@2.4.1:
|
||||
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
||||
@@ -13043,7 +13058,7 @@ packages:
|
||||
/@types/pngjs@6.0.1:
|
||||
resolution: {integrity: sha512-J39njbdW1U/6YyVXvC9+1iflZghP8jgRf2ndYghdJb5xL49LYDB+1EuAxfbuJ2IBbWIL3AjHPQhgaTxT3YaYeg==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/prettier@2.7.1:
|
||||
@@ -13137,7 +13152,7 @@ packages:
|
||||
/@types/responselike@1.0.0:
|
||||
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/retry@0.12.1:
|
||||
@@ -13147,7 +13162,7 @@ packages:
|
||||
/@types/sax@1.2.4:
|
||||
resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/scheduler@0.16.2:
|
||||
@@ -13171,18 +13186,18 @@ packages:
|
||||
resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==}
|
||||
dependencies:
|
||||
'@types/mime': 1.3.2
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
|
||||
/@types/set-cookie-parser@2.4.2:
|
||||
resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/@types/sockjs@0.3.33:
|
||||
resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: false
|
||||
|
||||
/@types/source-list-map@0.1.2:
|
||||
@@ -13250,7 +13265,7 @@ packages:
|
||||
/@types/webpack-sources@3.2.0:
|
||||
resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@types/source-list-map': 0.1.2
|
||||
source-map: 0.7.4
|
||||
dev: true
|
||||
@@ -13258,7 +13273,7 @@ packages:
|
||||
/@types/webpack@4.41.33:
|
||||
resolution: {integrity: sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@types/tapable': 1.0.8
|
||||
'@types/uglify-js': 3.17.1
|
||||
'@types/webpack-sources': 3.2.0
|
||||
@@ -13269,7 +13284,7 @@ packages:
|
||||
/@types/ws@8.5.3:
|
||||
resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
|
||||
/@types/yargs-parser@21.0.0:
|
||||
resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
|
||||
@@ -14771,7 +14786,7 @@ packages:
|
||||
form-data-encoder: 1.7.2
|
||||
formdata-node: 4.3.2
|
||||
node-fetch: 2.6.7(encoding@0.1.13)
|
||||
undici: 5.12.0
|
||||
undici: 5.22.1
|
||||
web-streams-polyfill: 3.2.1
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
@@ -14787,7 +14802,7 @@ packages:
|
||||
form-data-encoder: 1.7.2
|
||||
formdata-node: 4.3.2
|
||||
node-fetch: 2.6.7(encoding@0.1.13)
|
||||
undici: 5.12.0
|
||||
undici: 5.22.1
|
||||
web-streams-polyfill: 3.2.1
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
@@ -14801,7 +14816,7 @@ packages:
|
||||
form-data-encoder: 1.7.2
|
||||
formdata-node: 4.3.2
|
||||
node-fetch: 2.6.7(encoding@0.1.13)
|
||||
undici: 5.12.0
|
||||
undici: 5.22.1
|
||||
web-streams-polyfill: 3.2.1
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
@@ -14816,7 +14831,7 @@ packages:
|
||||
form-data-encoder: 1.7.2
|
||||
formdata-node: 4.3.2
|
||||
node-fetch: 2.6.7(encoding@0.1.13)
|
||||
undici: 5.12.0
|
||||
undici: 5.22.1
|
||||
urlpattern-polyfill: 6.0.2
|
||||
web-streams-polyfill: 3.2.1
|
||||
transitivePeerDependencies:
|
||||
@@ -18142,7 +18157,6 @@ packages:
|
||||
/data-uri-to-buffer@4.0.1:
|
||||
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
|
||||
engines: {node: '>= 12'}
|
||||
dev: true
|
||||
|
||||
/data-urls@3.0.1:
|
||||
resolution: {integrity: sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==}
|
||||
@@ -18659,6 +18673,10 @@ packages:
|
||||
resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
/dotenv@16.1.3:
|
||||
resolution: {integrity: sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
/dotenv@8.6.0:
|
||||
resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -20099,7 +20117,7 @@ packages:
|
||||
resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==}
|
||||
engines: {node: '>= 0.8'}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
require-like: 0.1.2
|
||||
dev: false
|
||||
|
||||
@@ -20445,7 +20463,14 @@ packages:
|
||||
dependencies:
|
||||
node-domexception: 1.0.0
|
||||
web-streams-polyfill: 3.2.1
|
||||
dev: true
|
||||
|
||||
/fetch-ponyfill@7.1.0:
|
||||
resolution: {integrity: sha512-FhbbL55dj/qdVO3YNK7ZEkshvj3eQ7EuIGV2I6ic/2YiocvyWv+7jg2s4AyS0wdRU75s3tA8ZxI/xPigb0v5Aw==}
|
||||
dependencies:
|
||||
node-fetch: 2.6.7(encoding@0.1.13)
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
dev: false
|
||||
|
||||
/fetch-retry@5.0.3:
|
||||
resolution: {integrity: sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==}
|
||||
@@ -20835,7 +20860,6 @@ packages:
|
||||
engines: {node: '>=12.20.0'}
|
||||
dependencies:
|
||||
fetch-blob: 3.2.0
|
||||
dev: true
|
||||
|
||||
/forwarded@0.2.0:
|
||||
resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
|
||||
@@ -22962,7 +22986,7 @@ packages:
|
||||
dependencies:
|
||||
'@jest/types': 26.6.2
|
||||
'@types/graceful-fs': 4.1.5
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
anymatch: 3.1.2
|
||||
fb-watchman: 2.0.1
|
||||
graceful-fs: 4.2.11
|
||||
@@ -23009,7 +23033,7 @@ packages:
|
||||
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
||||
dependencies:
|
||||
'@jest/types': 27.5.1
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
dev: true
|
||||
|
||||
/jest-regex-util@26.0.0:
|
||||
@@ -23021,7 +23045,7 @@ packages:
|
||||
resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==}
|
||||
engines: {node: '>= 10.14.2'}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
graceful-fs: 4.2.11
|
||||
dev: true
|
||||
|
||||
@@ -23030,7 +23054,7 @@ packages:
|
||||
engines: {node: '>= 10.14.2'}
|
||||
dependencies:
|
||||
'@jest/types': 26.6.2
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
chalk: 4.1.2
|
||||
graceful-fs: 4.2.11
|
||||
is-ci: 2.0.0
|
||||
@@ -23042,7 +23066,7 @@ packages:
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@jest/types': 29.3.1
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
chalk: 4.1.2
|
||||
ci-info: 3.5.0
|
||||
graceful-fs: 4.2.11
|
||||
@@ -23052,7 +23076,7 @@ packages:
|
||||
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 7.2.0
|
||||
dev: true
|
||||
@@ -23061,7 +23085,7 @@ packages:
|
||||
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
|
||||
@@ -23069,7 +23093,7 @@ packages:
|
||||
resolution: {integrity: sha512-ROHTZ+oj7sBrgtv46zZ84uWky71AoYi0vEV9CdEtc1FQunsoAGe5HbQmW76nI5QWdvECVPrSi1MCVUmizSavMg==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
dependencies:
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
jest-util: 29.3.1
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
@@ -24873,7 +24897,6 @@ packages:
|
||||
data-uri-to-buffer: 4.0.1
|
||||
fetch-blob: 3.2.0
|
||||
formdata-polyfill: 4.0.10
|
||||
dev: true
|
||||
|
||||
/node-forge@1.3.1:
|
||||
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
|
||||
@@ -25196,7 +25219,7 @@ packages:
|
||||
destr: 1.1.1
|
||||
node-fetch-native: 0.1.3
|
||||
ufo: 0.8.4
|
||||
undici: 5.12.0
|
||||
undici: 5.22.1
|
||||
dev: true
|
||||
|
||||
/on-exit-leak-free@2.1.0:
|
||||
@@ -26805,7 +26828,7 @@ packages:
|
||||
'@protobufjs/path': 1.1.2
|
||||
'@protobufjs/pool': 1.1.0
|
||||
'@protobufjs/utf8': 1.1.0
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
long: 5.2.1
|
||||
dev: false
|
||||
|
||||
@@ -29189,7 +29212,7 @@ packages:
|
||||
resolution: {integrity: sha512-JHV2KoL+nMQRXu3m9ervCZZvi4DDCJfzHUE6CmtJxR9TmizyYfrVuhGvnsZLLnheby9Qrnf4Hq6iOEcejGwnGQ==}
|
||||
engines: {node: ^8.1 || >=10.*}
|
||||
dependencies:
|
||||
'@types/node': 18.11.18
|
||||
'@types/node': 18.16.14
|
||||
qs: 6.11.0
|
||||
dev: false
|
||||
|
||||
@@ -29197,7 +29220,7 @@ packages:
|
||||
resolution: {integrity: sha512-erOslPQZSYKOotQjmKRy4eBon/tdhzLIYzBdPSNVWDdatSQozkkPlh8mVeXNwubYYZYx61/yS23eWiGDF93z2w==}
|
||||
engines: {node: '>=12.*'}
|
||||
dependencies:
|
||||
'@types/node': 18.11.17
|
||||
'@types/node': 18.16.14
|
||||
qs: 6.11.0
|
||||
dev: false
|
||||
|
||||
@@ -29205,7 +29228,7 @@ packages:
|
||||
resolution: {integrity: sha512-aGwrJDqYzpjQj0ejt7oN7BE7kUjZFxhUz/gDeyDCS7CBpZhDb26Eb6z9sS8KdbsbmuS8rkkn2lBY4koK7L1ZCw==}
|
||||
engines: {node: '>=12.*'}
|
||||
dependencies:
|
||||
'@types/node': 18.11.18
|
||||
'@types/node': 18.16.14
|
||||
qs: 6.11.0
|
||||
dev: false
|
||||
|
||||
@@ -30574,9 +30597,9 @@ packages:
|
||||
resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==}
|
||||
dev: false
|
||||
|
||||
/undici@5.12.0:
|
||||
resolution: {integrity: sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==}
|
||||
engines: {node: '>=12.18'}
|
||||
/undici@5.22.1:
|
||||
resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==}
|
||||
engines: {node: '>=14.0'}
|
||||
dependencies:
|
||||
busboy: 1.6.0
|
||||
|
||||
@@ -31276,7 +31299,7 @@ packages:
|
||||
unist-util-stringify-position: 2.0.3
|
||||
vfile-message: 2.0.4
|
||||
|
||||
/vite-node@0.30.0(@types/node@18.11.18):
|
||||
/vite-node@0.30.0(@types/node@18.16.14):
|
||||
resolution: {integrity: sha512-23X5Ggylx0kU/bMf8MCcEEl55d/gsTtU81mMZjm7Z0FSpgKZexUqmX3mJtgglP9SySQQs9ydYg/GEahi/cKHaA==}
|
||||
engines: {node: '>=v14.18.0'}
|
||||
hasBin: true
|
||||
@@ -31286,7 +31309,7 @@ packages:
|
||||
mlly: 1.2.0
|
||||
pathe: 1.1.0
|
||||
picocolors: 1.0.0
|
||||
vite: 4.3.8(@types/node@18.11.18)
|
||||
vite: 4.3.8(@types/node@18.16.14)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
@@ -31297,7 +31320,7 @@ packages:
|
||||
- terser
|
||||
dev: true
|
||||
|
||||
/vite-node@0.31.0(@types/node@16.18.11):
|
||||
/vite-node@0.31.0(@types/node@18.16.14):
|
||||
resolution: {integrity: sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==}
|
||||
engines: {node: '>=v14.18.0'}
|
||||
hasBin: true
|
||||
@@ -31307,7 +31330,7 @@ packages:
|
||||
mlly: 1.2.0
|
||||
pathe: 1.1.0
|
||||
picocolors: 1.0.0
|
||||
vite: 4.3.8(@types/node@16.18.11)
|
||||
vite: 4.3.8(@types/node@18.16.14)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
@@ -31579,7 +31602,7 @@ packages:
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
|
||||
/vite@4.3.8(@types/node@18.11.18):
|
||||
/vite@4.3.8(@types/node@18.16.14):
|
||||
resolution: {integrity: sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
hasBin: true
|
||||
@@ -31604,7 +31627,7 @@ packages:
|
||||
terser:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/node': 18.11.18
|
||||
'@types/node': 18.16.14
|
||||
esbuild: 0.17.19
|
||||
postcss: 8.4.23
|
||||
rollup: 3.23.0
|
||||
@@ -31645,7 +31668,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/chai': 4.3.4
|
||||
'@types/chai-subset': 1.3.3
|
||||
'@types/node': 18.11.18
|
||||
'@types/node': 18.16.14
|
||||
'@vitest/expect': 0.30.0
|
||||
'@vitest/runner': 0.30.0
|
||||
'@vitest/snapshot': 0.30.0
|
||||
@@ -31666,8 +31689,8 @@ packages:
|
||||
strip-literal: 1.0.1
|
||||
tinybench: 2.4.0
|
||||
tinypool: 0.4.0
|
||||
vite: 4.3.8(@types/node@18.11.18)
|
||||
vite-node: 0.30.0(@types/node@18.11.18)
|
||||
vite: 4.3.8(@types/node@18.16.14)
|
||||
vite-node: 0.30.0(@types/node@18.16.14)
|
||||
why-is-node-running: 2.2.2
|
||||
transitivePeerDependencies:
|
||||
- less
|
||||
@@ -31711,7 +31734,7 @@ packages:
|
||||
dependencies:
|
||||
'@types/chai': 4.3.4
|
||||
'@types/chai-subset': 1.3.3
|
||||
'@types/node': 16.18.11
|
||||
'@types/node': 18.16.14
|
||||
'@vitest/expect': 0.31.0
|
||||
'@vitest/runner': 0.31.0
|
||||
'@vitest/snapshot': 0.31.0
|
||||
@@ -31732,8 +31755,8 @@ packages:
|
||||
strip-literal: 1.0.1
|
||||
tinybench: 2.4.0
|
||||
tinypool: 0.5.0
|
||||
vite: 4.3.8(@types/node@16.18.11)
|
||||
vite-node: 0.31.0(@types/node@16.18.11)
|
||||
vite: 4.3.8(@types/node@18.16.14)
|
||||
vite-node: 0.31.0(@types/node@18.16.14)
|
||||
why-is-node-running: 2.2.2
|
||||
transitivePeerDependencies:
|
||||
- less
|
||||
|
||||
Reference in New Issue
Block a user