ramda-adjunct 4.0.0 → 4.1.1

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.
package/es/index.js CHANGED
@@ -170,6 +170,7 @@ export { default as findOr } from './findOr';
170
170
  export { default as invoke } from './invoke';
171
171
  export { default as invokeArgs } from './invokeArgs';
172
172
  export { default as paths } from './paths';
173
+ export { default as renameKey } from './renameKey';
173
174
  export { default as renameKeys } from './renameKeys';
174
175
  export { default as renameKeysWith } from './renameKeysWith';
175
176
  export { default as renameKeyWith } from './renameKeyWith';
package/es/pathNotEq.js CHANGED
@@ -22,7 +22,7 @@ import { pathEq, complement } from 'ramda';
22
22
  * const user2 = { address: { zipCode: 55555 } };
23
23
  * const user3 = { name: 'Bob' };
24
24
  * const users = [ user1, user2, user3 ];
25
- * const isFamous = R.pathNotEq(90210, ['address', 'zipCode']);
25
+ * const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
26
26
  * R.filter(isFamous, users); //=> [ user2, user3 ]
27
27
  */
28
28
  /* eslint-enable max-len */
@@ -0,0 +1,35 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
4
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
+ import { curry } from 'ramda';
6
+ import renameKeys from './renameKeys';
7
+
8
+ /**
9
+ * Creates a new object with the own properties of the provided object, but a
10
+ * single key is renamed from `oldKey` to `newKey`.
11
+ *
12
+ * Keep in mind that in the case of keys conflict is behavior undefined and
13
+ * the result may vary between various JS engines!
14
+ *
15
+ * @func renameKey
16
+ * @memberOf RA
17
+ * @since {@link https://char0n.github.io/ramda-adjunct/4.1.0|v4.1.0}
18
+ * @category Object
19
+ * @sig (String a, String b) => a -> b -> {a: *} -> {b: *}
20
+ * @param {!string} oldKey
21
+ * @param {!string} newKey
22
+ * @param {!Object} obj
23
+ * @return {!Object} New object with renamed key
24
+ * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-key-of-an-object|Ramda Cookbook}, {@link RA.renameKeyWith|renameKeyWith}
25
+ * @example
26
+ *
27
+ * const input = { firstName: 'Elisia', age: 22, type: 'human' };
28
+ *
29
+ * RA.renameKey('firstName', 'name')(input);
30
+ * //=> { name: 'Elisia', age: 22, type: 'human' }
31
+ */
32
+ var renameKey = curry(function (oldKey, newKey, obj) {
33
+ return renameKeys(_defineProperty({}, oldKey, newKey), obj);
34
+ });
35
+ export default renameKey;
package/lib/index.js CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.isNotRegExp = exports.isNotPrimitive = exports.isNotPlainObject = exports.isNotPlainObj = exports.isNotPair = exports.isNotObjectLike = exports.isNotObject = exports.isNotObjLike = exports.isNotObj = exports.isNotNumber = exports.isNotNull = exports.isNotNilOrEmpty = exports.isNotNil = exports.isNotNaN = exports.isNotMap = exports.isNotInteger = exports.isNotGeneratorFunction = exports.isNotFunction = exports.isNotFloat = exports.isNotFinite = exports.isNotEmpty = exports.isNotDate = exports.isNotBoolean = exports.isNotAsyncFunction = exports.isNotArrayLike = exports.isNotArray = exports.isNonPositive = exports.isNonNegative = exports.isNonEmptyString = exports.isNonEmptyArray = exports.isNilOrEmpty = exports.isNegativeZero = exports.isNegative = exports.isNaturalNumber = exports.isNaN = exports.isMap = exports.isIterable = exports.isInvalidDate = exports.isInteger32 = exports.isInteger = exports.isInt32 = exports.isIndexed = exports.isGeneratorFunction = exports.isFunction = exports.isFloat = exports.isFinite = exports.isFalsy = exports.isFalse = exports.isEven = exports.isError = exports.isEmptyString = exports.isEmptyArray = exports.isDate = exports.isBoolean = exports.isBlank = exports.isBigInt = exports.isAsyncFunction = exports.isArrayLike = exports.isArray = exports.invokeArgs = exports.invoke = exports.included = exports.inRange = exports.fnull = exports.floor = exports.flattenProp = exports.flattenPath = exports.flattenDepth = exports.firstP = exports.findOr = exports.filterIndexed = exports.escapeRegExp = exports.ensureArray = exports.dropArgs = exports.divideNum = exports.dispatch = exports.delayP = exports.defaultWhen = exports.curryRightN = exports.curryRight = exports.copyKeys = exports.concatRight = exports.concatAll = exports.compact = exports.ceil = exports.catchP = exports.cata = exports.async = exports.argsPass = exports.appendFlipped = exports.anyP = exports.allUnique = exports.allSettledP = exports.allP = exports.allIdenticalTo = exports.allIdentical = exports.allEqualTo = exports.allEqual = exports.Y = exports.Identity = void 0;
5
- exports.sortByProps = exports.sortByProp = exports.sortByPaths = exports.sliceTo = exports.sliceFrom = exports.skipTake = exports.sign = exports.sequencing = exports.seq = exports.round = exports.resolveP = exports.replaceAll = exports.repeatStr = exports.renameKeysWith = exports.renameKeys = exports.renameKeyWith = exports.rejectP = exports.reduceRightP = exports.reduceP = exports.reduceIndexed = exports.rangeStep = exports.propNotEq = exports.pickIndexes = exports.paths = exports.pathOrLazy = exports.pathNotEq = exports.padStart = exports.padEnd = exports.padCharsStart = exports.padCharsEnd = exports.overlaps = exports.omitIndexes = exports.omitBy = exports.notEqual = exports.notBoth = exports.notAllUnique = exports.notAllPass = exports.nor = exports.noop = exports.nonePass = exports.noneP = exports.neither = exports.nand = exports.move = exports.mergeProps = exports.mergeProp = exports.mergePaths = exports.mergePath = exports.mapIndexed = exports.list = exports.liftFN = exports.liftF = exports.lensTraverse = exports.lensSatisfies = exports.lensNotSatisfy = exports.lensNotEq = exports.lensIso = exports.lensEq = exports.lengthNotEq = exports.lengthLte = exports.lengthLt = exports.lengthGte = exports.lengthGt = exports.lengthEq = exports.lastP = exports.isValidNumber = exports.isValidDate = exports.isUndefined = exports.isUinteger32 = exports.isUint32 = exports.isTruthy = exports.isTrue = exports.isThenable = exports.isSymbol = exports.isString = exports.isSparseArray = exports.isSet = exports.isSentinelValue = exports.isSafeInteger = exports.isRegExp = exports.isPrototypeOf = exports.isPromise = exports.isPrimitive = exports.isPositiveZero = exports.isPositive = exports.isPlainObject = exports.isPlainObj = exports.isPair = exports.isOdd = exports.isObjectLike = exports.isObject = exports.isObjLike = exports.isObj = exports.isNumber = exports.isNull = exports.isNotValidNumber = exports.isNotValidDate = exports.isNotUndefined = exports.isNotString = exports.isNotSet = void 0;
6
- exports.zipObjWith = exports.weaveLazy = exports.weave = exports.viewOr = exports.unzipObjWith = exports.trunc = exports.trimStart = exports.trimRight = exports.trimLeft = exports.trimEnd = exports.trimCharsStart = exports.trimCharsEnd = exports.toUinteger32 = exports.toUint32 = exports.toNumber = exports.toInteger32 = exports.toInt32 = exports.toArray = exports.thenCatchP = exports.subtractNum = exports.stubUndefined = exports.stubString = exports.stubObject = exports.stubObj = exports.stubNull = exports.stubArray = exports.spreadProp = exports.spreadPath = void 0;
5
+ exports.sortByProp = exports.sortByPaths = exports.sliceTo = exports.sliceFrom = exports.skipTake = exports.sign = exports.sequencing = exports.seq = exports.round = exports.resolveP = exports.replaceAll = exports.repeatStr = exports.renameKeysWith = exports.renameKeys = exports.renameKeyWith = exports.renameKey = exports.rejectP = exports.reduceRightP = exports.reduceP = exports.reduceIndexed = exports.rangeStep = exports.propNotEq = exports.pickIndexes = exports.paths = exports.pathOrLazy = exports.pathNotEq = exports.padStart = exports.padEnd = exports.padCharsStart = exports.padCharsEnd = exports.overlaps = exports.omitIndexes = exports.omitBy = exports.notEqual = exports.notBoth = exports.notAllUnique = exports.notAllPass = exports.nor = exports.noop = exports.nonePass = exports.noneP = exports.neither = exports.nand = exports.move = exports.mergeProps = exports.mergeProp = exports.mergePaths = exports.mergePath = exports.mapIndexed = exports.list = exports.liftFN = exports.liftF = exports.lensTraverse = exports.lensSatisfies = exports.lensNotSatisfy = exports.lensNotEq = exports.lensIso = exports.lensEq = exports.lengthNotEq = exports.lengthLte = exports.lengthLt = exports.lengthGte = exports.lengthGt = exports.lengthEq = exports.lastP = exports.isValidNumber = exports.isValidDate = exports.isUndefined = exports.isUinteger32 = exports.isUint32 = exports.isTruthy = exports.isTrue = exports.isThenable = exports.isSymbol = exports.isString = exports.isSparseArray = exports.isSet = exports.isSentinelValue = exports.isSafeInteger = exports.isRegExp = exports.isPrototypeOf = exports.isPromise = exports.isPrimitive = exports.isPositiveZero = exports.isPositive = exports.isPlainObject = exports.isPlainObj = exports.isPair = exports.isOdd = exports.isObjectLike = exports.isObject = exports.isObjLike = exports.isObj = exports.isNumber = exports.isNull = exports.isNotValidNumber = exports.isNotValidDate = exports.isNotUndefined = exports.isNotString = exports.isNotSet = void 0;
6
+ exports.zipObjWith = exports.weaveLazy = exports.weave = exports.viewOr = exports.unzipObjWith = exports.trunc = exports.trimStart = exports.trimRight = exports.trimLeft = exports.trimEnd = exports.trimCharsStart = exports.trimCharsEnd = exports.toUinteger32 = exports.toUint32 = exports.toNumber = exports.toInteger32 = exports.toInt32 = exports.toArray = exports.thenCatchP = exports.subtractNum = exports.stubUndefined = exports.stubString = exports.stubObject = exports.stubObj = exports.stubNull = exports.stubArray = exports.spreadProp = exports.spreadPath = exports.sortByProps = void 0;
7
7
  var _isNotUndefined = _interopRequireDefault(require("./isNotUndefined"));
8
8
  exports.isNotUndefined = _isNotUndefined["default"];
9
9
  var _isUndefined = _interopRequireDefault(require("./isUndefined"));
@@ -320,6 +320,8 @@ var _invokeArgs = _interopRequireDefault(require("./invokeArgs"));
320
320
  exports.invokeArgs = _invokeArgs["default"];
321
321
  var _paths = _interopRequireDefault(require("./paths"));
322
322
  exports.paths = _paths["default"];
323
+ var _renameKey = _interopRequireDefault(require("./renameKey"));
324
+ exports.renameKey = _renameKey["default"];
323
325
  var _renameKeys = _interopRequireDefault(require("./renameKeys"));
324
326
  exports.renameKeys = _renameKeys["default"];
325
327
  var _renameKeysWith = _interopRequireDefault(require("./renameKeysWith"));
package/lib/pathNotEq.js CHANGED
@@ -25,7 +25,7 @@ var _ramda = require("ramda");
25
25
  * const user2 = { address: { zipCode: 55555 } };
26
26
  * const user3 = { name: 'Bob' };
27
27
  * const users = [ user1, user2, user3 ];
28
- * const isFamous = R.pathNotEq(90210, ['address', 'zipCode']);
28
+ * const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
29
29
  * R.filter(isFamous, users); //=> [ user2, user3 ]
30
30
  */
31
31
  /* eslint-enable max-len */
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports["default"] = void 0;
5
+ var _ramda = require("ramda");
6
+ var _renameKeys2 = _interopRequireDefault(require("./renameKeys"));
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
9
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
11
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
12
+ /**
13
+ * Creates a new object with the own properties of the provided object, but a
14
+ * single key is renamed from `oldKey` to `newKey`.
15
+ *
16
+ * Keep in mind that in the case of keys conflict is behavior undefined and
17
+ * the result may vary between various JS engines!
18
+ *
19
+ * @func renameKey
20
+ * @memberOf RA
21
+ * @since {@link https://char0n.github.io/ramda-adjunct/4.1.0|v4.1.0}
22
+ * @category Object
23
+ * @sig (String a, String b) => a -> b -> {a: *} -> {b: *}
24
+ * @param {!string} oldKey
25
+ * @param {!string} newKey
26
+ * @param {!Object} obj
27
+ * @return {!Object} New object with renamed key
28
+ * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-key-of-an-object|Ramda Cookbook}, {@link RA.renameKeyWith|renameKeyWith}
29
+ * @example
30
+ *
31
+ * const input = { firstName: 'Elisia', age: 22, type: 'human' };
32
+ *
33
+ * RA.renameKey('firstName', 'name')(input);
34
+ * //=> { name: 'Elisia', age: 22, type: 'human' }
35
+ */
36
+ var renameKey = (0, _ramda.curry)(function (oldKey, newKey, obj) {
37
+ return (0, _renameKeys2["default"])(_defineProperty({}, oldKey, newKey), obj);
38
+ });
39
+ var _default = renameKey;
40
+ exports["default"] = _default;
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "cookbook",
15
15
  "functional"
16
16
  ],
17
- "version": "4.0.0",
17
+ "version": "4.1.1",
18
18
  "homepage": "https://github.com/char0n/ramda-adjunct",
19
19
  "license": "BSD-3-Clause",
20
20
  "repository": {
@@ -124,61 +124,60 @@
124
124
  "ramda": ">= 0.29.0"
125
125
  },
126
126
  "devDependencies": {
127
- "@babel/cli": "7.21.0",
128
- "@babel/core": "=7.21.4",
129
- "@babel/plugin-transform-modules-commonjs": "=7.21.2",
130
- "@babel/preset-env": "=7.21.4",
131
- "@babel/register": "7.21.0",
132
- "@commitlint/cli": "=17.5.1",
133
- "@commitlint/config-conventional": "=17.4.4",
134
- "@typescript-eslint/eslint-plugin": "=5.57.1",
135
- "@typescript-eslint/parser": "=5.57.1",
127
+ "@babel/cli": "7.22.10",
128
+ "@babel/core": "=7.22.10",
129
+ "@babel/plugin-transform-modules-commonjs": "=7.22.5",
130
+ "@babel/preset-env": "=7.22.10",
131
+ "@babel/register": "7.22.5",
132
+ "@commitlint/cli": "=17.7.1",
133
+ "@commitlint/config-conventional": "=17.7.0",
134
+ "@typescript-eslint/eslint-plugin": "=6.4.0",
135
+ "@typescript-eslint/parser": "=6.4.0",
136
136
  "assert": "=2.0.0",
137
- "babel-loader": "=9.1.2",
137
+ "babel-loader": "=9.1.3",
138
138
  "babel-plugin-annotate-pure-calls": "0.4.0",
139
139
  "babel-plugin-istanbul": "6.1.1",
140
140
  "better-npm-run": "0.1.1",
141
141
  "chai": "4.3.7",
142
142
  "codecov": "3.8.3",
143
- "conventional-changelog-cli": "2.2.2",
144
- "core-js": "=3.30.0",
143
+ "conventional-changelog-cli": "3.0.0",
144
+ "core-js": "=3.32.1",
145
145
  "docdash": "git+https://github.com/char0n/docdash.git#534b44382138a55dd8d93642c979e51e46471185",
146
- "eslint": "=8.37.0",
146
+ "eslint": "=8.47.0",
147
147
  "eslint-config-airbnb-base": "=15.0.0",
148
- "eslint-config-prettier": "=8.8.0",
149
- "eslint-plugin-dtslint": "=3.0.1",
150
- "eslint-plugin-import": "=2.27.5",
148
+ "eslint-config-prettier": "=9.0.0",
149
+ "eslint-plugin-dtslint": "=3.0.2",
150
+ "eslint-plugin-import": "=2.28.1",
151
151
  "eslint-plugin-mocha": "=10.1.0",
152
- "eslint-plugin-prettier": "4.2.1",
152
+ "eslint-plugin-prettier": "5.0.0",
153
153
  "eslint-plugin-ramda": "2.5.1",
154
154
  "fantasy-land": "5.0.1",
155
155
  "fantasy-laws": "=2.0.1",
156
156
  "folktale": "=2.3.2",
157
- "glob": "=9.3.4",
157
+ "glob": "=10.3.3",
158
158
  "husky": "8.0.3",
159
159
  "istanbul": "=0.4.5",
160
160
  "jsdoc": "=4.0.2",
161
161
  "jsverify": "0.8.4",
162
- "license-cli": "1.1.6",
163
- "lint-staged": "13.2.0",
162
+ "lint-staged": "14.0.0",
164
163
  "mocha": "=10.2.0",
165
- "mocha-junit-reporter": "2.2.0",
164
+ "mocha-junit-reporter": "2.2.1",
166
165
  "mocha-multi-reporters": "1.5.1",
167
166
  "monet": "0.9.3",
168
167
  "nyc": "15.1.0",
169
- "prettier": "=2.8.7",
168
+ "prettier": "=3.0.2",
170
169
  "process": "=0.11.10",
171
170
  "ramda": "=0.29.0",
172
171
  "ramda-fantasy": "=0.8.0",
173
- "regenerator-runtime": "=0.13.11",
174
- "rimraf": "4.4.1",
172
+ "regenerator-runtime": "=0.14.0",
173
+ "rimraf": "5.0.1",
175
174
  "sanctuary-show": "3.0.0",
176
- "sinon": "=15.0.3",
177
- "terser-webpack-plugin": "5.3.7",
175
+ "sinon": "=15.2.0",
176
+ "terser-webpack-plugin": "5.3.9",
178
177
  "testem": "=3.10.1",
179
- "typescript": "=4.9.5",
180
- "webpack": "=5.77.0",
181
- "webpack-cli": "5.0.1",
178
+ "typescript": "=5.1.6",
179
+ "webpack": "=5.88.2",
180
+ "webpack-cli": "5.1.4",
182
181
  "taffydb": "npm:@jsdoc/salty@0.2.1"
183
182
  },
184
183
  "browserslist": "> 0.25%, ie 10, ie 11, not op_mini all",
package/src/index.js CHANGED
@@ -170,6 +170,7 @@ export { default as findOr } from './findOr';
170
170
  export { default as invoke } from './invoke';
171
171
  export { default as invokeArgs } from './invokeArgs';
172
172
  export { default as paths } from './paths';
173
+ export { default as renameKey } from './renameKey';
173
174
  export { default as renameKeys } from './renameKeys';
174
175
  export { default as renameKeysWith } from './renameKeysWith';
175
176
  export { default as renameKeyWith } from './renameKeyWith';
package/src/pathNotEq.js CHANGED
@@ -22,7 +22,7 @@ import { pathEq, complement } from 'ramda';
22
22
  * const user2 = { address: { zipCode: 55555 } };
23
23
  * const user3 = { name: 'Bob' };
24
24
  * const users = [ user1, user2, user3 ];
25
- * const isFamous = R.pathNotEq(90210, ['address', 'zipCode']);
25
+ * const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
26
26
  * R.filter(isFamous, users); //=> [ user2, user3 ]
27
27
  */
28
28
  /* eslint-enable max-len */
@@ -0,0 +1,33 @@
1
+ import { curry } from 'ramda';
2
+
3
+ import renameKeys from './renameKeys';
4
+
5
+ /**
6
+ * Creates a new object with the own properties of the provided object, but a
7
+ * single key is renamed from `oldKey` to `newKey`.
8
+ *
9
+ * Keep in mind that in the case of keys conflict is behavior undefined and
10
+ * the result may vary between various JS engines!
11
+ *
12
+ * @func renameKey
13
+ * @memberOf RA
14
+ * @since {@link https://char0n.github.io/ramda-adjunct/4.1.0|v4.1.0}
15
+ * @category Object
16
+ * @sig (String a, String b) => a -> b -> {a: *} -> {b: *}
17
+ * @param {!string} oldKey
18
+ * @param {!string} newKey
19
+ * @param {!Object} obj
20
+ * @return {!Object} New object with renamed key
21
+ * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-key-of-an-object|Ramda Cookbook}, {@link RA.renameKeyWith|renameKeyWith}
22
+ * @example
23
+ *
24
+ * const input = { firstName: 'Elisia', age: 22, type: 'human' };
25
+ *
26
+ * RA.renameKey('firstName', 'name')(input);
27
+ * //=> { name: 'Elisia', age: 22, type: 'human' }
28
+ */
29
+ const renameKey = curry((oldKey, newKey, obj) =>
30
+ renameKeys({ [oldKey]: newKey }, obj)
31
+ );
32
+
33
+ export default renameKey;
package/types/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  // Minimum TypeScript Version: 2.4
2
+ /* eslint-disable no-shadow */
2
3
 
3
4
  interface Functor<T> {
4
5
  map<U>(fn: (t: T) => U): Functor<U>;
@@ -507,7 +508,7 @@ export function pickIndexes<T>(indexes: number[], list: T[]): T[];
507
508
  export function pickIndexes(indexes: number[]): <T>(list: T[]) => T[];
508
509
 
509
510
  /**
510
- * Creates a list from from arguments.
511
+ * Creates a list from arguments.
511
512
  */
512
513
  export function list(...items: any[]): any[];
513
514
 
@@ -608,13 +609,13 @@ export function cata<V1, V2, T1, T2>(
608
609
  */
609
610
  type PickRenameMulti<
610
611
  R extends { [K: string]: string },
611
- T extends { [s in keyof R]: any }
612
+ T extends { [s in keyof R]: any },
612
613
  > = {
613
614
  [P in keyof T as P extends keyof R ? R[P] : P]: T[P];
614
615
  };
615
616
  export function renameKeys<
616
617
  MAP extends Dictionary<string>,
617
- OBJ extends { readonly [s in keyof MAP]: any }
618
+ OBJ extends { readonly [s in keyof MAP]: any },
618
619
  >(keysMap: MAP, obj: OBJ): PickRenameMulti<MAP, OBJ>;
619
620
  export function renameKeys<MAP extends Dictionary<string>>(
620
621
  keysMap: MAP
@@ -622,6 +623,35 @@ export function renameKeys<MAP extends Dictionary<string>>(
622
623
  obj: OBJ
623
624
  ) => PickRenameMulti<MAP, OBJ>;
624
625
 
626
+ type Keyable = string | number | symbol;
627
+ type RenameObjectKey<
628
+ OKey extends keyof OBJ, // eslint-disable-line no-use-before-define
629
+ OBJ extends { readonly [s in OKey]: any },
630
+ NKey extends Keyable,
631
+ > = Omit<OBJ, OKey> & Record<NKey, OBJ[OKey]>;
632
+ /**
633
+ * Creates a new object with the own properties of the provided object, but a
634
+ * single key is renamed from `oldKey` to `newKey`.
635
+ */
636
+ export function renameKey<OKey extends Keyable>(
637
+ oldKey: OKey
638
+ ): <NKey extends Keyable>(
639
+ newKey: NKey
640
+ ) => <OBJ extends { readonly [s in OKey]: any }>(
641
+ obj: OBJ
642
+ ) => RenameObjectKey<OKey, OBJ, NKey>;
643
+ export function renameKey<OKey extends Keyable, NKey extends Keyable>(
644
+ oldKey: OKey,
645
+ newKey: NKey
646
+ ): <OBJ extends { readonly [s in OKey]: any }>(
647
+ obj: OBJ
648
+ ) => RenameObjectKey<OKey, OBJ, NKey>;
649
+ export function renameKey<
650
+ OKey extends keyof OBJ, // eslint-disable-line no-use-before-define
651
+ OBJ extends { readonly [s in OKey]: any },
652
+ NKey extends Keyable,
653
+ >(oldKey: OKey, newKey: NKey, obj: OBJ): RenameObjectKey<OKey, OBJ, NKey>;
654
+
625
655
  /**
626
656
  * Creates a new object with the own properties of the provided object, and the
627
657
  * keys copied according to the keysMap object as `{oldKey: newKey}`.
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 18