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/CHANGELOG.md +1949 -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 +33 -3
- package/.nvmrc +0 -1
- package/tmp-test-bundle.js.LICENSE.txt +0 -618
- package/types/.eslintrc.js +0 -23
- package/types/dtslint.eslint.js +0 -13
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.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.
|
|
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.1",
|
|
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.1",
|
|
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
|
@@ -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
|
|
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
|