@taybart/corvid 0.1.25 → 0.1.26

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/dist/index.js CHANGED
@@ -66,6 +66,7 @@ __webpack_require__.d(local_storage_namespaceObject, {
66
66
  getJSON: ()=>getJSON,
67
67
  listen: ()=>listen,
68
68
  set: ()=>set,
69
+ setObj: ()=>setObj,
69
70
  unlisten: ()=>unlisten,
70
71
  update: ()=>local_storage_update
71
72
  });
@@ -703,12 +704,16 @@ function get(key, _default) {
703
704
  function getJSON(key, _default) {
704
705
  const val = get(key, _default);
705
706
  if (null === val) return null;
706
- return JSON.parse(val);
707
+ try {
708
+ return JSON.parse(val);
709
+ } catch (e) {
710
+ console.error(e);
711
+ return val;
712
+ }
707
713
  }
708
714
  function local_storage_update(key, update1, broadcast = false) {
709
715
  const prev = get(key);
710
716
  const value = update1(prev);
711
- localStorage.setItem(key, value);
712
717
  if (prev !== value || broadcast) {
713
718
  const event = new CustomEvent('@corvid/ls-update', {
714
719
  detail: {
@@ -718,21 +723,36 @@ function local_storage_update(key, update1, broadcast = false) {
718
723
  });
719
724
  document.dispatchEvent(event);
720
725
  }
726
+ localStorage.setItem(key, value);
721
727
  }
722
728
  function set(key, value, broadcast = false) {
723
- const v = value;
724
- if ('object' == typeof value) value = JSON.stringify(value);
725
729
  const prev = get(key);
726
- localStorage.setItem(key, value);
727
730
  if (prev !== value || broadcast) {
728
731
  const event = new CustomEvent('@corvid/ls-update', {
729
732
  detail: {
730
733
  key,
731
- value: v
734
+ value
732
735
  }
733
736
  });
734
737
  document.dispatchEvent(event);
735
738
  }
739
+ if ('object' == typeof value) value = JSON.stringify(value);
740
+ localStorage.setItem(key, value);
741
+ }
742
+ function setObj(update, prefix, broadcast = false) {
743
+ const flatten = (ob)=>{
744
+ const ret = {};
745
+ for(let i in ob)if (ob.hasOwnProperty(i)) if ('object' == typeof ob[i] && null !== ob[i]) {
746
+ const flat = flatten(ob[i]);
747
+ for(let x in flat)if (flat.hasOwnProperty(x)) ret[`${i}.${x}`] = flat[x];
748
+ } else ret[i] = ob[i];
749
+ return ret;
750
+ };
751
+ for (let [k, v] of Object.entries(flatten(update))){
752
+ let key = k;
753
+ if (prefix) key = `${prefix}.${k}`;
754
+ set(key, v, broadcast);
755
+ }
736
756
  }
737
757
  const listeners = new Map();
738
758
  function listen(key, cb) {
@@ -3,6 +3,7 @@ export declare function get(key: string, _default?: any): any;
3
3
  export declare function getJSON(key: string, _default?: any): any;
4
4
  export declare function update(key: string, update: (current: any) => any, broadcast?: boolean): void;
5
5
  export declare function set(key: string, value: any, broadcast?: boolean): void;
6
+ export declare function setObj(update: object, prefix?: string, broadcast?: boolean): void;
6
7
  export declare function listen(key: string, cb: (update: {
7
8
  key: string;
8
9
  value: any;
package/dist/ls.js CHANGED
@@ -258,12 +258,16 @@ function get(key, _default) {
258
258
  function getJSON(key, _default) {
259
259
  const val = get(key, _default);
260
260
  if (null === val) return null;
261
- return JSON.parse(val);
261
+ try {
262
+ return JSON.parse(val);
263
+ } catch (e) {
264
+ console.error(e);
265
+ return val;
266
+ }
262
267
  }
263
268
  function local_storage_update(key, update1, broadcast = false) {
264
269
  const prev = get(key);
265
270
  const value = update1(prev);
266
- localStorage.setItem(key, value);
267
271
  if (prev !== value || broadcast) {
268
272
  const event = new CustomEvent('@corvid/ls-update', {
269
273
  detail: {
@@ -273,21 +277,36 @@ function local_storage_update(key, update1, broadcast = false) {
273
277
  });
274
278
  document.dispatchEvent(event);
275
279
  }
280
+ localStorage.setItem(key, value);
276
281
  }
277
282
  function set(key, value, broadcast = false) {
278
- const v = value;
279
- if ('object' == typeof value) value = JSON.stringify(value);
280
283
  const prev = get(key);
281
- localStorage.setItem(key, value);
282
284
  if (prev !== value || broadcast) {
283
285
  const event = new CustomEvent('@corvid/ls-update', {
284
286
  detail: {
285
287
  key,
286
- value: v
288
+ value
287
289
  }
288
290
  });
289
291
  document.dispatchEvent(event);
290
292
  }
293
+ if ('object' == typeof value) value = JSON.stringify(value);
294
+ localStorage.setItem(key, value);
295
+ }
296
+ function setObj(update, prefix, broadcast = false) {
297
+ const flatten = (ob)=>{
298
+ const ret = {};
299
+ for(let i in ob)if (ob.hasOwnProperty(i)) if ('object' == typeof ob[i] && null !== ob[i]) {
300
+ const flat = flatten(ob[i]);
301
+ for(let x in flat)if (flat.hasOwnProperty(x)) ret[`${i}.${x}`] = flat[x];
302
+ } else ret[i] = ob[i];
303
+ return ret;
304
+ };
305
+ for (let [k, v] of Object.entries(flatten(update))){
306
+ let key = k;
307
+ if (prefix) key = `${prefix}.${k}`;
308
+ set(key, v, broadcast);
309
+ }
291
310
  }
292
311
  const listeners = new Map();
293
312
  function listen(key, cb) {
@@ -328,4 +347,4 @@ const local_storage = {
328
347
  unlisten,
329
348
  clear
330
349
  };
331
- export { clear, local_storage as default, get, getJSON, listen, set, unlisten, local_storage_update as update };
350
+ export { clear, local_storage as default, get, getJSON, listen, set, setObj, unlisten, local_storage_update as update };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taybart/corvid",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {