ramda-adjunct 4.0.0 → 4.1.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.
- package/CHANGELOG.md +970 -0
- package/README.md +1 -1
- package/dist/RA.node.js +51 -3
- package/dist/RA.node.min.js +1 -1
- package/dist/RA.web.js +51 -3
- package/dist/RA.web.min.js +1 -1
- package/dist/RA.web.standalone.js +52 -3
- package/dist/RA.web.standalone.min.js +1 -1
- package/es/index.js +1 -0
- package/es/pathNotEq.js +1 -1
- package/es/renameKey.js +35 -0
- package/lib/index.js +4 -2
- package/lib/pathNotEq.js +1 -1
- package/lib/renameKey.js +40 -0
- package/package.json +29 -30
- package/src/index.js +1 -0
- package/src/pathNotEq.js +1 -1
- package/src/renameKey.js +33 -0
- package/types/index.d.ts +28 -0
- package/.nvmrc +0 -1
- package/tmp-test-bundle.js.LICENSE.txt +0 -618
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 =
|
|
25
|
+
* const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
|
|
26
26
|
* R.filter(isFamous, users); //=> [ user2, user3 ]
|
|
27
27
|
*/
|
|
28
28
|
/* eslint-enable max-len */
|
package/es/renameKey.js
ADDED
|
@@ -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.
|
|
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 =
|
|
28
|
+
* const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
|
|
29
29
|
* R.filter(isFamous, users); //=> [ user2, user3 ]
|
|
30
30
|
*/
|
|
31
31
|
/* eslint-enable max-len */
|
package/lib/renameKey.js
ADDED
|
@@ -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.
|
|
17
|
+
"version": "4.1.0",
|
|
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.
|
|
128
|
-
"@babel/core": "=7.
|
|
129
|
-
"@babel/plugin-transform-modules-commonjs": "=7.
|
|
130
|
-
"@babel/preset-env": "=7.
|
|
131
|
-
"@babel/register": "7.
|
|
132
|
-
"@commitlint/cli": "=17.
|
|
133
|
-
"@commitlint/config-conventional": "=17.
|
|
134
|
-
"@typescript-eslint/eslint-plugin": "=
|
|
135
|
-
"@typescript-eslint/parser": "=
|
|
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.
|
|
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": "
|
|
144
|
-
"core-js": "=3.
|
|
143
|
+
"conventional-changelog-cli": "3.0.0",
|
|
144
|
+
"core-js": "=3.32.0",
|
|
145
145
|
"docdash": "git+https://github.com/char0n/docdash.git#534b44382138a55dd8d93642c979e51e46471185",
|
|
146
|
-
"eslint": "=8.
|
|
146
|
+
"eslint": "=8.47.0",
|
|
147
147
|
"eslint-config-airbnb-base": "=15.0.0",
|
|
148
|
-
"eslint-config-prettier": "=
|
|
149
|
-
"eslint-plugin-dtslint": "=3.0.
|
|
150
|
-
"eslint-plugin-import": "=2.
|
|
148
|
+
"eslint-config-prettier": "=9.0.0",
|
|
149
|
+
"eslint-plugin-dtslint": "=3.0.2",
|
|
150
|
+
"eslint-plugin-import": "=2.28.0",
|
|
151
151
|
"eslint-plugin-mocha": "=10.1.0",
|
|
152
|
-
"eslint-plugin-prettier": "
|
|
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": "=
|
|
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
|
-
"
|
|
163
|
-
"lint-staged": "13.2.0",
|
|
162
|
+
"lint-staged": "14.0.0",
|
|
164
163
|
"mocha": "=10.2.0",
|
|
165
|
-
"mocha-junit-reporter": "2.2.
|
|
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": "=
|
|
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.
|
|
174
|
-
"rimraf": "
|
|
172
|
+
"regenerator-runtime": "=0.14.0",
|
|
173
|
+
"rimraf": "5.0.1",
|
|
175
174
|
"sanctuary-show": "3.0.0",
|
|
176
|
-
"sinon": "=15.0
|
|
177
|
-
"terser-webpack-plugin": "5.3.
|
|
175
|
+
"sinon": "=15.2.0",
|
|
176
|
+
"terser-webpack-plugin": "5.3.9",
|
|
178
177
|
"testem": "=3.10.1",
|
|
179
|
-
"typescript": "=
|
|
180
|
-
"webpack": "=5.
|
|
181
|
-
"webpack-cli": "5.
|
|
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 =
|
|
25
|
+
* const isFamous = RA.pathNotEq(90210, ['address', 'zipCode']);
|
|
26
26
|
* R.filter(isFamous, users); //=> [ user2, user3 ]
|
|
27
27
|
*/
|
|
28
28
|
/* eslint-enable max-len */
|
package/src/renameKey.js
ADDED
|
@@ -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
|
@@ -622,6 +622,34 @@ export function renameKeys<MAP extends Dictionary<string>>(
|
|
|
622
622
|
obj: OBJ
|
|
623
623
|
) => PickRenameMulti<MAP, OBJ>;
|
|
624
624
|
|
|
625
|
+
|
|
626
|
+
type Keyable = string | number | symbol
|
|
627
|
+
type RenameObjectKey<
|
|
628
|
+
OKey extends keyof OBJ,
|
|
629
|
+
OBJ extends { readonly [s in OKey]: any },
|
|
630
|
+
NKey extends Keyable,
|
|
631
|
+
> = Omit<OBJ, OKey> & Record<NKey, OBJ[OKey]>
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Creates a new object with the own properties of the provided object, but a
|
|
635
|
+
* single key is renamed from `oldKey` to `newKey`.
|
|
636
|
+
*/
|
|
637
|
+
function renameKey<
|
|
638
|
+
OKey extends Keyable,
|
|
639
|
+
>(oldKey: OKey):
|
|
640
|
+
<NKey extends Keyable>(newKey: NKey) =>
|
|
641
|
+
<OBJ extends { readonly [s in OKey]: any }>(obj: OBJ) => RenameObjectKey<OKey, OBJ, NKey>;
|
|
642
|
+
function renameKey<
|
|
643
|
+
OKey extends Keyable,
|
|
644
|
+
NKey extends Keyable,
|
|
645
|
+
>(oldKey: OKey, newKey: NKey):
|
|
646
|
+
<OBJ extends { readonly [s in OKey]: any }>(obj: OBJ) => RenameObjectKey<OKey, OBJ, NKey>;
|
|
647
|
+
function renameKey<
|
|
648
|
+
OKey extends keyof OBJ,
|
|
649
|
+
OBJ extends { readonly [s in OKey]: any },
|
|
650
|
+
NKey extends Keyable,
|
|
651
|
+
>(oldKey: OKey, newKey: NKey, obj: OBJ): RenameObjectKey<OKey, OBJ, NKey>
|
|
652
|
+
|
|
625
653
|
/**
|
|
626
654
|
* Creates a new object with the own properties of the provided object, and the
|
|
627
655
|
* keys copied according to the keysMap object as `{oldKey: newKey}`.
|
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
18
|