type-plus 5.0.0 → 5.2.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 (98) hide show
  1. package/README.md +1 -0
  2. package/cjs/object/filterKey.d.ts +2 -2
  3. package/cjs/object/filterKey.d.ts.map +1 -1
  4. package/cjs/object/filterKey.js +3 -1
  5. package/cjs/object/filterKey.js.map +1 -1
  6. package/cjs/object/filterKey.spec.js +5 -0
  7. package/cjs/object/filterKey.spec.js.map +1 -1
  8. package/cjs/object/findKey.d.ts +1 -1
  9. package/cjs/object/findKey.d.ts.map +1 -1
  10. package/cjs/object/findKey.js +3 -1
  11. package/cjs/object/findKey.js.map +1 -1
  12. package/cjs/object/findKey.spec.js +5 -0
  13. package/cjs/object/findKey.spec.js.map +1 -1
  14. package/cjs/object/mapKey.d.ts +1 -1
  15. package/cjs/object/mapKey.d.ts.map +1 -1
  16. package/cjs/object/mapKey.js +3 -1
  17. package/cjs/object/mapKey.js.map +1 -1
  18. package/cjs/object/mapKey.spec.js +5 -0
  19. package/cjs/object/mapKey.spec.js.map +1 -1
  20. package/cjs/object/reduceKey.d.ts +1 -1
  21. package/cjs/object/reduceKey.d.ts.map +1 -1
  22. package/cjs/object/reduceKey.js +1 -1
  23. package/cjs/object/reduceKey.js.map +1 -1
  24. package/cjs/object/reduceKey.spec.js +5 -0
  25. package/cjs/object/reduceKey.spec.js.map +1 -1
  26. package/cjs/object/someKey.d.ts +1 -1
  27. package/cjs/object/someKey.d.ts.map +1 -1
  28. package/cjs/object/someKey.js +3 -1
  29. package/cjs/object/someKey.js.map +1 -1
  30. package/cjs/object/someKey.spec.js +10 -0
  31. package/cjs/object/someKey.spec.js.map +1 -1
  32. package/cjs/promise/PromiseValue.d.ts +1 -0
  33. package/cjs/promise/PromiseValue.d.ts.map +1 -1
  34. package/cjs/utils/index.d.ts +1 -0
  35. package/cjs/utils/index.d.ts.map +1 -1
  36. package/cjs/utils/index.js +1 -0
  37. package/cjs/utils/index.js.map +1 -1
  38. package/cjs/utils/inspect.d.ts +5 -0
  39. package/cjs/utils/inspect.d.ts.map +1 -0
  40. package/cjs/utils/inspect.js +12 -0
  41. package/cjs/utils/inspect.js.map +1 -0
  42. package/cjs/utils/inspect.spec.d.ts +2 -0
  43. package/cjs/utils/inspect.spec.d.ts.map +1 -0
  44. package/cjs/utils/inspect.spec.js +17 -0
  45. package/cjs/utils/inspect.spec.js.map +1 -0
  46. package/esm/object/filterKey.d.ts +2 -2
  47. package/esm/object/filterKey.d.ts.map +1 -1
  48. package/esm/object/filterKey.js +3 -1
  49. package/esm/object/filterKey.js.map +1 -1
  50. package/esm/object/filterKey.spec.js +5 -0
  51. package/esm/object/filterKey.spec.js.map +1 -1
  52. package/esm/object/findKey.d.ts +1 -1
  53. package/esm/object/findKey.d.ts.map +1 -1
  54. package/esm/object/findKey.js +3 -1
  55. package/esm/object/findKey.js.map +1 -1
  56. package/esm/object/findKey.spec.js +5 -0
  57. package/esm/object/findKey.spec.js.map +1 -1
  58. package/esm/object/mapKey.d.ts +1 -1
  59. package/esm/object/mapKey.d.ts.map +1 -1
  60. package/esm/object/mapKey.js +3 -1
  61. package/esm/object/mapKey.js.map +1 -1
  62. package/esm/object/mapKey.spec.js +5 -0
  63. package/esm/object/mapKey.spec.js.map +1 -1
  64. package/esm/object/reduceKey.d.ts +1 -1
  65. package/esm/object/reduceKey.d.ts.map +1 -1
  66. package/esm/object/reduceKey.js +1 -1
  67. package/esm/object/reduceKey.js.map +1 -1
  68. package/esm/object/reduceKey.spec.js +6 -1
  69. package/esm/object/reduceKey.spec.js.map +1 -1
  70. package/esm/object/someKey.d.ts +1 -1
  71. package/esm/object/someKey.d.ts.map +1 -1
  72. package/esm/object/someKey.js +3 -1
  73. package/esm/object/someKey.js.map +1 -1
  74. package/esm/object/someKey.spec.js +8 -1
  75. package/esm/object/someKey.spec.js.map +1 -1
  76. package/esm/promise/PromiseValue.d.ts +1 -0
  77. package/esm/promise/PromiseValue.d.ts.map +1 -1
  78. package/esm/utils/index.d.ts +1 -0
  79. package/esm/utils/index.d.ts.map +1 -1
  80. package/esm/utils/index.js +1 -0
  81. package/esm/utils/index.js.map +1 -1
  82. package/esm/utils/inspect.d.ts +5 -0
  83. package/esm/utils/inspect.d.ts.map +1 -0
  84. package/esm/utils/inspect.js +8 -0
  85. package/esm/utils/inspect.js.map +1 -0
  86. package/esm/utils/inspect.spec.d.ts +2 -0
  87. package/esm/utils/inspect.spec.d.ts.map +1 -0
  88. package/esm/utils/inspect.spec.js +15 -0
  89. package/esm/utils/inspect.spec.js.map +1 -0
  90. package/package.json +5 -3
  91. package/ts/object/filterKey.ts +5 -3
  92. package/ts/object/findKey.ts +4 -2
  93. package/ts/object/mapKey.ts +4 -2
  94. package/ts/object/reduceKey.ts +2 -2
  95. package/ts/object/someKey.ts +4 -2
  96. package/ts/promise/PromiseValue.ts +1 -0
  97. package/ts/utils/index.ts +1 -0
  98. package/ts/utils/inspect.ts +7 -0
package/README.md CHANGED
@@ -557,6 +557,7 @@ nominalMatch(b1, b2) // false
557
557
  - `AnyFunction<P, R>`: a generic type for any function
558
558
  - `ExtractFunction<F>`: extract the function signature from a type `F`.
559
559
  - `extractFunction(fn: F)`: adjust type of `fn` to its function signature only.
560
+ - `inspect<T>(value: T, inspector: (v: T) => void)`: inspect a value and return it.
560
561
 
561
562
  ## Functional Types
562
563
 
@@ -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"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filterKey = void 0;
4
4
  function filterKey(subject, predicate, thisArg) {
5
- return Object.keys(subject).filter(predicate, thisArg);
5
+ return Object.keys(subject).filter(function (k, i, a) {
6
+ return predicate.apply(this, [k, i, a, subject]);
7
+ }, thisArg);
6
8
  }
7
9
  exports.filterKey = filterKey;
8
10
  //# sourceMappingURL=filterKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterKey.js","sourceRoot":"","sources":["../../ts/object/filterKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AALD,8BAKC"}
1
+ {"version":3,"file":"filterKey.js","sourceRoot":"","sources":["../../ts/object/filterKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AAPD,8BAOC"}
@@ -10,4 +10,9 @@ test("return type is 'keyof subject'", function () {
10
10
  var actual = (0, index_js_1.filterKey)(subject, function (key) { return subject[key] > 1; });
11
11
  assert_1.default.deepStrictEqual(actual, ['b', 'c']);
12
12
  });
13
+ it('includes subject in callback', function () {
14
+ var subject = { a: 1, b: 2, c: 3 };
15
+ var actual = (0, index_js_1.filterKey)(subject, function (key, i, a, s) { return s[key] > 1; });
16
+ assert_1.default.deepStrictEqual(actual, ['b', 'c']);
17
+ });
13
18
  //# sourceMappingURL=filterKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterKey.spec.js","sourceRoot":"","sources":["../../ts/object/filterKey.spec.ts"],"names":[],"mappings":";;;;;AAAA,kDAAsB;AACtB,wCAAuC;AAEvC,IAAI,CAAC,gCAAgC,EAAE;IACrC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAA;IAC1D,gBAAC,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,kDAAsB;AACtB,wCAAuC;AAEvC,IAAI,CAAC,gCAAgC,EAAE;IACrC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAA;IAC1D,gBAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE;IACjC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAV,CAAU,CAAC,CAAA;IAC/D,gBAAC,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"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findKey = void 0;
4
4
  function findKey(subject, predicate, thisArg) {
5
- return Object.keys(subject).find(predicate, thisArg);
5
+ return Object.keys(subject).find(function (k, i, a) {
6
+ return predicate.apply(this, [k, i, a, subject]);
7
+ }, thisArg);
6
8
  }
7
9
  exports.findKey = findKey;
8
10
  //# sourceMappingURL=findKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findKey.js","sourceRoot":"","sources":["../../ts/object/findKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AALD,0BAKC"}
1
+ {"version":3,"file":"findKey.js","sourceRoot":"","sources":["../../ts/object/findKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AAPD,0BAOC"}
@@ -10,4 +10,9 @@ test('predicate key can be used as indexer of the subject', function () {
10
10
  var actual = (0, index_js_1.findKey)(subject, function (key) { return subject[key] === 2; });
11
11
  assert_1.default.strictEqual(actual, 'b');
12
12
  });
13
+ it('includes subject in callback', function () {
14
+ var subject = { a: 1, b: 2, c: 3 };
15
+ var actual = (0, index_js_1.findKey)(subject, function (key, i, a, s) { return s[key] === 2; });
16
+ assert_1.default.strictEqual(actual, 'b');
17
+ });
13
18
  //# sourceMappingURL=findKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findKey.spec.js","sourceRoot":"","sources":["../../ts/object/findKey.spec.ts"],"names":[],"mappings":";;;;;AAAA,kDAAsB;AACtB,wCAAqC;AAErC,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAA;IAC1D,gBAAC,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,kDAAsB;AACtB,wCAAqC;AAErC,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAA;IAC1D,gBAAC,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE;IACjC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,UAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC,CAAA;IAC/D,gBAAC,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"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapKey = void 0;
4
4
  function mapKey(subject, predicate, thisArg) {
5
- return Object.keys(subject).map(predicate, thisArg);
5
+ return Object.keys(subject).map(function (k, i, a) {
6
+ return predicate.apply(this, [k, i, a, subject]);
7
+ }, thisArg);
6
8
  }
7
9
  exports.mapKey = mapKey;
8
10
  //# sourceMappingURL=mapKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapKey.js","sourceRoot":"","sources":["../../ts/object/mapKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AALD,wBAKC"}
1
+ {"version":3,"file":"mapKey.js","sourceRoot":"","sources":["../../ts/object/mapKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AAPD,wBAOC"}
@@ -7,4 +7,9 @@ test('predicate key can be used as indexer of the subject', function () {
7
7
  var actual = (0, index_js_1.mapKey)(subject, function (key) { return subject[key] + 1; });
8
8
  assertron_1.a.satisfies(actual, [2, 3, 4]);
9
9
  });
10
+ it('includes subject in callback', function () {
11
+ var subject = { a: 1, b: 2, c: 3 };
12
+ var actual = (0, index_js_1.mapKey)(subject, function (key, i, a, s) { return s[key] + 1; });
13
+ assertron_1.a.satisfies(actual, [2, 3, 4]);
14
+ });
10
15
  //# sourceMappingURL=mapKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapKey.spec.js","sourceRoot":"","sources":["../../ts/object/mapKey.spec.ts"],"names":[],"mappings":";;AAAA,uCAA6B;AAC7B,wCAAoC;AAEpC,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,iBAAM,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAA;IACvD,aAAC,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,uCAA6B;AAC7B,wCAAoC;AAEpC,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,iBAAM,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAA;IACvD,aAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE;IACjC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,iBAAM,EAAC,OAAO,EAAE,UAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAV,CAAU,CAAC,CAAA;IAC5D,aAAC,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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.reduceKey = exports.reduceByKey = void 0;
4
4
  function reduceByKey(subject, callbackfn, initialValue) {
5
- return Object.keys(subject).reduce(callbackfn, initialValue);
5
+ return Object.keys(subject).reduce(function (p, k, i, a) { return callbackfn(p, k, i, a, subject); }, initialValue);
6
6
  }
7
7
  exports.reduceByKey = reduceByKey;
8
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AALD,kCAKC;AAED;;GAEG;AACU,QAAA,SAAS,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"reduceKey.js","sourceRoot":"","sources":["../../ts/object/reduceKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,WAAW,CACzB,OAAU,EACV,UAAoG,EACpG,YAAe;IACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAA/B,CAA+B,EAAE,YAAY,CAAC,CAAA;AACnG,CAAC;AALD,kCAKC;AAED;;GAEG;AACU,QAAA,SAAS,GAAG,WAAW,CAAA"}
@@ -19,4 +19,9 @@ test('key type is string if subject type is plain object', function () {
19
19
  var actual = (0, index_js_1.reduceKey)(subject, function (p, k) { return p += subject[k]; }, 'a');
20
20
  assert_1.default.strictEqual(actual, 'a1');
21
21
  });
22
+ it('includes subject in callback', function () {
23
+ var subject = { a: 1, b: 2, c: 3 };
24
+ var actual = (0, index_js_1.reduceByKey)(subject, function (p, k, i, a, s) { return p += s[k]; }, 'a');
25
+ assert_1.default.strictEqual(actual, 'a123');
26
+ });
22
27
  //# sourceMappingURL=reduceKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reduceKey.spec.js","sourceRoot":"","sources":["../../ts/object/reduceKey.spec.ts"],"names":[],"mappings":";;;;;AAAA,kDAAsB;AACtB,wCAAuC;AAEvC,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAf,CAAe,EAAE,GAAG,CAAC,CAAA;IACjE,gBAAC,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;IACzD,wDAAwD;IACxD,IAAM,OAAO,GAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAf,CAAe,EAAE,GAAG,CAAC,CAAA;IACjE,gBAAC,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,kDAAsB;AACtB,wCAAoD;AAEpD,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAf,CAAe,EAAE,GAAG,CAAC,CAAA;IACjE,gBAAC,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;IACzD,wDAAwD;IACxD,IAAM,OAAO,GAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5B,IAAM,MAAM,GAAG,IAAA,oBAAS,EAAC,OAAO,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAf,CAAe,EAAE,GAAG,CAAC,CAAA;IACjE,gBAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE;IACjC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,OAAO,EAAE,UAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAT,CAAS,EAAE,GAAG,CAAC,CAAA;IACtE,gBAAC,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"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.someKey = void 0;
4
4
  function someKey(subject, predicate, thisArg) {
5
- return Object.keys(subject).some(predicate, thisArg);
5
+ return Object.keys(subject).some(function (k, i, a) {
6
+ return predicate.apply(this, [k, i, a, subject]);
7
+ }, thisArg);
6
8
  }
7
9
  exports.someKey = someKey;
8
10
  //# sourceMappingURL=someKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"someKey.js","sourceRoot":"","sources":["../../ts/object/someKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AAND,0BAMC"}
1
+ {"version":3,"file":"someKey.js","sourceRoot":"","sources":["../../ts/object/someKey.ts"],"names":[],"mappings":";;;AAEA,SAAgB,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;AARD,0BAQC"}
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ var assert_1 = __importDefault(require("assert"));
3
7
  var index_js_1 = require("../index.js");
4
8
  test('predicate key can be used as indexer of the subject', function () {
5
9
  var subject = { a: 1, b: 2, c: 3 };
6
10
  expect((0, index_js_1.someKey)(subject, function (key) { return subject[key] === 2; })).toBe(true);
7
11
  });
12
+ it('includes subject in callback', function () {
13
+ var subject = { a: 1, b: 2, c: 3 };
14
+ var actual = (0, index_js_1.someKey)(subject, function (k, i, a, s) { return s[k] === 2; });
15
+ index_js_1.isType.equal();
16
+ assert_1.default.strictEqual(actual, true);
17
+ });
8
18
  //# sourceMappingURL=someKey.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"someKey.spec.js","sourceRoot":"","sources":["../../ts/object/someKey.spec.ts"],"names":[],"mappings":";;AAAA,wCAAqC;AAErC,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,CAAC,IAAA,kBAAO,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,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,kDAAsB;AACtB,wCAA6C;AAE7C,IAAI,CAAC,qDAAqD,EAAE;IAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,MAAM,CAAC,IAAA,kBAAO,EAAC,OAAO,EAAE,UAAA,GAAG,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAlB,CAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,8BAA8B,EAAE;IACjC,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACpC,IAAM,MAAM,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,UAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAV,CAAU,CAAC,CAAA;IAC3D,iBAAM,CAAC,KAAK,EAAgC,CAAA;IAC5C,gBAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Gets value type from Promise
3
+ * @deprecated Use `Awaited<T>` instead.
3
4
  */
4
5
  export type PromiseValue<P extends Promise<any>> = P extends Promise<infer T> ? T : never;
5
6
  //# sourceMappingURL=PromiseValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromiseValue.d.ts","sourceRoot":"","sources":["../../ts/promise/PromiseValue.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
1
+ {"version":3,"file":"PromiseValue.d.ts","sourceRoot":"","sources":["../../ts/promise/PromiseValue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './as.js';
2
+ export * from './inspect.js';
2
3
  export type { NonNull } from './NonNull.js';
3
4
  export type { NonUndefined } from './NonUndefined.js';
4
5
  export type { Widen } from './Widen.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,GAC/D,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACb,CAAC,CAAC,SAAS,IAAI,GACb,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACf,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CACd,CAAA;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACF,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,GAC/D,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACb,CAAC,CAAC,SAAS,IAAI,GACb,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACf,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CACd,CAAA;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACF,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./as.js"), exports);
18
+ __exportStar(require("./inspect.js"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,+CAA4B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Inspects the value and returns it.
3
+ */
4
+ export declare function inspect<T>(value: T, inspector: (value: Readonly<T>) => void): T;
5
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../ts/utils/inspect.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAG/E"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inspect = void 0;
4
+ /**
5
+ * Inspects the value and returns it.
6
+ */
7
+ function inspect(value, inspector) {
8
+ inspector(value);
9
+ return value;
10
+ }
11
+ exports.inspect = inspect;
12
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../ts/utils/inspect.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,OAAO,CAAI,KAAQ,EAAE,SAAuC;IAC1E,SAAS,CAAC,KAAK,CAAC,CAAA;IAChB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,0BAGC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inspect.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.spec.d.ts","sourceRoot":"","sources":["../../ts/utils/inspect.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var globals_1 = require("@jest/globals");
4
+ var index_js_1 = require("./index.js");
5
+ describe("".concat(index_js_1.inspect.name, "()"), function () {
6
+ it('should return the same value', function () {
7
+ var value = { a: 1, b: 2 };
8
+ expect((0, index_js_1.inspect)(value, function () { })).toBe(value);
9
+ });
10
+ it('should call the inspector', function () {
11
+ var value = { a: 1, b: 2 };
12
+ var spy = globals_1.jest.fn();
13
+ (0, index_js_1.inspect)(value, spy);
14
+ expect(spy).toBeCalledWith(value);
15
+ });
16
+ });
17
+ //# sourceMappingURL=inspect.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.spec.js","sourceRoot":"","sources":["../../ts/utils/inspect.spec.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,uCAAoC;AAEpC,QAAQ,CAAC,UAAG,kBAAO,CAAC,IAAI,OAAI,EAAE;IAC5B,EAAE,CAAC,8BAA8B,EAAE;QACjC,IAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC5B,MAAM,CAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,cAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2BAA2B,EAAE;QAC9B,IAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC5B,IAAM,GAAG,GAAG,cAAI,CAAC,EAAE,EAAE,CAAA;QACrB,IAAA,kBAAO,EAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -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"}
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Gets value type from Promise
3
+ * @deprecated Use `Awaited<T>` instead.
3
4
  */
4
5
  export type PromiseValue<P extends Promise<any>> = P extends Promise<infer T> ? T : never;
5
6
  //# sourceMappingURL=PromiseValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PromiseValue.d.ts","sourceRoot":"","sources":["../../ts/promise/PromiseValue.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
1
+ {"version":3,"file":"PromiseValue.d.ts","sourceRoot":"","sources":["../../ts/promise/PromiseValue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './as.js';
2
+ export * from './inspect.js';
2
3
  export type { NonNull } from './NonNull.js';
3
4
  export type { NonUndefined } from './NonUndefined.js';
4
5
  export type { Widen } from './Widen.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,GAC/D,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACb,CAAC,CAAC,SAAS,IAAI,GACb,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACf,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CACd,CAAA;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACF,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,GAC/D,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACb,CAAC,CAAC,SAAS,IAAI,GACb,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACf,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAC7C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CACd,CAAA;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACF,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './as.js';
2
+ export * from './inspect.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Inspects the value and returns it.
3
+ */
4
+ export declare function inspect<T>(value: T, inspector: (value: Readonly<T>) => void): T;
5
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../ts/utils/inspect.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAG/E"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Inspects the value and returns it.
3
+ */
4
+ export function inspect(value, inspector) {
5
+ inspector(value);
6
+ return value;
7
+ }
8
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../ts/utils/inspect.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,KAAQ,EAAE,SAAuC;IAC1E,SAAS,CAAC,KAAK,CAAC,CAAA;IAChB,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inspect.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.spec.d.ts","sourceRoot":"","sources":["../../ts/utils/inspect.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { jest } from '@jest/globals';
2
+ import { inspect } from './index.js';
3
+ describe(`${inspect.name}()`, () => {
4
+ it('should return the same value', () => {
5
+ const value = { a: 1, b: 2 };
6
+ expect(inspect(value, () => { })).toBe(value);
7
+ });
8
+ it('should call the inspector', () => {
9
+ const value = { a: 1, b: 2 };
10
+ const spy = jest.fn();
11
+ inspect(value, spy);
12
+ expect(spy).toBeCalledWith(value);
13
+ });
14
+ });
15
+ //# sourceMappingURL=inspect.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.spec.js","sourceRoot":"","sources":["../../ts/utils/inspect.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACrB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "5.0.0",
3
+ "version": "5.2.0",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -39,11 +39,13 @@
39
39
  "@changesets/cli": "^2.25.2",
40
40
  "@commitlint/cli": "^17.0.2",
41
41
  "@commitlint/config-conventional": "^17.0.2",
42
+ "@jest/globals": "^29.3.1",
42
43
  "@repobuddy/jest": "^2.1.0",
43
44
  "@size-limit/preset-small-lib": "^8.0.0",
44
45
  "@types/jest": "^29.0.0",
45
- "@types/node": "^14",
46
+ "@types/node": "^18.0.0",
46
47
  "@typescript-eslint/eslint-plugin": "^5.28.0",
48
+ "@typescript-eslint/parser": "^5.48.0",
47
49
  "@unional/fixture": "^3.0.0",
48
50
  "assertron": "^11.0.1",
49
51
  "cross-env": "^7.0.3",
@@ -67,7 +69,7 @@
67
69
  "typedoc-plugin-extras": "^2.2.3",
68
70
  "typescript": "4.9.4"
69
71
  },
70
- "packageManager": "pnpm@7.18.1",
72
+ "packageManager": "pnpm@7.25.0",
71
73
  "size-limit": [
72
74
  {
73
75
  "path": "./cjs/index.js",
@@ -1,8 +1,10 @@
1
- import { KeyTypes } from './KeyTypes.js'
1
+ import type { KeyTypes } from './KeyTypes.js'
2
2
 
3
3
  export function filterKey<S extends Record<KeyTypes, any>, T = any>(
4
4
  subject: S,
5
- predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>) => boolean,
5
+ predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>, subject: S) => boolean,
6
6
  thisArg?: T): Array<keyof S> {
7
- return Object.keys(subject).filter(predicate, thisArg)
7
+ return Object.keys(subject).filter(function (this: T, k, i, a) {
8
+ return predicate.apply(this, [k, i, a, subject])
9
+ }, thisArg)
8
10
  }
@@ -2,7 +2,9 @@ import { KeyTypes } from './KeyTypes.js'
2
2
 
3
3
  export function findKey<S extends Record<KeyTypes, any>, T = any>(
4
4
  subject: S,
5
- predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>) => boolean,
5
+ predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>, subject: S) => boolean,
6
6
  thisArg?: T): keyof S | undefined {
7
- return Object.keys(subject).find(predicate, thisArg)
7
+ return Object.keys(subject).find(function (this: T, k, i, a) {
8
+ return predicate.apply(this, [k, i, a, subject])
9
+ }, thisArg)
8
10
  }
@@ -2,7 +2,9 @@ import { KeyTypes } from './KeyTypes.js'
2
2
 
3
3
  export function mapKey<R, S extends Record<KeyTypes, any>, T = any>(
4
4
  subject: S,
5
- predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>) => R,
5
+ predicate: (this: T, key: keyof S, index: number, obj: Array<keyof S>, subject: S) => R,
6
6
  thisArg?: T): R[] {
7
- return Object.keys(subject).map(predicate, thisArg)
7
+ return Object.keys(subject).map(function (this: T, k, i, a) {
8
+ return predicate.apply(this, [k, i, a, subject])
9
+ }, thisArg)
8
10
  }
@@ -2,9 +2,9 @@ import type { KeyTypes } from './KeyTypes.js'
2
2
 
3
3
  export function reduceByKey<S extends Record<KeyTypes, any>, T>(
4
4
  subject: S,
5
- callbackfn: (previousValue: T, key: keyof S, currentIndex: number, array: string[]) => T,
5
+ callbackfn: (previousValue: T, key: keyof S, currentIndex: number, array: string[], subject: S) => T,
6
6
  initialValue: T): T {
7
- return Object.keys(subject).reduce(callbackfn as any, initialValue)
7
+ return Object.keys(subject).reduce((p, k, i, a) => callbackfn(p, k, i, a, subject), initialValue)
8
8
  }
9
9
 
10
10
  /**
@@ -2,8 +2,10 @@ import type { KeyTypes } from './KeyTypes.js'
2
2
 
3
3
  export function someKey<S extends Record<KeyTypes, any>, T = any>(
4
4
  subject: S,
5
- predicate: (this: T, key: keyof S, index: number, array: string[]) => unknown,
5
+ predicate: (this: T, key: keyof S, index: number, array: string[], subject: S) => unknown,
6
6
  thisArg?: T
7
7
  ): boolean {
8
- return Object.keys(subject).some(predicate, thisArg)
8
+ return Object.keys(subject).some(function (this: T, k, i, a) {
9
+ return predicate.apply(this, [k, i, a, subject])
10
+ }, thisArg)
9
11
  }
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * Gets value type from Promise
3
+ * @deprecated Use `Awaited<T>` instead.
3
4
  */
4
5
  export type PromiseValue<P extends Promise<any>> = P extends Promise<infer T> ? T : never
package/ts/utils/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './as.js'
2
+ export * from './inspect.js'
2
3
  export type { NonNull } from './NonNull.js'
3
4
  export type { NonUndefined } from './NonUndefined.js'
4
5
  export type { Widen } from './Widen.js'
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Inspects the value and returns it.
3
+ */
4
+ export function inspect<T>(value: T, inspector: (value: Readonly<T>) => void): T {
5
+ inspector(value)
6
+ return value
7
+ }