Compare commits

...

5 Commits

Author SHA1 Message Date
Yanick Champoux 3b47c5c068 groom the package.json 2023-01-03 14:37:30 -05:00
Yanick Champoux 67ff830769 Merge branch 'focus-on-mjs' 2023-01-03 14:32:55 -05:00
Yanick Champoux b956e29728 focus on mjs 2023-01-03 14:32:49 -05:00
Yanick Champoux 3dece3fcd5 move to Remeda 2023-01-03 13:51:54 -05:00
Yanick Champoux 11d058824f move to remeda 2023-01-03 13:51:35 -05:00
256 changed files with 2928 additions and 1427 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:
test: vitest run
build:
deps: [test]
cmds:
- rm -fr esm/
- tsc -p tsconfig.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

1
dist/constant.d.ts.map vendored Normal file
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"}

38
dist/constant.js vendored Normal file
View File

@ -0,0 +1,38 @@
import freeze from "./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' } });
*/
export default function constant(value) {
const frozen = freeze(value);
return () => frozen;
}
//# sourceMappingURL=constant.js.map

1
dist/constant.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAI,KAAQ;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB,CAAC"}

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

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

1
dist/constant.test.d.ts.map vendored Normal file
View File

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

13
dist/constant.test.js vendored Normal file
View File

@ -0,0 +1,13 @@
import { expect, test } from "vitest";
import constant from "./constant.js";
test("returns what it is given... constantly", () => {
const func = constant(4);
expect(func()).to.equal(4);
expect(func("hi")).to.equal(4);
expect(func("hi", 8)).to.equal(4);
expect(func(4)).to.equal(4);
});
test("freezes the result", () => {
expect(Object.isFrozen(constant({})())).toBeTruthy();
});
//# sourceMappingURL=constant.test.js.map

1
dist/constant.test.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"constant.test.js","sourceRoot":"","sources":["../src/constant.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAChD,MAAM,IAAI,GAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,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
dist/freeze.d.ts.map vendored 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"}

55
dist/freeze.js vendored Normal file
View File

@ -0,0 +1,55 @@
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;
}
export default freeze;
//# sourceMappingURL=freeze.js.map

1
dist/freeze.js.map vendored 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,eAAe,MAAM,CAAC"}

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

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

1
dist/freeze.test.d.ts.map vendored Normal file
View File

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

56
dist/freeze.test.js vendored Normal file
View File

@ -0,0 +1,56 @@
import { describe, afterEach, test, expect } from "vitest";
import freeze from "./freeze.js";
describe("freeze", () => {
afterEach(() => {
delete process.env.NODE_ENV;
});
test("freezes objects", () => {
const object = {};
freeze(object);
expect(Object.isFrozen(object)).to.be.true;
});
test("freezes nested objects", () => {
const object = { foo: { bar: 3 } };
freeze(object);
expect(Object.isFrozen(object.foo)).to.be.true;
});
test("freezes nested arrays", () => {
const object = [[0]];
freeze(object);
expect(Object.isFrozen(object)).to.be.true;
expect(Object.isFrozen(object[0])).to.be.true;
});
test("ignores functions", () => {
const object = { foo: () => 1 };
freeze(object);
expect(Object.isFrozen(object.foo)).to.be.false;
});
test("ignores regexps", () => {
const object = { foo: /\d/ };
freeze(object);
expect(Object.isFrozen(object.foo)).to.be.false;
});
test("does not freeze children if the parent is already frozen", () => {
const object = { foo: {} };
Object.freeze(object);
freeze(object);
expect(Object.isFrozen(object.foo)).to.be.false;
});
test("does not freeze in production", () => {
process.env.NODE_ENV = "production";
const object = {};
freeze(object);
expect(Object.isFrozen(object)).to.be.false;
});
test("handles null objects", () => {
const object = { foo: null };
freeze(object);
expect(Object.isFrozen(object)).to.be.true;
});
test("returns the same object", () => {
const object = {};
const result = freeze(object);
expect(result).to.equal(object);
});
});
//# sourceMappingURL=freeze.test.js.map

1
dist/freeze.test.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"freeze.test.js","sourceRoot":"","sources":["../src/freeze.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE3D,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;QAEpC,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,CAAC;QAEf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}

7
dist/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
dist/if.d.ts.map vendored 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"}

8
dist/if.js vendored Normal file
View File

@ -0,0 +1,8 @@
import { identity } from "remeda";
import ifElse from "./ifElse.js";
import wrap from "./wrap.js";
function _if(object, predicate, trueUpdates) {
return ifElse(object, predicate, trueUpdates, identity);
}
export default wrap(_if);
//# sourceMappingURL=if.js.map

1
dist/if.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"if.js","sourceRoot":"","sources":["../src/if.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW;IACzC,OAAO,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,eAAe,IAAI,CAAC,GAAG,CAAO,CAAC"}

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

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

1
dist/if.test.d.ts.map vendored Normal file
View File

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

27
dist/if.test.js vendored Normal file
View File

@ -0,0 +1,27 @@
import { describe, test, expect } from "vitest";
import _if from "./if.js";
describe("if", () => {
test("does not update if the predicate is false", () => {
const object = { a: 0 };
let result = _if(false, { b: 1 }, object);
expect(result).to.eql(object);
result = _if(0, false, 1);
expect(result).to.eql(0);
});
test("does update if the predicate is true", () => {
const object = { a: 0 };
const result = _if(true, { b: 1 })(object);
expect(result).to.eql({ a: 0, b: 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 = _if(aIsThree, { b: 1 }, object);
expect(result).to.eql({ a: 0 });
});
test("freezes the result", () => {
expect(Object.isFrozen(_if(true, {})({}))).to.be.true;
expect(Object.isFrozen(_if(false, {})({}))).to.be.true;
});
});
//# sourceMappingURL=if.test.js.map

1
dist/if.test.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"if.test.js","sourceRoot":"","sources":["../src/if.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,GAAG,MAAM,SAAS,CAAC;AAE1B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAClB,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,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,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,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
dist/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
dist/ifElse.d.ts.map vendored 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"}

9
dist/ifElse.js vendored Normal file
View File

@ -0,0 +1,9 @@
import update from "./update.js";
import wrap from "./wrap.js";
function updateIfElse(object, predicate, trueUpdates, falseUpdates) {
const test = typeof predicate === "function" ? predicate(object) : predicate;
const updates = test ? trueUpdates : falseUpdates;
return update(object, updates);
}
export default wrap(updateIfElse);
//# sourceMappingURL=ifElse.js.map

1
dist/ifElse.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"ifElse.js","sourceRoot":"","sources":["../src/ifElse.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;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,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AASD,eAAe,IAAI,CAAC,YAAY,CAAW,CAAC"}

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

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

1
dist/ifElse.test.d.ts.map vendored Normal file
View File

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

38
dist/ifElse.test.js vendored Normal file
View File

@ -0,0 +1,38 @@
import { expect, test, describe } from "vitest";
import ifElse from "./ifElse.js";
import _if from "./if.js";
describe("ifElse", () => {
test("does updates with the else if the predicate is false", () => {
const object = { a: 0 };
const result = ifElse(false, { b: 1 }, { b: 2 })(object);
expect(result).to.eql({ a: 0, b: 2 });
});
test("updates with the true update if the predicate is true", () => {
const object = { a: 0 };
const result = ifElse(true, { b: 1 }, { b: 4 })(object);
expect(result).to.eql({ a: 0, b: 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 = ifElse(aIsThree, { b: 1 }, { b: 4 })(object);
expect(result).to.eql({ a: 0, b: 4 });
});
test("freezes the result", () => {
expect(Object.isFrozen(ifElse(true, {}, {})({}))).to.be.true;
expect(Object.isFrozen(ifElse(false, {}, {})({}))).to.be.true;
});
});
describe("if", () => {
test("does updates with the else if the predicate is false", () => {
const object = { a: 0 };
const result = _if(false, { b: 1 })(object);
expect(result).not.toHaveProperty("b");
});
test("updates with the true update if the predicate is true", () => {
const object = { a: 0 };
const result = _if(true, { b: 1 })(object);
expect(result).to.eql({ a: 0, b: 1 });
});
});
//# sourceMappingURL=ifElse.test.js.map

1
dist/ifElse.test.js.map vendored Normal file
View File

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

3
dist/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
dist/index.d.ts.map vendored 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"}

18
dist/index.js vendored Normal file
View File

@ -0,0 +1,18 @@
import freeze from "./freeze.js";
import is from "./is.js";
import _if from "./if.js";
import ifElse from "./ifElse.js";
import update, { omitted } from "./update.js";
import updateIn from "./updateIn.js";
import constant from "./constant.js";
const u = update;
u.constant = constant;
u.if = _if;
u.ifElse = ifElse;
u.is = is;
u.freeze = freeze;
u.update = update;
u.updateIn = updateIn;
u.omitted = omitted;
export default u;
//# sourceMappingURL=index.js.map

1
dist/index.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,SAAS,CAAC;AAC1B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,GAAQ,MAAM,CAAC;AAEtB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC;AACX,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AAClB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;AACV,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AAClB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AAClB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;AAEpB,eAAe,CAAC,CAAC"}

7
dist/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
dist/is.d.ts.map vendored 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"}

16
dist/is.js vendored Normal file
View File

@ -0,0 +1,16 @@
import splitPath from "./util/splitPath.js";
import wrap from "./wrap.js";
function _is(object, path, predicate) {
const parts = splitPath(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;
}
export default wrap(_is);
//# sourceMappingURL=is.js.map

1
dist/is.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"is.js","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,GAAG,CACR,MAAM,EACN,IAA2C,EAC3C,SAAS;IAET,MAAM,KAAK,GAAG,SAAS,CAAC,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,eAAe,IAAI,CAAC,GAAG,CAAO,CAAC"}

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

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

1
dist/is.test.d.ts.map vendored Normal file
View File

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

47
dist/is.test.js vendored Normal file
View File

@ -0,0 +1,47 @@
import { expect, test } from "vitest";
import is from "./is.js";
test("returns true if path matches a value predicate", () => {
const result = is({ a: { b: 4 } }, "a.b", 4);
expect(result).to.be.true;
});
test("returns true if path matches a function predicate", () => {
const isEven = (x) => x % 2 === 0;
const result = is("a.b", isEven)({ a: { b: 6 } });
expect(result).to.be.true;
});
test("returns false if path matches a value predicate", () => {
const result = is("a.b", 4)({ a: { b: 5 } });
expect(result).to.be.false;
});
test("returns false if path matches a function predicate", () => {
const isEven = (x) => x % 2 === 0;
const result = is("a.b", isEven)({ a: { b: 7 } });
expect(result).to.be.false;
});
test("returns false if the path does not exist", () => {
const result = is("a.b.c.d", 4)({ a: { b: {} } });
expect(result).to.be.false;
});
test("can test for undefined", () => {
const result = is("a.b.c", undefined)({ a: { b: {} } });
expect(result).to.be.true;
});
test("tests the actual object if a blank path is given", () => {
const result = is(4, "", 4);
expect(result).toBeTruthy();
});
test("can use arrays as paths", () => {
const result = is(["a", "b"], 4)({ a: { b: 4 } });
expect(result).to.be.true;
});
test("can include array indexes in paths", () => {
let result = is("a.1.b", 4)({ a: [{}, { b: 4 }] });
expect(result).to.be.true;
result = is(["a", 1, "b"], 4)({ a: [{}, { b: 4 }] });
expect(result).to.be.true;
});
test("can be partially applied", () => {
const result = is("a.b", 4)({ a: { b: 4 } });
expect(result).to.be.true;
});
//# sourceMappingURL=is.test.js.map

1
dist/is.test.js.map vendored 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
dist/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
dist/map.d.ts.map vendored 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"}

19
dist/map.js vendored Normal file
View File

@ -0,0 +1,19 @@
import { mapValues, map as _map } from "remeda";
import update from "./update.js";
import wrap from "./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 : update(iteratee);
const mapper = Array.isArray(object) ? _map.indexed : mapValues;
const newObject = mapper(object, updater);
const equal = shallowEqual(object, newObject);
return equal ? object : newObject;
}
export default wrap(map);
//# sourceMappingURL=map.js.map

1
dist/map.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"map.js","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;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,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,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,eAAe,IAAI,CAAC,GAAG,CAAQ,CAAC"}

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

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

1
dist/map.test.d.ts.map vendored Normal file
View File

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

46
dist/map.test.js vendored Normal file
View File

@ -0,0 +1,46 @@
import { expect, test, describe } from "vitest";
import map from "./map.js";
describe("map", () => {
test("applies updates to each item in an array", () => {
const object = [0, 1, 2];
const inc = (x) => x + 1;
const result = map(object, inc);
expect(result).to.eql([1, 2, 3]);
});
test("applies updates to each value in an object", () => {
const object = { a: 0, b: 1, c: 2 };
const inc = (x) => x + 1;
const result = map(inc)(object);
expect(result).to.eql({ a: 1, b: 2, c: 3 });
});
test("can update with a regular updates object", () => {
const object = [{ a: 0 }, { a: 0 }];
const result = map({ a: 1 })(object);
expect(result).to.eql([{ a: 1 }, { a: 1 }]);
});
test("returns the same object if no updates are made", () => {
const array = [0, 1];
const ident = (x) => x;
let result = map(ident)(array);
expect(result).to.equal(array);
const object = { a: 0 };
result = map(ident)(object);
expect(result).to.equal(object);
});
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 = map(object, map(setToKey));
expect(result).to.eql({
a: { x: "x" },
b: [0, 1],
});
});
test("freezes the result", () => {
expect(Object.isFrozen(map({}, {}))).to.be.true;
});
});
//# sourceMappingURL=map.test.js.map

1
dist/map.test.js.map vendored 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
dist/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
dist/update.d.ts.map vendored 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"}

72
dist/update.js vendored Normal file
View File

@ -0,0 +1,72 @@
import wrap from "./wrap.js";
import constant from "./constant.js";
import { omitBy } from "remeda";
const innerOmitted = { __omitted: true };
export const omitted = constant(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 omitBy(Object.assign(Object.assign({}, defaultedObject), resolvedUpdates), (value) => value === innerOmitted);
}
export default wrap(update);
//# sourceMappingURL=update.js.map

1
dist/update.js.map vendored Normal file
View File

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

7
dist/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

1
dist/updateIn.d.ts.map vendored Normal file
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"}

21
dist/updateIn.js vendored Normal file
View File

@ -0,0 +1,21 @@
import update from "./update.js";
import splitPath from "./util/splitPath.js";
import wrap from "./wrap.js";
import map from "./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
update(value, { [wildcard]: acc })
: // Otherwise map over all properties
map(value, acc);
}
return { [key]: acc };
}
function updateIn(object, path, value) {
const updates = splitPath(path).reduceRight(reducePath, value);
return update(object, updates);
}
export default wrap(updateIn);
//# sourceMappingURL=updateIn.js.map

1
dist/updateIn.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"updateIn.js","sourceRoot":"","sources":["../src/updateIn.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;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,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACpC,CAAC,CAAC,oCAAoC;gBACpC,GAAG,CAAC,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,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE/D,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAOD,eAAe,IAAI,CAAC,QAAQ,CAAa,CAAC"}

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

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

1
dist/updateIn.test.d.ts.map vendored Normal file
View File

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

52
dist/updateIn.test.js vendored Normal file
View File

@ -0,0 +1,52 @@
import { expect, test, describe } from "vitest";
import updateIn from "./updateIn.js";
describe("updateIn", () => {
test("can update a single path described with a string", () => {
const object = { a: { b: 0 } };
const result = updateIn("a.b", 3)(object);
expect(result).to.eql({ a: { b: 3 } });
});
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 = updateIn("a.b", inc)(object);
expect(result).to.eql({ a: { b: 1 } });
});
test("can update a single path described with an array", () => {
const object = { a: { b: 0 } };
const result = updateIn(["a", "b"], 3)(object);
expect(result).to.eql({ a: { b: 3 } });
});
test("can update arrays", () => {
const object = { a: [0, 0, 0] };
const result = updateIn("a.1", 3)(object);
expect(result).to.eql({ a: [0, 3, 0] });
});
test("can be partially applied", () => {
const object = { a: { b: 0 } };
const result = updateIn("a.b", 3)(object);
expect(result).to.eql({ a: { b: 3 } });
});
test("replaces the object outright if the path is empty", () => {
const object = {};
const result = updateIn("", 3)(object);
expect(result).to.equal(3);
});
test("freezes the result", () => {
expect(Object.isFrozen(updateIn("a", 0)({}))).to.be.true;
});
test("can multiple elements of an array with *", () => {
let object = { a: [{ b: 0 }, { b: 1 }, { b: 2 }] };
let result = updateIn("a.*.b", (x) => x + 1)(object);
expect(result).to.eql({ a: [{ b: 1 }, { b: 2 }, { b: 3 }] });
object = { a: [0, 1, 2] };
result = updateIn(["a", "*"], (x) => x + 1)(object);
expect(result).to.eql({ a: [1, 2, 3] });
});
test("can update properties named *", () => {
const object = { "*": 1, x: 1 };
const result = updateIn("*", (x) => x + 1)(object);
expect(result).to.eql({ "*": 2, x: 1 });
});
});
//# sourceMappingURL=updateIn.test.js.map

1
dist/updateIn.test.js.map vendored Normal file
View File

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

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

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

1
dist/updeep.bench.d.ts.map vendored Normal file
View File

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

10
dist/updeep.bench.js vendored Normal file
View File

@ -0,0 +1,10 @@
import original from "updeep";
import contender from "./index.js";
import { bench } from "vitest";
bench("original, simple update", () => {
original({ a: 1 })({ a: 2, b: 3 });
});
bench("contender, simple update", () => {
contender({ a: 1 })({ a: 2, b: 3 });
});
//# sourceMappingURL=updeep.bench.js.map

1
dist/updeep.bench.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"updeep.bench.js","sourceRoot":"","sources":["../src/updeep.bench.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,QAAQ,CAAC;AAC9B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,KAAK,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,QAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACrC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC"}

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

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

1
dist/updeep.test.d.ts.map vendored Normal file
View File

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

108
dist/updeep.test.js vendored Normal file
View File

@ -0,0 +1,108 @@
import { expect, it, describe } from "vitest";
import u from "./index.js";
it("does not change anything if no updates are specified", () => {
const object = { foo: 3, bar: [7, 5] };
const result = u(object, {});
expect(result).to.equal(object);
});
it("can update with fixed values", () => {
const object = { foo: 3, bar: [7, 5] };
const result = u(object, { foo: 4 });
expect(result).to.deep.equal({ foo: 4, bar: [7, 5] });
});
it("returns the same instance if an update doesn't make changes", () => {
const object = { foo: 3 };
const result = u({ foo: 3 })(object);
expect(result).to.equal(object);
});
it("can update a nested structure", () => {
const object = { foo: { bar: 7, bam: 3 }, baz: 32 };
const result = u({ foo: { bar: 8 } })(object);
expect(result).to.deep.equal({ foo: { bar: 8, bam: 3 }, baz: 32 });
});
it("can update arrays", () => {
const object = [1, 2, 3];
const result = u({ 1: 7 })(object);
expect(result).to.deep.equal([1, 7, 3]);
});
it("replaces the object outright if updates are a constant", () => {
expect(u(3)({})).to.equal(3);
expect(u(null)({})).to.be.null;
});
it("can add an element to an array", () => {
const object = [];
const result = u({ 0: 3 })(object);
expect(result).to.eql([3]);
});
it("can update nested arrays", () => {
const object = { foo: [1, 2, 3], bar: 9 };
const result = u({ foo: { 1: 7 } })(object);
expect(result).to.deep.equal({ foo: [1, 7, 3], bar: 9 });
});
it("can use functions to update values", () => {
const inc = (i) => i + 1;
const object = { foo: 3, bar: 4, baz: 7 };
const result = u({ foo: inc, bar: inc })(object);
expect(result).to.deep.equal({ foo: 4, bar: 5, baz: 7 });
});
it("can be partially applied", () => {
const inc = (i) => i + 1;
const object = { foo: 3 };
const incFoo = u({ foo: inc });
const result = incFoo(object);
expect(result).to.deep.equal({ foo: 4 });
});
it("can update if the value is an array", () => {
const object = {};
const result = u({ foo: [0, 1] })(object);
expect(result).to.deep.equal({ foo: [0, 1] });
});
it("can update when original object is undefined", () => {
const result = u({ foo: [0, 1] })(undefined);
expect(result).to.deep.equal({ foo: [0, 1] });
});
it("can take a function as the updater", () => {
const result = u((i) => i + 1)(7);
expect(result).to.eql(8);
});
it("deeply freezes the result", () => {
const result = u({ foo: { bar: 3 } }, { foo: { bar: 0 } });
expect(Object.isFrozen(result)).to.be.true;
expect(Object.isFrozen(result.foo)).to.be.true;
});
it("assigns null values", () => {
expect(u({ isNull: null }, {})).to.eql({ isNull: null });
});
it("defaults to an empty object when null or undefined", () => {
let result = u({ a: { b: 0 } })({ a: null });
expect(result).to.eql({ a: { b: 0 } });
result = u({ a: { b: 0 } })({ a: undefined });
expect(result).to.eql({ a: { b: 0 } });
result = u({ a: { b: 0 } })({});
expect(result).to.eql({ a: { b: 0 } });
});
it("preserves empty objects when empty updates are specified", () => {
const result = u({ a: {} })({});
expect(result).to.eql({ a: {} });
});
it("works with date objects", () => {
const date = new Date();
const result = u({ created: date })({});
expect(result).toEqual({ created: date });
});
const expectU = (update, orig, expected) => expect(update(orig)).to.eql(expected);
describe("u.omitted", () => {
it("omit properties via u.omitted", () => {
expectU(u({ a: u.omitted, b: (i) => i + 1 }), { a: 1, b: 2 }, { b: 3 });
});
it("omit array and object properties", () => {
expectU(u({ a: u.omitted, b: "stuff", c: u.omitted }), { a: [1, 2, 3], b: "orig", c: { z: "bar" } }, { b: "stuff" });
});
it("deep omit", () => {
expectU(u({ a: { b: u.omitted, c: "stuff" } }), { a: { b: "foo", z: "bar" } }, { a: { z: "bar", c: "stuff" } });
});
it("omitting an array item filters it out", () => {
expectU(u({ 1: u.omitted }), ["a", "b", "c"], ["a", "c"]);
});
});
//# sourceMappingURL=updeep.test.js.map

1
dist/updeep.test.js.map vendored Normal file

File diff suppressed because one or more lines are too long

7
dist/util/curry.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
export function curry1(fn: any): (a: any, ...args: any[]) => any;
export function curry2(fn: any): (a: any, b: any, ...args: any[]) => any;
export function curry3(fn: any): (a: any, b: any, c: any, ...args: any[]) => any;
export function curry4(fn: any): (a: any, b: any, c: any, d: any, ...args: any[]) => any;
export default function curry(fn: any, length?: any): any;
export const _: "@@updeep/placeholder";
//# sourceMappingURL=curry.d.ts.map

1
dist/util/curry.d.ts.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"curry.d.ts","sourceRoot":"","sources":["../../src/util/curry.js"],"names":[],"mappings":"AAcA,iEAQC;AAED,yEAmBC;AAED,iFA6BC;AAED,yFA6CC;AAED,0DAEC;AA5HD,uCAAuC"}

115
dist/util/curry.js vendored Normal file
View File

@ -0,0 +1,115 @@
/* eslint no-shadow:0, no-param-reassign:0 prefer-rest-params:0 */
export const _ = '@@updeep/placeholder';
function countArguments(args, max) {
let n = args.length;
if (n > max)
n = max;
while (args[n - 1] === _) {
n -= 1;
}
return n;
}
export function curry1(fn) {
return function curried(a, ...args) {
const [b, c] = args;
const n = countArguments(arguments);
if (n >= 1)
return fn(a, b, c);
return curried;
};
}
export function curry2(fn) {
return function curried(a, b, ...args) {
const [c, d] = args;
const n = countArguments(arguments, 2);
if (b === _ || c === _ || d === _) {
throw new Error('Can only use placeholder on first argument of this function.');
}
if (n >= 2) {
if (a === _)
return curry1((a, c, d) => fn(a, b, c, d));
return fn(a, b, c, d);
}
if (n === 1)
return curry1((b, c, d) => fn(a, b, c, d));
return curried;
};
}
export function curry3(fn) {
return function curried(a, b, c, ...args) {
const [d, e] = args;
const n = countArguments(arguments, 3);
if (c === _ || d === _ || e === _) {
throw new Error('Can only use placeholder on first or second argument of this function.');
}
if (n >= 3) {
if (a === _) {
if (b === _)
return curry2((a, b, d, e) => fn(a, b, c, d, e));
return curry1((a, d, e) => fn(a, b, c, d, e));
}
if (b === _)
return curry1((b, d, e) => fn(a, b, c, d, e));
return fn(a, b, c, d, e);
}
if (n === 2) {
if (a === _)
return curry2((a, c, d, e) => fn(a, b, c, d, e));
return curry1((c, d, e) => fn(a, b, c, d, e));
}
if (n === 1)
return curry2((b, c, d, e) => fn(a, b, c, d, e));
return curried;
};
}
export function curry4(fn) {
return function curried(a, b, c, d, ...args) {
const [e, f] = args;
const n = countArguments(arguments, 4);
if (d === _ || e === _ || f === _) {
throw new Error('Can only use placeholder on first, second or third argument of this function.');
}
if (n >= 4) {
if (a === _) {
if (b === _) {
if (c === _)
return curry3((a, b, c, e, f) => fn(a, b, c, d, e, f));
return curry2((a, b, e, f) => fn(a, b, c, d, e, f));
}
if (c === _)
return curry2((a, c, e, f) => fn(a, b, c, d, e, f));
return curry1((a, e, f) => fn(a, b, c, d, e, f));
}
if (b === _) {
if (c === _)
return curry2((b, c, e, f) => fn(a, b, c, d, e, f));
return curry1((b, e, f) => fn(a, b, c, d, e, f));
}
if (c === _)
return curry1((c, e, f) => fn(a, b, c, d, e, f));
return fn(a, b, c, d, e, f);
}
if (n === 3) {
if (a === _) {
if (b === _)
return curry3((a, b, d, e, f) => fn(a, b, c, d, e, f));
return curry2((a, d, e, f) => fn(a, b, c, d, e, f));
}
if (b === _)
return curry2((b, d, e, f) => fn(a, b, c, d, e, f));
return curry1((d, e, f) => fn(a, b, c, d, e, f));
}
if (n === 2) {
if (a === _)
return curry3((a, c, d, e, f) => fn(a, b, c, d, e, f));
return curry2((c, d, e, f) => fn(a, b, c, d, e, f));
}
if (n === 1)
return curry3((b, c, d, e, f) => fn(a, b, c, d, e, f));
return curried;
};
}
export default function curry(fn, length = fn.length) {
return [fn, curry1, curry2, curry3, curry4][length](fn);
}
//# sourceMappingURL=curry.js.map

1
dist/util/curry.js.map vendored Normal file

File diff suppressed because one or more lines are too long

2
dist/util/splitPath.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export default function splitPath(path: string | number | (number | string)[]): (string | number)[];
//# sourceMappingURL=splitPath.d.ts.map

1
dist/util/splitPath.d.ts.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"splitPath.d.ts","sourceRoot":"","sources":["../../src/util/splitPath.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,uBAM5E"}

8
dist/util/splitPath.js vendored Normal file
View File

@ -0,0 +1,8 @@
export default function splitPath(path) {
if (typeof path === "number")
path = new String(path);
return Array.isArray(path)
? path
: path.split(".").filter((x) => x !== "");
}
//# sourceMappingURL=splitPath.js.map

1
dist/util/splitPath.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"splitPath.js","sourceRoot":"","sources":["../../src/util/splitPath.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAA2C;IAC3E,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAQ,CAAC;IAE7D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAE,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1D,CAAC"}

2
dist/util/splitPath.test.d.ts vendored Normal file
View File

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

1
dist/util/splitPath.test.d.ts.map vendored Normal file
View File

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

18
dist/util/splitPath.test.js vendored Normal file
View File

@ -0,0 +1,18 @@
import { expect, it } from "vitest";
import splitPath from "./splitPath.js";
it("treats a number as a single step path", () => {
const path = 1;
const result = splitPath(path);
expect(result).to.deep.equal(["1"]);
});
it("handles arrays", () => {
const path = ["foo", "bar", "x"];
const result = splitPath(path);
expect(result).to.equal(path);
});
it("handles strings separated by dots", () => {
const path = "bar.0.y";
const result = splitPath(path);
expect(result).to.deep.equal(["bar", "0", "y"]);
});
//# sourceMappingURL=splitPath.test.js.map

1
dist/util/splitPath.test.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"splitPath.test.js","sourceRoot":"","sources":["../../src/util/splitPath.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACxB,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC"}

3
dist/wrap.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
declare const wrap: (fn: any) => (...args: any[]) => Readonly<any>;
export default wrap;
//# sourceMappingURL=wrap.d.ts.map

1
dist/wrap.d.ts.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,IAAI,gDAWP,CAAC;AAEJ,eAAe,IAAI,CAAC"}

13
dist/wrap.js vendored Normal file
View File

@ -0,0 +1,13 @@
import freeze from "./freeze.js";
const wrap = (fn) => (...args) => {
const diff = fn.length - args.length;
if (diff === 0) {
return freeze(fn(...args));
}
if (diff === 1) {
return (data) => freeze(fn(data, ...args));
}
throw new Error("Wrong number of arguments");
};
export default wrap;
//# sourceMappingURL=wrap.js.map

1
dist/wrap.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"wrap.js","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,IAAI,GACR,CAAC,EAAE,EAAE,EAAE,CACP,CAAC,GAAG,IAAI,EAAE,EAAE;IACV,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACrC,IAAI,IAAI,KAAK,CAAC,EAAE;QACd,OAAO,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B;IACD,IAAI,IAAI,KAAK,CAAC,EAAE;QACd,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5C;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEJ,eAAe,IAAI,CAAC"}

34
esm/constant.d.ts vendored Normal file
View File

@ -0,0 +1,34 @@
/**
* 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' } });
*/
export default function constant<T>(value: T): () => Readonly<T>;
//# sourceMappingURL=constant.d.ts.map

1
esm/constant.d.ts.map Normal file
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"}

38
esm/constant.js Normal file
View File

@ -0,0 +1,38 @@
import freeze from "./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' } });
*/
export default function constant(value) {
const frozen = freeze(value);
return () => frozen;
}
//# sourceMappingURL=constant.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAI,KAAQ;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB,CAAC"}

2
esm/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":""}

13
esm/constant.test.js Normal file
View File

@ -0,0 +1,13 @@
import { expect, test } from "vitest";
import constant from "./constant.js";
test("returns what it is given... constantly", () => {
const func = constant(4);
expect(func()).to.equal(4);
expect(func("hi")).to.equal(4);
expect(func("hi", 8)).to.equal(4);
expect(func(4)).to.equal(4);
});
test("freezes the result", () => {
expect(Object.isFrozen(constant({})())).toBeTruthy();
});
//# sourceMappingURL=constant.test.js.map

1
esm/constant.test.js.map Normal file
View File

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

19
esm/freeze.d.ts vendored Normal file
View File

@ -0,0 +1,19 @@
/**
* 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.
*/
declare function freeze<T>(object: T): Readonly<T>;
export default freeze;
//# sourceMappingURL=freeze.d.ts.map

Some files were not shown because too many files have changed in this diff Show More