Skip to content

Commit

Permalink
Fix colinhacks#3437: extendShape erases JSDoc property documentation (c…
Browse files Browse the repository at this point in the history
  • Loading branch information
jussisaurio authored and colinhacks committed May 16, 2024
1 parent dc2aaee commit ca6ae1d
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
41 changes: 41 additions & 0 deletions deno/lib/helpers/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,48 @@ export const jsonStringifyReplacer = (_: string, value: any): any => {
return value;
};

<<<<<<< HEAD
export const ZodParsedType = arrayToEnum([
=======
type optionalKeys<T extends object> = {
[k in keyof T]: undefined extends T[k] ? k : never;
}[keyof T];
type requiredKeys<T extends object> = {
[k in keyof T]: undefined extends T[k] ? never : k;
}[keyof T];
export type addQuestionMarks<T extends object, _O = any> = {
[K in requiredKeys<T>]: T[K];
} & {
[K in optionalKeys<T>]?: T[K];
} & { [k in keyof T]?: unknown };

export type identity<T> = T;
export type flatten<T> = identity<{ [k in keyof T]: T[k] }>;

export type noNeverKeys<T> = {
[k in keyof T]: [T[k]] extends [never] ? never : k;
}[keyof T];

export type noNever<T> = identity<{
[k in noNeverKeys<T>]: k extends keyof T ? T[k] : never;
}>;

export const mergeShapes = <U, T>(first: U, second: T): T & U => {
return {
...first,
...second, // second overwrites first
};
};

export type extendShape<A extends object, B extends object> = {
[K in keyof A as K extends keyof B ? never : K]: A[K];
} & {
[K in keyof B]: B[K];
};
}

export const ZodParsedType = util.arrayToEnum([
>>>>>>> d9694232 (Fix #3437: extendShape erases JSDoc property documentation (#3463))
"string",
"nan",
"number",
Expand Down
2 changes: 1 addition & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@ export type ZodStringCheck =
| { kind: "duration"; message?: string }
| { kind: "ip"; version?: IpVersion; message?: string }
| { kind: "base64"; message?: string }
| { kind: "json"; message?: string };
| { kind: "json"; message?: string }
| { kind: "e164"; message?: string };

export interface ZodStringDef extends ZodTypeDef {
Expand Down

0 comments on commit ca6ae1d

Please sign in to comment.