json-storage-formatter 2.0.9 โ 3.0.1
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 +213 -84
- package/bundle.js +1 -1
- package/formatFromStore.d.ts +2 -5
- package/formatFromStore.js +1 -1
- package/formatToStore.d.ts +27 -12
- package/formatToStore.js +1 -1
- package/index.d.ts +11 -12
- package/isBoolean.d.ts +2 -1
- package/isBoolean.js +1 -1
- package/isDate.d.ts +2 -1
- package/isDate.js +1 -1
- package/isFunction.d.ts +2 -1
- package/isFunction.js +1 -1
- package/isNil.d.ts +2 -1
- package/isNil.js +1 -1
- package/isNumber.d.ts +2 -1
- package/isNumber.js +1 -1
- package/isPrimitive.d.ts +2 -1
- package/isPrimitive.js +1 -1
- package/isRegex.d.ts +2 -1
- package/isRegex.js +1 -1
- package/isString.d.ts +2 -1
- package/isString.js +1 -1
- package/package.json +25 -12
- package/types.d.ts +4 -4
- package/webpack.config.js +15 -19
- package/clone.d.ts +0 -12
- package/clone.js +0 -1
package/README.md
CHANGED
|
@@ -1,131 +1,260 @@
|
|
|
1
|
-
|
|
1
|
+
const README = `
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# json-storage-formatter ๐
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+

|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
A **lightweight solution** to store complex JavaScript values as JSON โ **without losing their types**. ๐
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
---
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## ๐ค The Problem
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
When working with tools like **localStorage**, **sessionStorage**, **AsyncStorage**, or even databases like **Redis** or **PostgreSQL (JSON columns)**,
|
|
14
|
+
we often need to store application state or configuration objects as strings using `JSON.stringify`.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
But thereโs a catch:
|
|
17
|
+
`JSON.stringify` has no idea what to do with values like `Date`, `Map`, or `Set`... It just flattens them into empty objects or strings, and when you parse them back with `JSON.parse`, itโs too late.
|
|
18
|
+
|
|
19
|
+
Letโs see an example.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### ๐ Example: Losing Real Data
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
const userProfile = {
|
|
27
|
+
id: 42,
|
|
28
|
+
createdAt: new Date('2024-10-01T10:30:00Z'),
|
|
29
|
+
preferences: new Map([
|
|
30
|
+
['theme', 'dark'],
|
|
31
|
+
['languages', new Set(['en', 'es'])],
|
|
32
|
+
]),
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
console.log(JSON.stringify(userProfile, null, 2));
|
|
36
|
+
```
|
|
17
37
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
38
|
+
**Console Output:**
|
|
39
|
+
|
|
40
|
+
```json
|
|
21
41
|
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
'key1',
|
|
26
|
-
{
|
|
27
|
-
$t: 'date',
|
|
28
|
-
$v: '2021-05-08T13:30:00.000Z',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
[
|
|
32
|
-
'key2',
|
|
33
|
-
{
|
|
34
|
-
$t: 'set',
|
|
35
|
-
$v: [
|
|
36
|
-
{
|
|
37
|
-
$t: 'map',
|
|
38
|
-
$v: [
|
|
39
|
-
[
|
|
40
|
-
'key1',
|
|
41
|
-
{
|
|
42
|
-
$t: 'date',
|
|
43
|
-
$v: '2021-05-08T13:30:00.000Z',
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
],
|
|
42
|
+
"id": 42,
|
|
43
|
+
"createdAt": "2024-10-01T10:30:00.000Z",
|
|
44
|
+
"preferences": {}
|
|
52
45
|
}
|
|
53
|
-
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
What happened?
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
- The **Date** turned into a string.
|
|
51
|
+
- The **Map** disappeared.
|
|
52
|
+
- The **Set** vanished inside the Map.
|
|
57
53
|
|
|
58
|
-
|
|
54
|
+
If we try to restore it:
|
|
59
55
|
|
|
56
|
+
```ts
|
|
57
|
+
const parsed = JSON.parse(JSON.stringify(userProfile));
|
|
58
|
+
console.log(parsed.createdAt instanceof Date); // โ false
|
|
59
|
+
console.log(parsed.preferences instanceof Map); // โ false
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
When serializing JavaScript objects, we lose important value types โ
|
|
63
|
+
Dates, Sets, Maps, RegExps, and even nested structures.
|
|
64
|
+
This forces us to write endless **custom parsers and validators** to recover data
|
|
65
|
+
that could have been automatically restored.
|
|
63
66
|
|
|
64
|
-
|
|
67
|
+
---
|
|
65
68
|
|
|
66
|
-
|
|
67
|
-
const object = formatFromStore<Map<string, unknown>>(objectWithMetadata);
|
|
69
|
+
## ๐ก What json-storage-formatter Does
|
|
68
70
|
|
|
69
|
-
|
|
70
|
-
console.log(object);
|
|
71
|
+
Exposes **two simple functions**:
|
|
71
72
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
[
|
|
77
|
-
'key2',
|
|
78
|
-
new Set([new Map([['key1', new Date('2021-05-08T13:30:00.000Z')]])]),
|
|
79
|
-
],
|
|
80
|
-
]);
|
|
81
|
-
*/
|
|
82
|
-
```
|
|
73
|
+
1. `formatToStore(value)` โ safely prepares your data for storage returning the JSON string representation.
|
|
74
|
+
2. `formatFromStore(value)` โ restores it to the **exact original shape and types**.
|
|
75
|
+
|
|
76
|
+
As simple as that.
|
|
83
77
|
|
|
84
|
-
|
|
78
|
+
# Letโs see it a couple of examples
|
|
85
79
|
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## โ๏ธ Example: useDashboardConfig hook
|
|
83
|
+
|
|
84
|
+
Letโs create a hook that sync localStorage with react state:
|
|
88
85
|
|
|
89
86
|
```ts
|
|
90
|
-
|
|
87
|
+
import { formatToStore, formatFromStore } from 'json-storage-formatter';
|
|
88
|
+
|
|
89
|
+
type DashboardConfig = {
|
|
90
|
+
theme: 'light' | 'dark' | 'system';
|
|
91
|
+
widgets: Map<string, WidgetConfig>;
|
|
92
|
+
hiddenWidgets: Set<string>;
|
|
93
|
+
lastCustomizedAt: Date;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const useDashboardConfig = () => {
|
|
97
|
+
const [config, setConfig] = useState<DashboardConfig>(() => {
|
|
98
|
+
const json = localStorage.getItem('dashboard-config');
|
|
99
|
+
|
|
100
|
+
if (json) return formatFromStore<DashboardConfig>(json);
|
|
101
|
+
|
|
102
|
+
return getDefaultDashboardConfig();
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const saveConfig = (newConfig: DashboardConfig) => {
|
|
106
|
+
localStorage.setItem('dashboard-config', formatToStore(newConfig));
|
|
107
|
+
|
|
108
|
+
setConfig(newConfig);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
return { config, saveConfig };
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
// Even if the config contains Maps, Sets, or Dates, they will be preserved.
|
|
115
|
+
const example: DashboardConfig = {
|
|
116
|
+
theme: 'dark',
|
|
117
|
+
widgets: new Map([
|
|
118
|
+
['weather', { location: 'New York', units: 'metric' }],
|
|
119
|
+
['stocks', { symbols: ['AAPL', 'GOOGL'] }],
|
|
120
|
+
]),
|
|
121
|
+
hiddenWidgets: new Set(['news']),
|
|
122
|
+
lastCustomizedAt: new Date(),
|
|
123
|
+
};
|
|
91
124
|
```
|
|
92
125
|
|
|
93
|
-
|
|
126
|
+
---
|
|
94
127
|
|
|
95
|
-
|
|
128
|
+
## ๐ Example: Sync dashboard queries through URL (Dashboards / Reports)
|
|
96
129
|
|
|
97
|
-
|
|
98
|
-
|
|
130
|
+
This pattern is common in dashboards, where filters are shared via URL.
|
|
131
|
+
You can safely serialize complex filters (with Dates, Sets, Maps, etc.) and encode them for sharing.
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
import { formatToStore, formatFromStore } from 'json-storage-formatter';
|
|
135
|
+
|
|
136
|
+
type DashboardQuery = {
|
|
137
|
+
dateRange: { from: Date; to: Date };
|
|
138
|
+
selectedCategories: Set<string>;
|
|
139
|
+
additionalSettings: Map<string, unknown>;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const useUrlQuery = () => {
|
|
143
|
+
const [query, setQuery] = useState<DashboardQuery>(() => {
|
|
144
|
+
const params = new URLSearchParams(location.search);
|
|
145
|
+
const storedQuery = params.get('query');
|
|
146
|
+
|
|
147
|
+
if (storedQuery) {
|
|
148
|
+
// decode from base64 and restore types
|
|
149
|
+
return formatFromStore<DashboardQuery>(atob(storedQuery));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return getDefaultDashboardQuery();
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const updateQuery = (newQuery: DashboardQuery) => {
|
|
156
|
+
const encoded = btoa(formatToStore(newQuery));
|
|
157
|
+
|
|
158
|
+
// encode the json as base64 to make it URL-safe
|
|
159
|
+
window.history.replaceState(null, '', `${location.pathname}?query=${encoded}`);
|
|
160
|
+
|
|
161
|
+
setQuery(newQuery);
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
return { query, updateQuery };
|
|
165
|
+
};
|
|
99
166
|
```
|
|
100
167
|
|
|
101
|
-
|
|
168
|
+
The examples above are in react but the library is framework-agnostic and can be used anywhere in JavaScript or TypeScript projects.
|
|
102
169
|
|
|
103
|
-
|
|
170
|
+
## ๐งฉ Why Itโs Useful
|
|
104
171
|
|
|
105
|
-
|
|
106
|
-
|
|
172
|
+
This becomes incredibly powerful when your app needs to **sync complex state**
|
|
173
|
+
to a string-based storage layer โ like when syncing to **localStorage**, **Redis**, or **a shared dashboard URL**.
|
|
174
|
+
|
|
175
|
+
Instead of being limited by what JSON can handle,
|
|
176
|
+
you can now serialize **any structure** โ Maps, Sets, nested objects, or Dates โ
|
|
177
|
+
and restore it back without losing context or meaning.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## ๐ง How It Works
|
|
182
|
+
|
|
183
|
+
Under the hood, `formatToStore` adds small metadata markers to every special value.
|
|
184
|
+
Each piece of data gets a structure like this:
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"$t": "map",
|
|
189
|
+
"$v": [["key", { "$t": "date", "$v": "2024-10-01T10:30:00.000Z" }]]
|
|
190
|
+
}
|
|
107
191
|
```
|
|
108
192
|
|
|
109
|
-
|
|
193
|
+
The `$t` field stores the **type**, and `$v` holds the actual value.
|
|
194
|
+
When using `formatFromStore`, it reads that metadata and recreates your data structure
|
|
195
|
+
exactly as it was before โ even if itโs deeply nested.
|
|
110
196
|
|
|
111
|
-
|
|
197
|
+
Resulting on:
|
|
112
198
|
|
|
113
199
|
```ts
|
|
114
|
-
|
|
200
|
+
new Map([['key', new Date('2024-10-01T10:30:00.000Z')]]);
|
|
115
201
|
```
|
|
116
202
|
|
|
117
|
-
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## โ๏ธ API Reference
|
|
118
206
|
|
|
119
|
-
|
|
207
|
+
### ๐ฃ formatToStore
|
|
208
|
+
|
|
209
|
+
Converts any value into a JSON-safe structure with internal type metadata.
|
|
120
210
|
|
|
121
211
|
```ts
|
|
122
|
-
const
|
|
212
|
+
const objectWithMetadata = formatToStore(object);
|
|
123
213
|
```
|
|
124
214
|
|
|
125
|
-
|
|
215
|
+
### ๐ต formatFromStore<T>
|
|
126
216
|
|
|
127
|
-
|
|
217
|
+
Restores the serialized object back to its original types.
|
|
128
218
|
|
|
129
219
|
```ts
|
|
130
|
-
const
|
|
220
|
+
const result = formatFromStore<Map<string, unknown>>(objectWithMetadata);
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## ๐งฐ Utility Functions
|
|
226
|
+
|
|
227
|
+
| Function | Description | Example |
|
|
228
|
+
| ------------- | ---------------------------------------- | ----------------------------- |
|
|
229
|
+
| **isNil** | Checks if value is `null` or `undefined` | `isNil(null); // true` |
|
|
230
|
+
| **isNumber** | Checks if value is a number | `isNumber(42); // true` |
|
|
231
|
+
| **isBoolean** | Checks if value is a boolean | `isBoolean(false); // true` |
|
|
232
|
+
| **isString** | Checks if value is a string | `isString('hi'); // true` |
|
|
233
|
+
| **isDate** | Checks if value is a Date | `isDate(new Date()); // true` |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## โ๏ธ Comparison
|
|
238
|
+
|
|
239
|
+
| Behavior | JSON.stringify | json-storage-formatter |
|
|
240
|
+
| ---------------- | --------------- | ---------------------- |
|
|
241
|
+
| **Date** | Becomes string | โ
Restored as Date |
|
|
242
|
+
| **Set** | Lost completely | โ
Restored as Set |
|
|
243
|
+
| **Map** | Lost completely | โ
Restored as Map |
|
|
244
|
+
| **Nested types** | Broken | โ
Preserved |
|
|
245
|
+
| **Performance** | Fast | โก Nearly identical |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## ๐ฆ Installation
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npm install json-storage-formatter
|
|
131
253
|
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## ๐ฏ Ready to Try It?
|
|
258
|
+
|
|
259
|
+
๐ **NPM:** [json-storage-formatter](https://www.npmjs.com/package/json-storage-formatter)
|
|
260
|
+
Serialize, store, and restore **any JavaScript data type** without losing its identity โ lightweight, fast, and fully type-safe. โจ
|
package/bundle.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports["json-storage-formatter"]=r():e["json-storage-formatter"]=r()}(this,(()=>(()=>{"use strict";var e={333:(e,r,t)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,r||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==n(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return u(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?u(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}Object.defineProperty(r,"__esModule",{value:!0}),r.clone=void 0;var a=t(646),f=t(346),c=t(473);r.clone=function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).shallow;if((0,c.isPrimitive)(e)||(0,a.isDate)(e))return e;if(Array.isArray(e))return t?i(e):e.map((function(e){return(0,r.clone)(e)}));if(e instanceof Map){var n=Array.from(e.entries());return t?new Map(n):new Map(n.map((function(e){return(0,r.clone)(e)})))}if(e instanceof Set){var u=Array.from(e.values());return t?new Set(u):new Set(u.map((function(e){return(0,r.clone)(e)})))}return e instanceof RegExp?new RegExp(e.toString()):(0,f.isFunction)(e)?t?e:Object.create(e):t?Object.assign({},e):e instanceof Error?new Error(e.message):Object.keys(e).reduce((function(t,n){var i=e[n];return Object.assign(Object.assign({},t),o({},n,(0,r.clone)(i)))}),{})}},944:(e,r,t)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,r||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==n(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,i,u,a=[],f=!0,c=!1;try{if(i=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;f=!1}else for(;!(f=(n=i.call(t)).done)&&(a.push(n.value),a.length!==r);f=!0);}catch(e){c=!0,o=e}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(c)throw o}}return a}}(e,r)||function(e,r){if(e){if("string"==typeof e)return u(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?u(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}Object.defineProperty(r,"__esModule",{value:!0}),r.formatFromStore=void 0;var a=t(333),f=t(346),c=t(473);r.formatFromStore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.jsonParse,u=t.sortKeys;return function(e){var t,n,a;if((0,c.isPrimitive)(e))return e;if("date"===(null==e?void 0:e.$t))return new Date(e.$v);if("map"===(null==e?void 0:e.$t)){var l=(null!==(t=e.$v)&&void 0!==t?t:[]).map((function(e){var t=i(e,2),n=t[0],o=t[1];return[n,(0,r.formatFromStore)(o)]}));return new Map(l)}if("set"===(null==e?void 0:e.$t)){var s=null!==(n=e.$v)&&void 0!==n?n:[].map((function(e){return(0,r.formatFromStore)(e)}));return new Set(s)}return"regex"===(null==e?void 0:e.$t)?new RegExp(e.$v):"error"===(null==e?void 0:e.$t)?new Error(e.$v):Array.isArray(e)?e.map((function(e){return(0,r.formatFromStore)(e)})):"function"===(null==e?void 0:e.$t)?Function("(".concat(e.$v,")(...arguments)")):(a=Object.keys(e),u?(0,f.isFunction)(u)?a.sort(u):a.sort((function(e,r){return(null!=e?e:"").localeCompare(r)})):a).reduce((function(t,n){var i=e[n];return Object.assign(Object.assign({},t),o({},n,(0,r.formatFromStore)(i)))}),{})}(n?JSON.parse(e):(0,a.clone)(e))}},915:(e,r,t)=>{function n(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||"default");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==o(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}Object.defineProperty(r,"__esModule",{value:!0}),r.formatToStore=void 0;var i=t(333),u=t(646),a=t(346),f=t(473),c=t(43);r.formatToStore=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{stringify:!1},t=r.stringify,l=r.validator,s=r.excludeTypes,m=r.excludeKeys,y=r.sortKeys,v=new Set(null!=s?s:[]),b=new Set(null!=m?m:[]),p=v.size||b.size,d=null!=l?l:function(e){var r=e.key,t=e.value;if(!p)return!0;var n=b.has(r),i=v.has(o(t));return!n&&!i},g=function(e){if((0,f.isPrimitive)(e))return e;var r;if(Array.isArray(e))return e.map((function(e){return g(e)}));if(e instanceof Map)return{$t:"map",$v:Array.from(e.entries()).map((function(e){return g(e)}))};if(e instanceof Set)return{$t:"set",$v:Array.from(e.values()).map((function(e){return g(e)}))};if((0,u.isDate)(e))return{$t:"date",$v:e.toISOString()};if((0,c.isRegex)(e))return{$t:"regex",$v:e.toString()};if((0,a.isFunction)(e)){var t;try{t={$t:"function",$v:e.toString()}}catch(e){t={$t:"error",$v:"Error: Could not serialize function"}}return t}return e instanceof Error?{$t:"error",$v:e.message}:(r=Object.keys(e),y?(0,a.isFunction)(y)?r.sort(y):r.sort((function(e,r){return(null!=e?e:"").localeCompare(r)})):r).reduce((function(r,t){var o=e[t],i=g(o);return d({obj:e,key:t,value:i})?Object.assign(Object.assign({},r),n({},t,g(o))):r}),{})},S=g((0,i.clone)(e));return t?JSON.stringify(S):S}},112:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isBoolean=void 0;r.isBoolean=function(e){return"boolean"==typeof e}},646:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isDate=void 0;r.isDate=function(e){return e instanceof Date}},346:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isFunction=void 0;r.isFunction=function(e){return"function"==typeof e||e instanceof Function}},243:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isNil=void 0;r.isNil=function(e){return null==e}},11:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isNumber=void 0;r.isNumber=function(e){return"number"==typeof e}},473:(e,r,t)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(r,"__esModule",{value:!0}),r.isPrimitive=void 0;var o=t(112),i=t(243),u=t(11),a=t(671);r.isPrimitive=function(e){return(0,i.isNil)(e)||(0,u.isNumber)(e)||(0,o.isBoolean)(e)||(0,a.isString)(e)||"symbol"===n(e)}},43:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isRegex=void 0;r.isRegex=function(e){return e instanceof RegExp}},671:(e,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isString=void 0;r.isString=function(e){return"string"==typeof e}}},r={};function t(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return e[n](i,i.exports,t),i.exports}var n={};return(()=>{var e=n;Object.defineProperty(e,"__esModule",{value:!0}),e.formatToStore=e.formatFromStore=e.isPrimitive=e.isFunction=e.isRegex=e.isDate=e.isString=e.isBoolean=e.isNumber=e.isNil=e.clone=void 0;var r=t(333);Object.defineProperty(e,"clone",{enumerable:!0,get:function(){return r.clone}});var o=t(243);Object.defineProperty(e,"isNil",{enumerable:!0,get:function(){return o.isNil}});var i=t(11);Object.defineProperty(e,"isNumber",{enumerable:!0,get:function(){return i.isNumber}});var u=t(112);Object.defineProperty(e,"isBoolean",{enumerable:!0,get:function(){return u.isBoolean}});var a=t(671);Object.defineProperty(e,"isString",{enumerable:!0,get:function(){return a.isString}});var f=t(646);Object.defineProperty(e,"isDate",{enumerable:!0,get:function(){return f.isDate}});var c=t(43);Object.defineProperty(e,"isRegex",{enumerable:!0,get:function(){return c.isRegex}});var l=t(346);Object.defineProperty(e,"isFunction",{enumerable:!0,get:function(){return l.isFunction}});var s=t(473);Object.defineProperty(e,"isPrimitive",{enumerable:!0,get:function(){return s.isPrimitive}});var m=t(944);Object.defineProperty(e,"formatFromStore",{enumerable:!0,get:function(){return m.formatFromStore}});var y=t(915);Object.defineProperty(e,"formatToStore",{enumerable:!0,get:function(){return y.formatToStore}})})(),n})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={944:(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==n(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,u,i,f=[],a=!0,l=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=u.call(r)).done)&&(f.push(n.value),f.length!==t);a=!0);}catch(e){l=!0,o=e}finally{try{if(!a&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return f}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var f=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=f(r(671)),l=f(r(473)),c=function(e){return!(0,l.default)(e)};t.default=function(e){if(!(0,a.default)(e))return e;var t=function(e){var r,n;if(!c(e))return e;if(!("undefined"===(null==e?void 0:e.$t))){if("date"===(null==e?void 0:e.$t))return new Date(e.$v);if("map"===(null==e?void 0:e.$t)){var i=(null!==(r=e.$v)&&void 0!==r?r:[]).map((function(e){var r=u(e,2),n=r[0],o=r[1];return[n,t(o)]}));return new Map(i)}if("set"===(null==e?void 0:e.$t)){var f=(null!==(n=e.$v)&&void 0!==n?n:[]).map((function(e){return t(e)}));return new Set(f)}if("regex"===(null==e?void 0:e.$t)){var a=e.$v;return new RegExp(a.s,a.f)}return"error"===(null==e?void 0:e.$t)?new Error(e.$v):Array.isArray(e)?e.map((function(e){return t(e)})):"function"===(null==e?void 0:e.$t)?Function("(".concat(e.$v,")(...arguments)")):Object.keys(e).reduce((function(r,n){var u=e[n];return Object.assign(Object.assign({},r),o({},n,t(u)))}),{})}};return t(JSON.parse(e))}},915:(e,t,r)=>{function n(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=o(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}var u=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=u(r(646)),f=u(r(346)),a=u(r(473)),l=u(r(43));t.default=function(e){var t,r,u,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=new Set(null!==(t=c.excludeTypes)&&void 0!==t?t:[]),d=new Set(null!==(r=c.excludeKeys)&&void 0!==r?r:[]),y=s.size||d.size,v=null!==(u=c.validator)&&void 0!==u?u:function(e){var t=e.key,r=e.value;if(!y)return!0;var n=d.has(t),u=s.has(o(r));return!n&&!u},b=function(e){if(void 0===e)return{$t:"undefined"};if((0,a.default)(e))return e;var t;if(Array.isArray(e))return e.map((function(e){return b(e)}));if(e instanceof Map)return{$t:"map",$v:Array.from(e.entries()).map((function(e){return b(e)}))};if(e instanceof Set)return{$t:"set",$v:Array.from(e.values()).map((function(e){return b(e)}))};if((0,i.default)(e))return{$t:"date",$v:e.toISOString()};if((0,l.default)(e))return{$t:"regex",$v:{s:e.source,f:e.flags}};if((0,f.default)(e)){var r;try{r={$t:"function",$v:e.toString()}}catch(e){r={$t:"error",$v:"Could not serialize function: ".concat(null==e?void 0:e.message)}}return r}return e instanceof Error?{$t:"error",$v:e.message}:(t=Object.keys(e),c.sortKeys?(0,f.default)(c.sortKeys)?t.sort(c.sortKeys):t.sort((function(e,t){return e.localeCompare(t)})):t).reduce((function(t,r){var o=e[r],u=b(o);return v({obj:e,key:r,value:u})?Object.assign(Object.assign({},t),n({},r,b(o))):t}),{})},m=b(e);return JSON.stringify(m)}},112:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"boolean"==typeof e}},646:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return e instanceof Date}},346:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"function"==typeof e||e instanceof Function}},243:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return null==e}},11:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"number"==typeof e}},473:(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}var o=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(r(112)),i=o(r(243)),f=o(r(11)),a=o(r(671));t.default=function(e){return(0,i.default)(e)||(0,f.default)(e)||(0,u.default)(e)||(0,a.default)(e)||"symbol"===n(e)}},43:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return e instanceof RegExp}},671:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"string"==typeof e}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}var n={};return(()=>{var e=n,t=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.formatToStore=e.formatFromStore=e.isPrimitive=e.isFunction=e.isRegex=e.isDate=e.isString=e.isBoolean=e.isNumber=e.isNil=void 0;var o=r(243);Object.defineProperty(e,"isNil",{enumerable:!0,get:function(){return t(o).default}});var u=r(11);Object.defineProperty(e,"isNumber",{enumerable:!0,get:function(){return t(u).default}});var i=r(112);Object.defineProperty(e,"isBoolean",{enumerable:!0,get:function(){return t(i).default}});var f=r(671);Object.defineProperty(e,"isString",{enumerable:!0,get:function(){return t(f).default}});var a=r(646);Object.defineProperty(e,"isDate",{enumerable:!0,get:function(){return t(a).default}});var l=r(43);Object.defineProperty(e,"isRegex",{enumerable:!0,get:function(){return t(l).default}});var c=r(346);Object.defineProperty(e,"isFunction",{enumerable:!0,get:function(){return t(c).default}});var s=r(473);Object.defineProperty(e,"isPrimitive",{enumerable:!0,get:function(){return t(s).default}});var d=r(944);Object.defineProperty(e,"formatFromStore",{enumerable:!0,get:function(){return t(d).default}});var y=r(915);Object.defineProperty(e,"formatToStore",{enumerable:!0,get:function(){return t(y).default}})})(),n})()));
|
package/formatFromStore.d.ts
CHANGED
|
@@ -4,8 +4,5 @@
|
|
|
4
4
|
* @returns
|
|
5
5
|
* Original form of the value
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
jsonParse?: boolean;
|
|
10
|
-
sortKeys?: boolean | ((a: string, b: string) => number);
|
|
11
|
-
}) => T;
|
|
7
|
+
declare const formatFromStore: <T = unknown>(value: string) => T;
|
|
8
|
+
export default formatFromStore;
|
package/formatFromStore.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["json-storage-formatter"]=e():t["json-storage-formatter"]=e()}(this,(()=>(()=>{"use strict";var t={112:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0});e.default=function(t){return"boolean"==typeof t}},243:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0});e.default=function(t){return null==t}},11:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0});e.default=function(t){return"number"==typeof t}},473:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}var o=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var u=o(r(112)),i=o(r(243)),f=o(r(11)),l=o(r(671));e.default=function(t){return(0,i.default)(t)||(0,f.default)(t)||(0,u.default)(t)||(0,l.default)(t)||"symbol"===n(t)}},671:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0});e.default=function(t){return"string"==typeof t}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var u=e[n]={exports:{}};return t[n](u,u.exports,r),u.exports}var n={};return(()=>{var t=n;function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function o(t,r,n){return(r=function(t){var r=function(t,r){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,r||"default");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==e(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}function u(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,u,i,f=[],l=!0,a=!1;try{if(u=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=u.call(r)).done)&&(f.push(n.value),f.length!==e);l=!0);}catch(t){a=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(a)throw o}}return f}}(t,e)||function(t,e){if(t){if("string"==typeof t)return i(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var f=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t,"__esModule",{value:!0});var l=f(r(671)),a=f(r(473)),c=function(t){return!(0,a.default)(t)};t.default=function(t){if(!(0,l.default)(t))return t;var e=function(t){var r,n;if(!c(t))return t;if(!("undefined"===(null==t?void 0:t.$t))){if("date"===(null==t?void 0:t.$t))return new Date(t.$v);if("map"===(null==t?void 0:t.$t)){var i=(null!==(r=t.$v)&&void 0!==r?r:[]).map((function(t){var r=u(t,2),n=r[0],o=r[1];return[n,e(o)]}));return new Map(i)}if("set"===(null==t?void 0:t.$t)){var f=(null!==(n=t.$v)&&void 0!==n?n:[]).map((function(t){return e(t)}));return new Set(f)}if("regex"===(null==t?void 0:t.$t)){var l=t.$v;return new RegExp(l.s,l.f)}return"error"===(null==t?void 0:t.$t)?new Error(t.$v):Array.isArray(t)?t.map((function(t){return e(t)})):"function"===(null==t?void 0:t.$t)?Function("(".concat(t.$v,")(...arguments)")):Object.keys(t).reduce((function(r,n){var u=t[n];return Object.assign(Object.assign({},r),o({},n,e(u)))}),{})}};return e(JSON.parse(t))}})(),n})()));
|
package/formatToStore.d.ts
CHANGED
|
@@ -1,24 +1,39 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Primitives } from './types';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
6
|
-
* @
|
|
7
|
-
* @param
|
|
8
|
-
* @param
|
|
3
|
+
* Formats an object to be stored, it adds metadata to preserve data types
|
|
4
|
+
* Compatible with Map, Set, Date, RegExp, Function, Error
|
|
5
|
+
* * @param value The value to format
|
|
6
|
+
* @param options Formatting options
|
|
7
|
+
* @param options.excludeTypes An array or set of primitive types to exclude from the stringified version
|
|
8
|
+
* @param options.excludeKeys An array or set of keys to exclude from the stringified version
|
|
9
|
+
* @param options.sortKeys If true, it will sort the keys of the object alphabetically, or a function to sort the keys,
|
|
10
|
+
* This helps to guarantee a consistent order of the keys in the stringified version
|
|
11
|
+
* @param options.validator Returns true if the value should be included in the stringified version,
|
|
12
|
+
* if provided it will override the default validator and the excludesTypes and excludeKeys
|
|
13
|
+
* @returns A stringified version of the object with metadata
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
declare const formatToStore: <T>(value: T, options?: {
|
|
16
|
+
/**
|
|
17
|
+
* If true, it will return a stringified version of the object
|
|
18
|
+
*/
|
|
19
|
+
excludeTypes?: Primitives[] | Set<Primitives>;
|
|
20
|
+
/**
|
|
21
|
+
* An array or set of keys to exclude from the stringified version
|
|
22
|
+
*/
|
|
13
23
|
excludeKeys?: string[] | Set<string>;
|
|
24
|
+
/**
|
|
25
|
+
* If true, it will sort the keys of the object alphabetically, or a function to sort the keys,
|
|
26
|
+
* This helps to guarantee a consistent order of the keys in the stringified version
|
|
27
|
+
*/
|
|
14
28
|
sortKeys?: boolean | ((a: string, b: string) => number);
|
|
15
29
|
/**
|
|
16
30
|
* Returns true if the value should be included in the stringified version,
|
|
17
31
|
* if provided it will override the default validator and the excludesTypes and excludeKeys
|
|
18
32
|
*/
|
|
19
|
-
validator?: ({ obj, key, value
|
|
33
|
+
validator?: ({ obj, key, value }: {
|
|
20
34
|
obj: unknown;
|
|
21
35
|
key: string;
|
|
22
36
|
value: unknown;
|
|
23
37
|
}) => boolean | undefined;
|
|
24
|
-
}) =>
|
|
38
|
+
}) => string;
|
|
39
|
+
export default formatToStore;
|
package/formatToStore.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={112:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"boolean"==typeof e}},646:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return e instanceof Date}},346:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"function"==typeof e||e instanceof Function}},243:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return null==e}},11:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"number"==typeof e}},473:(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}var o=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=o(r(112)),f=o(r(243)),i=o(r(11)),a=o(r(671));t.default=function(e){return(0,f.default)(e)||(0,i.default)(e)||(0,u.default)(e)||(0,a.default)(e)||"symbol"===n(e)}},43:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return e instanceof RegExp}},671:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"string"==typeof e}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}var n={};return(()=>{var e=n;function t(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=o(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==o(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}var u=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0});var f=u(r(646)),i=u(r(346)),a=u(r(473)),l=u(r(43));e.default=function(e){var r,n,u,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=new Set(null!==(r=c.excludeTypes)&&void 0!==r?r:[]),d=new Set(null!==(n=c.excludeKeys)&&void 0!==n?n:[]),y=s.size||d.size,v=null!==(u=c.validator)&&void 0!==u?u:function(e){var t=e.key,r=e.value;if(!y)return!0;var n=d.has(t),u=s.has(o(r));return!n&&!u},p=function(e){if(void 0===e)return{$t:"undefined"};if((0,a.default)(e))return e;var r;if(Array.isArray(e))return e.map((function(e){return p(e)}));if(e instanceof Map)return{$t:"map",$v:Array.from(e.entries()).map((function(e){return p(e)}))};if(e instanceof Set)return{$t:"set",$v:Array.from(e.values()).map((function(e){return p(e)}))};if((0,f.default)(e))return{$t:"date",$v:e.toISOString()};if((0,l.default)(e))return{$t:"regex",$v:{s:e.source,f:e.flags}};if((0,i.default)(e)){var n;try{n={$t:"function",$v:e.toString()}}catch(e){n={$t:"error",$v:"Could not serialize function: ".concat(null==e?void 0:e.message)}}return n}return e instanceof Error?{$t:"error",$v:e.message}:(r=Object.keys(e),c.sortKeys?(0,i.default)(c.sortKeys)?r.sort(c.sortKeys):r.sort((function(e,t){return e.localeCompare(t)})):r).reduce((function(r,n){var o=e[n],u=p(o);return v({obj:e,key:n,value:u})?Object.assign(Object.assign({},r),t({},n,p(o))):r}),{})},b=p(e);return JSON.stringify(b)}})(),n})()));
|
package/index.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export { formatToStore } from "./formatToStore";
|
|
1
|
+
export { default as isNil } from './isNil';
|
|
2
|
+
export { default as isNumber } from './isNumber';
|
|
3
|
+
export { default as isBoolean } from './isBoolean';
|
|
4
|
+
export { default as isString } from './isString';
|
|
5
|
+
export { default as isDate } from './isDate';
|
|
6
|
+
export { default as isRegex } from './isRegex';
|
|
7
|
+
export { default as isFunction } from './isFunction';
|
|
8
|
+
export { default as isPrimitive } from './isPrimitive';
|
|
9
|
+
export { default as formatFromStore } from './formatFromStore';
|
|
10
|
+
export { default as formatToStore } from './formatToStore';
|
|
11
|
+
export type { Primitives, EnvelopData } from './types';
|
package/isBoolean.d.ts
CHANGED
package/isBoolean.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"boolean"==typeof e}})(),e})()));
|
package/isDate.d.ts
CHANGED
package/isDate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0})
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return e instanceof Date}})(),e})()));
|
package/isFunction.d.ts
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
* @param value The value to check
|
|
4
4
|
* @returns true if the value is a function, false otherwise
|
|
5
5
|
* */
|
|
6
|
-
|
|
6
|
+
declare const isFunction: <T extends (...args: any[]) => any>(value: unknown) => value is NonNullable<T>;
|
|
7
|
+
export default isFunction;
|
package/isFunction.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0})
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"function"==typeof e||e instanceof Function}})(),e})()));
|
package/isNil.d.ts
CHANGED
package/isNil.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0})
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return null==e}})(),e})()));
|
package/isNumber.d.ts
CHANGED
package/isNumber.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0})
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"number"==typeof e}})(),e})()));
|
package/isPrimitive.d.ts
CHANGED
|
@@ -6,4 +6,5 @@
|
|
|
6
6
|
* false otherwise
|
|
7
7
|
* null, number, boolean, string, symbol
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
declare const isPrimitive: (value: unknown) => value is string | number | boolean | symbol;
|
|
10
|
+
export default isPrimitive;
|
package/isPrimitive.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={112:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"boolean"==typeof e}},243:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return null==e}},11:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"number"==typeof e}},671:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"string"==typeof e}}},t={};function o(r){var n=t[r];if(void 0!==n)return n.exports;var u=t[r]={exports:{}};return e[r](u,u.exports,o),u.exports}var r={};return(()=>{var e=r;function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0});var u=n(o(112)),f=n(o(243)),l=n(o(11)),a=n(o(671));e.default=function(e){return(0,f.default)(e)||(0,l.default)(e)||(0,u.default)(e)||(0,a.default)(e)||"symbol"===t(e)}})(),r})()));
|
package/isRegex.d.ts
CHANGED
package/isRegex.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0})
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return e instanceof RegExp}})(),e})()));
|
package/isString.d.ts
CHANGED
package/isString.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0})
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){return"string"==typeof e}})(),e})()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-storage-formatter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Package for json stringify objects without losing data types",
|
|
5
5
|
"main": "./bundle.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -11,11 +11,6 @@
|
|
|
11
11
|
"require": "./bundle.js",
|
|
12
12
|
"types": "./index.d.ts"
|
|
13
13
|
},
|
|
14
|
-
"./clone": {
|
|
15
|
-
"import": "./clone.js",
|
|
16
|
-
"require": "./clone.js",
|
|
17
|
-
"types": "./clone.d.ts"
|
|
18
|
-
},
|
|
19
14
|
"./isNil": {
|
|
20
15
|
"import": "./isNil.js",
|
|
21
16
|
"require": "./isNil.js",
|
|
@@ -72,14 +67,20 @@
|
|
|
72
67
|
"./*.d.ts"
|
|
73
68
|
],
|
|
74
69
|
"scripts": {
|
|
70
|
+
"format": "prettier --write . --log-level silent && yarn lint:fix",
|
|
71
|
+
"test": "yarn build && yarn jest",
|
|
72
|
+
"test:debug:no-watch": "node --inspect-brk node_modules/.bin/jest --no-watchman --runInBand",
|
|
75
73
|
"test:debug": "node --inspect-brk node_modules/.bin/jest --watch --runInBand",
|
|
76
|
-
"test:quick": "
|
|
77
|
-
"test:coverage": "
|
|
78
|
-
"build": "webpack --config webpack.config.js",
|
|
79
|
-
"prepare": "npm run build",
|
|
80
|
-
"version": "npm run format && git add -A
|
|
74
|
+
"test:quick": "yarn test --no-coverage --maxWorkers=4 -c --no-watchman -u",
|
|
75
|
+
"test:coverage": "yarn test --maxWorkers=4 -c --colors --no-watchman --verbose --coverage",
|
|
76
|
+
"build": "yarn ts-check && yarn clean && webpack --config webpack.config.js",
|
|
77
|
+
"prepare": "yarn format && npm run build && yarn test:quick",
|
|
78
|
+
"version": "npm run format && yarn build && yarn jest && git add -A",
|
|
81
79
|
"postversion": "git push && git push --tags",
|
|
82
|
-
"
|
|
80
|
+
"lint": "eslint . --max-warnings=0",
|
|
81
|
+
"lint:fix": "eslint . --fix --max-warnings=0",
|
|
82
|
+
"clean": "find . -maxdepth 1 -type f \\( -name '*.js' -o -name '*.d.ts' \\) ! -name 'webpack.config.js' ! -name 'eslint.config.mts' -exec rm {} +",
|
|
83
|
+
"ts-check": "tsc -p tsconfig.json --noEmit"
|
|
83
84
|
},
|
|
84
85
|
"repository": {
|
|
85
86
|
"type": "git",
|
|
@@ -106,13 +107,25 @@
|
|
|
106
107
|
"@babel/plugin-transform-modules-commonjs": "^7.21.2",
|
|
107
108
|
"@babel/preset-env": "^7.20.2",
|
|
108
109
|
"@babel/preset-typescript": "^7.21.0",
|
|
110
|
+
"@eslint/js": "^9.39.1",
|
|
109
111
|
"@types/jest": "^26.0.17",
|
|
110
112
|
"@types/lodash": "^4.14.165",
|
|
113
|
+
"@typescript-eslint/eslint-plugin": "^4.9.1",
|
|
114
|
+
"@typescript-eslint/parser": "^4.9.1",
|
|
111
115
|
"babel-loader": "^9.1.2",
|
|
116
|
+
"eslint": "^9.39.1",
|
|
117
|
+
"eslint-config-airbnb": "^18.2.1",
|
|
118
|
+
"eslint-plugin-import": "^2.22.1",
|
|
119
|
+
"eslint-plugin-jsx-a11y": "^6.4.1",
|
|
120
|
+
"eslint-plugin-react": "^7.37.5",
|
|
121
|
+
"eslint-plugin-react-hooks": "^4.2.0",
|
|
112
122
|
"jest": "^29.3.1",
|
|
123
|
+
"jiti": "^2.6.1",
|
|
124
|
+
"prettier": "^3.6.2",
|
|
113
125
|
"ts-jest": "^29.0.3",
|
|
114
126
|
"ts-loader": "^9.4.2",
|
|
115
127
|
"typescript": "^4.1.2",
|
|
128
|
+
"typescript-eslint": "^8.46.3",
|
|
116
129
|
"webpack": "^5.76.3",
|
|
117
130
|
"webpack-cli": "^5.0.1"
|
|
118
131
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type
|
|
2
|
-
$t
|
|
3
|
-
$v
|
|
1
|
+
export type EnvelopData = {
|
|
2
|
+
$t: 'map' | 'set' | 'date' | 'regex' | 'error' | 'function' | 'undefined';
|
|
3
|
+
$v: unknown;
|
|
4
4
|
};
|
|
5
|
-
export type
|
|
5
|
+
export type Primitives = 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'function' | 'object';
|
package/webpack.config.js
CHANGED
|
@@ -4,22 +4,21 @@ const TerserPlugin = require('terser-webpack-plugin');
|
|
|
4
4
|
module.exports = {
|
|
5
5
|
mode: 'production',
|
|
6
6
|
entry: {
|
|
7
|
-
bundle:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
formatToStore: "./src/formatToStore.ts",
|
|
7
|
+
bundle: './src/index.ts',
|
|
8
|
+
isNil: './src/isNil.ts',
|
|
9
|
+
isNumber: './src/isNumber.ts',
|
|
10
|
+
isBoolean: './src/isBoolean.ts',
|
|
11
|
+
isString: './src/isString.ts',
|
|
12
|
+
isDate: './src/isDate.ts',
|
|
13
|
+
isRegex: './src/isRegex.ts',
|
|
14
|
+
isFunction: './src/isFunction.ts',
|
|
15
|
+
isPrimitive: './src/isPrimitive.ts',
|
|
16
|
+
types: './src/types.ts',
|
|
17
|
+
formatFromStore: './src/formatFromStore.ts',
|
|
18
|
+
formatToStore: './src/formatToStore.ts',
|
|
20
19
|
},
|
|
21
20
|
output: {
|
|
22
|
-
path: path.resolve(__dirname)
|
|
21
|
+
path: path.resolve(__dirname), //'lib'
|
|
23
22
|
filename: ({ chunk: { name } }) => {
|
|
24
23
|
if (name.includes('worker')) {
|
|
25
24
|
return `${name}.worker.js`;
|
|
@@ -34,10 +33,7 @@ module.exports = {
|
|
|
34
33
|
resolve: {
|
|
35
34
|
extensions: ['.ts', '.js'],
|
|
36
35
|
alias: {
|
|
37
|
-
'json-storage-formatter': path.resolve(
|
|
38
|
-
__dirname,
|
|
39
|
-
'node_modules/json-storage-formatter/package.json'
|
|
40
|
-
),
|
|
36
|
+
'json-storage-formatter': path.resolve(__dirname, 'node_modules/json-storage-formatter/package.json'),
|
|
41
37
|
},
|
|
42
38
|
},
|
|
43
39
|
module: {
|
|
@@ -76,5 +72,5 @@ module.exports = {
|
|
|
76
72
|
},
|
|
77
73
|
}),
|
|
78
74
|
],
|
|
79
|
-
}
|
|
75
|
+
},
|
|
80
76
|
};
|
package/clone.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deep clone an object, it also support Map, Set, Arrays
|
|
3
|
-
* @param value
|
|
4
|
-
* @returns
|
|
5
|
-
* A deep clone of the object
|
|
6
|
-
* */
|
|
7
|
-
export declare const clone: <T>(value: T, { shallow, }?: {
|
|
8
|
-
/**
|
|
9
|
-
* If true, it will only clone the first level of the object
|
|
10
|
-
*/
|
|
11
|
-
shallow?: boolean;
|
|
12
|
-
}) => T;
|
package/clone.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-storage-formatter"]=t():e["json-storage-formatter"]=t()}(this,(()=>(()=>{"use strict";var e={333:(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==n(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0;var f=r(646),a=r(346),c=r(473);t.clone=function(e){var r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).shallow;if((0,c.isPrimitive)(e)||(0,f.isDate)(e))return e;if(Array.isArray(e))return r?i(e):e.map((function(e){return(0,t.clone)(e)}));if(e instanceof Map){var n=Array.from(e.entries());return r?new Map(n):new Map(n.map((function(e){return(0,t.clone)(e)})))}if(e instanceof Set){var u=Array.from(e.values());return r?new Set(u):new Set(u.map((function(e){return(0,t.clone)(e)})))}return e instanceof RegExp?new RegExp(e.toString()):(0,a.isFunction)(e)?r?e:Object.create(e):r?Object.assign({},e):e instanceof Error?new Error(e.message):Object.keys(e).reduce((function(r,n){var i=e[n];return Object.assign(Object.assign({},r),o({},n,(0,t.clone)(i)))}),{})}},112:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBoolean=void 0;t.isBoolean=function(e){return"boolean"==typeof e}},646:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isDate=void 0;t.isDate=function(e){return e instanceof Date}},346:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isFunction=void 0;t.isFunction=function(e){return"function"==typeof e||e instanceof Function}},243:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isNil=void 0;t.isNil=function(e){return null==e}},11:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isNumber=void 0;t.isNumber=function(e){return"number"==typeof e}},473:(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.isPrimitive=void 0;var o=r(112),i=r(243),u=r(11),f=r(671);t.isPrimitive=function(e){return(0,i.isNil)(e)||(0,u.isNumber)(e)||(0,o.isBoolean)(e)||(0,f.isString)(e)||"symbol"===n(e)}},671:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isString=void 0;t.isString=function(e){return"string"==typeof e}}},t={};var r=function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}(333);return r})()));
|