teyit 1.0.2 → 1.0.3

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/dist/main.d.mts CHANGED
@@ -149,9 +149,13 @@ type Prettify<Type> = {
149
149
  } & {};
150
150
  type InferBaseType<Type> = Type extends {
151
151
  type: 'string';
152
- } ? string : Type extends {
152
+ } ? (Type extends {
153
+ enum: readonly (infer EnumValues)[];
154
+ } ? EnumValues : string) : Type extends {
153
155
  type: 'number';
154
- } ? number : Type extends {
156
+ } ? (Type extends {
157
+ enum: readonly (infer EnumValues)[];
158
+ } ? EnumValues : number) : Type extends {
155
159
  type: 'boolean';
156
160
  } ? boolean : Type extends {
157
161
  type: 'date';
@@ -167,11 +171,11 @@ type ApplyNullable<Type, Definition> = Definition extends {
167
171
  } ? Type | null : Type;
168
172
  type InferTypeSingle<Type> = Type extends unknown ? ApplyNullable<InferBaseType<Type>, Type> : never;
169
173
  type InferType<Type> = Type extends readonly unknown[] ? InferTypeSingle<Type[number]> : InferTypeSingle<Type>;
170
- type IsOptional<Type> = Type extends {
174
+ type IsOptional<Type> = Type extends readonly [infer First, ...unknown[]] ? (First extends {
171
175
  required: false;
172
- } ? true : Type extends readonly (infer Union)[] ? (Union extends {
176
+ } ? ('default' extends keyof First ? false : true) : false) : Type extends {
173
177
  required: false;
174
- } ? true : false) : false;
178
+ } ? ('default' extends keyof Type ? false : true) : false;
175
179
  type RequiredKeys<Schema> = {
176
180
  [Key in keyof Schema]: IsOptional<Schema[Key]> extends true ? never : Key;
177
181
  }[keyof Schema];
package/dist/main.d.ts CHANGED
@@ -149,9 +149,13 @@ type Prettify<Type> = {
149
149
  } & {};
150
150
  type InferBaseType<Type> = Type extends {
151
151
  type: 'string';
152
- } ? string : Type extends {
152
+ } ? (Type extends {
153
+ enum: readonly (infer EnumValues)[];
154
+ } ? EnumValues : string) : Type extends {
153
155
  type: 'number';
154
- } ? number : Type extends {
156
+ } ? (Type extends {
157
+ enum: readonly (infer EnumValues)[];
158
+ } ? EnumValues : number) : Type extends {
155
159
  type: 'boolean';
156
160
  } ? boolean : Type extends {
157
161
  type: 'date';
@@ -167,11 +171,11 @@ type ApplyNullable<Type, Definition> = Definition extends {
167
171
  } ? Type | null : Type;
168
172
  type InferTypeSingle<Type> = Type extends unknown ? ApplyNullable<InferBaseType<Type>, Type> : never;
169
173
  type InferType<Type> = Type extends readonly unknown[] ? InferTypeSingle<Type[number]> : InferTypeSingle<Type>;
170
- type IsOptional<Type> = Type extends {
174
+ type IsOptional<Type> = Type extends readonly [infer First, ...unknown[]] ? (First extends {
171
175
  required: false;
172
- } ? true : Type extends readonly (infer Union)[] ? (Union extends {
176
+ } ? ('default' extends keyof First ? false : true) : false) : Type extends {
173
177
  required: false;
174
- } ? true : false) : false;
178
+ } ? ('default' extends keyof Type ? false : true) : false;
175
179
  type RequiredKeys<Schema> = {
176
180
  [Key in keyof Schema]: IsOptional<Schema[Key]> extends true ? never : Key;
177
181
  }[keyof Schema];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teyit",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Portable and simple schemas for property validation.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/keift/teyit",