type-plus 5.1.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 (73) hide show
  1. package/cjs/object/filterKey.d.ts +2 -2
  2. package/cjs/object/filterKey.d.ts.map +1 -1
  3. package/cjs/object/filterKey.js +3 -1
  4. package/cjs/object/filterKey.js.map +1 -1
  5. package/cjs/object/filterKey.spec.js +5 -0
  6. package/cjs/object/filterKey.spec.js.map +1 -1
  7. package/cjs/object/findKey.d.ts +1 -1
  8. package/cjs/object/findKey.d.ts.map +1 -1
  9. package/cjs/object/findKey.js +3 -1
  10. package/cjs/object/findKey.js.map +1 -1
  11. package/cjs/object/findKey.spec.js +5 -0
  12. package/cjs/object/findKey.spec.js.map +1 -1
  13. package/cjs/object/mapKey.d.ts +1 -1
  14. package/cjs/object/mapKey.d.ts.map +1 -1
  15. package/cjs/object/mapKey.js +3 -1
  16. package/cjs/object/mapKey.js.map +1 -1
  17. package/cjs/object/mapKey.spec.js +5 -0
  18. package/cjs/object/mapKey.spec.js.map +1 -1
  19. package/cjs/object/reduceKey.d.ts +1 -1
  20. package/cjs/object/reduceKey.d.ts.map +1 -1
  21. package/cjs/object/reduceKey.js +1 -1
  22. package/cjs/object/reduceKey.js.map +1 -1
  23. package/cjs/object/reduceKey.spec.js +5 -0
  24. package/cjs/object/reduceKey.spec.js.map +1 -1
  25. package/cjs/object/someKey.d.ts +1 -1
  26. package/cjs/object/someKey.d.ts.map +1 -1
  27. package/cjs/object/someKey.js +3 -1
  28. package/cjs/object/someKey.js.map +1 -1
  29. package/cjs/object/someKey.spec.js +10 -0
  30. package/cjs/object/someKey.spec.js.map +1 -1
  31. package/cjs/utils/inspect.d.ts +1 -1
  32. package/cjs/utils/inspect.d.ts.map +1 -1
  33. package/cjs/utils/inspect.js.map +1 -1
  34. package/esm/object/filterKey.d.ts +2 -2
  35. package/esm/object/filterKey.d.ts.map +1 -1
  36. package/esm/object/filterKey.js +3 -1
  37. package/esm/object/filterKey.js.map +1 -1
  38. package/esm/object/filterKey.spec.js +5 -0
  39. package/esm/object/filterKey.spec.js.map +1 -1
  40. package/esm/object/findKey.d.ts +1 -1
  41. package/esm/object/findKey.d.ts.map +1 -1
  42. package/esm/object/findKey.js +3 -1
  43. package/esm/object/findKey.js.map +1 -1
  44. package/esm/object/findKey.spec.js +5 -0
  45. package/esm/object/findKey.spec.js.map +1 -1
  46. package/esm/object/mapKey.d.ts +1 -1
  47. package/esm/object/mapKey.d.ts.map +1 -1
  48. package/esm/object/mapKey.js +3 -1
  49. package/esm/object/mapKey.js.map +1 -1
  50. package/esm/object/mapKey.spec.js +5 -0
  51. package/esm/object/mapKey.spec.js.map +1 -1
  52. package/esm/object/reduceKey.d.ts +1 -1
  53. package/esm/object/reduceKey.d.ts.map +1 -1
  54. package/esm/object/reduceKey.js +1 -1
  55. package/esm/object/reduceKey.js.map +1 -1
  56. package/esm/object/reduceKey.spec.js +6 -1
  57. package/esm/object/reduceKey.spec.js.map +1 -1
  58. package/esm/object/someKey.d.ts +1 -1
  59. package/esm/object/someKey.d.ts.map +1 -1
  60. package/esm/object/someKey.js +3 -1
  61. package/esm/object/someKey.js.map +1 -1
  62. package/esm/object/someKey.spec.js +8 -1
  63. package/esm/object/someKey.spec.js.map +1 -1
  64. package/esm/utils/inspect.d.ts +1 -1
  65. package/esm/utils/inspect.d.ts.map +1 -1
  66. package/esm/utils/inspect.js.map +1 -1
  67. package/package.json +2 -2
  68. package/ts/object/filterKey.ts +5 -3
  69. package/ts/object/findKey.ts +4 -2
  70. package/ts/object/mapKey.ts +4 -2
  71. package/ts/object/reduceKey.ts +2 -2
  72. package/ts/object/someKey.ts +4 -2
  73. package/ts/utils/inspect.ts +1 -1
@@ -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,5 @@
1
1
  /**
2
2
  * Inspects the value and returns it.
3
3
  */
4
- export declare function inspect<T>(value: T, inspector: (value: T) => void): T;
4
+ export declare function inspect<T>(value: T, inspector: (value: Readonly<T>) => void): T;
5
5
  //# sourceMappingURL=inspect.d.ts.map
@@ -1 +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,CAAC,KAAK,IAAI,GAAG,CAAC,CAGrE"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../ts/utils/inspect.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,OAAO,CAAI,KAAQ,EAAE,SAA6B;IAChE,SAAS,CAAC,KAAK,CAAC,CAAA;IAChB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,0BAGC"}
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"}
@@ -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,5 @@
1
1
  /**
2
2
  * Inspects the value and returns it.
3
3
  */
4
- export declare function inspect<T>(value: T, inspector: (value: T) => void): T;
4
+ export declare function inspect<T>(value: T, inspector: (value: Readonly<T>) => void): T;
5
5
  //# sourceMappingURL=inspect.d.ts.map
@@ -1 +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,CAAC,KAAK,IAAI,GAAG,CAAC,CAGrE"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../ts/utils/inspect.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,KAAQ,EAAE,SAA6B;IAChE,SAAS,CAAC,KAAK,CAAC,CAAA;IAChB,OAAO,KAAK,CAAA;AACd,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "5.1.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": {
@@ -69,7 +69,7 @@
69
69
  "typedoc-plugin-extras": "^2.2.3",
70
70
  "typescript": "4.9.4"
71
71
  },
72
- "packageManager": "pnpm@7.22.0",
72
+ "packageManager": "pnpm@7.25.0",
73
73
  "size-limit": [
74
74
  {
75
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,7 +1,7 @@
1
1
  /**
2
2
  * Inspects the value and returns it.
3
3
  */
4
- export function inspect<T>(value: T, inspector: (value: T) => void): T {
4
+ export function inspect<T>(value: T, inspector: (value: Readonly<T>) => void): T {
5
5
  inspector(value)
6
6
  return value
7
7
  }