inferred-types 0.45.0 → 0.45.2

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.
Files changed (253) hide show
  1. package/dist/constants/Characters.d.ts +2 -0
  2. package/dist/constants/Characters.d.ts.map +1 -0
  3. package/dist/constants/Characters.js +5 -0
  4. package/dist/constants/NetworkConstants.d.ts.map +1 -1
  5. package/dist/constants/Phone.d.ts +8 -0
  6. package/dist/constants/Phone.d.ts.map +1 -0
  7. package/dist/constants/Phone.js +262 -0
  8. package/dist/constants/ProxmoxConstants.d.ts +2 -0
  9. package/dist/constants/ProxmoxConstants.d.ts.map +1 -0
  10. package/dist/constants/ProxmoxConstants.js +3 -0
  11. package/dist/constants/index.d.ts +3 -0
  12. package/dist/constants/index.d.ts.map +1 -1
  13. package/dist/constants/index.js +3 -0
  14. package/dist/constants/tsconfig.tsbuildinfo +1 -1
  15. package/dist/inferred-types/index.cjs +1091 -733
  16. package/dist/inferred-types/tsconfig.tsbuildinfo +1 -1
  17. package/dist/runtime/api/defineApi.d.ts +56 -0
  18. package/dist/runtime/api/defineApi.d.ts.map +1 -0
  19. package/dist/runtime/api/defineApi.js +97 -0
  20. package/dist/runtime/api/handleDoneFn.d.ts.map +1 -0
  21. package/dist/runtime/api/index.d.ts +3 -0
  22. package/dist/runtime/api/index.d.ts.map +1 -0
  23. package/dist/runtime/api/index.js +2 -0
  24. package/dist/runtime/boolean-logic/ifArrayPartial.d.ts +1 -1
  25. package/dist/runtime/boolean-logic/ifArrayPartial.d.ts.map +1 -1
  26. package/dist/runtime/boolean-logic/ifArrayPartial.js +1 -1
  27. package/dist/runtime/boolean-logic/ifLength.d.ts.map +1 -1
  28. package/dist/runtime/boolean-logic/ifScalar.d.ts.map +1 -1
  29. package/dist/runtime/boolean-logic/ifScalar.js +1 -1
  30. package/dist/runtime/boolean-logic/index.d.ts +0 -1
  31. package/dist/runtime/boolean-logic/index.d.ts.map +1 -1
  32. package/dist/runtime/boolean-logic/index.js +0 -1
  33. package/dist/runtime/dictionary/defineOptions.d.ts +26 -0
  34. package/dist/runtime/dictionary/defineOptions.d.ts.map +1 -0
  35. package/dist/runtime/dictionary/defineOptions.js +30 -0
  36. package/dist/runtime/dictionary/keysOf.d.ts +1 -1
  37. package/dist/runtime/dictionary/keysOf.d.ts.map +1 -1
  38. package/dist/runtime/errors/KindError.d.ts +2 -2
  39. package/dist/runtime/errors/KindError.d.ts.map +1 -1
  40. package/dist/runtime/functions/index.d.ts +1 -0
  41. package/dist/runtime/functions/index.d.ts.map +1 -1
  42. package/dist/runtime/functions/index.js +1 -0
  43. package/dist/runtime/functions/wrapFn.d.ts +2 -0
  44. package/dist/runtime/functions/wrapFn.d.ts.map +1 -0
  45. package/dist/runtime/functions/wrapFn.js +24 -0
  46. package/dist/runtime/index.d.ts +1 -1
  47. package/dist/runtime/index.d.ts.map +1 -1
  48. package/dist/runtime/index.js +1 -10
  49. package/dist/runtime/lists/find.d.ts +1 -1
  50. package/dist/runtime/lists/find.d.ts.map +1 -1
  51. package/dist/runtime/lists/intersection.d.ts.map +1 -1
  52. package/dist/runtime/lists/intersection.js +2 -1
  53. package/dist/runtime/literals/asPhoneNumber.d.ts +10 -0
  54. package/dist/runtime/literals/asPhoneNumber.d.ts.map +1 -0
  55. package/dist/runtime/literals/asPhoneNumber.js +62 -0
  56. package/dist/runtime/literals/index.d.ts +4 -0
  57. package/dist/runtime/literals/index.d.ts.map +1 -1
  58. package/dist/runtime/literals/index.js +4 -0
  59. package/dist/runtime/literals/retainChars.d.ts +16 -0
  60. package/dist/runtime/literals/retainChars.d.ts.map +1 -0
  61. package/dist/runtime/literals/retainChars.js +17 -0
  62. package/dist/runtime/literals/retainWhile.d.ts +11 -0
  63. package/dist/runtime/literals/retainWhile.d.ts.map +1 -0
  64. package/dist/runtime/literals/retainWhile.js +12 -0
  65. package/dist/runtime/literals/stripChars.d.ts +10 -0
  66. package/dist/runtime/literals/stripChars.d.ts.map +1 -0
  67. package/dist/runtime/literals/stripChars.js +11 -0
  68. package/dist/runtime/literals/stripLeading.d.ts +3 -3
  69. package/dist/runtime/literals/stripLeading.d.ts.map +1 -1
  70. package/dist/runtime/literals/stripLeading.js +5 -5
  71. package/dist/runtime/literals/unset.d.ts +8 -0
  72. package/dist/runtime/literals/unset.d.ts.map +1 -0
  73. package/dist/runtime/literals/unset.js +14 -0
  74. package/dist/runtime/meta/youtube-meta.d.ts +8 -1
  75. package/dist/runtime/meta/youtube-meta.d.ts.map +1 -1
  76. package/dist/runtime/meta/youtube-meta.js +50 -2
  77. package/dist/runtime/runtime-types/dict.d.ts +2 -2
  78. package/dist/runtime/runtime-types/dict.d.ts.map +1 -1
  79. package/dist/runtime/runtime-types/ip6Prefix.d.ts +1 -1
  80. package/dist/runtime/runtime-types/parse.d.ts +1 -1
  81. package/dist/runtime/runtime-types/shape-helpers/getTokenData.d.ts +1 -1
  82. package/dist/runtime/runtime-types/shape-helpers/getTokenName.d.ts +1 -1
  83. package/dist/runtime/runtime-types/shape.d.ts +1 -1
  84. package/dist/runtime/runtime-types/shape.js +1 -1
  85. package/dist/runtime/tsconfig.tsbuildinfo +1 -1
  86. package/dist/runtime/type-guards/api-tg.d.ts +33 -0
  87. package/dist/runtime/type-guards/api-tg.d.ts.map +1 -0
  88. package/dist/runtime/type-guards/api-tg.js +38 -0
  89. package/dist/runtime/type-guards/hasWhitespace.d.ts +7 -0
  90. package/dist/runtime/type-guards/hasWhitespace.d.ts.map +1 -0
  91. package/dist/runtime/type-guards/hasWhitespace.js +11 -0
  92. package/dist/runtime/type-guards/index.d.ts +7 -0
  93. package/dist/runtime/type-guards/index.d.ts.map +1 -1
  94. package/dist/runtime/type-guards/index.js +7 -0
  95. package/dist/runtime/type-guards/isConstant.d.ts +6 -0
  96. package/dist/runtime/type-guards/isConstant.d.ts.map +1 -1
  97. package/dist/runtime/type-guards/isConstant.js +12 -2
  98. package/dist/runtime/type-guards/isEmail.d.ts +7 -0
  99. package/dist/runtime/type-guards/isEmail.d.ts.map +1 -0
  100. package/dist/runtime/type-guards/isEmail.js +11 -0
  101. package/dist/runtime/type-guards/isPhoneNumber.d.ts +14 -0
  102. package/dist/runtime/type-guards/isPhoneNumber.d.ts.map +1 -0
  103. package/dist/runtime/type-guards/isPhoneNumber.js +26 -0
  104. package/dist/runtime/type-guards/isSpecificConstant.js +2 -3
  105. package/dist/runtime/type-guards/isTrimmable.d.ts +7 -0
  106. package/dist/runtime/type-guards/isTrimmable.d.ts.map +1 -0
  107. package/dist/runtime/type-guards/isTrimmable.js +9 -0
  108. package/dist/runtime/type-guards/isUnset.d.ts +18 -0
  109. package/dist/runtime/type-guards/isUnset.d.ts.map +1 -0
  110. package/dist/runtime/type-guards/isUnset.js +23 -0
  111. package/dist/runtime/type-guards/isUrl.d.ts +1 -1
  112. package/dist/runtime/type-guards/network-tg.d.ts +9 -3
  113. package/dist/runtime/type-guards/network-tg.d.ts.map +1 -1
  114. package/dist/runtime/type-guards/network-tg.js +10 -1
  115. package/dist/runtime/type-guards/repos.d.ts +2 -2
  116. package/dist/runtime/type-guards/youtube.d.ts +4 -2
  117. package/dist/runtime/type-guards/youtube.d.ts.map +1 -1
  118. package/dist/runtime/type-guards/youtube.js +13 -3
  119. package/dist/types/api/api.d.ts +96 -37
  120. package/dist/types/api/api.d.ts.map +1 -1
  121. package/dist/types/base-types/fns/EscapeFunction.d.ts +22 -0
  122. package/dist/types/base-types/fns/EscapeFunction.d.ts.map +1 -0
  123. package/dist/types/base-types/fns/OptionalParamFn.d.ts +30 -0
  124. package/dist/types/base-types/fns/OptionalParamFn.d.ts.map +1 -0
  125. package/dist/types/base-types/fns/index.d.ts +2 -0
  126. package/dist/types/base-types/fns/index.d.ts.map +1 -1
  127. package/dist/types/base-types/fns/index.js +2 -0
  128. package/dist/types/boolean-logic/branching/If.d.ts +2 -3
  129. package/dist/types/boolean-logic/branching/If.d.ts.map +1 -1
  130. package/dist/types/boolean-logic/branching/IfUnset.d.ts +12 -0
  131. package/dist/types/boolean-logic/branching/IfUnset.d.ts.map +1 -0
  132. package/dist/types/boolean-logic/branching/OnPass.d.ts +4 -3
  133. package/dist/types/boolean-logic/branching/OnPass.d.ts.map +1 -1
  134. package/dist/types/boolean-logic/branching/WhenNever.d.ts +11 -0
  135. package/dist/types/boolean-logic/branching/WhenNever.d.ts.map +1 -0
  136. package/dist/types/boolean-logic/branching/WhenNever.js +1 -0
  137. package/dist/types/boolean-logic/branching/index.d.ts +2 -0
  138. package/dist/types/boolean-logic/branching/index.d.ts.map +1 -1
  139. package/dist/types/boolean-logic/branching/index.js +2 -0
  140. package/dist/types/boolean-logic/combinators/Compare.d.ts +3 -3
  141. package/dist/types/boolean-logic/combinators/Compare.d.ts.map +1 -1
  142. package/dist/types/boolean-logic/combinators/Some.d.ts +8 -0
  143. package/dist/types/boolean-logic/combinators/Some.d.ts.map +1 -0
  144. package/dist/types/boolean-logic/combinators/Some.js +1 -0
  145. package/dist/types/boolean-logic/combinators/index.d.ts +1 -0
  146. package/dist/types/boolean-logic/combinators/index.d.ts.map +1 -1
  147. package/dist/types/boolean-logic/combinators/index.js +1 -0
  148. package/dist/types/boolean-logic/narrowing/AsDoneFn.d.ts +2 -2
  149. package/dist/types/boolean-logic/narrowing/AsDoneFn.d.ts.map +1 -1
  150. package/dist/types/boolean-logic/operators/ApiOperators.d.ts +11 -0
  151. package/dist/types/boolean-logic/operators/ApiOperators.d.ts.map +1 -0
  152. package/dist/types/boolean-logic/operators/ApiOperators.js +1 -0
  153. package/dist/types/boolean-logic/operators/HasSameValues.d.ts +4 -3
  154. package/dist/types/boolean-logic/operators/HasSameValues.d.ts.map +1 -1
  155. package/dist/types/boolean-logic/operators/IsGreaterThan.d.ts +2 -2
  156. package/dist/types/boolean-logic/operators/IsGreaterThan.d.ts.map +1 -1
  157. package/dist/types/boolean-logic/operators/IsUnset.d.ts +9 -0
  158. package/dist/types/boolean-logic/operators/IsUnset.d.ts.map +1 -0
  159. package/dist/types/boolean-logic/operators/IsUnset.js +1 -0
  160. package/dist/types/boolean-logic/operators/PhoneOperators.d.ts +33 -0
  161. package/dist/types/boolean-logic/operators/PhoneOperators.d.ts.map +1 -0
  162. package/dist/types/boolean-logic/operators/PhoneOperators.js +1 -0
  163. package/dist/types/boolean-logic/operators/index.d.ts +3 -0
  164. package/dist/types/boolean-logic/operators/index.d.ts.map +1 -1
  165. package/dist/types/boolean-logic/operators/index.js +3 -0
  166. package/dist/types/dictionary/Keys.d.ts +58 -4
  167. package/dist/types/dictionary/Keys.d.ts.map +1 -1
  168. package/dist/types/dictionary/KvFn.d.ts +2 -2
  169. package/dist/types/dictionary/KvFn.d.ts.map +1 -1
  170. package/dist/types/dictionary/MakeKeysOptional.d.ts +12 -3
  171. package/dist/types/dictionary/MakeKeysOptional.d.ts.map +1 -1
  172. package/dist/types/dictionary/MakeKeysRequired.d.ts +14 -0
  173. package/dist/types/dictionary/MakeKeysRequired.d.ts.map +1 -0
  174. package/dist/types/dictionary/MakeKeysRequired.js +1 -0
  175. package/dist/types/dictionary/OptionalKeys.d.ts +19 -4
  176. package/dist/types/dictionary/OptionalKeys.d.ts.map +1 -1
  177. package/dist/types/dictionary/OptionalKeys.js +1 -0
  178. package/dist/types/dictionary/RequiredKeys.d.ts +14 -6
  179. package/dist/types/dictionary/RequiredKeys.d.ts.map +1 -1
  180. package/dist/types/dictionary/Values.d.ts +2 -2
  181. package/dist/types/dictionary/Values.d.ts.map +1 -1
  182. package/dist/types/dictionary/index.d.ts +1 -2
  183. package/dist/types/dictionary/index.d.ts.map +1 -1
  184. package/dist/types/dictionary/index.js +1 -2
  185. package/dist/types/errors/KindError.d.ts +1 -1
  186. package/dist/types/errors/KindError.d.ts.map +1 -1
  187. package/dist/types/functions/FnFrom.d.ts +5 -0
  188. package/dist/types/functions/FnFrom.d.ts.map +1 -1
  189. package/dist/types/functions/{Fn.d.ts → FnWithDescription.d.ts} +2 -2
  190. package/dist/types/functions/FnWithDescription.d.ts.map +1 -0
  191. package/dist/types/functions/FnWithDescription.js +1 -0
  192. package/dist/types/functions/WrapperFn.d.ts +23 -0
  193. package/dist/types/functions/WrapperFn.d.ts.map +1 -0
  194. package/dist/types/functions/WrapperFn.js +1 -0
  195. package/dist/types/functions/index.d.ts +2 -1
  196. package/dist/types/functions/index.d.ts.map +1 -1
  197. package/dist/types/functions/index.js +2 -1
  198. package/dist/types/lists/ConvertSet.d.ts +2 -2
  199. package/dist/types/lists/ConvertSet.d.ts.map +1 -1
  200. package/dist/types/lists/Find.d.ts +7 -18
  201. package/dist/types/lists/Find.d.ts.map +1 -1
  202. package/dist/types/literals/DoneFnTuple.d.ts +3 -3
  203. package/dist/types/literals/DoneFnTuple.d.ts.map +1 -1
  204. package/dist/types/literals/Unset.d.ts +13 -0
  205. package/dist/types/literals/Unset.d.ts.map +1 -0
  206. package/dist/types/literals/Unset.js +1 -0
  207. package/dist/types/literals/index.d.ts +1 -0
  208. package/dist/types/literals/index.d.ts.map +1 -1
  209. package/dist/types/literals/index.js +1 -0
  210. package/dist/types/numeric-literals/NumberLike.d.ts +1 -1
  211. package/dist/types/numeric-literals/NumberLike.d.ts.map +1 -1
  212. package/dist/types/string-literals/Proxmox.d.ts +7 -0
  213. package/dist/types/string-literals/Proxmox.d.ts.map +1 -0
  214. package/dist/types/string-literals/Proxmox.js +1 -0
  215. package/dist/types/string-literals/StripLeading.d.ts +2 -2
  216. package/dist/types/string-literals/StripLeading.d.ts.map +1 -1
  217. package/dist/types/string-literals/StripUntil.d.ts +12 -0
  218. package/dist/types/string-literals/StripUntil.d.ts.map +1 -1
  219. package/dist/types/string-literals/character-sets/Whitespace.d.ts +3 -1
  220. package/dist/types/string-literals/character-sets/Whitespace.d.ts.map +1 -1
  221. package/dist/types/string-literals/character-sets/index.d.ts +1 -0
  222. package/dist/types/string-literals/character-sets/index.d.ts.map +1 -1
  223. package/dist/types/string-literals/character-sets/index.js +1 -0
  224. package/dist/types/string-literals/character-sets/phone.d.ts +192 -0
  225. package/dist/types/string-literals/character-sets/phone.d.ts.map +1 -0
  226. package/dist/types/string-literals/character-sets/phone.js +1 -0
  227. package/dist/types/tsconfig.tsbuildinfo +1 -1
  228. package/dist/types/type-conversion/ReduceValues.d.ts +19 -0
  229. package/dist/types/type-conversion/ReduceValues.d.ts.map +1 -0
  230. package/dist/types/type-conversion/ReduceValues.js +1 -0
  231. package/dist/types/type-conversion/ReturnValues.d.ts +10 -6
  232. package/dist/types/type-conversion/ReturnValues.d.ts.map +1 -1
  233. package/dist/types/type-conversion/Trim.d.ts +3 -1
  234. package/dist/types/type-conversion/Trim.d.ts.map +1 -1
  235. package/dist/types/type-conversion/UnionFilter.d.ts +2 -2
  236. package/dist/types/type-conversion/UnionFilter.d.ts.map +1 -1
  237. package/dist/types/type-conversion/form-fields.d.ts +5 -1
  238. package/dist/types/type-conversion/form-fields.d.ts.map +1 -1
  239. package/dist/types/type-conversion/index.d.ts +1 -0
  240. package/dist/types/type-conversion/index.d.ts.map +1 -1
  241. package/dist/types/type-conversion/index.js +1 -0
  242. package/package.json +17 -11
  243. package/dist/runtime/boolean-logic/handleDoneFn.d.ts.map +0 -1
  244. package/dist/types/dictionary/PrivateKeys.d.ts +0 -17
  245. package/dist/types/dictionary/PrivateKeys.d.ts.map +0 -1
  246. package/dist/types/dictionary/PublicKeys.d.ts +0 -10
  247. package/dist/types/dictionary/PublicKeys.d.ts.map +0 -1
  248. package/dist/types/functions/Fn.d.ts.map +0 -1
  249. /package/dist/runtime/{boolean-logic → api}/handleDoneFn.d.ts +0 -0
  250. /package/dist/runtime/{boolean-logic → api}/handleDoneFn.js +0 -0
  251. /package/dist/types/{dictionary/PrivateKeys.js → base-types/fns/EscapeFunction.js} +0 -0
  252. /package/dist/types/{dictionary/PublicKeys.js → base-types/fns/OptionalParamFn.js} +0 -0
  253. /package/dist/types/{functions/Fn.js → boolean-logic/branching/IfUnset.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { Dictionary, EmptyObject, TypedFunction, Contains, IsNever, Values, Throw, AfterFirst, First, FindExtends, ExpandRecursively, ShapeCallback, Scalar, TupleToUnion } from "../index";
1
+ import { Dictionary, EmptyObject, TypedFunction, Values, Throw, AfterFirst, First, ExpandRecursively, TupleToUnion, Unset, PublicKeyOf, IfUnset, KeyOf, Fail, Extends, UpsertKeyValue, Tuple, ReduceValues, IsEscapeFunction, RemoveNever, If, WhenNever, HasEscapeFunction, ErrorCondition } from "../index";
2
2
  /**
3
3
  * **ValueCallback**`<TVal, TReturn>`
4
4
  *
@@ -10,16 +10,16 @@ import { Dictionary, EmptyObject, TypedFunction, Contains, IsNever, Values, Thro
10
10
  * ```
11
11
  */
12
12
  export type ValueCallback<TVal, TReturn> = <V extends TVal>(v: V) => TReturn;
13
- export type EscapeFunction<T extends () => any = () => any> = T & {
14
- escape: true;
15
- };
13
+ type _GetEscapeFunction<T extends readonly unknown[]> = WhenNever<First<RemoveNever<{
14
+ [K in keyof T]: If<IsEscapeFunction<T[K]>, T[K], never>;
15
+ }>>, Throw<"no-escape-function">>;
16
16
  /**
17
- * **HasEscapeFunction**`<T>`
17
+ * **GetEscapeFunction**`<T>`
18
18
  *
19
- * Checks whether the API surface passed in has an escape function defined.
19
+ * Gets an escape function from an `Api` and from a `Dictionary | TypeFunction`
20
+ * if it exists. If it does not exist then returns an ErrorCondition.
20
21
  */
21
- export type HasEscapeFunction<T extends Dictionary | TypedFunction> = T extends Dictionary ? Contains<Values<T>, EscapeFunction> : T extends TypedFunction ? T extends EscapeFunction ? true : false : false;
22
- export type GetEscapeFunction<T extends Dictionary | TypedFunction> = T extends Dictionary ? FindExtends<Values<T>, EscapeFunction> extends TypedFunction ? FindExtends<Values<T>, EscapeFunction> : never : T extends TypedFunction ? T extends EscapeFunction ? T : never : never;
22
+ export type GetEscapeFunction<T extends Dictionary | TypedFunction | Api> = T extends Api ? _GetEscapeFunction<Values<T["surface"]>> : _GetEscapeFunction<Values<T>>;
23
23
  export type FluentState<T> = {
24
24
  state: T;
25
25
  config: {
@@ -39,28 +39,73 @@ type ExpandFluentFns<TFluentState extends FluentState<any>, TFns extends readonl
39
39
  * Defines the callback loop necessary to manage state via a
40
40
  * Fluent API.
41
41
  */
42
- type FluentApi<TSurface extends Dictionary | TypedFunction, TState, TFluentFns extends readonly FluentFn<TState, any, any>[]> = <T extends FluentState<TState>>(state: T) => ExpandRecursively<TSurface & ExpandFluentFns<FluentState<TState>, TFluentFns>>;
42
+ export type FluentApi<TSurface extends Dictionary | TypedFunction, TState, TFluentFns extends readonly FluentFn<TState, any, any>[]> = <T extends FluentState<TState>>(state: T) => ExpandRecursively<TSurface & ExpandFluentFns<FluentState<TState>, TFluentFns>>;
43
+ /**
44
+ * **ApiState**
45
+ *
46
+ * For API's which manage state, the state should be a Dictionary
47
+ * or Tuple in shape.
48
+ */
49
+ export type ApiState = Dictionary | Tuple;
43
50
  /**
44
- * **ToFluent**`<TSurface,TState,TUseOnce>`
51
+ * **ApiConfig**`<TSurface,TState>`
45
52
  *
46
- * Upgrades a base API to an API which supports state management
47
- * and a Fluent API style.
53
+ * The configuration of your API provides opportunities to
54
+ * show or mask various parts of your surface area based on
55
+ * the current _state_ you are in.
48
56
  */
49
- export type ToFluent<TSurface extends Dictionary | TypedFunction, TState, TFluentFns extends readonly FluentFn<TState, any, any>[] = []> = {
50
- addFluentFn: <TName extends string, TFn extends <TCb extends (<T extends FluentState<TState>>(state: T) => TypedFunction<TState>)>(cb: TCb) => void, TUse extends boolean = false>(name: TName, fn: TFn, useOnce?: TUse) => ToFluent<TSurface, TState, [
51
- ...TFluentFns,
52
- FluentFn<TState, TName, TFn>
53
- ]>;
54
- done: () => FluentApi<TSurface, TState, TFluentFns>;
57
+ export type ApiConfig<TSurface extends ApiSurface<Api> = ApiSurface<Api>, TState extends ApiState = ApiState> = {
58
+ callOnce: readonly string[];
59
+ called: readonly string[];
60
+ mask: ((state: TState, called: readonly string[]) => readonly (KeyOf<TSurface>)[]);
55
61
  };
56
- export type Api<TSurface extends Dictionary | TypedFunction, TState = never> = HasEscapeFunction<TSurface> extends true ? IsNever<TState> extends true ? TSurface : ToFluent<TSurface, TState> : Throw<"no-escape-function">;
57
- export type ApiCallbackOptions<TProxy extends readonly (Scalar | ShapeCallback)[] = readonly (Scalar | ShapeCallback)[]> = {
62
+ /**
63
+ * **ApiOptions**`<[TSurface]>`
64
+ *
65
+ * The _options_ which go into defining an API surface.
66
+ */
67
+ export type ApiOptions<TSurface extends Dictionary | TypedFunction | Unset = Unset> = {
58
68
  /**
59
- * Allow types _other_ than the callback API to be passed into this
60
- * function and have them proxied through.
69
+ * any _state_ which the API is managing (making it a `FluentApi`)
70
+ *
71
+ * @default Unset;
61
72
  */
62
- proxy?: TProxy;
73
+ state: Unset | Dictionary;
74
+ /**
75
+ * An array of _keys_ to the API surface which should only be allowed
76
+ * to be called once (and will be _masked_ thereafter from runtime).
77
+ *
78
+ * **Note:** _this only really makes sense when you're managing state_.
79
+ */
80
+ callOnce: IfUnset<TSurface, readonly PropertyKey[], readonly PublicKeyOf<AsApi<TSurface>>[]>;
63
81
  };
82
+ /**
83
+ * **Api**
84
+ *
85
+ * An API definition typically created via `AsApi<TSurface,TOpts>` which is
86
+ * not responsible for managing state.
87
+ *
88
+ * **Related:** `FluentApi`, `AsFluentApi`
89
+ */
90
+ export type Api<TSurface extends Dictionary | TypedFunction = Dictionary | TypedFunction> = {
91
+ _kind: "api";
92
+ surface: TSurface;
93
+ };
94
+ /**
95
+ * **ApiReturn**
96
+ *
97
+ * The expected/desired types that could result from calling the API's
98
+ * _endpoints_.
99
+ *
100
+ * Note: this does not consider the possibility of a user
101
+ */
102
+ export type ApiReturn<T extends Api> = "surface" extends keyof T ? T["surface"] extends Dictionary ? TupleToUnion<ReduceValues<T["surface"]>> : never : unknown;
103
+ /**
104
+ * **ApiSurface**`<T>`
105
+ *
106
+ * Extracts the API's surface area from an `Api`.
107
+ */
108
+ export type ApiSurface<T extends Api> = T["surface"];
64
109
  /**
65
110
  * **ApiCallback**`<TSurface,[TOpts]>`
66
111
  *
@@ -72,28 +117,42 @@ export type ApiCallbackOptions<TProxy extends readonly (Scalar | ShapeCallback)[
72
117
  *
73
118
  * **Related:** `HandleApiCallback`, `ApiCallbackInfo`
74
119
  */
75
- export type ApiCallback<TSurface extends Dictionary | TypedFunction, TOpts extends ApiCallbackOptions = ApiCallbackOptions> = HasEscapeFunction<TSurface> extends true ? <TCall extends ((api: ExpandRecursively<TSurface>) => unknown) | (TOpts["proxy"] extends readonly unknown[] ? TupleToUnion<TOpts["proxy"]> : never)>(cb: TCall) => HandleApiCallback<TCall extends TypedFunction ? ReturnType<TCall> : TCall> : Throw<"no-escape-function">;
120
+ export type ApiCallback<TApi extends Api> = <TCall extends (api: ApiSurface<TApi>) => unknown>(cb: TCall) => ReturnType<TCall>;
76
121
  /**
77
- * **ApiEscape**`<T>`
122
+ * **Api**`<TSurface>`
78
123
  *
79
- * Given a `T` which extends `Api` or `ApiCallback`, this utility will expose
80
- * the escape function.
124
+ * Validates a candidate for a _stateless_ API and returns it as an `Api<TSurface>`
125
+ * if valid. If not valid you'll get a `ErrorCondition`.
81
126
  */
82
- export type ApiEscape<T extends Dictionary | TypedFunction | ApiCallback<Dictionary | TypedFunction>> = T extends ApiCallback<Dictionary | TypedFunction> ? T extends TypedFunction ? Parameters<T>[0] extends Dictionary | TypedFunction ? GetEscapeFunction<Parameters<T>[0]> : never : never : GetEscapeFunction<T>;
127
+ export type AsApi<TSurface extends Dictionary | TypedFunction> = HasEscapeFunction<TSurface> extends true ? Api<TSurface> : Throw<"no-escape-function">;
128
+ export type ApiStateInitializer<TApi> = <T extends Dictionary>(state: T) => TApi;
83
129
  /**
84
- * **ApiReturn**`<T>`
130
+ * A builder API for defining _stateless_ API's.
85
131
  *
86
- * Given a `T` which extends `ApiCallback`, this utility will expose
87
- * the _default_ return value provided by the _escape function_.
132
+ * Note: ironically this is **not** a stateless API.
133
+ */
134
+ export type DefineStatelessApi<T extends Dictionary = EmptyObject, _C extends {
135
+ called: readonly KeyOf<T>[];
136
+ callOnce: ["escapeFunction"];
137
+ } = {
138
+ called: [];
139
+ callOnce: ["escapeFunction"];
140
+ }> = ({
141
+ escapeFunction: (state: T) => <TKey extends string, TFn extends () => unknown>(key: Fail<TKey, Extends<TKey, KeyOf<T>>>, fn: TFn) => ReturnType<TFn>;
142
+ addFn: (state: T) => <TKey extends string, TFn extends TypedFunction>(key: Fail<TKey, KeyOf<T>>, fn: TFn) => ExpandRecursively<T["surface"] & Record<TKey, TFn>> extends T["surface"] ? UpsertKeyValue<T, "surface", ExpandRecursively<T["surface"] & Record<TKey, TFn>>> : never;
143
+ });
144
+ /**
145
+ * **ApiEscape**`<T>`
146
+ *
147
+ * Given a `T` which extends `Api` or `ApiCallback`, this utility will expose
148
+ * the escape function.
88
149
  */
89
- export type ApiReturn<T extends Dictionary | TypedFunction> = ApiEscape<T> extends TypedFunction ? ReturnType<ApiEscape<T>> : Throw<"no-escape-function">;
150
+ export type ApiEscape<T extends Dictionary | TypedFunction | ApiCallback<Api>> = T extends ApiCallback<Api> ? T extends TypedFunction ? Parameters<T>[0] extends Dictionary | TypedFunction ? GetEscapeFunction<Parameters<T>[0]> : never : never : GetEscapeFunction<T>;
90
151
  /**
91
- * **HandleApiCallback**`<TReturn, TApi>`
152
+ * **ApiHandler**`<TApi,THandle>`
92
153
  *
93
- * Given a returned value `TReturn` from the callback,
94
- * it either proxies that value through if the user completed
95
- * the API calling, or calls the _escape function_ if not.
154
+ * An API handler for a specific API
96
155
  */
97
- export type HandleApiCallback<TReturn> = TReturn extends Dictionary | TypedFunction ? GetEscapeFunction<TReturn> extends TypedFunction ? ReturnType<GetEscapeFunction<TReturn>> : TReturn : TReturn;
156
+ export type ApiHandler<TApi extends Api, _THandle extends (t: unknown, e: ErrorCondition) => unknown> = (api: TApi) => <R>(result: R) => unknown;
98
157
  export {};
99
158
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ExpandDictionary, ExpandRecursively, FnProps } from "../..";
2
+ /**
3
+ * **EscapeFunction**`<[T]>`
4
+ *
5
+ * An escape function is a function which takes no parameters and
6
+ * marks itself by setting the key `escape` to the value **true**.
7
+ *
8
+ * If this utility is used with a generic it will ensure that the function
9
+ * has the `escape` property set. If no generic is used then it will just
10
+ * present a generalized shape for escape functions.
11
+ * ```ts
12
+ * // () => string & {escape: true}
13
+ * type Esc = EscapeFunction<() => string>;
14
+ * // () => unknown & {escape: true}
15
+ * type Esc2 = EscapeFunction;
16
+ * ```
17
+ */
18
+ export type EscapeFunction = () => any & {
19
+ escape: true;
20
+ };
21
+ export type AsEscapeFunction<T> = T extends EscapeFunction ? ExpandRecursively<T & ExpandDictionary<Record<"escape", true> & FnProps<T>>> : never;
22
+ //# sourceMappingURL=EscapeFunction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EscapeFunction.d.ts","sourceRoot":"","sources":["../../../../src/types/base-types/fns/EscapeFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,GAAG;IAAC,MAAM,EAAE,IAAI,CAAA;CAAC,CAAC;AAExD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,cAAc,GACxD,iBAAiB,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3E,KAAK,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { If, Some, Throw, TypedFunction } from "../../index";
2
+ /**
3
+ * **OptionalParamFn**
4
+ *
5
+ * A function which either has _no_ parameters or any parameters it
6
+ * does have are _optional_ in a way that it is safe to call it without
7
+ * any parameters.
8
+ *
9
+ * To make the runtime aware of this flexibility, a property `optionalParams`
10
+ * must be set to **true**. To convert a regular function to be this kind of
11
+ * function you can use the `AsOptionalParamFn` utility.
12
+ */
13
+ export type OptionalParamFn = ((() => any) | ((p1?: any, p2?: any, p3?: any, p4?: any) => any)) & {
14
+ optionalParams: true;
15
+ };
16
+ /**
17
+ * **AsOptionalParamFn**`<T>`
18
+ *
19
+ * Converts the function passed in into a `OptionalParamFn` where possible and
20
+ * converts to `ErrorCondition<"invalid-conversion">` otherwise.
21
+ */
22
+ export type AsOptionalParamFn<T extends TypedFunction> = Parameters<T>["length"] extends 0 ? T & {
23
+ optionalParams: true;
24
+ } : If<Some<Parameters<T>, "extends", undefined>, Throw<"invalid-conversion", `To convert to a OptionalParamFn, a function must have _no_ required Parameters but required params were found!`, `AsOptionalParamFn`, {
25
+ library: "inferred-types";
26
+ params: Parameters<T>;
27
+ }>, T & {
28
+ optionalParams: true;
29
+ }>;
30
+ //# sourceMappingURL=OptionalParamFn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionalParamFn.d.ts","sourceRoot":"","sources":["../../../../src/types/base-types/fns/OptionalParamFn.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EACF,IAAI,EACJ,KAAK,EACL,aAAa,EACd,oBAAwB;AAGzB;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAC,GAAG,KAAK,GAAG,CAAC,CAC/D,GAAG;IAAE,cAAc,EAAE,IAAI,CAAA;CAAE,CAAC;AAI7B;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GACxF,CAAC,GAAG;IAAE,cAAc,EAAE,IAAI,CAAA;CAAE,GAC5B,EAAE,CACA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EACzC,KAAK,CACH,oBAAoB,EAAE,gHAAgH,EACtI,mBAAmB,EACnB;IAAE,OAAO,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,CACrD,EACD,CAAC,GAAG;IAAE,cAAc,EAAE,IAAI,CAAA;CAAE,CAC7B,CAAC"}
@@ -5,4 +5,6 @@ export * from "./IdentityFunction";
5
5
  export * from "./AnyFunction";
6
6
  export * from "./TypedFunction";
7
7
  export * from "./AnyFnWithDict";
8
+ export * from "./OptionalParamFn";
9
+ export * from "./EscapeFunction";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/base-types/fns/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/base-types/fns/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
@@ -5,3 +5,5 @@ export * from "./IdentityFunction.js";
5
5
  export * from "./AnyFunction.js";
6
6
  export * from "./TypedFunction.js";
7
7
  export * from "./AnyFnWithDict.js";
8
+ export * from "./OptionalParamFn.js";
9
+ export * from "./EscapeFunction.js";
@@ -1,14 +1,13 @@
1
- import { ErrorCondition, IsBoolean, IsBooleanLiteral, IsFalse, IsNever, IsTrue, LogicFunction, ProxyError, Throw } from "../../index";
1
+ import { ErrorCondition, IsBoolean, IsBooleanLiteral, IsFalse, IsNever, IsTrue, LogicFunction, Throw } from "../../index";
2
2
  type InvalidTest<TTest> = Throw<"invalid-test", `Call of If<TTest, ...> received an invalid TTest that does not evaluate to a boolean type!`, "If", {
3
3
  library: "inferred-types";
4
4
  test: TTest;
5
5
  }>;
6
- type ReceivedError<TTest extends ErrorCondition> = ProxyError<TTest, "If", "TTest">;
7
6
  /**
8
7
  * **If**`<TTest,[TIf],[TElse],[TMaybe]>`
9
8
  *
10
9
  * Branching utility which tests `TTest` for a boolean value.
11
10
  */
12
- export type If<TTest, TIf = true, TElse = false, TMaybe = TIf | TElse, TNever = never> = [IsNever<TTest>] extends [true] ? TNever : [TTest] extends [ErrorCondition] ? ReceivedError<TTest> : [TTest] extends [boolean] ? [IsTrue<TTest>] extends [true] ? TIf : [IsBooleanLiteral<TTest>] extends [true] ? TElse : TMaybe : [TTest] extends [LogicFunction] ? [IsTrue<ReturnType<TTest>>] extends [true] ? TIf : [IsFalse<ReturnType<TTest>>] extends [true] ? TElse : [IsBoolean<ReturnType<TTest>>] extends [true] ? TMaybe : never : InvalidTest<TTest>;
11
+ export type If<TTest, TIf = true, TElse = false, TMaybe = TIf | TElse, TNever = never, TError = never> = [IsNever<TTest>] extends [true] ? TNever : [TTest] extends [ErrorCondition] ? TError : [TTest] extends [boolean] ? [IsTrue<TTest>] extends [true] ? TIf : [IsBooleanLiteral<TTest>] extends [true] ? TElse : TMaybe : [TTest] extends [LogicFunction] ? [IsTrue<ReturnType<TTest>>] extends [true] ? TIf : [IsFalse<ReturnType<TTest>>] extends [true] ? TElse : [IsBoolean<ReturnType<TTest>>] extends [true] ? TMaybe : never : InvalidTest<TTest>;
13
12
  export {};
14
13
  //# sourceMappingURL=If.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"If.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/If.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAG,oBAAwB;AAE3I,KAAK,WAAW,CAAC,KAAK,IAAI,KAAK,CAC7B,cAAc,EACd,4FAA4F,EAC5F,IAAI,EACJ;IACE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC;CACb,CACF,CAAA;AAED,KAAK,aAAa,CAAC,KAAK,SAAS,cAAc,IAAI,UAAU,CAC3D,KAAK,EACL,IAAI,EACJ,OAAO,CACR,CAAA;AAaD;;;;GAIG;AACH,MAAM,MAAM,EAAE,CACZ,KAAK,EACL,GAAG,GAAG,IAAI,EACV,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,GAAG,GAAG,KAAK,EACpB,MAAM,GAAG,KAAK,IACX,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAClC,MAAM,GACN,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,GAC9B,aAAa,CAAC,KAAK,CAAC,GACtB,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GACvB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAC5B,GAAG,GACH,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACtC,KAAK,GACL,MAAM,GACV,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAC7B,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACxC,GAAG,GACL,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACzC,KAAK,GACL,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAC3C,MAAM,GACN,KAAK,GACT,WAAW,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"If.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/If.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAG,oBAAwB;AAE/H,KAAK,WAAW,CAAC,KAAK,IAAI,KAAK,CAC7B,cAAc,EACd,4FAA4F,EAC5F,IAAI,EACJ;IACE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,KAAK,CAAC;CACb,CACF,CAAA;AAeD;;;;GAIG;AACH,MAAM,MAAM,EAAE,CACZ,KAAK,EACL,GAAG,GAAG,IAAI,EACV,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,GAAG,GAAG,KAAK,EACpB,MAAM,GAAG,KAAK,EACd,MAAM,GAAG,KAAK,IACX,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAClC,MAAM,GACN,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,GAC9B,MAAM,GACR,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GACvB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAC5B,GAAG,GACH,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACtC,KAAK,GACL,MAAM,GACV,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAC7B,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACxC,GAAG,GACL,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACzC,KAAK,GACL,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAC3C,MAAM,GACN,KAAK,GACT,WAAW,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { IsUndefined, Unset } from "../../index";
2
+ /**
3
+ * **IfUnset**`<TTest,TElse,[TIf]>`
4
+ *
5
+ * Branching utility which will proxy _any_ type through except
6
+ * for those set with `Unset<[T]>`.
7
+ *
8
+ * When `Unset` is found then it will be replaced with `TElse`.
9
+ */
10
+ export type IfUnset<TTest, TElse, TIf = TTest> = TTest extends Unset ? TElse : Exclude<TIf, Unset>;
11
+ export type IfUnsetOrUndefined<TTest, TElse, TIf = TTest> = TTest extends Unset ? TElse : IsUndefined<TTest> extends true ? TElse : Exclude<TIf, Unset | undefined>;
12
+ //# sourceMappingURL=IfUnset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IfUnset.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/IfUnset.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,EACN,oBAAwB;AAGzB;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,CACjB,KAAK,EACL,KAAK,EACL,GAAG,GAAG,KAAK,IACT,KAAK,SAAS,KAAK,GACrB,KAAK,GACL,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAGtB,MAAM,MAAM,kBAAkB,CAC9B,KAAK,EACL,KAAK,EACL,GAAG,GAAG,KAAK,IACP,KAAK,SAAS,KAAK,GACrB,KAAK,GACL,WAAW,CAAC,KAAK,CAAC,SAAS,IAAI,GAC/B,KAAK,GACL,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC"}
@@ -5,12 +5,13 @@ export type OnPassRemap<TNever = unknown, TFalse = unknown, TError = unknown> =
5
5
  false: TFalse;
6
6
  error: TError;
7
7
  };
8
- type Merge<A extends Partial<OnPassRemap>, TKeys extends readonly (ObjectKey & keyof A)[], TConfig extends OnPassRemap = {
8
+ type Merge<TUser extends Partial<OnPassRemap>, TKeys extends readonly (ObjectKey & keyof TUser)[], TConfig extends OnPassRemap = {
9
9
  never: never;
10
10
  false: false;
11
11
  error: Constant<"not-set">;
12
- }> = [] extends TKeys ? TConfig : Merge<A, AfterFirst<TKeys>, As<ExpandDictionary<Record<First<TKeys>, A[First<TKeys>]> & Omit<TConfig, First<TKeys>>>, OnPassRemap>>;
12
+ }> = [] extends TKeys ? TConfig : Merge<TUser, AfterFirst<TKeys>, As<ExpandDictionary<Record<First<TKeys>, TUser[First<TKeys>]> & Omit<TConfig, First<TKeys>>>, OnPassRemap>>;
13
13
  type Process<TTest, TPass, TRemap extends OnPassRemap<unknown, unknown, unknown>> = [IsNever<TTest>] extends [true] ? TRemap["never"] : [IsErrorCondition<TTest>] extends [true] ? TRemap["error"] extends Constant<"not-set"> ? TTest : TRemap["error"] : [IsFalse<TTest>] extends [true] ? TRemap["false"] : TPass;
14
+ type Iterate<TTest extends readonly unknown[], TPass, TRemap extends OnPassRemap<unknown, unknown, unknown>> = [] extends TTest ? TPass : Process<First<TTest>, TPass, TRemap> extends TPass ? Iterate<AfterFirst<TTest>, TPass, TRemap> : Process<First<TTest>, TPass, TRemap>;
14
15
  /**
15
16
  * **OnPass**`<TTest, TPass,[TRemap],[TFalse]>`
16
17
  *
@@ -24,6 +25,6 @@ type Process<TTest, TPass, TRemap extends OnPassRemap<unknown, unknown, unknown>
24
25
  * - the `TRemap` allows you to remap error conditions
25
26
  * as well if needed
26
27
  */
27
- export type OnPass<TTest, TPass, TRemap extends Partial<OnPassRemap<unknown, unknown, unknown>> = OnPassRemap<never, false, Constant<"not-set">>> = Process<TTest, TPass, TRemap extends OnPassRemap<never, false, Constant<"not-set">> ? TRemap : Merge<TRemap, Keys<TRemap>>>;
28
+ export type OnPass<TTest, TPass, TRemap extends Partial<OnPassRemap<unknown, unknown, unknown>> = OnPassRemap<never, false, Constant<"not-set">>> = TTest extends readonly unknown[] ? Iterate<TTest, TPass, TRemap extends OnPassRemap<never, false, Constant<"not-set">> ? TRemap : Merge<TRemap, Keys<TRemap>>> : Process<TTest, TPass, TRemap extends OnPassRemap<never, false, Constant<"not-set">> ? TRemap : Merge<TRemap, Keys<TRemap>>>;
28
29
  export {};
29
30
  //# sourceMappingURL=OnPass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnPass.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/OnPass.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,EAAE,EACF,gBAAgB,EAChB,KAAK,EACL,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,OAAO,EACR,oBAAwB;AACzB,OAAO,EAAE,QAAQ,EAAE,iCAA4B;AAE/C,MAAM,MAAM,WAAW,CACrB,MAAM,GAAG,OAAO,EAChB,MAAM,GAAG,OAAO,EAChB,MAAM,GAAG,OAAO,IACd;IACF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED,KAAK,KAAK,CACR,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,EAC9B,KAAK,SAAS,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,EAAE,EAC9C,OAAO,SAAS,WAAW,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAAE,IACtF,EAAE,SAAS,KAAK,GAChB,OAAO,GACP,KAAK,CACL,CAAC,EACD,UAAU,CAAC,KAAK,CAAC,EACjB,EAAE,CAAC,gBAAgB,CACjB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GACnC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAC9B,EAAE,WAAW,CAAC,CAChB,CAAC;AAGJ,KAAK,OAAO,CACV,KAAK,EACL,KAAK,EACL,MAAM,SAAS,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IACnD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAC/B,MAAM,CAAC,OAAO,CAAC,GACf,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACxC,MAAM,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GACrE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAC/B,MAAM,CAAC,OAAO,CAAC,GACf,KAAK,CAAC;AAEV;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,MAAM,CAChB,KAAK,EACL,KAAK,EACL,MAAM,SAAS,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAG/G,OAAO,CACL,KAAK,EACL,KAAK,EACL,MAAM,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC3D,MAAM,GACN,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAC9B,CAAC"}
1
+ {"version":3,"file":"OnPass.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/OnPass.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { IsNever } from "../operators";
2
+ /**
3
+ * **WhenNever**`<T, [TMapTo]>`
4
+ *
5
+ * When `T` is _never_ this utility will map it to `TMapTo`; in all
6
+ * other cases it just proxies `T` through.
7
+ *
8
+ * **Note:** if not specified, `TMapTo` will be set to **false**.
9
+ */
10
+ export type WhenNever<T, TMapTo = false> = IsNever<T> extends true ? TMapTo : T;
11
+ //# sourceMappingURL=WhenNever.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhenNever.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/WhenNever.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,CACnB,CAAC,EACD,MAAM,GAAG,KAAK,IACZ,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GACzB,MAAM,GACN,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -11,4 +11,6 @@ export * from "./Default";
11
11
  export * from "./Iff";
12
12
  export * from "./Fail";
13
13
  export * from "./OnPass";
14
+ export * from "./IfUnset";
15
+ export * from "./WhenNever";
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,MAAM,CAAC;AACrB,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/branching/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,MAAM,CAAC;AACrB,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA"}
@@ -11,3 +11,5 @@ export * from "./Default.js";
11
11
  export * from "./Iff.js";
12
12
  export * from "./Fail.js";
13
13
  export * from "./OnPass.js";
14
+ export * from "./IfUnset.js";
15
+ export * from "./WhenNever.js";
@@ -1,4 +1,4 @@
1
- import { Contains, DoesExtend, IsEqual, StartsWith, TupleToUnion, EndsWith, Tuple, ErrorCondition, Extends, NumberLike, TypedFunction } from "../../index";
1
+ import { Contains, DoesExtend, IsEqual, StartsWith, TupleToUnion, EndsWith, Tuple, ErrorCondition, Extends, NumberLike, TypedFunction, IsGreaterThan, As, IsLessThan, WhenNever, And } from "../../index";
2
2
  /**
3
3
  * **ComparatorOperation**
4
4
  *
@@ -35,13 +35,13 @@ export type Comparison<TOp extends ComparatorOperation = ComparatorOperation, TA
35
35
  fn: TFn;
36
36
  } : ErrorCondition<"invalid-comparison">;
37
37
  type Unionize<T> = T extends readonly unknown[] ? TupleToUnion<T> : T;
38
- type Process<TVal, TOp extends ComparatorOperation, TComparator> = TOp extends "extends" ? DoesExtend<TVal, Unionize<TComparator>> : TOp extends "equals" ? IsEqual<TVal, Unionize<TComparator>> : TOp extends "contains" ? [TVal] extends [string | number | Tuple] ? Contains<TVal, TComparator> : never : TOp extends "containsAll" ? [TVal] extends [Tuple] ? [TComparator] extends [string | number | readonly string[]] ? Contains<TVal, TComparator> : never : never : TOp extends "startsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? StartsWith<TVal, TComparator> : never : never : TOp extends "endsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? EndsWith<TVal, TComparator> : never : never : TOp extends "returnEquals" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : TOp extends "returnExtends" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : never;
38
+ type Process<TVal, TOp extends ComparatorOperation, TComparator> = TOp extends "extends" ? DoesExtend<TVal, Unionize<TComparator>> : TOp extends "equals" ? IsEqual<TVal, Unionize<TComparator>> : TOp extends "contains" ? [TVal] extends [string | number | Tuple] ? Contains<TVal, TComparator> : never : TOp extends "containsAll" ? [TVal] extends [Tuple] ? [TComparator] extends [string | number | readonly string[]] ? Contains<TVal, TComparator> : never : never : TOp extends "startsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? StartsWith<TVal, TComparator> : never : never : TOp extends "greaterThan" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsGreaterThan<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "lessThan" ? And<[Extends<TComparator, NumberLike>, Extends<TVal, NumberLike>]> extends true ? IsLessThan<As<TVal, NumberLike>, As<TComparator, NumberLike>> : never : TOp extends "endsWith" ? [TVal] extends [string | number] ? [TComparator] extends [string | number | readonly string[]] ? EndsWith<TVal, TComparator> : never : never : TOp extends "returnEquals" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : TOp extends "returnExtends" ? TVal extends ((...args: any[]) => any) ? IsEqual<ReturnType<TVal>, TComparator> : false : never;
39
39
  /**
40
40
  * **Compare**`<TVal,TOp,TComparator>`
41
41
  *
42
42
  * Compares the value `TVal` with `TComparator` using
43
43
  * the `TOp` _operator_.
44
44
  */
45
- export type Compare<TVal, TOp extends ComparatorOperation, TComparator> = Process<TVal, TOp, TComparator>;
45
+ export type Compare<TVal, TOp extends ComparatorOperation, TComparator> = WhenNever<Process<TVal, TOp, TComparator>>;
46
46
  export {};
47
47
  //# sourceMappingURL=Compare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Compare.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/Compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Compare.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/Compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { AfterFirst, ComparatorOperation, Compare, Container, Dictionary, First, IsEqual, NumberLike, Or, Values, WhenNever } from "../../index";
2
+ type Process<TElements extends readonly unknown[], TOp extends ComparatorOperation, TComparator> = [] extends TElements ? false : [WhenNever<Compare<First<TElements>, TOp, TComparator>>] extends [true] ? true : Process<AfterFirst<TElements>, TOp, TComparator>;
3
+ export type Some<TContainer extends Container, TOp extends "extends" | "equals" | "startsWith" | "endsWith" | "lessThan" | "greaterThan", TComparator extends Or<[
4
+ IsEqual<TOp, "startsWith">,
5
+ IsEqual<TOp, "endsWith">
6
+ ]> extends true ? string : Or<[IsEqual<TOp, "lessThan">, IsEqual<TOp, "greaterThan">]> extends true ? NumberLike : unknown> = TContainer extends readonly unknown[] ? Process<TContainer, TOp, TComparator> : TContainer extends Dictionary ? Process<Values<TContainer>, TOp, TComparator> : never;
7
+ export {};
8
+ //# sourceMappingURL=Some.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Some.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/Some.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,UAAU,EACV,KAAK,EACL,OAAO,EACP,UAAU,EACV,EAAE,EACF,MAAM,EACN,SAAS,EACV,oBAAwB;AAEzB,KAAK,OAAO,CACZ,SAAS,SAAS,SAAS,OAAO,EAAE,EACpC,GAAG,SAAS,mBAAmB,EAC/B,WAAW,IACP,EAAE,SAAS,SAAS,GACtB,KAAK,GACL,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACrE,IAAI,GACJ,OAAO,CACL,UAAU,CAAC,SAAS,CAAC,EACrB,GAAG,EACH,WAAW,CACZ,CAAC;AAGN,MAAM,MAAM,IAAI,CACd,UAAU,SAAS,SAAS,EAC5B,GAAG,SAAS,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,EACzF,WAAW,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,EAAC,YAAY,CAAC;IAAE,OAAO,CAAC,GAAG,EAAC,UAAU,CAAC;CACnD,CAAC,SAAS,IAAI,GACb,MAAM,GACN,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAC,UAAU,CAAC,EAAE,OAAO,CAAC,GAAG,EAAC,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GACtE,UAAU,GACV,OAAO,IACP,UAAU,SAAS,SAAS,OAAO,EAAE,GACvC,OAAO,CAAC,UAAU,EAAC,GAAG,EAAC,WAAW,CAAC,GACnC,UAAU,SAAS,UAAU,GAC7B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,GAC7C,KAAK,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -2,4 +2,5 @@ export * from "./And";
2
2
  export * from "./Or";
3
3
  export * from "./Not";
4
4
  export * from "./Compare";
5
+ export * from "./Some";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,MAAM,CAAC;AACrB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/combinators/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,MAAM,CAAC;AACrB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
@@ -2,3 +2,4 @@ export * from "./And.js";
2
2
  export * from "./Or.js";
3
3
  export * from "./Not.js";
4
4
  export * from "./Compare.js";
5
+ export * from "./Some.js";
@@ -1,11 +1,11 @@
1
- import { Fn } from "../../functions/Fn";
1
+ import { FnWithDescription } from "../../index";
2
2
  /**
3
3
  * **AsDoneFn**`<T>`
4
4
  *
5
5
  * Narrows
6
6
  */
7
7
  export type AsDoneFn<T> = T extends {
8
- done: Fn;
8
+ done: FnWithDescription;
9
9
  } ? T & {
10
10
  done: () => unknown;
11
11
  } : never;
@@ -1 +1 @@
1
- {"version":3,"file":"AsDoneFn.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/narrowing/AsDoneFn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,2BAA+B;AAI5C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,EAAE,CAAA;CAAE,GAC5C,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,OAAO,CAAA;CAAE,GAC3B,KAAK,CAAC"}
1
+ {"version":3,"file":"AsDoneFn.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/narrowing/AsDoneFn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAwB;AAIpD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3D,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,OAAO,CAAA;CAAE,GAC3B,KAAK,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Api, Dictionary, ErrorCondition, EscapeFunction, FnProps, GetEscapeFunction, TypedFunction } from "../../index";
2
+ /**
3
+ * **HasEscapeFunction**`<T>`
4
+ *
5
+ * Checks whether the API surface passed in has an escape function defined.
6
+ */
7
+ export type HasEscapeFunction<T extends Dictionary | TypedFunction | Api> = GetEscapeFunction<T> extends ErrorCondition ? false : true;
8
+ export type IsEscapeFunction<T> = T extends TypedFunction ? T extends EscapeFunction ? FnProps<T> extends {
9
+ escape: true;
10
+ } ? true : false : false : false;
11
+ //# sourceMappingURL=ApiOperators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiOperators.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/operators/ApiOperators.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,UAAU,EACV,cAAc,EACd,cAAc,EACd,OAAO,EACP,iBAAiB,EACjB,aAAa,EACd,oBAAwB;AAEzB;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,UAAU,GAAG,aAAa,GAAG,GAAG,IACxC,iBAAiB,CAAC,CAAC,CAAC,SAAS,cAAc,GAC7C,KAAK,GACL,IAAI,CAAC;AAIP,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,GACvD,CAAC,SAAS,cAAc,GACtB,OAAO,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GACjC,IAAI,GACJ,KAAK,GACP,KAAK,GACP,KAAK,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,17 +1,18 @@
1
- import { And, Or } from "../../index";
1
+ import { And, Dictionary, Or, Values } from "../../index";
2
2
  type Find<TList extends readonly unknown[], TComparator> = Or<{
3
3
  [K in keyof TList]: [TList[K]] extends [TComparator] ? true : false;
4
4
  }>;
5
5
  type Compare<TList extends readonly unknown[], TComparator extends readonly unknown[]> = And<{
6
6
  [K in keyof TList]: Find<TComparator, TList[K]> extends boolean ? Find<TComparator, TList[K]> : never;
7
7
  }, true>;
8
+ type Process<TList extends readonly unknown[], TComparator extends readonly unknown[]> = TList["length"] extends TComparator["length"] ? Compare<TList, TComparator> : false;
8
9
  /**
9
- * **HasSameValues**`<TList,TComparator>`
10
+ * **HasSameValues**`<TContainer,TComparator>`
10
11
  *
11
12
  * Boolean type utility which determines if the values in
12
13
  * `TList` and `TComparator` are the same (even if the order
13
14
  * is different).
14
15
  */
15
- export type HasSameValues<TList extends readonly unknown[], TComparator extends readonly unknown[]> = TList["length"] extends TComparator["length"] ? Compare<TList, TComparator> : false;
16
+ export type HasSameValues<TContainer extends readonly unknown[], TComparator extends readonly unknown[]> = TContainer extends readonly unknown[] ? Process<TContainer, TComparator> : TContainer extends Dictionary ? Process<Values<TContainer>, TComparator> : never;
16
17
  export {};
17
18
  //# sourceMappingURL=HasSameValues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HasSameValues.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/operators/HasSameValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,oBAAwB;AAE1C,KAAK,IAAI,CACP,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,IACT,EAAE,CAAC;KACJ,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,KAAK;CACpE,CAAC,CAAC;AAEH,KAAK,OAAO,CACV,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,SAAS,SAAS,OAAO,EAAE,IACpC,GAAG,CAAC;KACL,CAAC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,GAC3D,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAC3B,KAAK;CACV,EAAE,IAAI,CAAC,CAAA;AAER;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CACvB,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,SAAS,SAAS,OAAO,EAAE,IACpC,KAAK,CAAC,QAAQ,CAAC,SAAS,WAAW,CAAC,QAAQ,CAAC,GAC/C,OAAO,CACL,KAAK,EACL,WAAW,CACZ,GACD,KAAK,CAAC"}
1
+ {"version":3,"file":"HasSameValues.d.ts","sourceRoot":"","sources":["../../../../src/types/boolean-logic/operators/HasSameValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,oBAAwB;AAE9D,KAAK,IAAI,CACP,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,IACT,EAAE,CAAC;KACJ,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,KAAK;CACpE,CAAC,CAAC;AAEH,KAAK,OAAO,CACV,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,SAAS,SAAS,OAAO,EAAE,IACpC,GAAG,CAAC;KACL,CAAC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,GAC3D,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAC3B,KAAK;CACV,EAAE,IAAI,CAAC,CAAA;AAER,KAAK,OAAO,CACZ,KAAK,SAAS,SAAS,OAAO,EAAE,EAChC,WAAW,SAAS,SAAS,OAAO,EAAE,IAClC,KAAK,CAAC,QAAQ,CAAC,SAAS,WAAW,CAAC,QAAQ,CAAC,GAC/C,OAAO,CACP,KAAK,EACL,WAAW,CACZ,GACC,KAAK,CAAC;AAGR;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CACvB,UAAU,SAAS,SAAS,OAAO,EAAE,EACrC,WAAW,SAAS,SAAS,OAAO,EAAE,IACpC,UAAU,SAAS,SAAS,OAAO,EAAE,GACvC,OAAO,CAAC,UAAU,EAAC,WAAW,CAAC,GAC/B,UAAU,SAAS,UAAU,GAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAC,WAAW,CAAC,GACvC,KAAK,CAAC"}