Compare commits

...

60 Commits

Author SHA1 Message Date
d58924a333 add dist directory 2025-01-31 12:50:51 -05:00
629da53bef Merge branch 'renaming' 2025-01-31 12:47:59 -05:00
612794512b rename to @yanick/updeep 2025-01-31 12:46:23 -05:00
223154b516 Merge branch 'upgrade-all-the-things' 2025-01-29 17:33:10 -05:00
4fdc083e3c upgrade all the things 2025-01-29 17:33:02 -05:00
fca80060d6 Merge branch 'remeda-update' 2025-01-29 17:20:40 -05:00
90831844e2 upgrade remeda 2025-01-29 17:20:23 -05:00
0dd410b2c2 release preps 2024-02-27 14:24:29 -05:00
8951a80638 Merge branch 'ignore-tests' 2024-02-27 14:24:03 -05:00
7f0b1477e4 changelog 2024-02-27 14:23:46 -05:00
fae566b200 slim down the pack 2024-02-27 14:22:26 -05:00
c7281022df Merge branch 'mapIf-available' 2024-02-27 14:05:31 -05:00
2bb0372bdf make the new functions accessible 2024-02-27 14:04:45 -05:00
a05df2a683 prep new release 2024-02-27 13:35:51 -05:00
7173ae952c Merge branch 'predicate' 2024-02-27 13:27:38 -05:00
05669ce64d changelog 2024-02-27 13:27:19 -05:00
1c695ab8e1 add predicate logic everywhere 2024-02-27 13:23:43 -05:00
068f21f3ca Merge branch 'documentation' 2024-02-27 12:53:15 -05:00
2fc662f4a1 add changelog 2024-02-27 12:47:49 -05:00
e8c9bc5201 move back the documentation in the README 2024-02-27 12:46:23 -05:00
aeb46565a9 Merge branch 'mapIf' 2024-02-27 12:15:47 -05:00
190bb7b80a changelog 2024-02-27 12:10:40 -05:00
c6723868d9 add mapIf and mapIfElse 2024-02-27 12:09:35 -05:00
a9ee54cb06 Merge branch 'semantic-release' 2024-02-27 12:09:11 -05:00
c68f80dfba ignore .prettierignore 2024-02-27 12:08:55 -05:00
f8410ca2fa change prettier task for changesets 2024-02-27 12:08:28 -05:00
5340575ec7 modify integrate task for changesets 2024-02-27 12:05:00 -05:00
04e6304334 add changelog 2024-02-27 12:01:57 -05:00
4720f1b4eb use changesets for change management 2024-02-27 12:00:33 -05:00
142e9ca230 update changelog 2023-04-10 11:04:26 -04:00
106edd6637 Merge branch 'remeda-equal' 2023-04-10 10:58:41 -04:00
c40e7d2b30 check for array deep equality 2023-04-10 10:38:35 -04:00
609a9e6a6c move repo to github 2023-03-22 17:14:45 -04:00
96e98cecfb Merge branch 'map' 2023-03-22 17:12:52 -04:00
428fa15fe4 preps for release 2023-03-22 17:12:47 -04:00
c66ec94aaf Add map to the exports 2023-03-22 17:01:05 -04:00
b70dccc43f add test for idempotency 2023-03-22 17:00:43 -04:00
b689efd6f4 remove .only test tag 2023-03-22 16:58:56 -04:00
f920fa15ff Merge branch 'add-matches' 2023-01-13 13:44:36 -05:00
6dde03025c bumping the version 2023-01-13 13:42:56 -05:00
4638056b62 add matches 2023-01-13 13:39:00 -05:00
87f026a21c add task publish 2023-01-11 13:31:55 -05:00
cf78da1d70 Merge branch 'releasePreps' 2023-01-11 13:17:56 -05:00
bfd8b0c2ac add a prepRelease task 2023-01-11 13:17:50 -05:00
a5fc19a781 ignore the package tarballs 2023-01-11 13:16:55 -05:00
d86fa7e64a change name for @yanick/updeep-remeda 2023-01-11 13:05:37 -05:00
d7caed51be Merge branch 'changelog' 2023-01-11 13:02:03 -05:00
dc520d8430 add my changelog 2023-01-11 13:01:28 -05:00
e0cb5ae655 fix updeep url in README 2023-01-10 15:15:48 -05:00
6c2305db71 fix github-page url in README 2023-01-10 15:14:20 -05:00
984c463657 remove unused files 2023-01-10 15:13:14 -05:00
1701283e11 Merge branch 'docsify' 2023-01-10 15:11:02 -05:00
6aca8ed3e2 docsify the docs 2023-01-10 15:03:10 -05:00
2f919030a0 first draft 2023-01-10 14:31:59 -05:00
bc50f97b4f github page 2023-01-10 13:26:04 -05:00
97865c354b update the README 2023-01-10 12:38:20 -05:00
39f4227989 gh-page 2023-01-10 12:34:27 -05:00
04f22fb927 updates to code 2023-01-10 12:30:40 -05:00
2c3e73c48a tidy up package.json 2023-01-10 12:29:30 -05:00
e988146cec ignore esm directory 2023-01-10 12:27:14 -05:00
156 changed files with 1507 additions and 6925 deletions

11
.changeset/config.json Normal file
View File

@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
"changelog": "@changesets/changelog-git",
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}

View File

@ -0,0 +1,5 @@
---
"@yanick/updeep": minor
---
rename module as @yanick/updeep

View File

@ -0,0 +1,5 @@
---
"@yanick/updeep": minor
---
update Remeda dependency

View File

@ -0,0 +1,5 @@
---
"@yanick/updeep": patch
---
upgrade all dependencies

View File

@ -1,33 +0,0 @@
version: 2.1
orbs:
node: circleci/node@5.0.3
yarn: substantial/yarn@3.10.2
node-build: substantial/node-build@2.3.0
jobs:
build:
executor:
name: node/default
tag: '18.12.1'
steps:
- checkout
- yarn/install:
cache-version: v2
yarn-audit: false
yarn-version: 1.22.19
- node-build/eslint
- run:
name: Test
command: |
yarn test
- run:
name: dtslint
command: |
yarn dtslint
- run:
name: build
command: |
yarn build
- node-build/store-results
- node-build/release

3
.gitignore vendored
View File

@ -1,6 +1,9 @@
*remeda*.tgz
node_modules
coverage
pnpm-lock.yaml
tsconfig*.tsbuildinfo
lib
types
.perl-version
.task

View File

@ -2,3 +2,6 @@ package.json
node_modules
dist
coverage
contrib/add_change
.prettierignore
.npmignore

View File

@ -1,151 +1,50 @@
# Change Log
# Changelog for [@yanick/updeep](https://github.com/yanick/updeep)
## [unreleased]
## 2.3.1
## [1.2.1]
* Improved TypeScript types - Thanks @yanick
* Check for existence of `process` before testing environment variables - Thanks @yanick
### Patch Changes
## [1.2.0]
* Add TypeScript types - Thanks @yanick (https://github.com/substantial/updeep/pull/83)
- 2bb0372: actually make mapIf and mapIfElse accessible.
- 7f0b147: don't include the tests in the package
## [1.1.0]
* Add _.omitted to omit properties - Thanks @yanick (https://github.com/substantial/updeep/pull/78)
But do include the TypeScript source, for the lulz
## [1.0.0]
* Allow Number type in updateIn function - Thanks @AveVlad (https://github.com/substantial/updeep/pull/67)
## v2.3.0, 2024-02-27
## [0.16.1]
* Do not freeze regexp (https://github.com/substantial/updeep/pull/65)
### Minor Changes
## [0.16.0]
* `u.reject` should return same instance if no changes (https://github.com/substantial/updeep/pull/62)
- 190bb7b: add functions mapIf and mapIfElse
- 05669ce: object predicates are now shortcuts for `u.matches`
## [0.15.0]
* Add `u.omitBy` (https://github.com/substantial/updeep/pull/60)
* Add `dangerously_never_freeze`, which I wouldn't recommend using unless you
absolutely have to and you know exactly what the effects will be.
(https://github.com/substantial/updeep/pull/59)
### Patch Changes
## [0.14.0]
* Allow updeep to be required from CommonJS (https://github.com/substantial/updeep/pull/56)
- 04e6304: maint: use changesets for change management
- 2fc662f: move back the documentation in the README
## [0.13.0]
* Upgrade to lodash ^4.2.0 (https://github.com/substantial/updeep/pull/50)
## v2.1.2, 2023-03-10
## [0.12.0]
* Make lodash a dependency instead of a peerDependency - Thanks @epeli
(https://github.com/substantial/updeep/issues/43 https://github.com/substantial/updeep/pull/48)
- check for array deep equality
## [0.11.0]
* **BREAKING CHANGE** Revert: "Default to empty array if update keys are integers." A new object will always be created. If you need an array, use `u.withDefault`. (https://github.com/substantial/updeep/pull/42)
### Statistics
## [0.10.1]
* Fix support for Date objects and other non-plain objects (https://github.com/substantial/updeep/issues/36)
- code churn: 6 files changed, 50 insertions(+), 11 deletions(-)
## [0.10.0]
* Add support for wildcards (`*`) to `u.updateIn`. (https://github.com/substantial/updeep/issues/27)
## v2.1.1, 2023-02-22
## [0.9.0]
* Do not add object during false branch of `u.if`.
(https://github.com/substantial/updeep/issues/35)
- add map to the exports
## [0.8.0]
* Default to empty array if update keys are integers. (https://github.com/substantial/updeep/issues/22)
### Statistics
## [0.7.2]
* Fix curried functions not reporting their correct arity. (https://github.com/substantial/updeep/issues/31)
- code churn: 4 files changed, 134 insertions(+), 121 deletions(-)
## [0.7.1]
* Fix update omitting empty object. (https://github.com/substantial/updeep/issues/29)
## v2.1.0, 2023-00-13
## [0.7.0]
* Add `u._` placeholder for curried functions.
* Add `u.constant` for replacing an object outright. (https://github.com/substantial/updeep/issues/10)
* Fix handling null differently than undefined. `u` and friends will now coerce null to an object if there are updates for it. (https://github.com/substantial/updeep/issues/20)
- add function 'matches'
## [0.6.0]
* Remove support for `_.placeholder` in curried methods. This may come back, but it was necessary for the next item.
* Improve performance of curried methods. (https://github.com/substantial/updeep/issues/16)
* Improve examples in docs, thanks [hedgerh][].
* `u.map` will now return the same instance if nothing changes.
* Improve performance of `u.map`.
* Removed a couple lodash dependencies.
### Statistics
## [0.5.0]
* Add `u.is` to test predicates in a single path. (https://github.com/substantial/updeep/issues/13)
* Rename `u.in` to `u.updateIn`. With `u.is` and `u.if` it was too confusing.
* Make `u` available at `u.update` as well.
- code churn: 7 files changed, 66 insertions(+), 174 deletions(-)
## [0.4.0]
* Add `u.if` and `u.ifElse` to conditionally update objects. (https://github.com/substantial/updeep/issues/12)
* Add `u.map` to update all values in an array or object.
* Replace object outright if null or constant provided as `updates`.
* Freeze objects returned by helper methods that use `update` like `withDefault`, `map`, `in`, etc. Previously, only `u` did freezing.
## v2.0.0
## [0.3.1]
* Actually expose `u.in`.
## [0.3.0]
* Add `u.freeze` to freeze an object deeply. (https://github.com/substantial/updeep/issues/7)
* Add `u.in` to update a single value in an object with a specified path. (https://github.com/substantial/updeep/issues/6)
## [0.2.3]
* Fix cannot update value to null (https://github.com/substantial/updeep/issues/8)
* Add umd distribution builds via webpack. (https://github.com/aaronjensen/updeep/issues/3)
## [0.2.2]
* Fix `Object.isFrozen` breaking on null in chrome. (https://github.com/aaronjensen/updeep/pull/5)
## [0.2.1]
* Fix `Object.isFrozen` breaking on non-freezables in PhantomJS. (https://github.com/aaronjensen/updeep/issues/1)
## [0.2.0]
* Freeze objects returned by default. It doesn't actually make sense to return
unfrozen objects, as the original object could be mutated and it would
affect the new object. Object freezing is disabled if `NODE_ENV` is
`"production'`.
* Update README with example for `reject`.
## [0.1.3]
* Update README.
## [0.1.2]
* Fix package description.
## [0.1.1]
* Update README and description.
## 0.1.0
* Initial release
[unreleased]: https://github.com/aaronjensen/updeep/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/aaronjensen/updeep/compare/v0.16.1...v1.0.0
[0.16.1]: https://github.com/aaronjensen/updeep/compare/v0.16.0...v0.16.1
[0.16.0]: https://github.com/aaronjensen/updeep/compare/v0.15.0...v0.16.0
[0.15.0]: https://github.com/aaronjensen/updeep/compare/v0.14.0...v0.15.0
[0.14.0]: https://github.com/aaronjensen/updeep/compare/v0.13.0...v0.14.0
[0.13.0]: https://github.com/aaronjensen/updeep/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/aaronjensen/updeep/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/aaronjensen/updeep/compare/v0.10.1...v0.11.0
[0.10.1]: https://github.com/aaronjensen/updeep/compare/v0.10.0...v0.10.1
[0.10.0]: https://github.com/aaronjensen/updeep/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/aaronjensen/updeep/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/aaronjensen/updeep/compare/v0.7.2...v0.8.0
[0.7.2]: https://github.com/aaronjensen/updeep/compare/v0.7.1...v0.7.2
[0.7.1]: https://github.com/aaronjensen/updeep/compare/v0.7.0...v0.7.1
[0.7.0]: https://github.com/aaronjensen/updeep/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/aaronjensen/updeep/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/aaronjensen/updeep/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/aaronjensen/updeep/compare/v0.3.1...v0.4.0
[0.3.1]: https://github.com/aaronjensen/updeep/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/aaronjensen/updeep/compare/v0.2.3...v0.3.0
[0.2.3]: https://github.com/aaronjensen/updeep/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/aaronjensen/updeep/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/aaronjensen/updeep/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/aaronjensen/updeep/compare/v0.1.3...v0.2.0
[0.1.3]: https://github.com/aaronjensen/updeep/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/aaronjensen/updeep/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/aaronjensen/updeep/compare/v0.1.0...v0.1.1
[hedgerh]: https://github.com/hedgerh
- Fork from the [mothership](github.com/substantial/updeep), v1.2.1

View File

@ -1,4 +1,4 @@
Copyright (c) 2015 Substantial
Copyright (c) Substantial, Yanick Champoux.
MIT License

673
README.md
View File

@ -1,72 +1,96 @@
# updeep
# @yanick/updeep
> Easily update nested frozen objects and arrays in a declarative and immutable
> manner.
## This library is still maintained but is considered feature complete. Please feel free to use it and report any issues you have with it.
[![Join the chat at https://gitter.im/substantial/updeep](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/substantial/updeep?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![NPM version][npm-image]][npm-url]
[![Build Status][circleci-image]][circleci-url]
[![Code Climate][codeclimate-image]][codeclimate-url]
## About
> 💡 This is a fork of the main [updeep](https://github.com/substantial/updeep)
> package. For ease of reading — not to mention ease of shamelessly
> lifting large pieces of the original documentation — in this
> documentation all mentions of `updeep` refers to this fork.
updeep makes updating deeply nested objects/arrays painless by allowing you to
declare the updates you would like to make and it will take care of the rest. It
will recursively return the same instance if no changes have been made, making
it ideal for using reference equality checks to detect changes (like
[PureRenderMixin]).
it ideal for using reference equality checks to detect changes.
Because of this, everything returned by updeep is frozen. Not only that, but
updeep assumes that every object passed in to update is immutable, so it may
freeze objects passed in as well. Note that the freezing only happens in
development.
updeep requires [lodash], but works very well with [lodash/fp] or [Ramda].
As a matter of fact, many of the helpers functions are [curried][currying]
[lodash] functions with their parameters reversed (like [lodash/fp]).
This fork of updeep requires Remeda, but works very well with any other utility
function ([lodash], [Ramda], etc).
Note that the parameters may be backwards from what you may be used to. updeep
supports [partial application][currying], so the parameter order is:
`updeep(updates, object)`.
## Differences with the original Updeep
## API and Examples
- Under the hood, the use of lodash has been replaced by Remeda (for better type
support and tree-shaking abilities).
### Full example
- The codebase has been ported to TypeScript (mostly for the lulz).
- The order of parameters in the non-curryied invocation of functions has been
modified. In the original updeep the input object is the last parameter,
whereas here it's the first.
```js
var u = require('updeep');
// original updeep
const dataIn = { a: 1, b: 2 };
var person = {
name: { first: 'Bill', last: 'Sagat' },
let dataOut = u({ c: 3 }, dataIn); // simple call
dataOut = u({ c: 3 })(dataIn); // curried
// @yanick/updeep
dataOut = u(dataIn, { c: 3 }); // simple call
dataOut = u({ c: 3 })(dataIn); // curried
```
- `withDefault` has been removed as the behavior can be implemented using
Remeda's `pipe`, or a simple `??`.
- `u.omitted` has been renamed `u.skip`.
## Installation
```bash
$ npm install @yanick/updeep
# or
$ pnpm install @yanick/updeep
```
## Full example
```js
import u from "@yanick/updeep";
const person = {
name: { first: "Bill", last: "Sagat" },
children: [
{ name: 'Mary-Kate', age: 7 },
{ name: 'Ashley', age: 7 }
{ name: "Mary-Kate", age: 7 },
{ name: "Ashley", age: 7 },
],
todo: [
'Be funny',
'Manage household'
],
email: 'bill@example.com',
version: 1
todo: ["Be funny", "Manage household"],
email: "bill@example.com",
version: 1,
};
var inc = function(i) { return i + 1; }
var eq = function(x) { return function(y) { return x == y } };
const inc = (i) => i + 1;
var newPerson = u({
const eq = (x) => (y) => x === y;
const newPerson = u(person, {
// Change first name
name: { first: 'Bob' },
name: { first: "Bob" },
// Increment all children's ages
children: u.map({ age: inc }),
// Update email
email: 'bob@example.com',
email: "bob@example.com",
// Remove todo
todo: u.reject(eq('Be funny')),
todo: u.reject(eq("Be funny")),
// Increment version
version: inc
}, person);
version: inc,
});
// => {
// name: { first: 'Bob', last: 'Sagat' },
// children: [
@ -81,46 +105,78 @@ var newPerson = u({
//}
```
**NOTE**: All functions are curried, so if you see `f(x(, y))`, it can be called with either `f(x, y)` or `f(x)(y)`.
## API
### `u(updates(, object))`
> 💡 All functions are curried, Remeda-style, so if you see
> `f(dataIn, ...others)`, it can be called with either `f(dataIn, ...others)` or
> `f(...others)(dataIn)`.
Update as many values as you want, as deeply as you want. The `updates` parameter can either be an object, a function, or a value. Everything returned from `u` is frozen recursively.
### Importing
If `updates` is an object, for each key/value, it will apply the updates specified in the value to `object[key]`.
`@yanick/updeep` exports a default function that is an alias to `u.update` and
has all the other functions available as props.
If `updates` is a function, it will call the function with `object` and return the value.
```
import u from '@yanick/updeep';
const foo = u({a:1}, { a: x => x + 1 });
const bar = u.updateIn({ a: { b: 2 } }, 'a.b', 3 );
```
Or you can import the functions piecemeal:
```
import { updateIn, omit } from '@yanick/updeep';
```
### `u(dataIn, updates)`
### `u.update(dataIn, updates)`
Update as many values as you want, as deeply as you want. The `updates`
parameter can either be an object, a function, or a value. Everything returned
from `u` is frozen recursively.
If `updates` is an object, for each key/value, it will apply the updates
specified in the value to `object[key]`.
If `updates` is a function, it will call the function with `object` and return
the value.
If `updates` is a value, it will return that value.
Sometimes, you may want to set an entire object to a property, or a function. In that case, you'll need to use a function to return that value, otherwise it would be interpreted as an update. Ex. `function() { return { a: 0 }; }`.
Sometimes, you may want to set an entire object to a property, or a function. In
that case, you'll need to use a function to return that value, otherwise it
would be interpreted as an update. Ex. `function() { return { a: 0 }; }`.
Also available at `u.update(...)`.
#### Simple update
Object properties:
```js
var person = {
const person = {
name: {
first: 'Jane',
last: 'West'
}
first: "Jane",
last: "West",
},
};
var result = u({ name: { first: 'Susan' } }, person);
const result = u(person, { name: { first: "Susan" } });
expect(result).to.eql({ name: { first: 'Susan', last: 'West' } });
expect(result).to.eql({ name: { first: "Susan", last: "West" } });
```
Array elements:
```js
var scoreboard = {
scores: [12, 28]
const scoreboard = {
scores: [12, 28],
};
var result = u({ scores: { 1: 36 } }, scoreboard);
const result = u(scoreboard, { scores: { 1: 36 } });
expect(result).to.eql({ scores: [12, 36] });
```
@ -128,486 +184,259 @@ expect(result).to.eql({ scores: [12, 36] });
#### Multiple updates
```js
var person = {
const person = {
name: {
first: 'Mike',
last: 'Smith'
first: "Mike",
last: "Smith",
},
scores: [12, 28]
scores: [12, 28],
};
var result = u({ name: { last: 'Jones' }, scores: { 1: 36 } }, person);
const result = u(person, { name: { last: "Jones" }, scores: { 1: 36 } });
expect(result).to.eql({ name: { first: 'Mike', last: 'Jones' }, scores: [12, 36] });
expect(result).to.eql({
name: { first: "Mike", last: "Jones" },
scores: [12, 36],
});
```
#### Use a function
```js
function increment(i) { return i + 1; }
const increment = (i) => i + 1;
var scoreboard = {
scores: {
team1: 0,
team2: 0
}
team2: 0,
},
};
var result = u({ scores: { team2: increment } }, scoreboard);
const result = u(scoreboard, { scores: { team2: increment } });
expect(result).to.eql({ scores: { team1: 0, team2: 1 } });
```
#### Array Manipulation
Non-trivial array manipulations, such as element removal/insertion/sorting, can be implemented with functions. Because there are so many possible manipulations, we don't provide any helpers and leave this up to you. Simply ensure your function is pure and does not mutate its arguments.
Non-trivial array manipulations, such as element removal/insertion/sorting, can
be implemented with functions. Because there are so many possible manipulations,
we don't provide any helpers and leave this up to you. Simply ensure your
function is pure and does not mutate its arguments.
```js
function addTodo(todos) { return [].concat(todos, [{ done: false }]); }
function addTodo(todos) {
return [].concat(todos, [{ done: false }]);
}
const state = {
todos: [
{ done: false },
{ done: false }
]
todos: [{ done: false }, { done: false }],
};
const result = u({ todos: addTodo }, state);
expect(result).to.eql({ todos: [{ done: false }, { done: false }, { done: false }]});
expect(result).to.eql({
todos: [{ done: false }, { done: false }, { done: false }],
});
```
[lodash/fp] is one of the many libraries providing good utility functions for
such manipulations.
Remeda is one of the many libraries providing good utility functions for such
manipulations.
```js
import fp from 'lodash/fp';
import { reject, concat, prop } from "remeda";
let state = {
todos: [
{ done: true },
{ done: false }
]
todos: [{ done: true }, { done: false }],
};
// add a new todo
state = u({ todos: fp.concat({ done: false }) }, state);
expect(state).to.eql({ todos: [{ done: true }, { done: false }, { done: false }]});
state = u(state, { todos: concat({ done: false }) });
expect(state).to.eql({
todos: [{ done: true }, { done: false }, { done: false }],
});
// remove all done todos
state = u({ todos: fp.reject({ done: true }) }, state);
expect(state).to.eql({ todos: [{ done: false }, { done: false }]});
state = u(state, { todos: reject(prop("done")) });
expect(state).to.eql({ todos: [{ done: false }, { done: false }] });
```
#### When null or undefined object, updeep uses a default object
#### Default input data
When the input data is null or undefined, updeep uses a empty plain object.
```javascript
var result = u({ foo: 'bar' }, null);
expect(result).to.eql({ foo: 'bar' });
const result = u(null, { foo: "bar" });
expect(result).to.eql({ foo: "bar" });
```
#### Partial application
```js
function increment(i) { return i + 1; }
const inc = (i) => i + 1;
var addOneYear = u({ age: increment });
var result = addOneYear({ name: 'Shannon Barnes', age: 62 });
const addOneYear = u({ age: increment });
const result = addOneYear({ name: "Shannon Barnes", age: 62 });
expect(result).to.eql({ name: 'Shannon Barnes', age: 63 });
expect(result).to.eql({ name: "Shannon Barnes", age: 63 });
```
#### ES6 computed properties
### `u.freeze(dataIn)`
Freeze your initial state to protect against mutations. Only performs the
freezing in development, and returns the original object unchanged in
production.
```js
var key = 'age';
var result = u({ person: { [key]: 21 } }, { person: { name: 'Olivier P.', age: 20 } });
expect(result).to.eql({ person: { name: 'Olivier P.', age: 21 } });
const state = u.freeze({ someKey: "Some Value" });
state.someKey = "Mutate"; // ERROR in development
```
### `u.freeze`
### `u.updateIn(dataIn, path, value)`
Freeze your initial state to protect against mutations. Only performs the freezing in development, and returns the original object unchanged in production.
Update a single value with a simple string or array path. Can be use to update
nested objects, arrays, or a combination. Can also be used to update every
element of a nested array with `'*'`.
```js
var state = u.freeze({ someKey: "Some Value" })
state.someKey = "Mutate" // ERROR in development
```
const result = u.updateIn(
{ bunny: { color: "black" } },
"bunny.color",
"brown"
);
### `u._`
All updeep functions are curried.
If you want to partially apply a function in an order other than the default argument order, you can use the placeholder.
```js
function increment(i) { return i + 1; }
var updateJoe = u(u._, { name: "Joe Merrill", age: 21 });
var result = updateJoe({ age: increment });
expect(result).to.eql({ name: "Joe Merrill", age: 22 });
```
### `u.updateIn(path(, value)(, object))`
Update a single value with a simple string or array path. Can be use to update nested objects, arrays, or a combination. Can also be used to update every element of a nested array with `'*'`.
```js
var result = u.updateIn('bunny.color', 'brown', { bunny: { color: 'black' } });
expect(result).to.eql({ bunny: { color: 'brown' } });
expect(result).to.eql({ bunny: { color: "brown" } });
```
```js
var result = u.updateIn('0.1.color', 'brown', [[{ color: 'blue' }, { color: 'red' }], []]);
const result = u.updateIn(
"0.1.color",
"brown"
)([[{ color: "blue" }, { color: "red" }], []]);
expect(result).to.eql( [[{ color: 'blue' }, { color: 'brown' }], []]);
expect(result).to.eql([[{ color: "blue" }, { color: "brown" }], []]);
```
```js
function increment(i) { return i + 1; }
const incr = (i) => i + 1;
var result = u.updateIn('bunny.age', increment, { bunny: { age: 2 } });
const result = u.updateIn("bunny.age", incr)({ bunny: { age: 2 } });
expect(result).to.eql({ bunny: { age: 3 } });
```
```js
var result = u({ pets: u.updateIn([0, 'bunny', 'age'], 3) }, { pets: [{ bunny: { age: 2 } }] });
const result = u(
{ pets: [{ bunny: { age: 2 } }] }
{ pets: u.updateIn([0, "bunny", "age"], 3) },
);
expect(result).to.eql({ pets: [{ bunny: { age: 3 } }] });
```
```js
var result = u.updateIn('todos.*.done', true, {
todos: [
{ done: false },
{ done: false },
]
const result = u.updateIn(
"todos.*.done",
true
)({
todos: [{ done: false }, { done: false }],
});
expect(result).to.eql({
todos: [
{ done: true },
{ done: true },
]
todos: [{ done: true }, { done: true }],
});
```
### `u.constant(object)`
### `u.constant(dataIn)`
Sometimes, you want to replace an object outright rather than merging it.
You'll need to use a function that returns the new object.
`u.constant` creates that function for you.
Sometimes, you want to replace an object outright rather than merging it. You'll
need to use a function that returns the new object. `u.constant` creates that
function for you.
```js
var user = {
name: 'Mitch',
const user = {
name: "Mitch",
favorites: {
band: 'Nirvana',
movie: 'The Matrix'
}
band: "Nirvana",
movie: "The Matrix",
},
};
var newFavorites = {
band: 'Coldplay'
const newFavorites = {
band: "Coldplay",
};
var result = u({ favorites: u.constant(newFavorites) }, user);
const result = u(user, { favorites: u.constant(newFavorites) });
expect(result).to.eql({ name: 'Mitch', favorites: { band: 'Coldplay' } });
expect(result).to.eql({ name: "Mitch", favorites: { band: "Coldplay" } });
```
```js
var alwaysFour = u.constant(4);
const alwaysFour = u.constant(4);
expect(alwaysFour(32)).to.eql(4);
```
### `u.if(predicate(, updates)(, object))`
### `u.if(dataIn, predicate, updates)`
Apply `updates` if `predicate` is truthy, or if `predicate` is a function.
It evaluates to truthy when called with `object`.
Apply `updates` if `predicate` evaluates to true. The `predicate` can be a
boolean, or a function taking in `dataIn` and returning a boolean, or an object,
in which case it'll be treated as a shortcut for `u.matches(predicate)`.
```js
function isEven(x) { return x % 2 === 0; }
function increment(x) { return x + 1; }
function isEven(x) {
return x % 2 === 0;
}
function increment(x) {
return x + 1;
}
var result = u({ value: u.if(isEven, increment) }, { value: 2 });
const result = u({ value: 2 }, { value: u.if(isEven, increment) });
expect(result).to.eql({ value: 3 });
```
### `u.ifElse(predicate(, trueUpdates)(, falseUpdates)(, object))`
### `u.filter(arrayIn, predicate)`
Apply `trueUpdates` if `predicate` is truthy, or if `predicate` is a function.
It evaluates to truthy when called with `object`. Otherwise, apply `falseUpdates`.
### `u.reject(arrayIn, predicate)`
### `u.pickBy(objectIn, predicate)`
### `u.omitBy(objectIn, predicate)`
### `u.pick(objectIn, keys)`
### `u.omit(objectIn, keys)`
Essentially the same as their Remeda counterparts. The difference being that if
the transformation results in no change, the original object/array is returned.
### `u.map(objectIn, updates)`
Applies the updates on all entries of `objectIn`.
### `u.mapIf(objectIn, predicate, updates)`
Shorthand for `u.map( objectIn, u.if(predicate,updates) )`.
### `u.mapIfElse(objectIn, predicate, updates, updatesElse)`
Shorthand for `u.map( objectIn, u.ifElse(predicate,updates,updatesElse) )`.
### `u.matches(dataIn, condition)`
Do a deep comparison with `condition`, and returns `true` if the `dataIn` object
matches.
Scalar values are verified for equality (i.e., `{foo: 12}` will verify that the
object has the prop `foo` set to `12`), and functions are going to be invoked
with the object value of the object and expected to return `true` upon matching.
```js
function isEven(x) { return x % 2 === 0; }
function increment(x) { return x + 1; }
function decrement(x) { return x - 1; }
var result = u({ value: u.ifElse(isEven, increment, decrement) }, { value: 3 });
expect(result).to.eql({ value: 2 });
```
### `u.map(iteratee(, object))`
If iteratee is a function, map it over the values in `object`.
If it is an object, apply it as updates to each value in `object`,
which is equivalent to `u.map(u(...), object)`).
```js
function increment(x) { return x + 1; }
var result = u({ values: u.map(increment) }, { values: [0, 1] });
expect(result).to.eql({ values: [1, 2] });
```
```js
function increment(x) { return x + 1; }
var result = u.map(increment, [0, 1, 2]);
expect(result).to.eql([1, 2, 3]);
```
```js
function increment(x) { return x + 1; }
var result = u.map(increment, { a: 0, b: 1, c: 2 });
expect(result).to.eql({ a: 1, b: 2, c: 3 });
```
```js
var result = u.map({ a: 100 }, [{ a: 0 }, { a: 1 }]);
expect(result).to.eql([{ a: 100 }, { a: 100 }]);
```
### `u.omit(predicate(, object))`
Remove properties. See [`_.omit`](https://lodash.com/docs#omit).
```js
var user = { user: { email: 'john@aol.com', username: 'john123', authToken: '1211..' } };
var result = u({ user: u.omit('authToken') }, user);
expect(result).to.eql({ user: { email: 'john@aol.com', username: 'john123' } });
```
```js
var user = {
user: {
email: 'john@aol.com',
username: 'john123',
authToken: '1211..',
SSN: 5551234
u.matches(
{ name: "Bob", age: 32, address: "..." },
{
name: "Bob",
age: (age) => age > 30,
}
};
var result = u({ user: u.omit(['authToken', 'SSN']) }, user);
expect(result).to.eql({ user: { email: 'john@aol.com', username: 'john123' } });
); // true
```
### `u.omitted`
A property updated to this constant will be removed from the final object.
Useful when one wishes to remove and update properties in a single operation.
```js
var user = { email: 'john@aol.com', username: 'john123', authToken: '1211..' };
var result = u({ authToken: u.omitted, active: true }, user);
expect(result).to.eql({ user: { email: 'john@aol.com', username: 'john123', active: true } });
```
### `u.omitBy(predicate(, object))`
Remove properties. See [`_.omitBy`](https://lodash.com/docs#omitBy).
```js
var user = {
user: {
email: 'john@aol.com',
username: 'john123',
authToken: '1211..',
SSN: 5551234
}
};
function isSensitive(value, key) { return key == 'SSN' }
var result = u({ user: u.omitBy(isSensitive) }, user);
expect(result).to.eql({ user: { email: 'john@aol.com', username: 'john123', authToken: '1211..' } });
```
### `u.reject(predicate(, object))`
Reject items from an array. See [`_.reject`](https://lodash.com/docs#reject).
```js
function isEven(i) { return i % 2 === 0; }
var result = u({ values: u.reject(isEven) }, { values: [1, 2, 3, 4] });
expect(result).to.eql({ values: [1, 3] });
```
### `u.withDefault(default(, updates)(, object))`
Like `u()`, but start with the default value if the original value is undefined.
```js
var result = u({ value: u.withDefault([], { 0: 3 }) }, {});
expect(result).to.eql({ value: [3] });
```
See the [tests] for more examples.
### `u.is(path(, predicate)(, object))`
Returns `true` if the `predicate` matches the `path` applied to the `object`.
If the `predicate` is a function, the result is returned. If not, they are compared with `===`.
```js
var result = u.is('friend.age', 22, { friend: { age: 22 } });
expect(result).to.eql(true);
```
```js
function isEven(i) { return i % 2 === 0; }
var result = u.is('friend.age', isEven, { friend: { age: 22 } });
expect(result).to.eql(true);
```
```js
var person = {
person: {
name: {
first: 'Jen',
last: 'Matthews'
}
}
};
// Update person's last name to Simpson if their first name is Jen
var result = u({
person: u.if(
u.is('name.first', 'Jen'),
u.updateIn('name.last', 'Simpson')
)
}, person);
expect(result).to.eql({ person: { name: { first: 'Jen', last: 'Simpson' } } });
```
## Install
```sh
$ npm install --save updeep
```
## Configuration
If `NODE_ENV` is `"production"`, updeep will not attempt to freeze objects.
This may yield a slight performance gain.
## Motivation
While creating reducers for use with [redux], I wanted something that made it
easy to work with frozen objects. Native javascript objects have some nice
advantages over things like [Immutable.js][immutablejs] such as debugging and
destructuring. I wanted something more powerful than [icepick] and more
composable than [React.addons.update].
If you're manipulating massive amounts of data frequently, you may want to
benchmark, as [Immutable.js][immutablejs] should be more efficient in that
case.
## Contributing
1. Fork it.
1. Create your feature branch (`git checkout -b my-new-feature`).
1. Run `gulp` to run tests and lint.
1. Commit your changes (`git commit -am 'Added some feature'`).
1. Push to the branch (`git push origin my-new-feature`).
1. Create new Pull Request.
## Releasing New Version
1. Login to npm, if you don't have access to the package, ask for it.
```bash
$ npm login
```
1. Make sure the build passes (best to let it pass on circleci, but you can run it locally):
```bash
$ npm build
```
1. Bump the version:
```bash
$ npm version major|minor|patch
```
1. Update the `CHANGELOG.md`.
1. Add the new version and corresponding notes.
1. Add a link to the new version.
1. Update the `unreleased` link compare to be based off of the new version.
1. Publish and push:
```bash
$ npm publish
$ git push origin master --follow-tags
```
## See Also
A [Dash][dash] version of the documention is also available
as part of their user-contributed docsets.
For [Zeal][zeal] users, the user-contributed docsets
can be accessed via [zealusercontributions.herokuapp.com][zealuc].
## License
MIT ©2015 [Substantial](http://substantial.com)
[zealuc]: http://zealusercontributions.herokuapp.com/
[dash]: https://kapeli.com/dash
[zeal]: https://zealdocs.org/
[docset]: https://github.com/yanick/dash-docset-updeep
[npm-image]: https://badge.fury.io/js/updeep.svg
[npm-url]: https://npmjs.org/package/updeep
[circleci-image]: https://circleci.com/gh/substantial/updeep.svg?style=shield
[circleci-url]: https://circleci.com/gh/substantial/updeep
[daviddm-image]: https://david-dm.org/substantial/updeep.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/substantial/updeep
[daviddm-peer-image]: https://david-dm.org/substantial/updeep/peer-status.svg
[daviddm-peer-url]:https://david-dm.org/substantial/updeep#info=peerDependencies
[daviddm-dev-image]: https://david-dm.org/substantial/updeep/dev-status.svg
[daviddm-dev-url]:https://david-dm.org/substantial/updeep#info=devDependencies
[codeclimate-image]: https://codeclimate.com/github/substantial/updeep/badges/gpa.svg
[codeclimate-url]: https://codeclimate.com/github/substantial/updeep
[lodash]: http://lodash.com
[lodash/fp]: https://github.com/lodash/lodash/wiki/FP-Guide
[Ramda]: http://ramdajs.com/
[PureRenderMixin]: https://facebook.github.io/react/docs/pure-render-mixin.html
[redux]: https://github.com/gaearon/redux
[immutablejs]: https://github.com/facebook/immutable-js
[icepick]: https://github.com/aearly/icepick
[React.addons.update]: https://facebook.github.io/react/docs/update.html
[tests]: https://github.com/substantial/updeep/blob/master/test/index.js
[currying]: http://www.datchley.name/currying-vs-partial-application/

View File

@ -3,16 +3,62 @@
version: "3"
vars:
GREETING: Hello, World!
VERSION:
sh: cat package.json | jq -r .version
PARENT_BRANCH: main
FILE_DELTA:
sh: git diff-ls --diff-filter=d {{.PARENT_BRANCH}}
FIX: false
tasks:
changelog:
sources: [./CHANGELOG.yml]
generates: [./CHANGELOG.md]
cmds:
- changelord print > CHANGELOG.md
test: vitest run
prettier:
cmd: prettier {{if .FIX }}--write{{end}} {{ .FILE_DELTA | catLines | default "." }}
checkout-clean:
cmds:
- sh: git is-clean
msg: stuff not commited
integrate:
deps: [prettier, test, build]
cmds:
- git diff-ls main | grep .changeset/
- sh: git branch | grep '* {{.PARENT_BRANCH}}'
msg: not on target
- { task: checkout-clean }
- git checkout {{.PARENT_BRANCH}}
- git weld -
build:
sources: ["src/**"]
generates: ["esm/**"]
deps: [test]
cmds:
- rm -fr esm/
- tsc -p tsconfig.json
default:
prepRelease:
deps: [test, changelog, build]
preconditions:
- sh: git branch | grep '* main'
msg: not on main
- sh: git is-clean
msg: stuff not commited
cmds:
- echo "{{.GREETING}}"
silent: true
- npm pack
publish:
deps: [prepRelease]
cmds:
- "git tag v{{.VERSION}}"
- npm publish --access public
- git push
- git push --tags

14
contrib/add_change Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env fish
set name ( cat /usr/share/dict/american-english | shuf | head -3 | \
perl -e 'print lc( join "-", <> )=~ s/[\n\']//rg' )
set filename .changeset/(date +"%FT%T")-$name.md
echo "creating changeset at" $filename
echo -e "---\n\"@yanick/updeep-remeda\": patch|minor|major\n---\n\n" > $filename
git log main... --pretty=short >> $filename
$EDITOR $filename

1
esm/.npmignore Normal file
View File

@ -0,0 +1 @@
*.test.*

View File

@ -1 +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"}
{"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;IAClD,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;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AACvD,CAAC,CAAC,CAAC"}

4
esm/filter.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { filter as _filter } from "remeda";
declare const _default: typeof _filter;
export default _default;
//# sourceMappingURL=filter.d.ts.map

1
esm/filter.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;wBAYZ,OAAO,OAAO;AAA7C,wBAA8C"}

10
esm/filter.js Normal file
View File

@ -0,0 +1,10 @@
import { filter as _filter } from "remeda";
import { buildPredicate } from "./predicate.js";
import wrap from "./wrap.js";
const sizeOf = (obj) => obj.length;
function filter(dataIn, predicate) {
const result = _filter(dataIn, buildPredicate(predicate));
return sizeOf(result) === sizeOf(dataIn) ? dataIn : result;
}
export default wrap(filter);
//# sourceMappingURL=filter.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AAEnC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,eAAe,IAAI,CAAC,MAAM,CAAmB,CAAC"}

2
esm/filter.test.d.ts vendored Normal file
View File

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

1
esm/filter.test.d.ts.map Normal file
View File

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

18
esm/filter.test.js Normal file
View File

@ -0,0 +1,18 @@
import { expect, it } from "vitest";
import filter from "./filter.js";
import u from "./index.js";
it("can filter", () => {
const result = u({ foo: filter((v, k) => k === 1) })({
foo: ["a", "b"],
});
expect(result).to.eql({ foo: ["b"] });
});
it("freezes the result", () => {
expect(Object.isFrozen(filter([1], () => true))).to.be.true;
});
it("doesn't change the obj if nothing is modified", () => {
const orig = [1, 2, 3];
const result = filter(() => true)(orig);
expect(result).to.be.equal(orig);
});
//# sourceMappingURL=filter.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"filter.test.js","sourceRoot":"","sources":["../src/filter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,CAAC,MAAM,YAAY,CAAC;AAE3B,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;IACpB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;KAChB,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACvD,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}

View File

@ -1 +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"}
{"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,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,MAAM,CAAI,MAAS;IAC1B,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,0BAA0B,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,eAAe,MAAM,CAAC"}

View File

@ -1 +1 @@
{"version":3,"file":"if.d.ts","sourceRoot":"","sources":["../src/if.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,EAAE;IACjB,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"}
{"version":3,"file":"if.d.ts","sourceRoot":"","sources":["../src/if.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,EAAE;IACjB,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;wBAM2B,EAAE;AAA9B,wBAA+B"}

View File

@ -1,6 +1,6 @@
import { identity } from "remeda";
import ifElse from "./ifElse.js";
import wrap from "./wrap.js";
const identity = (x) => x;
function _if(object, predicate, trueUpdates) {
return ifElse(object, predicate, trueUpdates, identity);
}

View File

@ -1 +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"}
{"version":3,"file":"if.js","sourceRoot":"","sources":["../src/if.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AAOnC,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"}

View File

@ -3,7 +3,7 @@ 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);
let result = _if(object, false, { b: 1 });
expect(result).to.eql(object);
result = _if(0, false, 1);
expect(result).to.eql(0);
@ -16,7 +16,7 @@ describe("if", () => {
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);
const result = _if(aIsThree, { b: 1 })(object);
expect(result).to.eql({ a: 0 });
});
test("freezes the result", () => {

View File

@ -1 +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"}
{"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,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,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,CAAC,CAAC,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"}

2
esm/ifElse.d.ts vendored
View File

@ -1,4 +1,4 @@
type Predicate = ((source: any) => boolean) | boolean;
import { Predicate } from "./predicate.js";
export interface IfElse {
(object: any, predicate: Predicate, trueUpdates: any, falseUpdates: any): unknown;
(predicate: Predicate, trueUpdates: any, falseUpdates: any): (unknown: any) => unknown;

View File

@ -1 +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,MAAM,WAAW,MAAM;IACrB,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"}
{"version":3,"file":"ifElse.d.ts","sourceRoot":"","sources":["../src/ifElse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAU3D,MAAM,WAAW,MAAM;IACrB,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;wBAEoC,MAAM;AAA3C,wBAA4C"}

View File

@ -1,7 +1,8 @@
import update from "./update.js";
import wrap from "./wrap.js";
import { buildPredicate } from "./predicate.js";
function updateIfElse(object, predicate, trueUpdates, falseUpdates) {
const test = typeof predicate === "function" ? predicate(object) : predicate;
const test = buildPredicate(predicate)(object);
const updates = test ? trueUpdates : falseUpdates;
return update(object, updates);
}

View File

@ -1 +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"}
{"version":3,"file":"ifElse.js","sourceRoot":"","sources":["../src/ifElse.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAa,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3D,SAAS,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY;IAChE,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAElD,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAOD,eAAe,IAAI,CAAC,YAAY,CAAW,CAAC"}

41
esm/index.d.ts vendored
View File

@ -1,16 +1,43 @@
import freeze from "./freeze.js";
import is from "./is.js";
import _if from "./if.js";
import ifElse from "./ifElse.js";
import update, { skip } from "./update.js";
import updateIn from "./updateIn.js";
import constant from "./constant.js";
declare const _default: import("./update.js").Update & {
import omit from "./omit.js";
import omitBy from "./omitBy.js";
import pick from "./pick.js";
import pickBy from "./pickBy.js";
import filter from "./filter.js";
import reject from "./reject.js";
import matches from "./matches.js";
import myMap from "./map.js";
import mapIf, { mapIfElse } from "./mapIf.js";
declare const functions: {
constant: typeof constant;
if: import("./if.js").If;
ifElse: import("./ifElse.js").IfElse;
is: import("./is.js").Is;
filter: typeof import("remeda").filter;
freeze: typeof freeze;
ifElse: import("./ifElse.js").IfElse;
if: import("./if.js").If;
is: import("./is.js").Is;
map: import("./map.js").Map;
matches: import("./matches.js").Matches;
omit: import("./omit.js").Omit;
omitBy: typeof import("remeda").omitBy;
pick: import("./pick.js").UPick;
pickBy: typeof import("remeda").pickBy;
reject: typeof import("remeda").filter;
skip: () => Readonly<{
__skip: boolean;
}>;
update: import("./update.js").Update;
updateIn: import("./updateIn.js").UpdateIn;
omitted: () => Readonly<{
__omitted: boolean;
}>;
mapIf: import("./mapIf.js").MapIf;
mapIfElse: import("./mapIf.js").MapIfElse;
};
export { filter, reject, pickBy, pick, omit, omitBy, constant, _if as if, ifElse, is, freeze, update, updateIn, skip, matches, myMap as map, mapIf, mapIfElse, };
declare const merged: import("./update.js").Update;
declare const _default: typeof merged & typeof functions;
export default _default;
//# sourceMappingURL=index.d.ts.map

View File

@ -1 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAMjC,OAAO,QAAQ,MAAM,eAAe,CAAC;;;;;;;;;;;;;AAiBrC,wBAA0D"}
{"version":3,"file":"index.d.ts","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,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9C,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;CAmBd,CAAC;AAEF,OAAO,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,GAAG,IAAI,EAAE,EACT,MAAM,EACN,EAAE,EACF,MAAM,EACN,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,KAAK,IAAI,GAAG,EACZ,KAAK,EACL,SAAS,GACV,CAAC;AAEF,QAAA,MAAM,MAAM,8BAAS,CAAC;wBAIG,OAAO,MAAM,GAAG,OAAO,SAAS;AAAzD,wBAA0D"}

View File

@ -2,19 +2,39 @@ 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 update, { skip } from "./update.js";
import updateIn from "./updateIn.js";
import constant from "./constant.js";
import omit from "./omit.js";
import omitBy from "./omitBy.js";
import pick from "./pick.js";
import pickBy from "./pickBy.js";
import filter from "./filter.js";
import reject from "./reject.js";
import matches from "./matches.js";
import myMap from "./map.js";
import mapIf, { mapIfElse } from "./mapIf.js";
const functions = {
constant,
if: _if,
ifElse,
is,
filter,
freeze,
ifElse,
if: _if,
is,
map: myMap,
matches,
omit,
omitBy,
pick,
pickBy,
reject,
skip,
update,
updateIn,
omitted,
mapIf,
mapIfElse,
};
export { filter, reject, pickBy, pick, omit, omitBy, constant, _if as if, ifElse, is, freeze, update, updateIn, skip, matches, myMap as map, mapIf, mapIfElse, };
const merged = update;
Object.entries(functions).forEach(([k, v]) => (merged[k] = v));
export default merged;

View File

@ -1 +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,SAAS,GAAG;IAChB,QAAQ;IACR,EAAE,EAAE,GAAG;IACP,MAAM;IACN,EAAE;IACF,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;CACR,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC;AAEtB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/D,eAAe,MAA0C,CAAC"}
{"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,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,SAAS,GAAG;IAChB,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,EAAE,EAAE,GAAG;IACP,EAAE;IACF,GAAG,EAAE,KAAK;IACV,OAAO;IACP,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;CACV,CAAC;AAEF,OAAO,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,GAAG,IAAI,EAAE,EACT,MAAM,EACN,EAAE,EACF,MAAM,EACN,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,KAAK,IAAI,GAAG,EACZ,KAAK,EACL,SAAS,GACV,CAAC;AAEF,MAAM,MAAM,GAAG,MAAM,CAAC;AAEtB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/D,eAAe,MAA0C,CAAC"}

View File

@ -1 +1 @@
{"version":3,"file":"is.d.ts","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,EAAE;IACjB,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;CAC/E;;AAED,wBAA+B"}
{"version":3,"file":"is.d.ts","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,EAAE;IACjB,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;CAC/E;wBAE2B,EAAE;AAA9B,wBAA+B"}

View File

@ -1 +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,CACV,MAAM,EACN,IAA2C,EAC3C,SAAS;IAET,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;QACnC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;KAC1B;IAED,OAAO,SAAS,KAAK,MAAM,CAAC;AAC9B,CAAC;AAOD,eAAe,IAAI,CAAC,GAAG,CAAO,CAAC"}
{"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,CACV,MAAM,EACN,IAA2C,EAC3C,SAAS;IAET,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,KAAK,MAAM,CAAC;AAC9B,CAAC;AAOD,eAAe,IAAI,CAAC,GAAG,CAAO,CAAC"}

View File

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

2
esm/map.d.ts vendored
View File

@ -1,4 +1,4 @@
interface Map {
export interface Map {
(object: any, iteratee: any): any;
(iteratee: any): (object: any) => any;
}

View File

@ -1 +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"}
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,GAAG;IAClB,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA,GAAG,GAAG,CAAC;IACxB,CAAC,QAAQ,KAAA,GAAG,CAAC,MAAM,KAAA,KAAK,GAAG,CAAC;CAC7B;wBAE2B,GAAG;AAA/B,wBAAgC"}

View File

@ -10,7 +10,7 @@ function shallowEqual(object, otherObject) {
}
function map(object, iteratee) {
const updater = typeof iteratee === "function" ? iteratee : update(iteratee);
const mapper = Array.isArray(object) ? _map.indexed : mapValues;
const mapper = Array.isArray(object) ? _map : mapValues;
const newObject = mapper(object, updater);
const equal = shallowEqual(object, newObject);
return equal ? object : newObject;

View File

@ -1 +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"}
{"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,CAAC;QAC5B,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACjD,CAAC;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,GAAQ,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7D,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"}

View File

@ -1,24 +1,23 @@
import { expect, test, describe } from "vitest";
import { expect, test } from "vitest";
import map from "./map.js";
describe("map", () => {
test("applies updates to each item in an array", () => {
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", () => {
});
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", () => {
});
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", () => {
});
test("returns the same object if no updates are made", () => {
const array = [0, 1];
const ident = (x) => x;
let result = map(ident)(array);
@ -26,8 +25,8 @@ describe("map", () => {
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", () => {
});
test("passes the key or index as the second parameter to the iteratee", () => {
const object = {
a: { x: 0 },
b: [3, 3],
@ -38,9 +37,8 @@ describe("map", () => {
a: { x: "x" },
b: [0, 1],
});
});
test("freezes the result", () => {
});
test("freezes the result", () => {
expect(Object.isFrozen(map({}, {}))).to.be.true;
});
});
//# sourceMappingURL=map.test.js.map

View File

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

13
esm/mapIf.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
import { Predicate } from "./predicate.js";
export interface MapIfElse {
(object: any, predicate: Predicate, trueUpdates: any, falseUpdates: any): unknown;
(predicate: Predicate, trueUpdates: any, falseUpdates: any): (unknown: any) => unknown;
}
export interface MapIf {
(object: any, predicate: Predicate, trueUpdates: any): unknown;
(predicate: Predicate, trueUpdates: any): (unknown: any) => unknown;
}
declare const _default: MapIf;
export default _default;
export declare const mapIfElse: MapIfElse;
//# sourceMappingURL=mapIf.d.ts.map

1
esm/mapIf.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"mapIf.d.ts","sourceRoot":"","sources":["../src/mapIf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAC;AAY3D,MAAM,WAAW,SAAS;IACxB,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,MAAM,WAAW,KAAK;IACpB,CAAC,MAAM,KAAA,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,KAAA,GAAG,OAAO,CAAC;IACrD,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,KAAA,GAAG,CAAC,OAAO,KAAA,KAAK,OAAO,CAAC;CAC3D;wBAE6B,KAAK;AAAnC,wBAAoC;AACpC,eAAO,MAAM,SAAS,EAAwB,SAAS,CAAC"}

14
esm/mapIf.js Normal file
View File

@ -0,0 +1,14 @@
import wrap from "./wrap.js";
import map from "./map.js";
import ifElse from "./ifElse.js";
import { buildPredicate } from "./predicate.js";
function _mapIfElse(object, predicate, trueUpdates, falseUpdates) {
const test = buildPredicate(predicate);
return map(object, ifElse(test, trueUpdates, falseUpdates));
}
function mapIf(object, predicate, trueUpdates) {
return _mapIfElse(object, predicate, trueUpdates, (x) => x);
}
export default wrap(mapIf);
export const mapIfElse = _mapIfElse;
//# sourceMappingURL=mapIf.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"mapIf.js","sourceRoot":"","sources":["../src/mapIf.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAa,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3D,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY;IAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAEvC,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW;IAC3C,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAYD,eAAe,IAAI,CAAC,KAAK,CAAU,CAAC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG,UAA8B,CAAC"}

2
esm/mapIf.test.d.ts vendored Normal file
View File

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

1
esm/mapIf.test.d.ts.map Normal file
View File

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

20
esm/mapIf.test.js Normal file
View File

@ -0,0 +1,20 @@
import { expect, test } from "vitest";
import mapIf, { mapIfElse } from "./mapIf.js";
test("does updates with the if and else", () => {
const object = [
{ x: 1, y: 0 },
{ x: 2, y: 0 },
{ x: 3, y: 0 },
];
expect(mapIfElse(object, { x: 2 }, { y: 2 }, { y: 3 })).toEqual([
{ x: 1, y: 3 },
{ x: 2, y: 2 },
{ x: 3, y: 3 },
]);
expect(mapIf(object, { x: 2 }, { y: 2 })).toEqual([
{ x: 1, y: 0 },
{ x: 2, y: 2 },
{ x: 3, y: 0 },
]);
});
//# sourceMappingURL=mapIf.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"mapIf.test.js","sourceRoot":"","sources":["../src/mapIf.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAY,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9C,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC7C,MAAM,MAAM,GAAG;QACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACf,CAAC;IAEF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACf,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}

7
esm/matches.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
export interface Matches {
(dataIn: any, matcher: any): boolean;
(matcher: any): (dataIn: any) => boolean;
}
declare const _default: Matches;
export default _default;
//# sourceMappingURL=matches.d.ts.map

1
esm/matches.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"matches.d.ts","sourceRoot":"","sources":["../src/matches.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,OAAO;IACpB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC;IACrC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC;CAC5C;wBAE+B,OAAO;AAAvC,wBAAwC"}

11
esm/matches.js Normal file
View File

@ -0,0 +1,11 @@
import wrap from "./wrap.js";
function matches(target, condition) {
if (typeof condition === "function")
return condition(target);
if (typeof condition === "object") {
return Object.entries(condition).every(([key, value]) => matches(target[key], value));
}
return target === condition;
}
export default wrap(matches);
//# sourceMappingURL=matches.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"matches.js","sourceRoot":"","sources":["../src/matches.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,OAAO,CAAC,MAAM,EAAE,SAAS;IAC9B,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9D,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACpD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAC9B,CAAC;IACN,CAAC;IAED,OAAO,MAAM,KAAK,SAAS,CAAC;AAChC,CAAC;AAOD,eAAe,IAAI,CAAC,OAAO,CAAY,CAAC"}

2
esm/matches.test.d.ts vendored Normal file
View File

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

View File

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

10
esm/matches.test.js Normal file
View File

@ -0,0 +1,10 @@
import { test, expect } from "vitest";
import matches from "./matches.js";
test("basic", () => {
expect(matches(1, 1)).toBeTruthy();
expect(matches(1, 2)).not.toBeTruthy();
expect(matches({ a: 1, b: 2 }, { a: 1 })).toBeTruthy();
expect(matches({ a: 2, b: 2 }, { a: 1 })).not.toBeTruthy();
expect(matches({ 2: { a: (x) => x > 2 } })([1, 1, { a: 3 }])).toBeTruthy();
});
//# sourceMappingURL=matches.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"matches.test.js","sourceRoot":"","sources":["../src/matches.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;IACjB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACvD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC3D,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAC7E,CAAC,CAAC,CAAC"}

7
esm/omit.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
export interface Omit {
(dataIn: any, toOmit: (string | number)[]): any;
(toOmit: (string | number)[]): (dataIn: any) => any;
}
declare const _default: Omit;
export default _default;
//# sourceMappingURL=omit.d.ts.map

1
esm/omit.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"omit.d.ts","sourceRoot":"","sources":["../src/omit.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,IAAI;IACnB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC;IAChD,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;CACrD;wBAE4B,IAAI;AAAjC,wBAAkC"}

9
esm/omit.js Normal file
View File

@ -0,0 +1,9 @@
import { omit as _omit } from "remeda";
import wrap from "./wrap.js";
const sizeOf = (obj) => Object.keys(obj).length;
function omit(dataIn, toOmit) {
const result = _omit(dataIn, toOmit);
return sizeOf(result) === sizeOf(dataIn) ? dataIn : result;
}
export default wrap(omit);
//# sourceMappingURL=omit.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../src/omit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAEhD,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAOD,eAAe,IAAI,CAAC,IAAI,CAAS,CAAC"}

2
esm/omit.test.d.ts vendored Normal file
View File

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

1
esm/omit.test.d.ts.map Normal file
View File

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

16
esm/omit.test.js Normal file
View File

@ -0,0 +1,16 @@
import { expect, it } from "vitest";
import omit from "./omit.js";
import u from "./index.js";
it("can omit a key", () => {
const result = u({ foo: omit(["bar"]) })({ foo: { bar: 7 } });
expect(result).to.eql({ foo: {} });
});
it("freezes the result", () => {
expect(Object.isFrozen(omit({}, ["a"]))).to.be.true;
});
it("doesn't change the obj if nothing is omitted", () => {
const orig = { a: 1 };
const result = omit(["b"])(orig);
expect(result).to.be.equal(orig);
});
//# sourceMappingURL=omit.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"omit.test.js","sourceRoot":"","sources":["../src/omit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,CAAC,MAAM,YAAY,CAAC;AAE3B,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACxB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACtD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}

4
esm/omitBy.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { omitBy as _omitBy } from "remeda";
declare const _default: typeof _omitBy;
export default _default;
//# sourceMappingURL=omitBy.d.ts.map

1
esm/omitBy.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"omitBy.d.ts","sourceRoot":"","sources":["../src/omitBy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;wBAYZ,OAAO,OAAO;AAA7C,wBAA8C"}

10
esm/omitBy.js Normal file
View File

@ -0,0 +1,10 @@
import { omitBy as _omitBy } from "remeda";
import { buildPredicate } from "./predicate.js";
import wrap from "./wrap.js";
const sizeOf = (obj) => Object.keys(obj).length;
function omitBy(dataIn, predicate) {
const result = _omitBy(dataIn, buildPredicate(predicate));
return sizeOf(result) === sizeOf(dataIn) ? dataIn : result;
}
export default wrap(omitBy);
//# sourceMappingURL=omitBy.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"omitBy.js","sourceRoot":"","sources":["../src/omitBy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAEhD,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,eAAe,IAAI,CAAC,MAAM,CAAmB,CAAC"}

2
esm/omitBy.test.d.ts vendored Normal file
View File

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

1
esm/omitBy.test.d.ts.map Normal file
View File

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

17
esm/omitBy.test.js Normal file
View File

@ -0,0 +1,17 @@
import { expect, it } from "vitest";
import u from "./index.js";
import omitBy from "./omitBy.js";
it("can omitBy with a function", () => {
const predicate = (value, key) => value === 7 && key === "bar";
const result = u({ foo: u.omitBy(predicate) })({ foo: { bar: 7, baz: "a" } });
expect(result).to.eql({ foo: { baz: "a" } });
});
it("freezes the result", () => {
expect(Object.isFrozen(u.omitBy("a")({}))).to.be.true;
});
it("doesn't change the obj if nothing is omitted", () => {
const orig = { a: 1 };
const result = omitBy(() => false)(orig);
expect(result).to.be.equal(orig);
});
//# sourceMappingURL=omitBy.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"omitBy.test.js","sourceRoot":"","sources":["../src/omitBy.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAY,MAAM,QAAQ,CAAC;AAC9C,OAAO,CAAC,MAAM,YAAY,CAAC;AAC3B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACpC,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,KAAK,CAAC;IAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAE9E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACtD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}

7
esm/pick.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
export interface UPick {
<S extends string | number | symbol>(keys: S[]): <O>(dataIn: O) => Pick<O, S & keyof O>;
<S extends string | number | symbol, O>(dataIn: O, keys: S[]): Pick<O, S & keyof O>;
}
declare const _default: UPick;
export default _default;
//# sourceMappingURL=pick.d.ts.map

1
esm/pick.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../src/pick.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,KAAK;IACpB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EACjC,IAAI,EAAE,CAAC,EAAE,GACR,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EACpC,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;CACzB;wBAO4B,KAAK;AAAlC,wBAAmC"}

9
esm/pick.js Normal file
View File

@ -0,0 +1,9 @@
import { pick as _pick } from "remeda";
import wrap from "./wrap.js";
const sizeOf = (obj) => Object.keys(obj).length;
function pick(dataIn, keys) {
const result = _pick(dataIn, keys);
return sizeOf(result) === sizeOf(dataIn) ? dataIn : result;
}
export default wrap(pick);
//# sourceMappingURL=pick.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"pick.js","sourceRoot":"","sources":["../src/pick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAYhD,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI;IACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,eAAe,IAAI,CAAC,IAAI,CAAU,CAAC"}

2
esm/pick.test.d.ts vendored Normal file
View File

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

1
esm/pick.test.d.ts.map Normal file
View File

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

19
esm/pick.test.js Normal file
View File

@ -0,0 +1,19 @@
import { expect, it } from "vitest";
import pick from "./pick.js";
import u from "./index.js";
it("can pick a key", () => {
const pickBar = pick(["bar"]);
const result = u({ foo: pickBar })({
foo: { bar: 7, baz: 8 },
});
expect(result).to.eql({ foo: { bar: 7 } });
});
it("freezes the result", () => {
expect(Object.isFrozen(pick({ a: 1 }, ["a"]))).to.be.true;
});
it("doesn't change the obj if nothing is modified", () => {
const orig = { a: 1 };
const result = pick(["a"])(orig);
expect(result).to.be.equal(orig);
});
//# sourceMappingURL=pick.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"pick.test.js","sourceRoot":"","sources":["../src/pick.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,CAAC,MAAM,YAAY,CAAC;AAE3B,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,KAAK,CAAQ,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACjC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KACxB,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACvD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}

4
esm/pickBy.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { pickBy as _pick } from "remeda";
declare const _default: typeof _pick;
export default _default;
//# sourceMappingURL=pickBy.d.ts.map

1
esm/pickBy.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"pickBy.d.ts","sourceRoot":"","sources":["../src/pickBy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC;wBAYV,OAAO,KAAK;AAA3C,wBAA4C"}

10
esm/pickBy.js Normal file
View File

@ -0,0 +1,10 @@
import { pickBy as _pick } from "remeda";
import { buildPredicate } from "./predicate.js";
import wrap from "./wrap.js";
const sizeOf = (obj) => Object.keys(obj).length;
function pickBy(dataIn, predicate) {
const result = _pick(dataIn, buildPredicate(predicate));
return sizeOf(result) === sizeOf(dataIn) ? dataIn : result;
}
export default wrap(pickBy);
//# sourceMappingURL=pickBy.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"pickBy.js","sourceRoot":"","sources":["../src/pickBy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAEhD,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,eAAe,IAAI,CAAC,MAAM,CAAiB,CAAC"}

2
esm/pickBy.test.d.ts vendored Normal file
View File

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

1
esm/pickBy.test.d.ts.map Normal file
View File

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

18
esm/pickBy.test.js Normal file
View File

@ -0,0 +1,18 @@
import { expect, it } from "vitest";
import pickBy from "./pickBy.js";
import u from "./index.js";
it("can pick a key", () => {
const result = u({ foo: pickBy((v, k) => k === "bar") })({
foo: { bar: 7, baz: 8 },
});
expect(result).to.eql({ foo: { bar: 7 } });
});
it("freezes the result", () => {
expect(Object.isFrozen(pickBy({}, () => true))).to.be.true;
});
it("doesn't change the obj if nothing is modified", () => {
const orig = { a: 1 };
const result = pickBy(() => true)(orig);
expect(result).to.be.equal(orig);
});
//# sourceMappingURL=pickBy.test.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"pickBy.test.js","sourceRoot":"","sources":["../src/pickBy.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,CAAC,MAAM,YAAY,CAAC;AAE3B,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACxB,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KACxB,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACvD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}

3
esm/predicate.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
export type Predicate = ((source: any) => boolean) | boolean | Record<string, any>;
export declare function buildPredicate(predicate: any): any;
//# sourceMappingURL=predicate.d.ts.map

1
esm/predicate.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"predicate.d.ts","sourceRoot":"","sources":["../src/predicate.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GACjB,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAC1B,OAAO,GACP,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB,wBAAgB,cAAc,CAAC,SAAS,KAAA,OAIvC"}

9
esm/predicate.js Normal file
View File

@ -0,0 +1,9 @@
import matches from "./matches.js";
export function buildPredicate(predicate) {
if (typeof predicate === "function")
return predicate;
if (typeof predicate === "object")
return matches(predicate);
return () => !!predicate;
}
//# sourceMappingURL=predicate.js.map

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

@ -0,0 +1 @@
{"version":3,"file":"predicate.js","sourceRoot":"","sources":["../src/predicate.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAOnC,MAAM,UAAU,cAAc,CAAC,SAAS;IACtC,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3B,CAAC"}

4
esm/reject.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import { filter } from "remeda";
declare const _default: typeof filter;
export default _default;
//# sourceMappingURL=reject.d.ts.map

1
esm/reject.d.ts.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"reject.d.ts","sourceRoot":"","sources":["../src/reject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;wBAaD,OAAO,MAAM;AAA5C,wBAA6C"}

11
esm/reject.js Normal file
View File

@ -0,0 +1,11 @@
import { filter } from "remeda";
import { buildPredicate } from "./predicate.js";
import wrap from "./wrap.js";
const sizeOf = (obj) => obj.length;
function reject(dataIn, predicate) {
const pred = buildPredicate(predicate);
const result = filter(dataIn, (...args) => !pred(...args));
return sizeOf(result) === sizeOf(dataIn) ? dataIn : result;
}
export default wrap(reject);
//# sourceMappingURL=reject.js.map

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