@legendapp/state 0.14.2 → 0.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -0
- package/package.json +1 -1
- package/persist.js +8 -7
- package/persist.js.map +1 -1
- package/persist.mjs +8 -7
- package/persist.mjs.map +1 -1
- package/src/persist/persistHelpers.d.ts +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Legend-State
|
|
2
|
+
|
|
3
|
+
Legend-State is a super fast and powerful state manager for JavaScript apps with two primary goals:
|
|
4
|
+
|
|
5
|
+
### 1. <span className="text-xl">🦄</span> As easy as possible to use
|
|
6
|
+
|
|
7
|
+
There is no boilerplate and there are no actions, reducers, selectors, dispatchers, sagas, thunks, or epics. Observables are just normal objects that you can listen to for changes.
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
// Create an observable object
|
|
11
|
+
const state = observable({ settings: { theme: 'dark' } })
|
|
12
|
+
|
|
13
|
+
// Observables work like any other object
|
|
14
|
+
state.settings.theme === 'dark' // true
|
|
15
|
+
|
|
16
|
+
// Listen anywhere for changes
|
|
17
|
+
state.settings.theme.onChange((theme) => { ... })
|
|
18
|
+
|
|
19
|
+
// observer HOC automatically re-renders when state changes
|
|
20
|
+
const Component = observer(() => {
|
|
21
|
+
return <div>Theme: {state.settings.theme}</div>
|
|
22
|
+
})
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 2. <span className="text-xl">⚡️</span> The fastest React state library
|
|
26
|
+
|
|
27
|
+
Legend-State beats every other state library on just about every metric and is so optimized for arrays that it even beats vanilla JS on the swap benchmark. At only `3kb` and with the massive reduction in boilerplate code, you'll have big savings in file size too.
|
|
28
|
+
|
|
29
|
+
<p>
|
|
30
|
+
<img src="https://www.legendapp.com/img/dev/state/times.png" />
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
See [the documentation](https://www.legendapp.com/dev/state) for more details.
|
|
34
|
+
|
|
35
|
+
## Install
|
|
36
|
+
|
|
37
|
+
`npm install @legendapp/state` or `yarn add @legendapp/state`
|
|
38
|
+
|
|
39
|
+
## Example
|
|
40
|
+
|
|
41
|
+
```jsx
|
|
42
|
+
// Create an observable object
|
|
43
|
+
const state = observable({ settings: { theme: 'dark' } })
|
|
44
|
+
|
|
45
|
+
// Observables work like any other object
|
|
46
|
+
state.settings.theme === 'dark' // true
|
|
47
|
+
|
|
48
|
+
// Listen anywhere for changes
|
|
49
|
+
state.settings.theme.onChange((theme) => { ... })
|
|
50
|
+
|
|
51
|
+
// Modify with simple set functions
|
|
52
|
+
state.settings.theme.set('light')
|
|
53
|
+
|
|
54
|
+
// Automatically persist state
|
|
55
|
+
persistObservable(state, { local: 'exampleState' })
|
|
56
|
+
|
|
57
|
+
// Components re-render only when accessed observables change
|
|
58
|
+
const Component = observer(function Component() {
|
|
59
|
+
const toggle = () => {
|
|
60
|
+
state.settings.theme.set(theme => theme === 'dark' ? 'light' : 'dark')
|
|
61
|
+
}
|
|
62
|
+
return (
|
|
63
|
+
<div>
|
|
64
|
+
<div>Theme: {state.settings.theme}</div>
|
|
65
|
+
<Button onClick={toggle}>
|
|
66
|
+
Toggle theme
|
|
67
|
+
</Button>
|
|
68
|
+
</div>
|
|
69
|
+
)
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Highlights
|
|
74
|
+
|
|
75
|
+
- ✨ Super easy to use - observables are normal objects
|
|
76
|
+
- ✨ No boilerplate
|
|
77
|
+
- ✨ Safe from 🔫 footguns
|
|
78
|
+
- ✨ Designed for maximum performance and scalability
|
|
79
|
+
- ✨ React components re-render only on changes
|
|
80
|
+
- ✨ Very strongly typed with TypeScript
|
|
81
|
+
- ✨ Persistence plugins for automatically saving/loading from storage
|
|
82
|
+
- ✨ State can be global or within components
|
|
83
|
+
|
|
84
|
+
[Read more](https://www.legendapp.com/dev/state/why/) about why Legend-State might be right for you.
|
|
85
|
+
|
|
86
|
+
## Documentation
|
|
87
|
+
|
|
88
|
+
See [the documentation site](https://www.legendapp.com/dev/state/).
|
|
89
|
+
|
|
90
|
+
## Todo
|
|
91
|
+
|
|
92
|
+
- [ ] Remote persistence to Firebase
|
|
93
|
+
- [ ] Conflict resolution for remote persistence
|
|
94
|
+
|
|
95
|
+
## 👩⚖️ License
|
|
96
|
+
|
|
97
|
+
[MIT](LICENSE)
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
Legend-State is created and maintained by [Jay Meistrich](https://github.com/jmeistrich) with [Legend](https://www.legendapp.com) and [Bravely](https://www.bravely.io).
|
|
102
|
+
|
|
103
|
+
<p>
|
|
104
|
+
<a href="https://www.legendapp.com"><img src="https://www.legendapp.com/img/LogoTextOnWhite.png" height="56" alt="Legend" /></a>
|
|
105
|
+
<span> </span>
|
|
106
|
+
<a href="https://www.bravely.io"><img src="https://www.legendapp.com/img/bravely-logo.png" height="56" alt="Bravely" /></a>
|
|
107
|
+
</p>
|
package/package.json
CHANGED
package/persist.js
CHANGED
|
@@ -43,18 +43,19 @@ class ObservablePersistLocalStorage {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
function removeNullUndefined(
|
|
47
|
-
if (
|
|
46
|
+
function removeNullUndefined(val) {
|
|
47
|
+
if (val === undefined)
|
|
48
48
|
return null;
|
|
49
|
-
Object.keys(
|
|
50
|
-
const v =
|
|
49
|
+
Object.keys(val).forEach((key) => {
|
|
50
|
+
const v = val[key];
|
|
51
51
|
if (v === null || v === undefined) {
|
|
52
|
-
delete
|
|
52
|
+
delete val[key];
|
|
53
53
|
}
|
|
54
54
|
else if (state.isObject(v)) {
|
|
55
55
|
removeNullUndefined(v);
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
|
+
return val;
|
|
58
59
|
}
|
|
59
60
|
function replaceKeyInObject(obj, keySource, keyTarget, clone) {
|
|
60
61
|
if (state.isObject(obj)) {
|
|
@@ -156,8 +157,8 @@ async function loadLocal(obs, persistOptions, obsState, localState) {
|
|
|
156
157
|
state.mergeIntoObservable(obs, value);
|
|
157
158
|
}
|
|
158
159
|
obsState.get().clearLocal = () => persistenceLocal.delete(local);
|
|
159
|
-
obsState.set('isLoadedLocal', true);
|
|
160
160
|
}
|
|
161
|
+
obsState.isLoadedLocal = true;
|
|
161
162
|
}
|
|
162
163
|
function persistObservable(obs, persistOptions) {
|
|
163
164
|
const obsState = state.observable({
|
|
@@ -180,7 +181,7 @@ function persistObservable(obs, persistOptions) {
|
|
|
180
181
|
localState.persistenceRemote = mapPersistences.get(remotePersistence);
|
|
181
182
|
obsState.isLoadedLocal.onTrue(() => {
|
|
182
183
|
localState.persistenceRemote.listen(obs, persistOptions, () => {
|
|
183
|
-
obsState.
|
|
184
|
+
obsState.isLoadedRemote = true;
|
|
184
185
|
}, onChangeRemote.bind(this, localState));
|
|
185
186
|
});
|
|
186
187
|
}
|
package/persist.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.js","sources":["../../src/persist/configureObservablePersistence.ts","../../src/persist/local-storage.ts","../../src/persist/persistHelpers.ts","../../src/persist/persistObservable.ts"],"sourcesContent":[null,null,null,null],"names":["isObject","symbolDateModified","mergeIntoObservable","observableBatcher","observable"],"mappings":";;;;;;AASO,MAAM,8BAA8B,GAAW,GAAG;AAEnD,SAAU,8BAA8B,CAAC,OAAgB,EAAA;AAC3D,IAAA,MAAM,CAAC,MAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;AAC3D;;MCXa,6BAA6B,CAAA;AAA1C,IAAA,WAAA,GAAA;QACY,IAAI,CAAA,IAAA,GAAwB,EAAE,CAAC;KA4B1C;AA1BU,IAAA,GAAG,CAAC,EAAU,EAAA;QACjB,IAAI,OAAO,YAAY,KAAK,WAAW;AAAE,YAAA,OAAO,SAAS,CAAC;QAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;YAC7B,IAAI;gBACA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC,gBAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AAChD,aAAA;YAAC,OAAM,EAAA,EAAA;AACJ,gBAAA,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,EAAE,CAAC,CAAC;AACtF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB;AACM,IAAA,MAAM,GAAG,CAAC,EAAU,EAAE,KAAU,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACM,MAAM,MAAM,CAAC,EAAU,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,QAAA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KAC/B;AACO,IAAA,IAAI,CAAC,EAAU,EAAA;QACnB,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAEhD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,QAAA,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/C;AACJ;;AC5BK,SAAU,mBAAmB,CAAgC,
|
|
1
|
+
{"version":3,"file":"persist.js","sources":["../../src/persist/configureObservablePersistence.ts","../../src/persist/local-storage.ts","../../src/persist/persistHelpers.ts","../../src/persist/persistObservable.ts"],"sourcesContent":[null,null,null,null],"names":["isObject","symbolDateModified","mergeIntoObservable","observableBatcher","observable"],"mappings":"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"}
|
package/persist.mjs
CHANGED
|
@@ -39,18 +39,19 @@ class ObservablePersistLocalStorage {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
function removeNullUndefined(
|
|
43
|
-
if (
|
|
42
|
+
function removeNullUndefined(val) {
|
|
43
|
+
if (val === undefined)
|
|
44
44
|
return null;
|
|
45
|
-
Object.keys(
|
|
46
|
-
const v =
|
|
45
|
+
Object.keys(val).forEach((key) => {
|
|
46
|
+
const v = val[key];
|
|
47
47
|
if (v === null || v === undefined) {
|
|
48
|
-
delete
|
|
48
|
+
delete val[key];
|
|
49
49
|
}
|
|
50
50
|
else if (isObject(v)) {
|
|
51
51
|
removeNullUndefined(v);
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
+
return val;
|
|
54
55
|
}
|
|
55
56
|
function replaceKeyInObject(obj, keySource, keyTarget, clone) {
|
|
56
57
|
if (isObject(obj)) {
|
|
@@ -152,8 +153,8 @@ async function loadLocal(obs, persistOptions, obsState, localState) {
|
|
|
152
153
|
mergeIntoObservable(obs, value);
|
|
153
154
|
}
|
|
154
155
|
obsState.get().clearLocal = () => persistenceLocal.delete(local);
|
|
155
|
-
obsState.set('isLoadedLocal', true);
|
|
156
156
|
}
|
|
157
|
+
obsState.isLoadedLocal = true;
|
|
157
158
|
}
|
|
158
159
|
function persistObservable(obs, persistOptions) {
|
|
159
160
|
const obsState = observable({
|
|
@@ -176,7 +177,7 @@ function persistObservable(obs, persistOptions) {
|
|
|
176
177
|
localState.persistenceRemote = mapPersistences.get(remotePersistence);
|
|
177
178
|
obsState.isLoadedLocal.onTrue(() => {
|
|
178
179
|
localState.persistenceRemote.listen(obs, persistOptions, () => {
|
|
179
|
-
obsState.
|
|
180
|
+
obsState.isLoadedRemote = true;
|
|
180
181
|
}, onChangeRemote.bind(this, localState));
|
|
181
182
|
});
|
|
182
183
|
}
|
package/persist.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.mjs","sources":["../../src/persist/configureObservablePersistence.ts","../../src/persist/local-storage.ts","../../src/persist/persistHelpers.ts","../../src/persist/persistObservable.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;AASO,MAAM,8BAA8B,GAAW,GAAG;AAEnD,SAAU,8BAA8B,CAAC,OAAgB,EAAA;AAC3D,IAAA,MAAM,CAAC,MAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;AAC3D;;MCXa,6BAA6B,CAAA;AAA1C,IAAA,WAAA,GAAA;QACY,IAAI,CAAA,IAAA,GAAwB,EAAE,CAAC;KA4B1C;AA1BU,IAAA,GAAG,CAAC,EAAU,EAAA;QACjB,IAAI,OAAO,YAAY,KAAK,WAAW;AAAE,YAAA,OAAO,SAAS,CAAC;QAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;YAC7B,IAAI;gBACA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC,gBAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AAChD,aAAA;YAAC,OAAM,EAAA,EAAA;AACJ,gBAAA,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,EAAE,CAAC,CAAC;AACtF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB;AACM,IAAA,MAAM,GAAG,CAAC,EAAU,EAAE,KAAU,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACM,MAAM,MAAM,CAAC,EAAU,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,QAAA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KAC/B;AACO,IAAA,IAAI,CAAC,EAAU,EAAA;QACnB,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAEhD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,QAAA,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/C;AACJ;;AC5BK,SAAU,mBAAmB,CAAgC,
|
|
1
|
+
{"version":3,"file":"persist.mjs","sources":["../../src/persist/configureObservablePersistence.ts","../../src/persist/local-storage.ts","../../src/persist/persistHelpers.ts","../../src/persist/persistObservable.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;AASO,MAAM,8BAA8B,GAAW,GAAG;AAEnD,SAAU,8BAA8B,CAAC,OAAgB,EAAA;AAC3D,IAAA,MAAM,CAAC,MAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;AAC3D;;MCXa,6BAA6B,CAAA;AAA1C,IAAA,WAAA,GAAA;QACY,IAAI,CAAA,IAAA,GAAwB,EAAE,CAAC;KA4B1C;AA1BU,IAAA,GAAG,CAAC,EAAU,EAAA;QACjB,IAAI,OAAO,YAAY,KAAK,WAAW;AAAE,YAAA,OAAO,SAAS,CAAC;QAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;YAC7B,IAAI;gBACA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC,gBAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AAChD,aAAA;YAAC,OAAM,EAAA,EAAA;AACJ,gBAAA,OAAO,CAAC,KAAK,CAAC,+DAA+D,EAAE,EAAE,CAAC,CAAC;AACtF,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB;AACM,IAAA,MAAM,GAAG,CAAC,EAAU,EAAE,KAAU,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACM,MAAM,MAAM,CAAC,EAAU,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,QAAA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KAC/B;AACO,IAAA,IAAI,CAAC,EAAU,EAAA;QACnB,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAEhD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,QAAA,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/C;AACJ;;AC5BK,SAAU,mBAAmB,CAAgC,GAAM,EAAA;IACrE,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,IAAI,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC7B,QAAA,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AAC/B,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;YACpB,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;AACL,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAEK,SAAU,kBAAkB,CAAC,GAAW,EAAE,SAAc,EAAE,SAAc,EAAE,KAAc,EAAA;AAC1F,IAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;QACf,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC;AAChC,QAAA,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE;YAChB,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AACnC,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,SAAA;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC7B,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC3E,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;AACjB,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,GAAG,CAAC;AACd,KAAA;AACL,CAAC;AAEK,SAAU,kBAAkB,CAAC,eAAuB,EAAA;AACtD,IAAA,OAAO,eAAe,IAAI,8BAA8B,CAAC,eAAe,IAAI,GAAG,CAAC;AACpF;;ACvBa,MAAA,eAAe,GAAsB,IAAI,OAAO,GAAG;AAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;AAC1C,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,0BAA0B,GAC5B,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS;AACrE,MAAE,6BAA6B;MAC7B,SAAS,CAAC;AAQpB,eAAe,WAAW,CACtB,QAAkD,EAClD,UAAsB,EACtB,cAAiC,EACjC,KAAQ,EACR,WAAoB,EACpB,IAAyB,EACzB,WAAgB,EAChB,UAAe,EAAA;IAEf,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,GAAG,UAAU,CAAC;AAElF,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;AACnC,IAAA,MAAM,UAAU,GAAG,CAAC,qBAAqB,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtG,IAAA,IAAI,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AACzB,YAAA,OAAO,CAAC,KAAK,CACT,yFAAyF,EACzF,KAAK,CACR,CAAC;YACF,OAAO;AACV,SAAA;;;QAID,MAAM,UAAU,GAAG,UAAU;AACzB,cAAE,kBAAkB,CAAC,KAA0B,EAAE,kBAAkB,EAAE,eAAe,YAAY,IAAI,CAAC;cACnG,KAAK,CAAC;;AAGZ,QAAA,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3C,KAAA;AAED,IAAA,IAAI,UAAU,EAAE;;;AAGZ,QAAA,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAC9G,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,KAAK,EAAE;gBACP,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;gBAExC,MAAM,QAAQ,GAAG,kBAAkB,CAC/B,mBAAmB,CAAC,KAAe,CAAC,EACpC,kBAAkB,EAClB,eAAe;0BACL,KAAK,CAClB,CAAC;AACF,gBAAA,MAAM,MAAM,GAAG,GAAG,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAEnE,gBAAA,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;AACJ,KAAA;AACL,CAAC;AAED,SAAS,cAAc,CAAC,UAAsB,EAAE,EAAc,EAAA;;AAE1D,IAAA,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAExC,IAAA,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE5B,IAAA,UAAU,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC7C,CAAC;AAED,eAAe,SAAS,CACpB,GAAuB,EACvB,cAA8B,EAC9B,QAAkD,EAClD,UAAsB,EAAA;AAEtB,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IACzC,MAAM,gBAAgB,GAClB,cAAc,CAAC,YAAY,IAAI,8BAA8B,CAAC,YAAY,IAAI,0BAA0B,CAAC;AAE7G,IAAA,IAAI,KAAK,EAAE;QACP,IAAI,CAAC,gBAAgB,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAC1D,SAAA;;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YACxC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACjE,SAAA;AACD,QAAA,MAAM,gBAAgB,IAAI,UAAU,CAAC,gBAAgB,GAAG,eAAe,CAAC,GAAG,CACvE,gBAAgB,CACO,CAAC,CAAC;;QAG7B,IAAI,gBAAgB,CAAC,IAAI,EAAE;AACvB,YAAA,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;;QAGD,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;AAGxC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,YAAA,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACtB,gBAAA,OAAO,CAAC,KAAK,CAAC,2EAA2E,KAAK,CAAA,CAAE,CAAC,CAAC;AACrG,aAAA;AACD,YAAA,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9B,SAAA;;AAGD,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACvC,YAAA,IAAI,MAAM,EAAE;gBACR,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,YAAY,KAAK,CAAC,CAAC;AACnF,aAAA;AACD,YAAA,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,KAAA;AACD,IAAA,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,CAAC;AAEe,SAAA,iBAAiB,CAAI,GAA0B,EAAE,cAAiC,EAAA;IAC9F,MAAM,QAAQ,GAAG,UAAU,CAAyB;AAChD,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,UAAU,EAAE,SAAS;AACxB,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;AAClC,IAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,aAAa,KAAI,8BAA8B,KAA9B,IAAA,IAAA,8BAA8B,KAA9B,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,8BAA8B,CAAE,aAAa,CAAA,CAAC;AACxG,IAAA,MAAM,UAAU,GAAe,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAErD,IAAA,IAAI,MAAM,EAAE;QACR,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC3D,SAAA;;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YACzC,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;AACnE,SAAA;QACD,UAAU,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAA4B,CAAC;AAEjG,QAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,MAAK;YAC/B,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAC/B,GAAG,EACH,cAAc,EACd,MAAK;AACD,gBAAA,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC;aAClC,EACD,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CACxC,CAAC;AACN,SAAC,CAAC,CAAC;AACN,KAAA;AAED,IAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;AAE3E,IAAA,OAAO,QAAQ,CAAC;AACpB;;;;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function removeNullUndefined<T extends Record<string, any>>(
|
|
1
|
+
export declare function removeNullUndefined<T extends Record<string, any>>(val: T): T;
|
|
2
2
|
export declare function replaceKeyInObject(obj: object, keySource: any, keyTarget: any, clone: boolean): Record<any, any>;
|
|
3
3
|
export declare function getDateModifiedKey(dateModifiedKey: string): string;
|