naystack 1.5.15 → 1.5.16

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.
@@ -6,11 +6,13 @@ import { AuthorizedContext, Context } from './types.mjs';
6
6
  type ReturnOptions = Parameters<typeof Query>[1];
7
7
  /** Options for @Arg() (e.g. nullable). */
8
8
  type ArgsOptions = Parameters<typeof Arg>[2];
9
- /** Maps nullable keys to optional and normalizes null/undefined. */
9
+ /** Recursively applies NormalizeNullUndefined to plain object types, leaves primitives/builtins as-is. */
10
+ type RecurseNNU<T> = T extends (infer U)[] ? RecurseNNU<U>[] : T extends Date | Map<unknown, unknown> | Set<unknown> | Function ? T : T extends object ? NormalizeNullUndefined<T> : T;
11
+ /** Maps nullable keys to optional and normalizes null/undefined, recursively. */
10
12
  type NormalizeNullUndefined<T> = {
11
- [K in keyof T as null extends T[K] ? K : never]?: Exclude<T[K], undefined>;
13
+ [K in keyof T as null extends T[K] ? K : never]?: RecurseNNU<Exclude<T[K], null | undefined>> | null;
12
14
  } & {
13
- [K in keyof T as null extends T[K] ? never : K]: undefined extends T[K] ? Exclude<T[K], undefined> | null : T[K];
15
+ [K in keyof T as null extends T[K] ? never : K]: undefined extends T[K] ? RecurseNNU<Exclude<T[K], undefined>> | null : RecurseNNU<T[K]>;
14
16
  };
15
17
  /** Adds nullable option to Query/Arg options. */
16
18
  type NullableOptions<T, X extends boolean> = T & {
@@ -6,11 +6,13 @@ import { AuthorizedContext, Context } from './types.js';
6
6
  type ReturnOptions = Parameters<typeof Query>[1];
7
7
  /** Options for @Arg() (e.g. nullable). */
8
8
  type ArgsOptions = Parameters<typeof Arg>[2];
9
- /** Maps nullable keys to optional and normalizes null/undefined. */
9
+ /** Recursively applies NormalizeNullUndefined to plain object types, leaves primitives/builtins as-is. */
10
+ type RecurseNNU<T> = T extends (infer U)[] ? RecurseNNU<U>[] : T extends Date | Map<unknown, unknown> | Set<unknown> | Function ? T : T extends object ? NormalizeNullUndefined<T> : T;
11
+ /** Maps nullable keys to optional and normalizes null/undefined, recursively. */
10
12
  type NormalizeNullUndefined<T> = {
11
- [K in keyof T as null extends T[K] ? K : never]?: Exclude<T[K], undefined>;
13
+ [K in keyof T as null extends T[K] ? K : never]?: RecurseNNU<Exclude<T[K], null | undefined>> | null;
12
14
  } & {
13
- [K in keyof T as null extends T[K] ? never : K]: undefined extends T[K] ? Exclude<T[K], undefined> | null : T[K];
15
+ [K in keyof T as null extends T[K] ? never : K]: undefined extends T[K] ? RecurseNNU<Exclude<T[K], undefined>> | null : RecurseNNU<T[K]>;
14
16
  };
15
17
  /** Adds nullable option to Query/Arg options. */
16
18
  type NullableOptions<T, X extends boolean> = T & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naystack",
3
- "version": "1.5.15",
3
+ "version": "1.5.16",
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",