type-plus 5.1.0 → 5.3.0

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 (167) hide show
  1. package/README.md +4 -4
  2. package/cjs/array/PadLeft.spec.js.map +1 -1
  3. package/cjs/array/UnionOfValues.d.ts +1 -1
  4. package/cjs/array/UnionOfValues.d.ts.map +1 -1
  5. package/cjs/array/UnionOfValues.spec.js +10 -0
  6. package/cjs/array/UnionOfValues.spec.js.map +1 -1
  7. package/cjs/array/index.d.ts +3 -3
  8. package/cjs/array/index.d.ts.map +1 -1
  9. package/cjs/array/index.js.map +1 -1
  10. package/cjs/assertion/assertType.d.ts +3 -3
  11. package/cjs/assertion/assertType.spec.js +226 -131
  12. package/cjs/assertion/assertType.spec.js.map +1 -1
  13. package/cjs/function/ExtractFunction.d.ts +8 -2
  14. package/cjs/function/ExtractFunction.d.ts.map +1 -1
  15. package/cjs/function/ExtractFunction.js +5 -0
  16. package/cjs/function/ExtractFunction.js.map +1 -1
  17. package/cjs/function/ExtractFunction.spec.js +18 -6
  18. package/cjs/function/ExtractFunction.spec.js.map +1 -1
  19. package/cjs/functional/compose.d.ts +5 -1
  20. package/cjs/functional/compose.d.ts.map +1 -1
  21. package/cjs/functional/compose.js +5 -1
  22. package/cjs/functional/compose.js.map +1 -1
  23. package/cjs/object/filterKey.d.ts +2 -2
  24. package/cjs/object/filterKey.d.ts.map +1 -1
  25. package/cjs/object/filterKey.js +3 -1
  26. package/cjs/object/filterKey.js.map +1 -1
  27. package/cjs/object/filterKey.spec.js +5 -0
  28. package/cjs/object/filterKey.spec.js.map +1 -1
  29. package/cjs/object/findKey.d.ts +1 -1
  30. package/cjs/object/findKey.d.ts.map +1 -1
  31. package/cjs/object/findKey.js +3 -1
  32. package/cjs/object/findKey.js.map +1 -1
  33. package/cjs/object/findKey.spec.js +5 -0
  34. package/cjs/object/findKey.spec.js.map +1 -1
  35. package/cjs/object/mapKey.d.ts +1 -1
  36. package/cjs/object/mapKey.d.ts.map +1 -1
  37. package/cjs/object/mapKey.js +3 -1
  38. package/cjs/object/mapKey.js.map +1 -1
  39. package/cjs/object/mapKey.spec.js +5 -0
  40. package/cjs/object/mapKey.spec.js.map +1 -1
  41. package/cjs/object/reduceKey.d.ts +1 -1
  42. package/cjs/object/reduceKey.d.ts.map +1 -1
  43. package/cjs/object/reduceKey.js +1 -1
  44. package/cjs/object/reduceKey.js.map +1 -1
  45. package/cjs/object/reduceKey.spec.js +5 -0
  46. package/cjs/object/reduceKey.spec.js.map +1 -1
  47. package/cjs/object/someKey.d.ts +1 -1
  48. package/cjs/object/someKey.d.ts.map +1 -1
  49. package/cjs/object/someKey.js +3 -1
  50. package/cjs/object/someKey.js.map +1 -1
  51. package/cjs/object/someKey.spec.js +10 -0
  52. package/cjs/object/someKey.spec.js.map +1 -1
  53. package/cjs/predicates/CanAssign.spec.js +4 -3
  54. package/cjs/predicates/CanAssign.spec.js.map +1 -1
  55. package/cjs/predicates/Equal.d.ts +14 -18
  56. package/cjs/predicates/Equal.d.ts.map +1 -1
  57. package/cjs/predicates/Equal.js +0 -8
  58. package/cjs/predicates/Equal.js.map +1 -1
  59. package/cjs/predicates/Equal.spec.js +18 -0
  60. package/cjs/predicates/Equal.spec.js.map +1 -1
  61. package/cjs/predicates/IsAny.d.ts +3 -0
  62. package/cjs/predicates/IsAny.d.ts.map +1 -0
  63. package/cjs/predicates/IsAny.js +3 -0
  64. package/cjs/predicates/IsAny.js.map +1 -0
  65. package/cjs/predicates/index.d.ts +2 -3
  66. package/cjs/predicates/index.d.ts.map +1 -1
  67. package/cjs/predicates/index.js.map +1 -1
  68. package/cjs/predicates/isType.d.ts +1 -1
  69. package/cjs/predicates/isType.js +1 -1
  70. package/cjs/predicates/isType.spec.js +16 -12
  71. package/cjs/predicates/isType.spec.js.map +1 -1
  72. package/cjs/predicates/logical.d.ts +4 -4
  73. package/cjs/predicates/logical.d.ts.map +1 -1
  74. package/cjs/utils/inspect.d.ts +1 -1
  75. package/cjs/utils/inspect.d.ts.map +1 -1
  76. package/cjs/utils/inspect.js.map +1 -1
  77. package/esm/array/PadLeft.spec.js.map +1 -1
  78. package/esm/array/UnionOfValues.d.ts +1 -1
  79. package/esm/array/UnionOfValues.d.ts.map +1 -1
  80. package/esm/array/UnionOfValues.spec.js +11 -1
  81. package/esm/array/UnionOfValues.spec.js.map +1 -1
  82. package/esm/array/index.d.ts +3 -3
  83. package/esm/array/index.d.ts.map +1 -1
  84. package/esm/array/index.js.map +1 -1
  85. package/esm/assertion/assertType.d.ts +3 -3
  86. package/esm/assertion/assertType.spec.js +226 -131
  87. package/esm/assertion/assertType.spec.js.map +1 -1
  88. package/esm/function/ExtractFunction.d.ts +8 -2
  89. package/esm/function/ExtractFunction.d.ts.map +1 -1
  90. package/esm/function/ExtractFunction.js +5 -0
  91. package/esm/function/ExtractFunction.js.map +1 -1
  92. package/esm/function/ExtractFunction.spec.js +18 -6
  93. package/esm/function/ExtractFunction.spec.js.map +1 -1
  94. package/esm/functional/compose.d.ts +5 -1
  95. package/esm/functional/compose.d.ts.map +1 -1
  96. package/esm/functional/compose.js +5 -1
  97. package/esm/functional/compose.js.map +1 -1
  98. package/esm/object/filterKey.d.ts +2 -2
  99. package/esm/object/filterKey.d.ts.map +1 -1
  100. package/esm/object/filterKey.js +3 -1
  101. package/esm/object/filterKey.js.map +1 -1
  102. package/esm/object/filterKey.spec.js +5 -0
  103. package/esm/object/filterKey.spec.js.map +1 -1
  104. package/esm/object/findKey.d.ts +1 -1
  105. package/esm/object/findKey.d.ts.map +1 -1
  106. package/esm/object/findKey.js +3 -1
  107. package/esm/object/findKey.js.map +1 -1
  108. package/esm/object/findKey.spec.js +5 -0
  109. package/esm/object/findKey.spec.js.map +1 -1
  110. package/esm/object/mapKey.d.ts +1 -1
  111. package/esm/object/mapKey.d.ts.map +1 -1
  112. package/esm/object/mapKey.js +3 -1
  113. package/esm/object/mapKey.js.map +1 -1
  114. package/esm/object/mapKey.spec.js +5 -0
  115. package/esm/object/mapKey.spec.js.map +1 -1
  116. package/esm/object/reduceKey.d.ts +1 -1
  117. package/esm/object/reduceKey.d.ts.map +1 -1
  118. package/esm/object/reduceKey.js +1 -1
  119. package/esm/object/reduceKey.js.map +1 -1
  120. package/esm/object/reduceKey.spec.js +6 -1
  121. package/esm/object/reduceKey.spec.js.map +1 -1
  122. package/esm/object/someKey.d.ts +1 -1
  123. package/esm/object/someKey.d.ts.map +1 -1
  124. package/esm/object/someKey.js +3 -1
  125. package/esm/object/someKey.js.map +1 -1
  126. package/esm/object/someKey.spec.js +8 -1
  127. package/esm/object/someKey.spec.js.map +1 -1
  128. package/esm/predicates/CanAssign.spec.js +4 -3
  129. package/esm/predicates/CanAssign.spec.js.map +1 -1
  130. package/esm/predicates/Equal.d.ts +14 -18
  131. package/esm/predicates/Equal.d.ts.map +1 -1
  132. package/esm/predicates/Equal.js +0 -8
  133. package/esm/predicates/Equal.js.map +1 -1
  134. package/esm/predicates/Equal.spec.js +18 -0
  135. package/esm/predicates/Equal.spec.js.map +1 -1
  136. package/esm/predicates/IsAny.d.ts +3 -0
  137. package/esm/predicates/IsAny.d.ts.map +1 -0
  138. package/esm/predicates/IsAny.js +2 -0
  139. package/esm/predicates/IsAny.js.map +1 -0
  140. package/esm/predicates/index.d.ts +2 -3
  141. package/esm/predicates/index.d.ts.map +1 -1
  142. package/esm/predicates/index.js.map +1 -1
  143. package/esm/predicates/isType.d.ts +1 -1
  144. package/esm/predicates/isType.js +1 -1
  145. package/esm/predicates/isType.spec.js +16 -12
  146. package/esm/predicates/isType.spec.js.map +1 -1
  147. package/esm/predicates/logical.d.ts +4 -4
  148. package/esm/predicates/logical.d.ts.map +1 -1
  149. package/esm/utils/inspect.d.ts +1 -1
  150. package/esm/utils/inspect.d.ts.map +1 -1
  151. package/esm/utils/inspect.js.map +1 -1
  152. package/package.json +3 -3
  153. package/ts/array/UnionOfValues.ts +14 -10
  154. package/ts/array/index.ts +3 -4
  155. package/ts/function/ExtractFunction.ts +8 -2
  156. package/ts/functional/compose.ts +5 -1
  157. package/ts/object/filterKey.ts +5 -3
  158. package/ts/object/findKey.ts +4 -2
  159. package/ts/object/mapKey.ts +4 -2
  160. package/ts/object/reduceKey.ts +2 -2
  161. package/ts/object/someKey.ts +4 -2
  162. package/ts/predicates/Equal.ts +19 -23
  163. package/ts/predicates/IsAny.ts +3 -0
  164. package/ts/predicates/index.ts +2 -5
  165. package/ts/predicates/isType.ts +1 -1
  166. package/ts/predicates/logical.ts +26 -4
  167. package/ts/utils/inspect.ts +1 -1
@@ -1,15 +1,27 @@
1
1
  import { extractFunction, isType } from '../index.js';
2
- it('gets the function itself if it is not composite', () => {
3
- isType.equal();
4
- });
5
- it('omits other props from the type', () => {
6
- isType.equal();
2
+ describe(`ExtraceFunction<T>`, () => {
3
+ it('gets the function itself if it is not composite', () => {
4
+ isType.equal();
5
+ });
6
+ it('omits other props from the type', () => {
7
+ isType.equal();
8
+ });
9
+ it('works with intersact functions', () => {
10
+ isType.equal();
11
+ });
7
12
  });
8
13
  describe(`${extractFunction.name}()`, () => {
9
- it('adjust type to its function type', () => {
14
+ it('adjusts type to its function type', () => {
10
15
  const fn = Object.assign(() => { }, { a: 1 });
11
16
  const r = extractFunction(fn);
12
17
  isType.equal();
13
18
  });
19
+ it('function overload', () => {
20
+ function foo(v) { return v; }
21
+ const fn = Object.assign(foo, { a: 1 });
22
+ const r = extractFunction(fn);
23
+ // @ts-expect-error
24
+ isType.equal();
25
+ });
14
26
  });
15
27
  //# sourceMappingURL=ExtractFunction.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtractFunction.spec.js","sourceRoot":"","sources":["../../ts/function/ExtractFunction.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEtE,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAIzD,MAAM,CAAC,KAAK,EAAc,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAIzC,MAAM,CAAC,KAAK,EAAuB,CAAA;AACrC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE7C,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAE7B,MAAM,CAAC,KAAK,EAAuB,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ExtractFunction.spec.js","sourceRoot":"","sources":["../../ts/function/ExtractFunction.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEtE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAIzD,MAAM,CAAC,KAAK,EAAc,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAIzC,MAAM,CAAC,KAAK,EAAuB,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAKxC,MAAM,CAAC,KAAK,EAAc,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE7C,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAE7B,MAAM,CAAC,KAAK,EAAuB,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAG3B,SAAS,GAAG,CAAC,CAAU,IAAI,OAAO,CAAC,CAAA,CAAC,CAAC;QAErC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACvC,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;QAG7B,mBAAmB;QACnB,MAAM,CAAC,KAAK,EAA8D,CAAA;IAC5E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,7 +1,11 @@
1
1
  import type { Head, Last } from '../array/index.js';
2
2
  import type { AnyFunction } from '../function/AnyFunction.js';
3
3
  /**
4
- * compose functions
4
+ * Compose functions to produce a new function.
5
+ * @params args functions to be composed.
6
+ * Each function will receive the return value of the previous function as its parameters.
7
+ * @return The composed function will expect the parameters of the first function,
8
+ * and return the result of the last function.
5
9
  */
6
10
  export declare function compose<FS extends AnyFunction[]>(...fns: FS): (...args: Parameters<Head<FS>>) => ReturnType<Last<FS>>;
7
11
  //# sourceMappingURL=compose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAGrH"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAGrH"}
@@ -1,5 +1,9 @@
1
1
  /**
2
- * compose functions
2
+ * Compose functions to produce a new function.
3
+ * @params args functions to be composed.
4
+ * Each function will receive the return value of the previous function as its parameters.
5
+ * @return The composed function will expect the parameters of the first function,
6
+ * and return the result of the last function.
3
7
  */
4
8
  export function compose(...fns) {
5
9
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,OAAO,CAA2B,GAAG,GAAO;IAC1D,+DAA+D;IAC/D,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../ts/functional/compose.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAA2B,GAAG,GAAO;IAC1D,+DAA+D;IAC/D,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC"}
@@ -1,3 +1,3 @@
1
- import { KeyTypes } from './KeyTypes.js';
2
- export declare function filterKey<S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>) => boolean, thisArg?: T): Array<keyof S>;
1
+ import type { KeyTypes } from './KeyTypes.js';
2
+ export declare function filterKey<S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>, subject: S) => boolean, thisArg?: T): Array<keyof S>;
3
3
  //# sourceMappingURL=filterKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterKey.d.ts","sourceRoot":"","sources":["../../ts/object/filterKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAChE,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,EACjF,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAE7B"}
1
+ {"version":3,"file":"filterKey.d.ts","sourceRoot":"","sources":["../../ts/object/filterKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAChE,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,EAC7F,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAI7B"}
@@ -1,4 +1,6 @@
1
1
  export function filterKey(subject, predicate, thisArg) {
2
- return Object.keys(subject).filter(predicate, thisArg);
2
+ return Object.keys(subject).filter(function (k, i, a) {
3
+ return predicate.apply(this, [k, i, a, subject]);
4
+ }, thisArg);
3
5
  }
4
6
  //# sourceMappingURL=filterKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterKey.js","sourceRoot":"","sources":["../../ts/object/filterKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CACvB,OAAU,EACV,SAAiF,EACjF,OAAW;IACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"filterKey.js","sourceRoot":"","sources":["../../ts/object/filterKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CACvB,OAAU,EACV,SAA6F,EAC7F,OAAW;IACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC,EAAE,OAAO,CAAC,CAAA;AACb,CAAC"}
@@ -5,4 +5,9 @@ test(`return type is 'keyof subject'`, () => {
5
5
  const actual = filterKey(subject, key => subject[key] > 1);
6
6
  t.deepStrictEqual(actual, ['b', 'c']);
7
7
  });
8
+ it('includes subject in callback', () => {
9
+ const subject = { a: 1, b: 2, c: 3 };
10
+ const actual = filterKey(subject, (key, i, a, s) => s[key] > 1);
11
+ t.deepStrictEqual(actual, ['b', 'c']);
12
+ });
8
13
  //# sourceMappingURL=filterKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterKey.spec.js","sourceRoot":"","sources":["../../ts/object/filterKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"filterKey.spec.js","sourceRoot":"","sources":["../../ts/object/filterKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { KeyTypes } from './KeyTypes.js';
2
- export declare function findKey<S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>) => boolean, thisArg?: T): keyof S | undefined;
2
+ export declare function findKey<S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>, subject: S) => boolean, thisArg?: T): keyof S | undefined;
3
3
  //# sourceMappingURL=findKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findKey.d.ts","sourceRoot":"","sources":["../../ts/object/findKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAC9D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,EACjF,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAElC"}
1
+ {"version":3,"file":"findKey.d.ts","sourceRoot":"","sources":["../../ts/object/findKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAC9D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,EAC7F,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAIlC"}
@@ -1,4 +1,6 @@
1
1
  export function findKey(subject, predicate, thisArg) {
2
- return Object.keys(subject).find(predicate, thisArg);
2
+ return Object.keys(subject).find(function (k, i, a) {
3
+ return predicate.apply(this, [k, i, a, subject]);
4
+ }, thisArg);
3
5
  }
4
6
  //# sourceMappingURL=findKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findKey.js","sourceRoot":"","sources":["../../ts/object/findKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CACrB,OAAU,EACV,SAAiF,EACjF,OAAW;IACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC"}
1
+ {"version":3,"file":"findKey.js","sourceRoot":"","sources":["../../ts/object/findKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CACrB,OAAU,EACV,SAA6F,EAC7F,OAAW;IACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC,EAAE,OAAO,CAAC,CAAA;AACb,CAAC"}
@@ -5,4 +5,9 @@ test('predicate key can be used as indexer of the subject', () => {
5
5
  const actual = findKey(subject, key => subject[key] === 2);
6
6
  t.strictEqual(actual, 'b');
7
7
  });
8
+ it('includes subject in callback', () => {
9
+ const subject = { a: 1, b: 2, c: 3 };
10
+ const actual = findKey(subject, (key, i, a, s) => s[key] === 2);
11
+ t.strictEqual(actual, 'b');
12
+ });
8
13
  //# sourceMappingURL=findKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findKey.spec.js","sourceRoot":"","sources":["../../ts/object/findKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"findKey.spec.js","sourceRoot":"","sources":["../../ts/object/findKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { KeyTypes } from './KeyTypes.js';
2
- export declare function mapKey<R, S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>) => R, thisArg?: T): R[];
2
+ export declare function mapKey<R, S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>, subject: S) => R, thisArg?: T): R[];
3
3
  //# sourceMappingURL=mapKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapKey.d.ts","sourceRoot":"","sources":["../../ts/object/mapKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAChE,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAC3E,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAElB"}
1
+ {"version":3,"file":"mapKey.d.ts","sourceRoot":"","sources":["../../ts/object/mapKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAChE,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EACvF,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAIlB"}
@@ -1,4 +1,6 @@
1
1
  export function mapKey(subject, predicate, thisArg) {
2
- return Object.keys(subject).map(predicate, thisArg);
2
+ return Object.keys(subject).map(function (k, i, a) {
3
+ return predicate.apply(this, [k, i, a, subject]);
4
+ }, thisArg);
3
5
  }
4
6
  //# sourceMappingURL=mapKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapKey.js","sourceRoot":"","sources":["../../ts/object/mapKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CACpB,OAAU,EACV,SAA2E,EAC3E,OAAW;IACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC"}
1
+ {"version":3,"file":"mapKey.js","sourceRoot":"","sources":["../../ts/object/mapKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CACpB,OAAU,EACV,SAAuF,EACvF,OAAW;IACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC,EAAE,OAAO,CAAC,CAAA;AACb,CAAC"}
@@ -5,4 +5,9 @@ test('predicate key can be used as indexer of the subject', () => {
5
5
  const actual = mapKey(subject, key => subject[key] + 1);
6
6
  a.satisfies(actual, [2, 3, 4]);
7
7
  });
8
+ it('includes subject in callback', () => {
9
+ const subject = { a: 1, b: 2, c: 3 };
10
+ const actual = mapKey(subject, (key, i, a, s) => s[key] + 1);
11
+ a.satisfies(actual, [2, 3, 4]);
12
+ });
8
13
  //# sourceMappingURL=mapKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapKey.spec.js","sourceRoot":"","sources":["../../ts/object/mapKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"mapKey.spec.js","sourceRoot":"","sources":["../../ts/object/mapKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { KeyTypes } from './KeyTypes.js';
2
- export declare function reduceByKey<S extends Record<KeyTypes, any>, T>(subject: S, callbackfn: (previousValue: T, key: keyof S, currentIndex: number, array: string[]) => T, initialValue: T): T;
2
+ export declare function reduceByKey<S extends Record<KeyTypes, any>, T>(subject: S, callbackfn: (previousValue: T, key: keyof S, currentIndex: number, array: string[], subject: S) => T, initialValue: T): T;
3
3
  /**
4
4
  * @deprecated renamed to reduceByKey
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.d.ts","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAC5D,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACxF,YAAY,EAAE,CAAC,GAAG,CAAC,CAEpB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,oBAAc,CAAA"}
1
+ {"version":3,"file":"reduceKey.d.ts","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAC5D,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EACpG,YAAY,EAAE,CAAC,GAAG,CAAC,CAEpB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,oBAAc,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export function reduceByKey(subject, callbackfn, initialValue) {
2
- return Object.keys(subject).reduce(callbackfn, initialValue);
2
+ return Object.keys(subject).reduce((p, k, i, a) => callbackfn(p, k, i, a, subject), initialValue);
3
3
  }
4
4
  /**
5
5
  * @deprecated renamed to reduceByKey
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,UAAwF,EACxF,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAiB,EAAE,YAAY,CAAC,CAAA;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,UAAoG,EACpG,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;AACnG,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import t from 'assert';
2
- import { reduceKey } from '../index.js';
2
+ import { reduceByKey, reduceKey } from '../index.js';
3
3
  test('predicate key can be used as indexer of the subject', () => {
4
4
  const subject = { a: 1, b: 2, c: 3 };
5
5
  const actual = reduceKey(subject, (p, k) => p += subject[k], 'a');
@@ -14,4 +14,9 @@ test('key type is string if subject type is plain object', () => {
14
14
  const actual = reduceKey(subject, (p, k) => p += subject[k], 'a');
15
15
  t.strictEqual(actual, 'a1');
16
16
  });
17
+ it('includes subject in callback', () => {
18
+ const subject = { a: 1, b: 2, c: 3 };
19
+ const actual = reduceByKey(subject, (p, k, i, a, s) => p += s[k], 'a');
20
+ t.strictEqual(actual, 'a123');
21
+ });
17
22
  //# sourceMappingURL=reduceKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.spec.js","sourceRoot":"","sources":["../../ts/object/reduceKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,2CAA2C;AAC3C,sFAAsF;AACtF,+BAA+B;AAC/B,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC9D,wDAAwD;IACxD,MAAM,OAAO,GAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"reduceKey.spec.js","sourceRoot":"","sources":["../../ts/object/reduceKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEpD,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,2CAA2C;AAC3C,sFAAsF;AACtF,+BAA+B;AAC/B,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC9D,wDAAwD;IACxD,MAAM,OAAO,GAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import type { KeyTypes } from './KeyTypes.js';
2
- export declare function someKey<S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, array: string[]) => unknown, thisArg?: T): boolean;
2
+ export declare function someKey<S extends Record<KeyTypes, any>, T = any>(subject: S, predicate: (this: T, key: keyof S, index: number, array: string[], subject: S) => unknown, thisArg?: T): boolean;
3
3
  //# sourceMappingURL=someKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"someKey.d.ts","sourceRoot":"","sources":["../../ts/object/someKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAC9D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,EAC7E,OAAO,CAAC,EAAE,CAAC,GACV,OAAO,CAET"}
1
+ {"version":3,"file":"someKey.d.ts","sourceRoot":"","sources":["../../ts/object/someKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAC9D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,EACzF,OAAO,CAAC,EAAE,CAAC,GACV,OAAO,CAIT"}
@@ -1,4 +1,6 @@
1
1
  export function someKey(subject, predicate, thisArg) {
2
- return Object.keys(subject).some(predicate, thisArg);
2
+ return Object.keys(subject).some(function (k, i, a) {
3
+ return predicate.apply(this, [k, i, a, subject]);
4
+ }, thisArg);
3
5
  }
4
6
  //# sourceMappingURL=someKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"someKey.js","sourceRoot":"","sources":["../../ts/object/someKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CACrB,OAAU,EACV,SAA6E,EAC7E,OAAW;IAEX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC"}
1
+ {"version":3,"file":"someKey.js","sourceRoot":"","sources":["../../ts/object/someKey.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CACrB,OAAU,EACV,SAAyF,EACzF,OAAW;IAEX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC,EAAE,OAAO,CAAC,CAAA;AACb,CAAC"}
@@ -1,6 +1,13 @@
1
- import { someKey } from '../index.js';
1
+ import t from 'assert';
2
+ import { isType, someKey } from '../index.js';
2
3
  test('predicate key can be used as indexer of the subject', () => {
3
4
  const subject = { a: 1, b: 2, c: 3 };
4
5
  expect(someKey(subject, key => subject[key] === 2)).toBe(true);
5
6
  });
7
+ it('includes subject in callback', () => {
8
+ const subject = { a: 1, b: 2, c: 3 };
9
+ const actual = someKey(subject, (k, i, a, s) => s[k] === 2);
10
+ isType.equal();
11
+ t.strictEqual(actual, true);
12
+ });
6
13
  //# sourceMappingURL=someKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"someKey.spec.js","sourceRoot":"","sources":["../../ts/object/someKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"someKey.spec.js","sourceRoot":"","sources":["../../ts/object/someKey.spec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE7C,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3D,MAAM,CAAC,KAAK,EAAgC,CAAA;IAC5C,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA"}
@@ -45,9 +45,10 @@ describe('canAssign()', () => {
45
45
  const t = canAssign(false);
46
46
  assertType.isTrue(t(undefined));
47
47
  assertType.isTrue(t({ a: 1 }));
48
- // these fails
49
- // t({ a: '' })
50
- // t({ a: '', b: '' })
48
+ // @ts-expect-error
49
+ t({ a: '' });
50
+ // @ts-expect-error
51
+ t({ a: '', b: '' });
51
52
  });
52
53
  });
53
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CanAssign.spec.js","sourceRoot":"","sources":["../../ts/predicates/CanAssign.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,SAAS,EAAE,MAAM,aAAa,CAAA;AAE9D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,UAAU,CAAC,MAAM,CAAC,IAA4B,CAAC,CAAA;QAC/C,UAAU,CAAC,MAAM,CAAC,IAAuB,CAAC,CAAA;QAC1C,UAAU,CAAC,MAAM,CAAC,IAAiC,CAAC,CAAA;QACpD,UAAU,CAAC,MAAM,CAAC,IAA8B,CAAC,CAAA;QACjD,UAAU,CAAC,MAAM,CAAC,IAA2B,CAAC,CAAA;QAC9C,UAAU,CAAC,MAAM,CAAC,IAAiC,CAAC,CAAA;QACpD,UAAU,CAAC,MAAM,CAAC,IAAiC,CAAC,CAAA;QACpD,UAAU,CAAC,MAAM,CAAC,IAAgC,CAAC,CAAA;QACnD,UAAU,CAAC,MAAM,CAAC,IAAmC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,UAAU,CAAC,OAAO,CAAC,KAA6B,CAAC,CAAA;QACjD,UAAU,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAA;QACnD,UAAU,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAA;QACnD,UAAU,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAA;QACnD,UAAU,CAAC,OAAO,CAAC,KAAkC,CAAC,CAAA;QACtD,UAAU,CAAC,OAAO,CAAC,KAAiC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,UAAU,CAAC,MAAM,CAAC,IAA0D,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,UAAU,CAAC,OAAO,CAAC,KAA2D,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC9D,UAAU,CAAC,MAAM,CAAC,SAAS,EAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YACzD,UAAU,CAAC,MAAM,CAAC,SAAS,EAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YAEjE,wBAAwB;YACxB,uCAAuC;QACzC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CAAA;YACZ,UAAU,CAAC,MAAM,CAAC,SAAS,EAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC/B,UAAU,CAAC,MAAM,CAAC,SAAS,EAAsB,CAAC,SAAS,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,SAAS,CAAgB,KAAK,CAAC,CAAA;YACzC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;YAC/B,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAE9B,cAAc;YACd,eAAe;YACf,sBAAsB;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"CanAssign.spec.js","sourceRoot":"","sources":["../../ts/predicates/CanAssign.spec.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,19 @@
1
+ import type { IsAny } from './IsAny.js';
2
+ import type { And, Or } from './logical.js';
1
3
  /**
2
- * `<T>() => T extends A ? 1 : 2` idea originate from `typepark`
3
- * But it does not work with union types.
4
- *
5
- * `<T>() => T extends A` is a trick to create an inferred type `T`.
6
- * This is needed for `boolean`, `string`, and `number`,
7
- * as they supports literal types.
4
+ * Checks if the two types are equal.
8
5
  */
9
- import { IsNever } from '../PrimitiveTypes.js';
6
+ export type Equal<A, B, Then = true, Else = false> = [A, B] extends [B, A] ? And<IsAny<A>, IsAny<B>, Then, Or<IsAny<A>, IsAny<B>, Else, Then>> : Else;
10
7
  /**
11
- * Checks if two types are equal.
8
+ * Checks if the two types are equal.
12
9
  */
13
- export type Equal<A, B, Then = true, Else = false> = [
14
- A,
15
- B
16
- ] extends [object, object] ? (IsNever<A> extends true ? (IsNever<B> extends true ? Then : Else) : (A extends B ? B extends A ? Then : Else : Else)) : (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Then : Else;
17
- export type IsEqual<A, B> = Equal<A, B>;
18
- export type NotEqual<A, B, Then = true, Else = false> = [
19
- A,
20
- B
21
- ] extends [object, object] ? (IsNever<A> extends true ? (IsNever<B> extends true ? Else : Then) : (A extends B ? B extends A ? Else : Then : Then)) : (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? Else : Then;
22
- export type IsNotEqual<A, B> = NotEqual<A, B>;
10
+ export type IsEqual<A, B, Then = true, Else = false> = Equal<A, B, Then, Else>;
11
+ /**
12
+ * Check if the two types are not equal
13
+ */
14
+ export type NotEqual<A, B, Then = true, Else = false> = Equal<A, B, Else, Then>;
15
+ /**
16
+ * Check if the two types are not equal
17
+ */
18
+ export type IsNotEqual<A, B, Then = true, Else = false> = NotEqual<A, B, Then, Else>;
23
19
  //# sourceMappingURL=Equal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAC/C;IAAC,CAAC;IAAE,CAAC;CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GACvC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GACnD,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACvF,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEvC,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAClD;IAAC,CAAC;IAAE,CAAC;CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GACvC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GACnD,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEvF,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"Equal.d.ts","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACtE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EACtB,IAAI,EACJ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GACnC,IAAI,CAAA;AAER;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE/E;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA"}
@@ -1,10 +1,2 @@
1
- /**
2
- * `<T>() => T extends A ? 1 : 2` idea originate from `typepark`
3
- * But it does not work with union types.
4
- *
5
- * `<T>() => T extends A` is a trick to create an inferred type `T`.
6
- * This is needed for `boolean`, `string`, and `number`,
7
- * as they supports literal types.
8
- */
9
1
  export {};
10
2
  //# sourceMappingURL=Equal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Equal.js","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"Equal.js","sourceRoot":"","sources":["../../ts/predicates/Equal.ts"],"names":[],"mappings":""}
@@ -78,6 +78,24 @@ describe('Equal<A, B>', () => {
78
78
  it('works with union types containing symbol', () => {
79
79
  assertType.isFalse(false);
80
80
  });
81
+ it('works with intersect objects', () => {
82
+ assertType.isTrue(true);
83
+ assertType.isFalse(false);
84
+ });
85
+ it('works with union of functions', () => {
86
+ assertType.isTrue(true);
87
+ assertType.isFalse(false);
88
+ assertType.isFalse(false);
89
+ });
90
+ it('works against any', () => {
91
+ assertType.isTrue(true);
92
+ assertType.isFalse(false);
93
+ assertType.isFalse(false);
94
+ });
95
+ it('works against function overload', () => {
96
+ function foo(v) { return v; }
97
+ assertType.isTrue(true);
98
+ });
81
99
  });
82
100
  describe('NotEqual<A, B>', () => {
83
101
  test('boolean', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Equal.spec.js","sourceRoot":"","sources":["../../ts/predicates/Equal.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Equal.spec.js","sourceRoot":"","sources":["../../ts/predicates/Equal.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { IsExtend } from './Extends.js';
2
+ export type IsAny<T, Then = true, Else = false> = boolean extends IsExtend<T, string> ? Then : Else;
3
+ //# sourceMappingURL=IsAny.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsAny.d.ts","sourceRoot":"","sources":["../../ts/predicates/IsAny.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IsAny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsAny.js","sourceRoot":"","sources":["../../ts/predicates/IsAny.ts"],"names":[],"mappings":""}
@@ -2,11 +2,10 @@ export * from './CanAssign.js';
2
2
  export type { Equal, IsEqual, IsNotEqual, NotEqual } from './Equal.js';
3
3
  export type { Extendable, IsExtend, IsNotExtend, NotExtendable } from './Extends.js';
4
4
  export type { If } from './If.js';
5
+ export type { IsAny } from './IsAny.js';
6
+ export type { IsEmptyObject } from './IsEmptyObject.js';
5
7
  export * from './isType.js';
6
8
  export type { And, Not, Or, Xor } from './logical.js';
7
- export type { IsEmptyObject } from './IsEmptyObject.js';
8
- import type { IsExtend } from './Extends.js';
9
9
  export type IsLiteral<T extends number | string, Then = true, Else = false> = number extends T ? Else : string extends T ? Else : Then;
10
10
  export type IsBoolean<T, Then = true, Else = false> = boolean extends T ? Then : Else;
11
- export type IsAny<T, Then = true, Else = false> = boolean extends IsExtend<T, string> ? Then : Else;
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GAC5F,IAAI,GACJ,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAErF,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACpF,YAAY,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,cAAc,aAAa,CAAA;AAC3B,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,MAAM,SAAS,CAAC,GAC5F,IAAI,GACJ,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,OAAO,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAI9B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/predicates/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAM9B,cAAc,aAAa,CAAA"}
@@ -10,6 +10,6 @@ export declare function isType<T>(subject: unknown, validator: (s: T) => unknown
10
10
  export declare namespace isType {
11
11
  var t: <T extends true>(subject?: T | undefined) => boolean;
12
12
  var f: <T extends false>(subject?: T | undefined) => boolean;
13
- var equal: <C extends Equal<A, B, true, false>, A, B>() => void;
13
+ var equal: <C extends Equal<A, B>, A, B>() => void;
14
14
  }
15
15
  //# sourceMappingURL=isType.d.ts.map
@@ -9,7 +9,7 @@ isType.f = function (subject) {
9
9
  };
10
10
  /**
11
11
  * Are types A and B equals/not equals.
12
- * Easier to use then `isType.t<>()` and `isType.f<>()`,
12
+ * Easier to use than `isType.t<>()` and `isType.f<>()`,
13
13
  * when doing type level only equality comparison as you don't have to import `Equal<>`.
14
14
  */
15
15
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -54,30 +54,34 @@ describe('isType.t()', () => {
54
54
  test('accept true type but not false or boolean', () => {
55
55
  expect(isType.t()).toBe(true);
56
56
  expect(isType.t()).toBe(true);
57
- // these fails
58
- // isType.t<false>()
59
- // isType.t<boolean>()
57
+ // @ts-expect-error
58
+ isType.t();
59
+ // @ts-expect-error
60
+ isType.t();
60
61
  });
61
62
  test('accept value with type true but not false or boolean', () => {
62
63
  expect(isType.t(true)).toBe(true);
63
- // these fails
64
- // isType.t(false)
65
- // isType.t(1 === 1)
64
+ // @ts-expect-error
65
+ isType.t(false);
66
+ // @ts-expect-error
67
+ isType.t(1 === 1);
66
68
  });
67
69
  });
68
70
  describe('isType.f()', () => {
69
71
  test('accept false type but not true or boolean', () => {
70
72
  expect(isType.f()).toBe(true);
71
73
  expect(isType.f()).toBe(true);
72
- // these fails
73
- // isType.f<true>()
74
- // isType.f<boolean>()
74
+ // @ts-expect-error
75
+ isType.f();
76
+ // @ts-expect-error
77
+ isType.f();
75
78
  });
76
79
  test('accept value with type true but not false or boolean', () => {
77
80
  expect(isType.f(false)).toBe(true);
78
- // these fails
79
- // isType.f(true)
80
- // isType.f(1 !== 1)
81
+ // @ts-expect-error
82
+ isType.f(true);
83
+ // @ts-expect-error
84
+ isType.f(1 !== 1);
81
85
  });
82
86
  });
83
87
  describe('isType.equal()', () => {