inferred-types 0.53.9 → 0.53.11

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.
@@ -9946,6 +9946,14 @@ type IterateOverDefinitions<T extends readonly unknown[], TElse> = {
9946
9946
  [K in keyof T]: ToType$1<T[K], TElse>;
9947
9947
  };
9948
9948
  type TypeDefinition = NarrowableScalar | ShapeCallback;
9949
+ type _FromDefineObject<T extends Required<DefineObject>> = {
9950
+ [K in keyof T]: T[K] extends SimpleToken ? SimpleType<T[K]> : T[K] extends ShapeCallback ? ReturnType<HandleDoneFn<T[K]>> : never;
9951
+ };
9952
+ /**
9953
+ * Converts a `DefineObject` definition into the type that it is
9954
+ * defining.
9955
+ */
9956
+ type FromDefineObject<T extends DefineObject> = MakeKeysOptional<_FromDefineObject<Required<T>>, UnionToTuple$1<OptionalKeys<T>> extends readonly ObjectKey[] ? UnionToTuple$1<OptionalKeys<T>> : never>;
9949
9957
  /**
9950
9958
  * **FromDefn**`<T, [TElse]>`
9951
9959
  *
@@ -9961,9 +9969,7 @@ type TypeDefinition = NarrowableScalar | ShapeCallback;
9961
9969
  * Note: when dictionary objects are found the _values_ will be
9962
9970
  * interrogated for ShapeCallback's.
9963
9971
  */
9964
- type FromDefn$1<T, TElse = Constant$1<"not-set">> = T extends DefineObject ? {
9965
- [K in keyof T]: T[K] extends SimpleToken ? SimpleType<T[K]> : T[K] extends ShapeCallback ? HandleDoneFn<T[K]> : never;
9966
- } : T extends readonly unknown[] ? IterateOverDefinitions<T, TElse> : ToType$1<T, TElse>;
9972
+ type FromDefn$1<T, TElse = Constant$1<"not-set">> = T extends DefineObject ? FromDefineObject<T> : T extends readonly unknown[] ? IterateOverDefinitions<T, TElse> : ToType$1<T, TElse>;
9967
9973
 
9968
9974
  type WideTokenNames = "string" | "number" | "boolean" | "null" | "undefined" | "never" | "unknown" | "string[]" | "number[]" | "boolean[]" | "unknown[]";
9969
9975
  type ConvertWideTokenNames<T extends WideTokenNames> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends "null" ? null : T extends "undefined" ? undefined : T extends "never" ? never : T extends "unknown" ? unknown : T extends "string[]" ? string[] : T extends "number[]" ? number[] : T extends "boolean[]" ? boolean[] : T extends "unknown[]" ? unknown[] : never;
@@ -10291,6 +10297,48 @@ type Process$e<TObj extends Dictionary, TKeys extends ObjectKey> = [] extends TK
10291
10297
  */
10292
10298
  type WithoutKeys<TObj extends Dictionary, TKeys extends ObjectKey | readonly ObjectKey[]> = TKeys extends readonly ObjectKey[] ? Process$e<TObj, TupleToUnion<TKeys>> : ExpandDictionary<Process$e<TObj, TKeys extends readonly ObjectKey[] ? TupleToUnion<TKeys> : TKeys>>;
10293
10299
 
10300
+ type ProcessTupleKeys<TObj extends AnyObject, TKeys extends readonly ObjectKey[]> = ExpandDictionary<WithoutKeys<TObj, TKeys> & {
10301
+ [K in keyof WithKeys<TObj, TKeys>]?: K extends keyof TObj ? TObj[K] : never;
10302
+ }>;
10303
+ type ProcessUnionKeys<TObj extends AnyObject, TKeys extends (string | symbol)> = ExpandDictionary<WithoutKeys<TObj, TKeys> & {
10304
+ [K in keyof WithKeys<TObj, TKeys>]?: K extends keyof TObj ? TObj[K] : never;
10305
+ }>;
10306
+ /**
10307
+ * **MakeKeysOptional**`<TObj, TKeys>`
10308
+ *
10309
+ * Makes a set of keys on a known object `TObj` become
10310
+ * _optional_ parameters while leaving the other properties
10311
+ * "as is".
10312
+ *
10313
+ * **Related:** `MakeKeysRequired`
10314
+ */
10315
+ type MakeKeysOptional<TObj extends AnyObject, TKeys extends (string | symbol) | readonly ObjectKey[]> = IsWideContainer<TObj> extends true ? TObj : TKeys extends readonly ObjectKey[] ? ProcessTupleKeys<TObj, TKeys> : TKeys extends (string | symbol) ? IsWideUnion<TKeys> extends true ? never : ProcessUnionKeys<TObj, TKeys> : never;
10316
+
10317
+ /**
10318
+ * **OptionalKeys**`<T,[V]>`
10319
+ *
10320
+ * Provides a union type of the _keys_ in `T` which are
10321
+ * **optional** properties.
10322
+ *
10323
+ * **Note:** you also may optionally filter further by specifying a value
10324
+ * by the _value_ of the key and then only keys which are required AND
10325
+ * who extend `V` will be included in the union.
10326
+ *
10327
+ * **Related:** `OptionalKeys`, `RequiredProps` * Provides a union type of the _keys_ in `T` which are
10328
+ * **required** properties.
10329
+ *
10330
+ * **Note:** you also may optionally filter further by specifying a value
10331
+ * by the _value_ of the key and then only keys which are required AND
10332
+ * who extend `V` will be included in the union.
10333
+ *
10334
+ * **Related:** `RequiredKeys`, `RequiredProps`
10335
+ */
10336
+ type OptionalKeys<T extends AnyObject, V = Unset> = {
10337
+ [K in keyof T]-?: EmptyObject extends {
10338
+ [P in K]: T[K];
10339
+ } ? If<IsEqual<V, Unset>, K, K extends V ? K : never> : never;
10340
+ }[keyof T];
10341
+
10294
10342
  /**
10295
10343
  * **CombinedKeys**`<A,B>`
10296
10344
  *
@@ -10797,7 +10845,9 @@ type TypeTuple<TType extends Narrowable = Narrowable, TDesc extends string = str
10797
10845
  *
10798
10846
  * - typically used though a function of type `DefineObjectApi`
10799
10847
  */
10800
- type DefineObject = Record<string, SimpleToken | ShapeCallback>;
10848
+ interface DefineObject {
10849
+ [key: string]: SimpleToken | ShapeCallback;
10850
+ }
10801
10851
 
10802
10852
  type BuildObj<T extends readonly string[] | Dictionary | [Dictionary], TType> = T extends Dictionary ? T : T extends [Dictionary] ? T[0] : T extends string[] ? CreateKV<T, TType> : never;
10803
10853
  /**
@@ -11355,6 +11405,7 @@ declare function getYesterday(): Iso8601Date<"explicit">;
11355
11405
  */
11356
11406
  declare function isLeapYear(val: NumberLike | Record<string, any> | Date | number): boolean;
11357
11407
 
11408
+ type Returns$1<T extends DefineObject, P extends readonly (keyof T & string)[]> = P["length"] extends 0 ? FromDefineObject<T> : MakeKeysOptional<T, P> extends DefineObject ? FromDefineObject<MakeKeysOptional<T, P>> : never;
11358
11409
  /**
11359
11410
  * Takes an object definition where the values are either
11360
11411
  * `SimpleToken` representations of a type or a `ShapeCallback`.
@@ -11362,7 +11413,7 @@ declare function isLeapYear(val: NumberLike | Record<string, any> | Date | numbe
11362
11413
  * In both cases the runtime type is left unchanged but the
11363
11414
  * type is converted to represent the designed object shape.
11364
11415
  */
11365
- declare function defineObject<T extends DefineObject>(defn: T): FromDefn$1<T>;
11416
+ declare function defineObject<T extends DefineObject, P extends readonly (keyof T & string)[]>(defn: T, ..._optProps: P): Returns$1<T, P>;
11366
11417
 
11367
11418
  /**
11368
11419
  * **entries**
@@ -2054,7 +2054,7 @@ function isLeapYear(val) {
2054
2054
  }
2055
2055
 
2056
2056
  // src/dictionary/defineObject.ts
2057
- function defineObject(defn) {
2057
+ function defineObject(defn, ..._optProps) {
2058
2058
  return defn;
2059
2059
  }
2060
2060