Compare commits
60 Commits
Author | SHA1 | Date | |
---|---|---|---|
d58924a333 | |||
629da53bef | |||
612794512b | |||
223154b516 | |||
4fdc083e3c | |||
fca80060d6 | |||
90831844e2 | |||
0dd410b2c2 | |||
8951a80638 | |||
7f0b1477e4 | |||
fae566b200 | |||
c7281022df | |||
2bb0372bdf | |||
a05df2a683 | |||
7173ae952c | |||
05669ce64d | |||
1c695ab8e1 | |||
068f21f3ca | |||
2fc662f4a1 | |||
e8c9bc5201 | |||
aeb46565a9 | |||
190bb7b80a | |||
c6723868d9 | |||
a9ee54cb06 | |||
c68f80dfba | |||
f8410ca2fa | |||
5340575ec7 | |||
04e6304334 | |||
4720f1b4eb | |||
142e9ca230 | |||
106edd6637 | |||
c40e7d2b30 | |||
609a9e6a6c | |||
96e98cecfb | |||
428fa15fe4 | |||
c66ec94aaf | |||
b70dccc43f | |||
b689efd6f4 | |||
f920fa15ff | |||
6dde03025c | |||
4638056b62 | |||
87f026a21c | |||
cf78da1d70 | |||
bfd8b0c2ac | |||
a5fc19a781 | |||
d86fa7e64a | |||
d7caed51be | |||
dc520d8430 | |||
e0cb5ae655 | |||
6c2305db71 | |||
984c463657 | |||
1701283e11 | |||
6aca8ed3e2 | |||
2f919030a0 | |||
bc50f97b4f | |||
97865c354b | |||
39f4227989 | |||
04f22fb927 | |||
2c3e73c48a | |||
e988146cec |
11
.changeset/config.json
Normal file
11
.changeset/config.json
Normal 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": []
|
||||
}
|
5
.changeset/neat-actors-tease.md
Normal file
5
.changeset/neat-actors-tease.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@yanick/updeep": minor
|
||||
---
|
||||
|
||||
rename module as @yanick/updeep
|
5
.changeset/perfect-ads-teach.md
Normal file
5
.changeset/perfect-ads-teach.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@yanick/updeep": minor
|
||||
---
|
||||
|
||||
update Remeda dependency
|
5
.changeset/shiny-pumpkins-grin.md
Normal file
5
.changeset/shiny-pumpkins-grin.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@yanick/updeep": patch
|
||||
---
|
||||
|
||||
upgrade all dependencies
|
@ -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
3
.gitignore
vendored
@ -1,6 +1,9 @@
|
||||
*remeda*.tgz
|
||||
node_modules
|
||||
coverage
|
||||
pnpm-lock.yaml
|
||||
tsconfig*.tsbuildinfo
|
||||
lib
|
||||
types
|
||||
.perl-version
|
||||
.task
|
||||
|
@ -2,3 +2,6 @@ package.json
|
||||
node_modules
|
||||
dist
|
||||
coverage
|
||||
contrib/add_change
|
||||
.prettierignore
|
||||
.npmignore
|
||||
|
155
CHANGELOG.md
155
CHANGELOG.md
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
Copyright (c) 2015 Substantial
|
||||
Copyright (c) Substantial, Yanick Champoux.
|
||||
|
||||
MIT License
|
||||
|
||||
|
673
README.md
673
README.md
@ -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/
|
||||
|
@ -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
14
contrib/add_change
Executable 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
1
esm/.npmignore
Normal file
@ -0,0 +1 @@
|
||||
*.test.*
|
@ -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
4
esm/filter.d.ts
vendored
Normal 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
1
esm/filter.d.ts.map
Normal 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
10
esm/filter.js
Normal 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
1
esm/filter.js.map
Normal 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
2
esm/filter.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=filter.test.d.ts.map
|
1
esm/filter.test.d.ts.map
Normal file
1
esm/filter.test.d.ts.map
Normal 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
18
esm/filter.test.js
Normal 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
1
esm/filter.test.js.map
Normal 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"}
|
@ -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"}
|
@ -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"}
|
@ -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);
|
||||
}
|
||||
|
@ -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"}
|
@ -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", () => {
|
||||
|
@ -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
2
esm/ifElse.d.ts
vendored
@ -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;
|
||||
|
@ -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"}
|
@ -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);
|
||||
}
|
||||
|
@ -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
41
esm/index.d.ts
vendored
@ -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
|
@ -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"}
|
30
esm/index.js
30
esm/index.js
@ -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;
|
||||
|
@ -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"}
|
@ -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"}
|
@ -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"}
|
@ -1 +1 @@
|
||||
{"version":3,"file":"is.test.js","sourceRoot":"","sources":["../src/is.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACxD,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;IACzD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC5D,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAChC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC1D,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACjC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAE1B,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC"}
|
||||
{"version":3,"file":"is.test.js","sourceRoot":"","sources":["../src/is.test.ts"],"names":[],"mappings":"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"}
|
2
esm/map.d.ts
vendored
2
esm/map.d.ts
vendored
@ -1,4 +1,4 @@
|
||||
interface Map {
|
||||
export interface Map {
|
||||
(object: any, iteratee: any): any;
|
||||
(iteratee: any): (object: any) => any;
|
||||
}
|
||||
|
@ -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"}
|
@ -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;
|
||||
|
@ -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"}
|
@ -1,46 +1,44 @@
|
||||
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", () => {
|
||||
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;
|
||||
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 +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
13
esm/mapIf.d.ts
vendored
Normal 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
1
esm/mapIf.d.ts.map
Normal 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
14
esm/mapIf.js
Normal 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
1
esm/mapIf.js.map
Normal 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
2
esm/mapIf.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=mapIf.test.d.ts.map
|
1
esm/mapIf.test.d.ts.map
Normal file
1
esm/mapIf.test.d.ts.map
Normal 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
20
esm/mapIf.test.js
Normal 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
1
esm/mapIf.test.js.map
Normal 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
7
esm/matches.d.ts
vendored
Normal 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
1
esm/matches.d.ts.map
Normal 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
11
esm/matches.js
Normal 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
1
esm/matches.js.map
Normal 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
2
esm/matches.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=matches.test.d.ts.map
|
1
esm/matches.test.d.ts.map
Normal file
1
esm/matches.test.d.ts.map
Normal 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
10
esm/matches.test.js
Normal 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
1
esm/matches.test.js.map
Normal 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
7
esm/omit.d.ts
vendored
Normal 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
1
esm/omit.d.ts.map
Normal 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
9
esm/omit.js
Normal 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
1
esm/omit.js.map
Normal 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
2
esm/omit.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=omit.test.d.ts.map
|
1
esm/omit.test.d.ts.map
Normal file
1
esm/omit.test.d.ts.map
Normal 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
16
esm/omit.test.js
Normal 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
1
esm/omit.test.js.map
Normal 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
4
esm/omitBy.d.ts
vendored
Normal 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
1
esm/omitBy.d.ts.map
Normal 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
10
esm/omitBy.js
Normal 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
1
esm/omitBy.js.map
Normal 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
2
esm/omitBy.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=omitBy.test.d.ts.map
|
1
esm/omitBy.test.d.ts.map
Normal file
1
esm/omitBy.test.d.ts.map
Normal 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
17
esm/omitBy.test.js
Normal 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
1
esm/omitBy.test.js.map
Normal 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
7
esm/pick.d.ts
vendored
Normal 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
1
esm/pick.d.ts.map
Normal 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
9
esm/pick.js
Normal 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
1
esm/pick.js.map
Normal 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
2
esm/pick.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=pick.test.d.ts.map
|
1
esm/pick.test.d.ts.map
Normal file
1
esm/pick.test.d.ts.map
Normal 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
19
esm/pick.test.js
Normal 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
1
esm/pick.test.js.map
Normal 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
4
esm/pickBy.d.ts
vendored
Normal 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
1
esm/pickBy.d.ts.map
Normal 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
10
esm/pickBy.js
Normal 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
1
esm/pickBy.js.map
Normal 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
2
esm/pickBy.test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=pickBy.test.d.ts.map
|
1
esm/pickBy.test.d.ts.map
Normal file
1
esm/pickBy.test.d.ts.map
Normal 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
18
esm/pickBy.test.js
Normal 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
1
esm/pickBy.test.js.map
Normal 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
3
esm/predicate.d.ts
vendored
Normal 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
1
esm/predicate.d.ts.map
Normal 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
9
esm/predicate.js
Normal 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
1
esm/predicate.js.map
Normal 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
4
esm/reject.d.ts
vendored
Normal 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
1
esm/reject.d.ts.map
Normal 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
11
esm/reject.js
Normal 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
Loading…
Reference in New Issue
Block a user