naystack 1.4.11 → 1.4.13

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.
@@ -4,28 +4,32 @@ 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 ParsedGQLType<T> = T extends ClassType<infer U> ? U : T extends GraphQLScalarType<infer U> ? U : T extends Record<infer K, string | number> ? T[K] : T;
7
+ type NullableOptions<T, X extends boolean> = T & {
8
+ nullable: X;
9
+ };
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;
8
11
  type ParsedGQLTypeWithArray<T> = T extends Array<infer U> ? ParsedGQLType<U>[] : ParsedGQLType<T>;
9
- interface BaseDefinition<T, U, IsAuth extends boolean = false> {
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> {
10
14
  output: T;
11
- outputOptions?: ReturnOptions;
15
+ outputOptions?: NullableOptions<ReturnOptions, OutputNullable>;
12
16
  input?: U;
13
- inputOptions?: ArgsOptions;
17
+ inputOptions?: NullableOptions<ArgsOptions, InputNullable>;
14
18
  authorized?: IsAuth;
15
19
  }
16
- interface QueryDefinition<T, U, IsAuth extends boolean = false> extends BaseDefinition<T, U, IsAuth> {
17
- fn: (ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithArray<U>) => Promise<ParsedGQLTypeWithArray<T>> | ParsedGQLTypeWithArray<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>;
18
22
  mutation?: boolean;
19
23
  }
20
- interface FieldResolverDefinition<T, U, Root, IsAuth extends boolean = false> extends BaseDefinition<T, U, IsAuth> {
21
- fn: (root: Root, ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithArray<U>) => Promise<ParsedGQLTypeWithArray<T>> | ParsedGQLTypeWithArray<T>;
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>;
22
27
  }
23
- declare function query<T, U, IsAuth extends boolean = false>(fn: QueryDefinition<T, U, IsAuth>["fn"], options: Omit<QueryDefinition<T, U, IsAuth>, "fn">): QueryDefinition<T, U, IsAuth>;
24
- declare function field<T, U, IsAuth extends boolean, Root>(fn: FieldResolverDefinition<T, U, Root, IsAuth>["fn"], options: Omit<FieldResolverDefinition<T, U, Root, IsAuth>, "fn">): FieldResolverDefinition<T, U, Root, IsAuth>;
25
- declare function QueryLibrary<T extends Record<string, QueryDefinition<any, any, any>>>(queries: T): {
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>;
29
+ declare function QueryLibrary<T extends Record<string, QueryDefinition<any, any, any, any, any>>>(queries: T): {
26
30
  new (): {};
27
31
  };
28
- 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
+ declare function FieldLibrary<X extends object, T extends Record<string, FieldResolverDefinition<any, any, X, any, any, any>> = Record<string, FieldResolverDefinition<any, any, X, any>>>(type: ClassType, queries: T): {
29
33
  new (): {};
30
34
  };
31
35
 
@@ -4,28 +4,32 @@ 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 ParsedGQLType<T> = T extends ClassType<infer U> ? U : T extends GraphQLScalarType<infer U> ? U : T extends Record<infer K, string | number> ? T[K] : T;
7
+ type NullableOptions<T, X extends boolean> = T & {
8
+ nullable: X;
9
+ };
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;
8
11
  type ParsedGQLTypeWithArray<T> = T extends Array<infer U> ? ParsedGQLType<U>[] : ParsedGQLType<T>;
9
- interface BaseDefinition<T, U, IsAuth extends boolean = false> {
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> {
10
14
  output: T;
11
- outputOptions?: ReturnOptions;
15
+ outputOptions?: NullableOptions<ReturnOptions, OutputNullable>;
12
16
  input?: U;
13
- inputOptions?: ArgsOptions;
17
+ inputOptions?: NullableOptions<ArgsOptions, InputNullable>;
14
18
  authorized?: IsAuth;
15
19
  }
16
- interface QueryDefinition<T, U, IsAuth extends boolean = false> extends BaseDefinition<T, U, IsAuth> {
17
- fn: (ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithArray<U>) => Promise<ParsedGQLTypeWithArray<T>> | ParsedGQLTypeWithArray<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>;
18
22
  mutation?: boolean;
19
23
  }
20
- interface FieldResolverDefinition<T, U, Root, IsAuth extends boolean = false> extends BaseDefinition<T, U, IsAuth> {
21
- fn: (root: Root, ctx: IsAuth extends true ? AuthorizedContext : Context, data: ParsedGQLTypeWithArray<U>) => Promise<ParsedGQLTypeWithArray<T>> | ParsedGQLTypeWithArray<T>;
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>;
22
27
  }
23
- declare function query<T, U, IsAuth extends boolean = false>(fn: QueryDefinition<T, U, IsAuth>["fn"], options: Omit<QueryDefinition<T, U, IsAuth>, "fn">): QueryDefinition<T, U, IsAuth>;
24
- declare function field<T, U, IsAuth extends boolean, Root>(fn: FieldResolverDefinition<T, U, Root, IsAuth>["fn"], options: Omit<FieldResolverDefinition<T, U, Root, IsAuth>, "fn">): FieldResolverDefinition<T, U, Root, IsAuth>;
25
- declare function QueryLibrary<T extends Record<string, QueryDefinition<any, any, any>>>(queries: T): {
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>;
29
+ declare function QueryLibrary<T extends Record<string, QueryDefinition<any, any, any, any, any>>>(queries: T): {
26
30
  new (): {};
27
31
  };
28
- 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
+ declare function FieldLibrary<X extends object, T extends Record<string, FieldResolverDefinition<any, any, X, any, any, any>> = Record<string, FieldResolverDefinition<any, any, X, any>>>(type: ClassType, queries: T): {
29
33
  new (): {};
30
34
  };
31
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naystack",
3
- "version": "1.4.11",
3
+ "version": "1.4.13",
4
4
  "description": "A stack built with Next + GraphQL + S3 + Auth",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",