move to remeda

This commit is contained in:
Yanick Champoux 2023-01-03 13:51:35 -05:00
parent 2854fc61e1
commit 11d058824f
343 changed files with 4017 additions and 1417 deletions

5
.gitignore vendored
View File

@ -1,3 +1,6 @@
node_modules
coverage
dist
pnpm-lock.yaml
tsconfig*.tsbuildinfo
lib
types

18
Taskfile.yaml Normal file
View File

@ -0,0 +1,18 @@
# https://taskfile.dev
version: "3"
vars:
GREETING: Hello, World!
tasks:
build:
cmds:
- rm -fr types/ esm/ commonjs/
- tsc -p tsconfig.json
- tsc -p tsconfig-cjs.json
- tsc -p tsconfig-types.json
default:
cmds:
- echo "{{.GREETING}}"
silent: true

View File

@ -1,17 +0,0 @@
module.exports = (api) => {
api.cache(true)
return {
presets: [
[
'@babel/preset-env',
{
loose: true,
targets: {
browsers: ['last 2 versions', 'IE >= 9'],
},
},
],
'@babel/preset-typescript',
],
}
}

View File

@ -3,7 +3,11 @@
*
* Useful for replacing an object outright rather than merging it.
*
* @function
* @sig a -> (* -> a)
* @memberOf u
* @param {*} value what to return from returned function.
* @return {function} a new function that will always return value.
*
* @example
* var alwaysFour = u.constant(4);
@ -26,5 +30,5 @@
*
* expect(result).toEqual({ name: 'Mitch', favorites: { band: 'Coldplay' } });
*/
export declare function constant<A>(value: A): (...args: any[]) => A;
export default constant;
export default function constant<T>(value: T): () => Readonly<T>;
//# sourceMappingURL=constant.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,qBAG3C"}

44
commonjs/constant.js Normal file
View File

@ -0,0 +1,44 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const freeze_js_1 = __importDefault(require("./freeze.js"));
/**
* Returns a function that always returns the supplied value.
*
* Useful for replacing an object outright rather than merging it.
*
* @function
* @sig a -> (* -> a)
* @memberOf u
* @param {*} value what to return from returned function.
* @return {function} a new function that will always return value.
*
* @example
* var alwaysFour = u.constant(4);
* expect(alwaysFour(32)).toEqual(4);
*
* @example
* var user = {
* name: 'Mitch',
* favorites: {
* band: 'Nirvana',
* movie: 'The Matrix'
* }
* };
*
* var newFavorites = {
* band: 'Coldplay'
* };
*
* var result = u({ favorites: u.constant(newFavorites) }, user);
*
* expect(result).toEqual({ name: 'Mitch', favorites: { band: 'Coldplay' } });
*/
function constant(value) {
const frozen = (0, freeze_js_1.default)(value);
return () => frozen;
}
exports.default = constant;
//# sourceMappingURL=constant.js.map

1
commonjs/constant.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":";;;;;AAAA,4DAAiC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAwB,QAAQ,CAAI,KAAQ;IAC1C,MAAM,MAAM,GAAG,IAAA,mBAAM,EAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB,CAAC;AAHD,2BAGC"}

2
commonjs/constant.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=constant.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"constant.test.d.ts","sourceRoot":"","sources":["../src/constant.test.ts"],"names":[],"mappings":""}

18
commonjs/constant.test.js Normal file
View File

@ -0,0 +1,18 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const constant_js_1 = __importDefault(require("./constant.js"));
(0, vitest_1.test)("returns what it is given... constantly", () => {
const func = (0, constant_js_1.default)(4);
(0, vitest_1.expect)(func()).to.equal(4);
(0, vitest_1.expect)(func("hi")).to.equal(4);
(0, vitest_1.expect)(func("hi", 8)).to.equal(4);
(0, vitest_1.expect)(func(4)).to.equal(4);
});
(0, vitest_1.test)("freezes the result", () => {
(0, vitest_1.expect)(Object.isFrozen((0, constant_js_1.default)({})())).toBeTruthy();
});
//# sourceMappingURL=constant.test.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"constant.test.js","sourceRoot":"","sources":["../src/constant.test.ts"],"names":[],"mappings":";;;;;AAAA,mCAAgD;AAChD,gEAAqC;AAErC,IAAA,aAAI,EAAC,wCAAwC,EAAE,GAAG,EAAE;IAChD,MAAM,IAAI,GAAQ,IAAA,qBAAQ,EAAC,CAAC,CAAC,CAAC;IAE9B,IAAA,eAAM,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAA,qBAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AACzD,CAAC,CAAC,CAAC"}

View File

@ -7,6 +7,13 @@
* Or if `process.env.UPDEEP_MODE === 'dangerously_never_freeze'`, this returns the original object
* without freezing.
*
* If in a browser and built without replacing process, never freeze.
*
* @function
* @sig a -> a
* @param object Object to freeze.
* @return Frozen object, unless in production, then the same object.
*/
declare function freeze<O>(object: O): O;
declare function freeze<T>(object: T): Readonly<T>;
export default freeze;
//# sourceMappingURL=freeze.d.ts.map

1
commonjs/freeze.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../src/freeze.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAkBzC;AAED,eAAe,MAAM,CAAC"}

57
commonjs/freeze.js Normal file
View File

@ -0,0 +1,57 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isFreezable(object) {
if (object === null)
return false;
if (object instanceof RegExp)
return false;
if (object instanceof ArrayBuffer)
return false;
return Array.isArray(object) || typeof object === "object";
}
function needsFreezing(object) {
return isFreezable(object) && !Object.isFrozen(object);
}
function recur(object) {
Object.freeze(object);
Object.keys(object).forEach((key) => {
const value = object[key];
if (needsFreezing(value)) {
recur(value);
}
});
return object;
}
/**
* Deeply freeze a plain javascript object.
*
* If `process.env.NODE_ENV === 'production'`, this returns the original object
* without freezing.
*
* Or if `process.env.UPDEEP_MODE === 'dangerously_never_freeze'`, this returns the original object
* without freezing.
*
* If in a browser and built without replacing process, never freeze.
*
* @function
* @sig a -> a
* @param object Object to freeze.
* @return Frozen object, unless in production, then the same object.
*/
function freeze(object) {
if (typeof process === "undefined") {
return object;
}
if (process.env.NODE_ENV === "production") {
return object;
}
if (process.env.UPDEEP_MODE === "dangerously_never_freeze") {
return object;
}
if (needsFreezing(object)) {
recur(object);
}
return object;
}
exports.default = freeze;
//# sourceMappingURL=freeze.js.map

1
commonjs/freeze.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../src/freeze.ts"],"names":[],"mappings":";;AAAA,SAAS,WAAW,CAAC,MAAe;IAClC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,MAAM,YAAY,MAAM;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,MAAM,YAAY,WAAW;QAAE,OAAO,KAAK,CAAC;IAEhD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,KAAK,CAAC,MAAM;IACnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,KAAK,CAAC,CAAC;SACd;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,MAAM,CAAI,MAAS;IAC1B,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;QAClC,OAAO,MAAM,CAAC;KACf;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,OAAO,MAAM,CAAC;KACf;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,0BAA0B,EAAE;QAC1D,OAAO,MAAM,CAAC;KACf;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QACzB,KAAK,CAAC,MAAM,CAAC,CAAC;KACf;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kBAAe,MAAM,CAAC"}

2
commonjs/freeze.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=freeze.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"freeze.test.d.ts","sourceRoot":"","sources":["../src/freeze.test.ts"],"names":[],"mappings":""}

61
commonjs/freeze.test.js Normal file
View File

@ -0,0 +1,61 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const freeze_js_1 = __importDefault(require("./freeze.js"));
(0, vitest_1.describe)("freeze", () => {
(0, vitest_1.afterEach)(() => {
delete process.env.NODE_ENV;
});
(0, vitest_1.test)("freezes objects", () => {
const object = {};
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object)).to.be.true;
});
(0, vitest_1.test)("freezes nested objects", () => {
const object = { foo: { bar: 3 } };
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object.foo)).to.be.true;
});
(0, vitest_1.test)("freezes nested arrays", () => {
const object = [[0]];
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object)).to.be.true;
(0, vitest_1.expect)(Object.isFrozen(object[0])).to.be.true;
});
(0, vitest_1.test)("ignores functions", () => {
const object = { foo: () => 1 };
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object.foo)).to.be.false;
});
(0, vitest_1.test)("ignores regexps", () => {
const object = { foo: /\d/ };
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object.foo)).to.be.false;
});
(0, vitest_1.test)("does not freeze children if the parent is already frozen", () => {
const object = { foo: {} };
Object.freeze(object);
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object.foo)).to.be.false;
});
(0, vitest_1.test)("does not freeze in production", () => {
process.env.NODE_ENV = "production";
const object = {};
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object)).to.be.false;
});
(0, vitest_1.test)("handles null objects", () => {
const object = { foo: null };
(0, freeze_js_1.default)(object);
(0, vitest_1.expect)(Object.isFrozen(object)).to.be.true;
});
(0, vitest_1.test)("returns the same object", () => {
const object = {};
const result = (0, freeze_js_1.default)(object);
(0, vitest_1.expect)(result).to.equal(object);
});
});
//# sourceMappingURL=freeze.test.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"freeze.test.js","sourceRoot":"","sources":["../src/freeze.test.ts"],"names":[],"mappings":"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"}

7
commonjs/if.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
interface If {
(object: any, predicate: any, trueUpdates: any): unknown;
(predicate: any, trueUpdates: any): (unknown: any) => unknown;
}
declare const _default: If;
export default _default;
//# sourceMappingURL=if.d.ts.map

1
commonjs/if.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"if.d.ts","sourceRoot":"","sources":["../src/if.ts"],"names":[],"mappings":"AAKA,UAAU,EAAE;IACV,CAAC,MAAM,KAAA,EAAE,SAAS,KAAA,EAAE,WAAW,KAAA,GAAG,OAAO,CAAC;IAC1C,CAAC,SAAS,KAAA,EAAE,WAAW,KAAA,GAAG,CAAC,OAAO,KAAA,KAAK,OAAO,CAAC;CAChD;;AAMD,wBAA+B"}

13
commonjs/if.js Normal file
View File

@ -0,0 +1,13 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const remeda_1 = require("remeda");
const ifElse_js_1 = __importDefault(require("./ifElse.js"));
const wrap_js_1 = __importDefault(require("./wrap.js"));
function _if(object, predicate, trueUpdates) {
return (0, ifElse_js_1.default)(object, predicate, trueUpdates, remeda_1.identity);
}
exports.default = (0, wrap_js_1.default)(_if);
//# sourceMappingURL=if.js.map

1
commonjs/if.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"if.js","sourceRoot":"","sources":["../src/if.ts"],"names":[],"mappings":";;;;;AAAA,mCAAkC;AAElC,4DAAiC;AACjC,wDAA6B;AAO7B,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW;IACzC,OAAO,IAAA,mBAAM,EAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,kBAAe,IAAA,iBAAI,EAAC,GAAG,CAAO,CAAC"}

2
commonjs/if.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=if.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"if.test.d.ts","sourceRoot":"","sources":["../src/if.test.ts"],"names":[],"mappings":""}

32
commonjs/if.test.js Normal file
View File

@ -0,0 +1,32 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const if_js_1 = __importDefault(require("./if.js"));
(0, vitest_1.describe)("if", () => {
(0, vitest_1.test)("does not update if the predicate is false", () => {
const object = { a: 0 };
let result = (0, if_js_1.default)(false, { b: 1 }, object);
(0, vitest_1.expect)(result).to.eql(object);
result = (0, if_js_1.default)(0, false, 1);
(0, vitest_1.expect)(result).to.eql(0);
});
(0, vitest_1.test)("does update if the predicate is true", () => {
const object = { a: 0 };
const result = (0, if_js_1.default)(true, { b: 1 })(object);
(0, vitest_1.expect)(result).to.eql({ a: 0, b: 1 });
});
(0, vitest_1.test)("will use the result of a function passed as a predicate", () => {
const object = { a: 0 };
const aIsThree = (x) => x.a === 3;
const result = (0, if_js_1.default)(aIsThree, { b: 1 }, object);
(0, vitest_1.expect)(result).to.eql({ a: 0 });
});
(0, vitest_1.test)("freezes the result", () => {
(0, vitest_1.expect)(Object.isFrozen((0, if_js_1.default)(true, {})({}))).to.be.true;
(0, vitest_1.expect)(Object.isFrozen((0, if_js_1.default)(false, {})({}))).to.be.true;
});
});
//# sourceMappingURL=if.test.js.map

1
commonjs/if.test.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"if.test.js","sourceRoot":"","sources":["../src/if.test.ts"],"names":[],"mappings":";;;;;AAAA,mCAAgD;AAEhD,oDAA0B;AAE1B,IAAA,iBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE;IAClB,IAAA,aAAI,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,IAAI,MAAM,GAAG,IAAA,eAAG,EAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,GAAG,IAAA,eAAG,EAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAA,eAAG,EAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,eAAG,EAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAA,eAAG,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACtD,IAAA,eAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAA,eAAG,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}

8
commonjs/ifElse.d.ts vendored Normal file
View File

@ -0,0 +1,8 @@
type Predicate = ((source: any) => boolean) | boolean;
interface IfElse {
(object: any, predicate: Predicate, trueUpdates: any, falseUpdates: any): unknown;
(predicate: Predicate, trueUpdates: any, falseUpdates: any): (unknown: any) => unknown;
}
declare const _default: IfElse;
export default _default;
//# sourceMappingURL=ifElse.d.ts.map

1
commonjs/ifElse.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"ifElse.d.ts","sourceRoot":"","sources":["../src/ifElse.ts"],"names":[],"mappings":"AAWA,KAAK,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,OAAO,CAAC;AAEtD,UAAU,MAAM;IACd,CAAC,MAAM,KAAA,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,KAAA,EAAE,YAAY,KAAA,GAAG,OAAO,CAAC;IACnE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,KAAA,EAAE,YAAY,KAAA,GAAG,CAAC,OAAO,KAAA,KAAK,OAAO,CAAC;CACzE;;AAED,wBAA4C"}

14
commonjs/ifElse.js Normal file
View File

@ -0,0 +1,14 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const update_js_1 = __importDefault(require("./update.js"));
const wrap_js_1 = __importDefault(require("./wrap.js"));
function updateIfElse(object, predicate, trueUpdates, falseUpdates) {
const test = typeof predicate === "function" ? predicate(object) : predicate;
const updates = test ? trueUpdates : falseUpdates;
return (0, update_js_1.default)(object, updates);
}
exports.default = (0, wrap_js_1.default)(updateIfElse);
//# sourceMappingURL=ifElse.js.map

1
commonjs/ifElse.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"ifElse.js","sourceRoot":"","sources":["../src/ifElse.ts"],"names":[],"mappings":";;;;;AAAA,4DAAiC;AACjC,wDAA6B;AAE7B,SAAS,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY;IAChE,MAAM,IAAI,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAElD,OAAO,IAAA,mBAAM,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AASD,kBAAe,IAAA,iBAAI,EAAC,YAAY,CAAW,CAAC"}

2
commonjs/ifElse.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=ifElse.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"ifElse.test.d.ts","sourceRoot":"","sources":["../src/ifElse.test.ts"],"names":[],"mappings":""}

43
commonjs/ifElse.test.js Normal file
View File

@ -0,0 +1,43 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const ifElse_js_1 = __importDefault(require("./ifElse.js"));
const if_js_1 = __importDefault(require("./if.js"));
(0, vitest_1.describe)("ifElse", () => {
(0, vitest_1.test)("does updates with the else if the predicate is false", () => {
const object = { a: 0 };
const result = (0, ifElse_js_1.default)(false, { b: 1 }, { b: 2 })(object);
(0, vitest_1.expect)(result).to.eql({ a: 0, b: 2 });
});
(0, vitest_1.test)("updates with the true update if the predicate is true", () => {
const object = { a: 0 };
const result = (0, ifElse_js_1.default)(true, { b: 1 }, { b: 4 })(object);
(0, vitest_1.expect)(result).to.eql({ a: 0, b: 1 });
});
(0, vitest_1.test)("will use the result of a function passed as a predicate", () => {
const object = { a: 0 };
const aIsThree = (x) => x.a === 3;
const result = (0, ifElse_js_1.default)(aIsThree, { b: 1 }, { b: 4 })(object);
(0, vitest_1.expect)(result).to.eql({ a: 0, b: 4 });
});
(0, vitest_1.test)("freezes the result", () => {
(0, vitest_1.expect)(Object.isFrozen((0, ifElse_js_1.default)(true, {}, {})({}))).to.be.true;
(0, vitest_1.expect)(Object.isFrozen((0, ifElse_js_1.default)(false, {}, {})({}))).to.be.true;
});
});
(0, vitest_1.describe)("if", () => {
(0, vitest_1.test)("does updates with the else if the predicate is false", () => {
const object = { a: 0 };
const result = (0, if_js_1.default)(false, { b: 1 })(object);
(0, vitest_1.expect)(result).not.toHaveProperty("b");
});
(0, vitest_1.test)("updates with the true update if the predicate is true", () => {
const object = { a: 0 };
const result = (0, if_js_1.default)(true, { b: 1 })(object);
(0, vitest_1.expect)(result).to.eql({ a: 0, b: 1 });
});
});
//# sourceMappingURL=ifElse.test.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"ifElse.test.js","sourceRoot":"","sources":["../src/ifElse.test.ts"],"names":[],"mappings":"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"}

3
commonjs/index.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
declare const u: any;
export default u;
//# sourceMappingURL=index.d.ts.map

1
commonjs/index.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,CAAC,EAAE,GAAY,CAAC;AAWtB,eAAe,CAAC,CAAC"}

46
commonjs/index.js Normal file
View File

@ -0,0 +1,46 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const freeze_js_1 = __importDefault(require("./freeze.js"));
const is_js_1 = __importDefault(require("./is.js"));
const if_js_1 = __importDefault(require("./if.js"));
const ifElse_js_1 = __importDefault(require("./ifElse.js"));
const update_js_1 = __importStar(require("./update.js"));
const updateIn_js_1 = __importDefault(require("./updateIn.js"));
const constant_js_1 = __importDefault(require("./constant.js"));
const u = update_js_1.default;
u.constant = constant_js_1.default;
u.if = if_js_1.default;
u.ifElse = ifElse_js_1.default;
u.is = is_js_1.default;
u.freeze = freeze_js_1.default;
u.update = update_js_1.default;
u.updateIn = updateIn_js_1.default;
u.omitted = update_js_1.omitted;
exports.default = u;
//# sourceMappingURL=index.js.map

1
commonjs/index.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAiC;AACjC,oDAAyB;AACzB,oDAA0B;AAC1B,4DAAiC;AACjC,yDAA8C;AAC9C,gEAAqC;AACrC,gEAAqC;AAErC,MAAM,CAAC,GAAQ,mBAAM,CAAC;AAEtB,CAAC,CAAC,QAAQ,GAAG,qBAAQ,CAAC;AACtB,CAAC,CAAC,EAAE,GAAG,eAAG,CAAC;AACX,CAAC,CAAC,MAAM,GAAG,mBAAM,CAAC;AAClB,CAAC,CAAC,EAAE,GAAG,eAAE,CAAC;AACV,CAAC,CAAC,MAAM,GAAG,mBAAM,CAAC;AAClB,CAAC,CAAC,MAAM,GAAG,mBAAM,CAAC;AAClB,CAAC,CAAC,QAAQ,GAAG,qBAAQ,CAAC;AACtB,CAAC,CAAC,OAAO,GAAG,mBAAO,CAAC;AAEpB,kBAAe,CAAC,CAAC"}

7
commonjs/is.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
interface Is {
(object: any, path: string | number | (number | string)[], predicate: any): boolean;
(path: string | number | (number | string)[], predicate: any): (object: any) => boolean;
}
declare const _default: Is;
export default _default;
//# sourceMappingURL=is.d.ts.map

1
commonjs/is.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"is.d.ts","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"AAsBA,UAAU,EAAE;IACR,CAAC,MAAM,KAAA,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,KAAA,GAAG,OAAO,CAAC;IAC1E,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,KAAA,GAAG,CAAC,MAAM,KAAA,KAAK,OAAO,CAAC;CACjF;;AAED,wBAA+B"}

21
commonjs/is.js Normal file
View File

@ -0,0 +1,21 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const splitPath_js_1 = __importDefault(require("./util/splitPath.js"));
const wrap_js_1 = __importDefault(require("./wrap.js"));
function _is(object, path, predicate) {
const parts = (0, splitPath_js_1.default)(path);
for (const part of parts) {
if (typeof object === "undefined")
return false;
object = object[part];
}
if (typeof predicate === "function") {
return predicate(object);
}
return predicate === object;
}
exports.default = (0, wrap_js_1.default)(_is);
//# sourceMappingURL=is.js.map

1
commonjs/is.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"is.js","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":";;;;;AAAA,uEAA4C;AAC5C,wDAA6B;AAE7B,SAAS,GAAG,CACR,MAAM,EACN,IAA2C,EAC3C,SAAS;IAET,MAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KACzB;IAED,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;QACjC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;KAC5B;IAED,OAAO,SAAS,KAAK,MAAM,CAAC;AAChC,CAAC;AAOD,kBAAe,IAAA,iBAAI,EAAC,GAAG,CAAO,CAAC"}

2
commonjs/is.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=is.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"is.test.d.ts","sourceRoot":"","sources":["../src/is.test.ts"],"names":[],"mappings":""}

52
commonjs/is.test.js Normal file
View File

@ -0,0 +1,52 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const is_js_1 = __importDefault(require("./is.js"));
(0, vitest_1.test)("returns true if path matches a value predicate", () => {
const result = (0, is_js_1.default)({ a: { b: 4 } }, "a.b", 4);
(0, vitest_1.expect)(result).to.be.true;
});
(0, vitest_1.test)("returns true if path matches a function predicate", () => {
const isEven = (x) => x % 2 === 0;
const result = (0, is_js_1.default)("a.b", isEven)({ a: { b: 6 } });
(0, vitest_1.expect)(result).to.be.true;
});
(0, vitest_1.test)("returns false if path matches a value predicate", () => {
const result = (0, is_js_1.default)("a.b", 4)({ a: { b: 5 } });
(0, vitest_1.expect)(result).to.be.false;
});
(0, vitest_1.test)("returns false if path matches a function predicate", () => {
const isEven = (x) => x % 2 === 0;
const result = (0, is_js_1.default)("a.b", isEven)({ a: { b: 7 } });
(0, vitest_1.expect)(result).to.be.false;
});
(0, vitest_1.test)("returns false if the path does not exist", () => {
const result = (0, is_js_1.default)("a.b.c.d", 4)({ a: { b: {} } });
(0, vitest_1.expect)(result).to.be.false;
});
(0, vitest_1.test)("can test for undefined", () => {
const result = (0, is_js_1.default)("a.b.c", undefined)({ a: { b: {} } });
(0, vitest_1.expect)(result).to.be.true;
});
(0, vitest_1.test)("tests the actual object if a blank path is given", () => {
const result = (0, is_js_1.default)(4, "", 4);
(0, vitest_1.expect)(result).toBeTruthy();
});
(0, vitest_1.test)("can use arrays as paths", () => {
const result = (0, is_js_1.default)(["a", "b"], 4)({ a: { b: 4 } });
(0, vitest_1.expect)(result).to.be.true;
});
(0, vitest_1.test)("can include array indexes in paths", () => {
let result = (0, is_js_1.default)("a.1.b", 4)({ a: [{}, { b: 4 }] });
(0, vitest_1.expect)(result).to.be.true;
result = (0, is_js_1.default)(["a", 1, "b"], 4)({ a: [{}, { b: 4 }] });
(0, vitest_1.expect)(result).to.be.true;
});
(0, vitest_1.test)("can be partially applied", () => {
const result = (0, is_js_1.default)("a.b", 4)({ a: { b: 4 } });
(0, vitest_1.expect)(result).to.be.true;
});
//# sourceMappingURL=is.test.js.map

1
commonjs/is.test.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"is.test.js","sourceRoot":"","sources":["../src/is.test.ts"],"names":[],"mappings":"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"}

7
commonjs/map.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
interface Map {
(object: any, iteratee: any): any;
(iteratee: any): (object: any) => any;
}
declare const _default: Map;
export default _default;
//# sourceMappingURL=map.d.ts.map

1
commonjs/map.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAuBA,UAAU,GAAG;IACX,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA,GAAG,GAAG,CAAC;IACxB,CAAC,QAAQ,KAAA,GAAG,CAAC,MAAM,KAAA,KAAK,GAAG,CAAC;CAC7B;;AAED,wBAAgC"}

24
commonjs/map.js Normal file
View File

@ -0,0 +1,24 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const remeda_1 = require("remeda");
const update_js_1 = __importDefault(require("./update.js"));
const wrap_js_1 = __importDefault(require("./wrap.js"));
function shallowEqual(object, otherObject) {
for (const k in otherObject) {
if (otherObject[k] !== object[k])
return false;
}
return true;
}
function map(object, iteratee) {
const updater = typeof iteratee === "function" ? iteratee : (0, update_js_1.default)(iteratee);
const mapper = Array.isArray(object) ? remeda_1.map.indexed : remeda_1.mapValues;
const newObject = mapper(object, updater);
const equal = shallowEqual(object, newObject);
return equal ? object : newObject;
}
exports.default = (0, wrap_js_1.default)(map);
//# sourceMappingURL=map.js.map

1
commonjs/map.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"map.js","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":";;;;;AAAA,mCAAgD;AAEhD,4DAAiC;AACjC,wDAA6B;AAE7B,SAAS,YAAY,CAAC,MAAM,EAAE,WAAW;IACvC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;QAC3B,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;KAChD;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,GAAG,CAAC,MAAM,EAAE,QAAQ;IAC3B,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,mBAAM,EAAC,QAAQ,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAS,CAAC;IAEhE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,CAAC;AAOD,kBAAe,IAAA,iBAAI,EAAC,GAAG,CAAQ,CAAC"}

2
commonjs/map.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=map.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"map.test.d.ts","sourceRoot":"","sources":["../src/map.test.ts"],"names":[],"mappings":""}

51
commonjs/map.test.js Normal file
View File

@ -0,0 +1,51 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const map_js_1 = __importDefault(require("./map.js"));
(0, vitest_1.describe)("map", () => {
(0, vitest_1.test)("applies updates to each item in an array", () => {
const object = [0, 1, 2];
const inc = (x) => x + 1;
const result = (0, map_js_1.default)(object, inc);
(0, vitest_1.expect)(result).to.eql([1, 2, 3]);
});
(0, vitest_1.test)("applies updates to each value in an object", () => {
const object = { a: 0, b: 1, c: 2 };
const inc = (x) => x + 1;
const result = (0, map_js_1.default)(inc)(object);
(0, vitest_1.expect)(result).to.eql({ a: 1, b: 2, c: 3 });
});
(0, vitest_1.test)("can update with a regular updates object", () => {
const object = [{ a: 0 }, { a: 0 }];
const result = (0, map_js_1.default)({ a: 1 })(object);
(0, vitest_1.expect)(result).to.eql([{ a: 1 }, { a: 1 }]);
});
(0, vitest_1.test)("returns the same object if no updates are made", () => {
const array = [0, 1];
const ident = (x) => x;
let result = (0, map_js_1.default)(ident)(array);
(0, vitest_1.expect)(result).to.equal(array);
const object = { a: 0 };
result = (0, map_js_1.default)(ident)(object);
(0, vitest_1.expect)(result).to.equal(object);
});
(0, vitest_1.test)("passes the key or index as the second parameter to the iteratee", () => {
const object = {
a: { x: 0 },
b: [3, 3],
};
const setToKey = (_, key) => key;
const result = (0, map_js_1.default)(object, (0, map_js_1.default)(setToKey));
(0, vitest_1.expect)(result).to.eql({
a: { x: "x" },
b: [0, 1],
});
});
(0, vitest_1.test)("freezes the result", () => {
(0, vitest_1.expect)(Object.isFrozen((0, map_js_1.default)({}, {}))).to.be.true;
});
});
//# sourceMappingURL=map.test.js.map

1
commonjs/map.test.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"map.test.js","sourceRoot":"","sources":["../src/map.test.ts"],"names":[],"mappings":"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"}

10
commonjs/update.d.ts vendored Normal file
View File

@ -0,0 +1,10 @@
export declare const omitted: () => Readonly<{
__omitted: boolean;
}>;
interface Update {
(object: any, func: any): any;
(func: any): (object: any) => any;
}
declare const _default: Update;
export default _default;
//# sourceMappingURL=update.d.ts.map

1
commonjs/update.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO;;EAAyB,CAAC;AAkG9C,UAAU,MAAM;IACd,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,GAAG,GAAG,CAAC;IACpB,CAAC,IAAI,KAAA,GAAG,CAAC,MAAM,KAAA,KAAK,GAAG,CAAC;CACzB;;AAED,wBAAsC"}

78
commonjs/update.js Normal file
View File

@ -0,0 +1,78 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.omitted = void 0;
const wrap_js_1 = __importDefault(require("./wrap.js"));
const constant_js_1 = __importDefault(require("./constant.js"));
const remeda_1 = require("remeda");
const innerOmitted = { __omitted: true };
exports.omitted = (0, constant_js_1.default)(innerOmitted);
function isEmpty(object) {
return !Object.keys(object).length;
}
function reduce(object, callback, initialValue) {
return Object.keys(object).reduce((acc, key) => callback(acc, object[key], key), initialValue);
}
function resolveUpdates(updates, object) {
return reduce(updates, (acc, value, key) => {
let updatedValue = value;
if (!Array.isArray(value) &&
value !== null &&
typeof value === "object") {
updatedValue = update(object[key], value); // eslint-disable-line no-use-before-define
}
else if (typeof value === "function") {
updatedValue = value(object[key]);
}
if (object[key] !== updatedValue) {
acc[key] = updatedValue; // eslint-disable-line no-param-reassign
}
return acc;
}, {});
}
function updateArray(updates, object) {
const newArray = [...object];
Object.keys(updates).forEach((key) => {
newArray[key] = updates[key];
});
return newArray;
}
const isPlainObject = (value) => (value === null || value === void 0 ? void 0 : value.constructor) === Object;
/**
* Recursively update an object or array.
*
* Can update with values:
* update({ foo: 3 }, { foo: 1, bar: 2 });
* // => { foo: 3, bar: 2 }
*
* Or with a function:
* update({ foo: x => (x + 1) }, { foo: 2 });
* // => { foo: 3 }
*
* @function
* @name update
* @param {Object|Function} updates
* @param {Object|Array} object to update
* @return {Object|Array} new object with modifications
*/
function update(object, updates) {
if (typeof updates === "function") {
return updates(object);
}
if (!isPlainObject(updates)) {
return updates;
}
const defaultedObject = typeof object === "undefined" || object === null ? {} : object;
const resolvedUpdates = resolveUpdates(updates, defaultedObject);
if (isEmpty(resolvedUpdates)) {
return defaultedObject;
}
if (Array.isArray(defaultedObject)) {
return updateArray(resolvedUpdates, defaultedObject).filter((value) => value !== innerOmitted);
}
return (0, remeda_1.omitBy)(Object.assign(Object.assign({}, defaultedObject), resolvedUpdates), (value) => value === innerOmitted);
}
exports.default = (0, wrap_js_1.default)(update);
//# sourceMappingURL=update.js.map

1
commonjs/update.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}

7
commonjs/updateIn.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
interface UpdateIn {
(object: any, path: any, value: any): any;
(path: any, value: any): (object: any) => any;
}
declare const _default: UpdateIn;
export default _default;
//# sourceMappingURL=updateIn.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"updateIn.d.ts","sourceRoot":"","sources":["../src/updateIn.ts"],"names":[],"mappings":"AA4BA,UAAU,QAAQ;IAChB,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,KAAK,KAAA,GAAG,GAAG,CAAC;IAC3B,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,GAAG,CAAC,MAAM,KAAA,KAAK,GAAG,CAAC;CAChC;;AAED,wBAA0C"}

26
commonjs/updateIn.js Normal file
View File

@ -0,0 +1,26 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const update_js_1 = __importDefault(require("./update.js"));
const splitPath_js_1 = __importDefault(require("./util/splitPath.js"));
const wrap_js_1 = __importDefault(require("./wrap.js"));
const map_js_1 = __importDefault(require("./map.js"));
const wildcard = "*";
function reducePath(acc, key) {
if (key === wildcard) {
return (value) => Object.prototype.hasOwnProperty.call(value, wildcard)
? // If we actually have wildcard as a property, update that
(0, update_js_1.default)(value, { [wildcard]: acc })
: // Otherwise map over all properties
(0, map_js_1.default)(value, acc);
}
return { [key]: acc };
}
function updateIn(object, path, value) {
const updates = (0, splitPath_js_1.default)(path).reduceRight(reducePath, value);
return (0, update_js_1.default)(object, updates);
}
exports.default = (0, wrap_js_1.default)(updateIn);
//# sourceMappingURL=updateIn.js.map

1
commonjs/updateIn.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"updateIn.js","sourceRoot":"","sources":["../src/updateIn.ts"],"names":[],"mappings":";;;;;AAEA,4DAAiC;AACjC,uEAA4C;AAC5C,wDAA6B;AAC7B,sDAA2B;AAE3B,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG;IAC1B,IAAI,GAAG,KAAK,QAAQ,EAAE;QACpB,OAAO,CAAC,KAAK,EAAE,EAAE,CACf,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;YACnD,CAAC,CAAC,0DAA0D;gBAC1D,IAAA,mBAAM,EAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACpC,CAAC,CAAC,oCAAoC;gBACpC,IAAA,gBAAG,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK;IACnC,MAAM,OAAO,GAAG,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE/D,OAAO,IAAA,mBAAM,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAOD,kBAAe,IAAA,iBAAI,EAAC,QAAQ,CAAa,CAAC"}

2
commonjs/updateIn.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=updateIn.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"updateIn.test.d.ts","sourceRoot":"","sources":["../src/updateIn.test.ts"],"names":[],"mappings":""}

57
commonjs/updateIn.test.js Normal file
View File

@ -0,0 +1,57 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const updateIn_js_1 = __importDefault(require("./updateIn.js"));
(0, vitest_1.describe)("updateIn", () => {
(0, vitest_1.test)("can update a single path described with a string", () => {
const object = { a: { b: 0 } };
const result = (0, updateIn_js_1.default)("a.b", 3)(object);
(0, vitest_1.expect)(result).to.eql({ a: { b: 3 } });
});
(0, vitest_1.test)("can update a single path described with a string with a function", () => {
const inc = (x) => x + 1;
const object = { a: { b: 0 } };
const result = (0, updateIn_js_1.default)("a.b", inc)(object);
(0, vitest_1.expect)(result).to.eql({ a: { b: 1 } });
});
(0, vitest_1.test)("can update a single path described with an array", () => {
const object = { a: { b: 0 } };
const result = (0, updateIn_js_1.default)(["a", "b"], 3)(object);
(0, vitest_1.expect)(result).to.eql({ a: { b: 3 } });
});
(0, vitest_1.test)("can update arrays", () => {
const object = { a: [0, 0, 0] };
const result = (0, updateIn_js_1.default)("a.1", 3)(object);
(0, vitest_1.expect)(result).to.eql({ a: [0, 3, 0] });
});
(0, vitest_1.test)("can be partially applied", () => {
const object = { a: { b: 0 } };
const result = (0, updateIn_js_1.default)("a.b", 3)(object);
(0, vitest_1.expect)(result).to.eql({ a: { b: 3 } });
});
(0, vitest_1.test)("replaces the object outright if the path is empty", () => {
const object = {};
const result = (0, updateIn_js_1.default)("", 3)(object);
(0, vitest_1.expect)(result).to.equal(3);
});
(0, vitest_1.test)("freezes the result", () => {
(0, vitest_1.expect)(Object.isFrozen((0, updateIn_js_1.default)("a", 0)({}))).to.be.true;
});
(0, vitest_1.test)("can multiple elements of an array with *", () => {
let object = { a: [{ b: 0 }, { b: 1 }, { b: 2 }] };
let result = (0, updateIn_js_1.default)("a.*.b", (x) => x + 1)(object);
(0, vitest_1.expect)(result).to.eql({ a: [{ b: 1 }, { b: 2 }, { b: 3 }] });
object = { a: [0, 1, 2] };
result = (0, updateIn_js_1.default)(["a", "*"], (x) => x + 1)(object);
(0, vitest_1.expect)(result).to.eql({ a: [1, 2, 3] });
});
(0, vitest_1.test)("can update properties named *", () => {
const object = { "*": 1, x: 1 };
const result = (0, updateIn_js_1.default)("*", (x) => x + 1)(object);
(0, vitest_1.expect)(result).to.eql({ "*": 2, x: 1 });
});
});
//# sourceMappingURL=updateIn.test.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"updateIn.test.js","sourceRoot":"","sources":["../src/updateIn.test.ts"],"names":[],"mappings":"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"}

2
commonjs/updeep.bench.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=updeep.bench.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"updeep.bench.d.ts","sourceRoot":"","sources":["../src/updeep.bench.ts"],"names":[],"mappings":""}

15
commonjs/updeep.bench.js Normal file
View File

@ -0,0 +1,15 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const updeep_1 = __importDefault(require("updeep"));
const index_js_1 = __importDefault(require("./index.js"));
const vitest_1 = require("vitest");
(0, vitest_1.bench)("original, simple update", () => {
updeep_1.default({ a: 1 })({ a: 2, b: 3 });
});
(0, vitest_1.bench)("contender, simple update", () => {
(0, index_js_1.default)({ a: 1 })({ a: 2, b: 3 });
});
//# sourceMappingURL=updeep.bench.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"updeep.bench.js","sourceRoot":"","sources":["../src/updeep.bench.ts"],"names":[],"mappings":";;;;;AAAA,oDAA8B;AAC9B,0DAAmC;AAEnC,mCAA+B;AAE/B,IAAA,cAAK,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAA,cAAK,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACrC,IAAA,kBAAS,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC"}

2
commonjs/updeep.test.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=updeep.test.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"updeep.test.d.ts","sourceRoot":"","sources":["../src/updeep.test.ts"],"names":[],"mappings":""}

113
commonjs/updeep.test.js Normal file
View File

@ -0,0 +1,113 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const index_js_1 = __importDefault(require("./index.js"));
(0, vitest_1.it)("does not change anything if no updates are specified", () => {
const object = { foo: 3, bar: [7, 5] };
const result = (0, index_js_1.default)(object, {});
(0, vitest_1.expect)(result).to.equal(object);
});
(0, vitest_1.it)("can update with fixed values", () => {
const object = { foo: 3, bar: [7, 5] };
const result = (0, index_js_1.default)(object, { foo: 4 });
(0, vitest_1.expect)(result).to.deep.equal({ foo: 4, bar: [7, 5] });
});
(0, vitest_1.it)("returns the same instance if an update doesn't make changes", () => {
const object = { foo: 3 };
const result = (0, index_js_1.default)({ foo: 3 })(object);
(0, vitest_1.expect)(result).to.equal(object);
});
(0, vitest_1.it)("can update a nested structure", () => {
const object = { foo: { bar: 7, bam: 3 }, baz: 32 };
const result = (0, index_js_1.default)({ foo: { bar: 8 } })(object);
(0, vitest_1.expect)(result).to.deep.equal({ foo: { bar: 8, bam: 3 }, baz: 32 });
});
(0, vitest_1.it)("can update arrays", () => {
const object = [1, 2, 3];
const result = (0, index_js_1.default)({ 1: 7 })(object);
(0, vitest_1.expect)(result).to.deep.equal([1, 7, 3]);
});
(0, vitest_1.it)("replaces the object outright if updates are a constant", () => {
(0, vitest_1.expect)((0, index_js_1.default)(3)({})).to.equal(3);
(0, vitest_1.expect)((0, index_js_1.default)(null)({})).to.be.null;
});
(0, vitest_1.it)("can add an element to an array", () => {
const object = [];
const result = (0, index_js_1.default)({ 0: 3 })(object);
(0, vitest_1.expect)(result).to.eql([3]);
});
(0, vitest_1.it)("can update nested arrays", () => {
const object = { foo: [1, 2, 3], bar: 9 };
const result = (0, index_js_1.default)({ foo: { 1: 7 } })(object);
(0, vitest_1.expect)(result).to.deep.equal({ foo: [1, 7, 3], bar: 9 });
});
(0, vitest_1.it)("can use functions to update values", () => {
const inc = (i) => i + 1;
const object = { foo: 3, bar: 4, baz: 7 };
const result = (0, index_js_1.default)({ foo: inc, bar: inc })(object);
(0, vitest_1.expect)(result).to.deep.equal({ foo: 4, bar: 5, baz: 7 });
});
(0, vitest_1.it)("can be partially applied", () => {
const inc = (i) => i + 1;
const object = { foo: 3 };
const incFoo = (0, index_js_1.default)({ foo: inc });
const result = incFoo(object);
(0, vitest_1.expect)(result).to.deep.equal(