naystack 1.4.10 → 1.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -16
- package/dist/graphql/utils.d.mts +18 -17
- package/dist/graphql/utils.d.ts +18 -17
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,17 +59,15 @@ Wrap your application with `AuthWrapper` in your root layout or a client compone
|
|
|
59
59
|
```typescript
|
|
60
60
|
// gql/client.ts
|
|
61
61
|
"use client";
|
|
62
|
-
import {
|
|
62
|
+
import { AuthWrapper } from "naystack/auth/email/client";
|
|
63
63
|
|
|
64
|
-
export const AuthWrapper = getAuthWrapper("/api/email");
|
|
65
64
|
```
|
|
66
65
|
|
|
67
66
|
### Frontend Usage
|
|
68
67
|
|
|
69
68
|
```typescript
|
|
70
|
-
import {
|
|
69
|
+
import { useLogin, useSignUp, useLogout, useToken } from "naystack/auth/email/client";
|
|
71
70
|
|
|
72
|
-
const { useLogin, useSignUp, useLogout } = getEmailAuthUtils("/api/email");
|
|
73
71
|
|
|
74
72
|
function AuthComponent() {
|
|
75
73
|
const login = useLogin();
|
|
@@ -108,11 +106,7 @@ Call your GraphQL API from server components or actions:
|
|
|
108
106
|
|
|
109
107
|
```typescript
|
|
110
108
|
// gql/server.ts
|
|
111
|
-
import {
|
|
112
|
-
|
|
113
|
-
export const query = getGraphQLQuery({
|
|
114
|
-
uri: process.env.NEXT_PUBLIC_BACKEND_BASE_URL!,
|
|
115
|
-
});
|
|
109
|
+
import { query } from "naystack/graphql/server";
|
|
116
110
|
|
|
117
111
|
// Usage in Page
|
|
118
112
|
const data = await query(MyQueryDocument, { variables });
|
|
@@ -124,18 +118,17 @@ For client-side GraphQL with Apollo:
|
|
|
124
118
|
|
|
125
119
|
```typescript
|
|
126
120
|
// gql/client.ts
|
|
127
|
-
import {
|
|
121
|
+
import { ApolloWrapper } from "naystack/graphql/client";
|
|
128
122
|
|
|
129
|
-
export const ApolloWrapper = getApolloWrapper("/api");
|
|
130
123
|
```
|
|
131
124
|
|
|
132
125
|
### Frontend Usage
|
|
133
126
|
|
|
134
127
|
```typescript
|
|
135
|
-
import {
|
|
128
|
+
import { useAuthQuery, useAuthMutation } from "naystack/graphql/client";
|
|
136
129
|
|
|
137
130
|
function Profile() {
|
|
138
|
-
const {
|
|
131
|
+
const [getCurrentUser, { loading }] = useAuthMutation(GetCurrentUserDocument);
|
|
139
132
|
// ...
|
|
140
133
|
}
|
|
141
134
|
```
|
|
@@ -170,9 +163,7 @@ export const { PUT, uploadFile, getDownloadURL } = setupFileUpload({
|
|
|
170
163
|
### Client Setup & Usage
|
|
171
164
|
|
|
172
165
|
```typescript
|
|
173
|
-
import {
|
|
174
|
-
|
|
175
|
-
const useFileUpload = getUseFileUpload("/api/upload");
|
|
166
|
+
import { useFileUpload } from "naystack/file/client";
|
|
176
167
|
|
|
177
168
|
function UploadButton() {
|
|
178
169
|
const upload = useFileUpload();
|
package/dist/graphql/utils.d.mts
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
import { GraphQLScalarType } from 'graphql';
|
|
2
|
-
import {
|
|
2
|
+
import { Query, Arg, ClassType } from 'type-graphql';
|
|
3
3
|
import { AuthorizedContext, Context } from './types.mjs';
|
|
4
4
|
|
|
5
5
|
type ReturnOptions = Parameters<typeof Query>[1];
|
|
6
6
|
type ArgsOptions = Parameters<typeof Arg>[2];
|
|
7
|
-
type
|
|
8
|
-
|
|
9
|
-
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
7
|
+
type NullableOptions<T, X extends boolean> = T & {
|
|
8
|
+
nullable: X;
|
|
10
9
|
};
|
|
11
|
-
type
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
type ParsedGQLType<T> = T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends GraphQLScalarType<infer U> ? U : T extends ClassType<infer U> ? U : T extends Record<infer K, string | number> ? T[K] : void;
|
|
11
|
+
type ParsedGQLTypeWithArray<T> = T extends Array<infer U> ? ParsedGQLType<U>[] : ParsedGQLType<T>;
|
|
12
|
+
type ParsedGQLTypeWithNullability<T, IsNullable extends boolean> = IsNullable extends true ? ParsedGQLTypeWithArray<T> | null | undefined : ParsedGQLTypeWithArray<T>;
|
|
13
|
+
interface BaseDefinition<T, U, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false> {
|
|
14
|
+
output: T;
|
|
15
|
+
outputOptions?: NullableOptions<ReturnOptions, OutputNullable>;
|
|
16
|
+
input?: U;
|
|
17
|
+
inputOptions?: NullableOptions<ArgsOptions, InputNullable>;
|
|
17
18
|
authorized?: IsAuth;
|
|
18
19
|
}
|
|
19
|
-
interface QueryDefinition<T extends
|
|
20
|
-
fn: (ctx: IsAuth extends true ? AuthorizedContext : Context, data: U) => Promise<T
|
|
20
|
+
interface QueryDefinition<T, U, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false> extends BaseDefinition<T, U, IsAuth, OutputNullable, InputNullable> {
|
|
21
|
+
fn: (ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithNullability<U, InputNullable>) => Promise<ParsedGQLTypeWithNullability<T, OutputNullable>> | ParsedGQLTypeWithNullability<T, OutputNullable>;
|
|
21
22
|
mutation?: boolean;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
declare function query<T, U, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false>(fn: QueryDefinition<T, U, IsAuth, OutputNullable, InputNullable>["fn"], options: Omit<QueryDefinition<T, U, IsAuth, OutputNullable, InputNullable>, "fn">): QueryDefinition<T, U, IsAuth, OutputNullable, InputNullable>;
|
|
25
|
+
interface FieldResolverDefinition<T, U, Root, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false> extends BaseDefinition<T, U, IsAuth, OutputNullable, InputNullable> {
|
|
26
|
+
fn: (root: Root, ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithNullability<U, InputNullable>) => Promise<ParsedGQLTypeWithNullability<T, OutputNullable>> | ParsedGQLTypeWithNullability<T, OutputNullable>;
|
|
25
27
|
}
|
|
26
|
-
declare function
|
|
27
|
-
declare function field<T extends Values, U extends Values, IsAuth extends boolean, Root>(fn: FieldResolverDefinition<T, U, IsAuth, Root>["fn"], options: Omit<FieldResolverDefinition<T, U, IsAuth, Root>, "fn">): FieldResolverDefinition<T, U, IsAuth, Root>;
|
|
28
|
+
declare function field<T, U, IsAuth extends boolean, Root, OutputNullable extends boolean = false, InputNullable extends boolean = false>(fn: FieldResolverDefinition<T, U, Root, IsAuth, OutputNullable, InputNullable>["fn"], options: Omit<FieldResolverDefinition<T, U, Root, IsAuth, OutputNullable, InputNullable>, "fn">): FieldResolverDefinition<T, U, Root, IsAuth, OutputNullable, InputNullable>;
|
|
28
29
|
declare function QueryLibrary<T extends Record<string, QueryDefinition<any, any, any>>>(queries: T): {
|
|
29
30
|
new (): {};
|
|
30
31
|
};
|
|
31
|
-
declare function FieldLibrary<X extends object, T extends Record<string, FieldResolverDefinition<any, any,
|
|
32
|
+
declare function FieldLibrary<X extends object, T extends Record<string, FieldResolverDefinition<any, any, X, any>> = Record<string, FieldResolverDefinition<any, any, X, any>>>(type: ClassType, queries: T): {
|
|
32
33
|
new (): {};
|
|
33
34
|
};
|
|
34
35
|
|
package/dist/graphql/utils.d.ts
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
import { GraphQLScalarType } from 'graphql';
|
|
2
|
-
import {
|
|
2
|
+
import { Query, Arg, ClassType } from 'type-graphql';
|
|
3
3
|
import { AuthorizedContext, Context } from './types.js';
|
|
4
4
|
|
|
5
5
|
type ReturnOptions = Parameters<typeof Query>[1];
|
|
6
6
|
type ArgsOptions = Parameters<typeof Arg>[2];
|
|
7
|
-
type
|
|
8
|
-
|
|
9
|
-
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
7
|
+
type NullableOptions<T, X extends boolean> = T & {
|
|
8
|
+
nullable: X;
|
|
10
9
|
};
|
|
11
|
-
type
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
type ParsedGQLType<T> = T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends GraphQLScalarType<infer U> ? U : T extends ClassType<infer U> ? U : T extends Record<infer K, string | number> ? T[K] : void;
|
|
11
|
+
type ParsedGQLTypeWithArray<T> = T extends Array<infer U> ? ParsedGQLType<U>[] : ParsedGQLType<T>;
|
|
12
|
+
type ParsedGQLTypeWithNullability<T, IsNullable extends boolean> = IsNullable extends true ? ParsedGQLTypeWithArray<T> | null | undefined : ParsedGQLTypeWithArray<T>;
|
|
13
|
+
interface BaseDefinition<T, U, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false> {
|
|
14
|
+
output: T;
|
|
15
|
+
outputOptions?: NullableOptions<ReturnOptions, OutputNullable>;
|
|
16
|
+
input?: U;
|
|
17
|
+
inputOptions?: NullableOptions<ArgsOptions, InputNullable>;
|
|
17
18
|
authorized?: IsAuth;
|
|
18
19
|
}
|
|
19
|
-
interface QueryDefinition<T extends
|
|
20
|
-
fn: (ctx: IsAuth extends true ? AuthorizedContext : Context, data: U) => Promise<T
|
|
20
|
+
interface QueryDefinition<T, U, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false> extends BaseDefinition<T, U, IsAuth, OutputNullable, InputNullable> {
|
|
21
|
+
fn: (ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithNullability<U, InputNullable>) => Promise<ParsedGQLTypeWithNullability<T, OutputNullable>> | ParsedGQLTypeWithNullability<T, OutputNullable>;
|
|
21
22
|
mutation?: boolean;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
declare function query<T, U, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false>(fn: QueryDefinition<T, U, IsAuth, OutputNullable, InputNullable>["fn"], options: Omit<QueryDefinition<T, U, IsAuth, OutputNullable, InputNullable>, "fn">): QueryDefinition<T, U, IsAuth, OutputNullable, InputNullable>;
|
|
25
|
+
interface FieldResolverDefinition<T, U, Root, IsAuth extends boolean = false, OutputNullable extends boolean = false, InputNullable extends boolean = false> extends BaseDefinition<T, U, IsAuth, OutputNullable, InputNullable> {
|
|
26
|
+
fn: (root: Root, ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithNullability<U, InputNullable>) => Promise<ParsedGQLTypeWithNullability<T, OutputNullable>> | ParsedGQLTypeWithNullability<T, OutputNullable>;
|
|
25
27
|
}
|
|
26
|
-
declare function
|
|
27
|
-
declare function field<T extends Values, U extends Values, IsAuth extends boolean, Root>(fn: FieldResolverDefinition<T, U, IsAuth, Root>["fn"], options: Omit<FieldResolverDefinition<T, U, IsAuth, Root>, "fn">): FieldResolverDefinition<T, U, IsAuth, Root>;
|
|
28
|
+
declare function field<T, U, IsAuth extends boolean, Root, OutputNullable extends boolean = false, InputNullable extends boolean = false>(fn: FieldResolverDefinition<T, U, Root, IsAuth, OutputNullable, InputNullable>["fn"], options: Omit<FieldResolverDefinition<T, U, Root, IsAuth, OutputNullable, InputNullable>, "fn">): FieldResolverDefinition<T, U, Root, IsAuth, OutputNullable, InputNullable>;
|
|
28
29
|
declare function QueryLibrary<T extends Record<string, QueryDefinition<any, any, any>>>(queries: T): {
|
|
29
30
|
new (): {};
|
|
30
31
|
};
|
|
31
|
-
declare function FieldLibrary<X extends object, T extends Record<string, FieldResolverDefinition<any, any,
|
|
32
|
+
declare function FieldLibrary<X extends object, T extends Record<string, FieldResolverDefinition<any, any, X, any>> = Record<string, FieldResolverDefinition<any, any, X, any>>>(type: ClassType, queries: T): {
|
|
32
33
|
new (): {};
|
|
33
34
|
};
|
|
34
35
|
|