@taybart/corvid 0.1.26 → 0.1.28

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,7 +66,6 @@ __webpack_require__.d(local_storage_namespaceObject, {
66
66
  getJSON: ()=>getJSON,
67
67
  listen: ()=>listen,
68
68
  set: ()=>set,
69
- setObj: ()=>setObj,
70
69
  unlisten: ()=>unlisten,
71
70
  update: ()=>local_storage_update
72
71
  });
@@ -168,20 +167,36 @@ const clipboard = {
168
167
  if (!navigator.clipboard) throw new Error('Clipboard API not supported, or context is not https');
169
168
  },
170
169
  async copy (text) {
171
- this.check();
172
- await navigator.clipboard.writeText(text);
170
+ try {
171
+ this.check();
172
+ await navigator.clipboard.writeText(text);
173
+ } catch (e) {
174
+ throw e;
175
+ }
173
176
  },
174
177
  async copyArbitrary (data) {
175
- this.check();
176
- await navigator.clipboard.write(data);
178
+ try {
179
+ this.check();
180
+ await navigator.clipboard.write(data);
181
+ } catch (e) {
182
+ throw e;
183
+ }
177
184
  },
178
185
  async read () {
179
- this.check();
180
- return await navigator.clipboard.readText();
186
+ try {
187
+ this.check();
188
+ return await navigator.clipboard.readText();
189
+ } catch (e) {
190
+ throw e;
191
+ }
181
192
  },
182
193
  async readArbitrary () {
183
- this.check();
184
- return await navigator.clipboard.read();
194
+ try {
195
+ this.check();
196
+ return await navigator.clipboard.read();
197
+ } catch (e) {
198
+ throw e;
199
+ }
185
200
  },
186
201
  listen (query, cb) {
187
202
  let el;
@@ -713,71 +728,82 @@ function getJSON(key, _default) {
713
728
  }
714
729
  function local_storage_update(key, update1, broadcast = false) {
715
730
  const prev = get(key);
716
- const value = update1(prev);
731
+ let value = update1(prev);
732
+ const v = value;
733
+ if ('object' == typeof value) value = JSON.stringify(value);
734
+ localStorage.setItem(key, value);
717
735
  if (prev !== value || broadcast) {
718
736
  const event = new CustomEvent('@corvid/ls-update', {
719
737
  detail: {
720
738
  key,
721
- value
739
+ value: v
722
740
  }
723
741
  });
724
742
  document.dispatchEvent(event);
725
743
  }
726
- localStorage.setItem(key, value);
727
744
  }
728
745
  function set(key, value, broadcast = false) {
746
+ const v = value;
747
+ if ('object' == typeof value) value = JSON.stringify(value);
729
748
  const prev = get(key);
749
+ localStorage.setItem(key, value);
730
750
  if (prev !== value || broadcast) {
731
751
  const event = new CustomEvent('@corvid/ls-update', {
732
752
  detail: {
733
753
  key,
734
- value
754
+ value: v
735
755
  }
736
756
  });
737
757
  document.dispatchEvent(event);
738
758
  }
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
- }
756
759
  }
757
760
  const listeners = new Map();
758
761
  function listen(key, cb) {
759
- const listener = (ev)=>{
760
- if (ev.detail.key === key || '*' === key) {
762
+ const customListener = (ev)=>{
763
+ const customEv = ev;
764
+ if (customEv.detail.key === key || '*' === key) {
765
+ if (cb instanceof dom_el) {
766
+ if (customEv.detail.key === key) cb.content(customEv.detail.value);
767
+ return;
768
+ }
769
+ cb({
770
+ key: customEv.detail.key,
771
+ value: customEv.detail.value
772
+ });
773
+ }
774
+ };
775
+ const storageListener = (ev)=>{
776
+ const storageEv = ev;
777
+ if (storageEv.key === key || '*' === key) {
778
+ let value = storageEv.newValue;
779
+ try {
780
+ value = JSON.parse(value);
781
+ } catch (e) {}
761
782
  if (cb instanceof dom_el) {
762
- if (ev.detail.key === key) cb.content(ev.detail.value);
783
+ if (storageEv.key === key) cb.content(value);
763
784
  return;
764
785
  }
765
786
  cb({
766
- key: ev.detail.key,
767
- value: ev.detail.value
787
+ key: storageEv.key,
788
+ value
768
789
  });
769
790
  }
770
791
  };
771
792
  if (!listeners.has(key)) listeners.set(key, new Map());
772
- listeners.get(key).set(cb, listener);
773
- document.addEventListener('@corvid/ls-update', listener);
793
+ listeners.get(key).set(cb, {
794
+ custom: customListener,
795
+ storage: storageListener
796
+ });
797
+ document.addEventListener('@corvid/ls-update', customListener);
798
+ window.addEventListener('storage', storageListener);
774
799
  }
775
800
  function unlisten(key, cb) {
776
801
  const keyListeners = listeners.get(key);
777
802
  if (!keyListeners) return;
778
803
  const listener = keyListeners.get(cb);
779
804
  if (!listener) return;
780
- document.removeEventListener('@corvid/ls-update', listener);
805
+ document.removeEventListener('@corvid/ls-update', listener.custom);
806
+ window.removeEventListener('storage', listener.storage);
781
807
  keyListeners.delete(cb);
782
808
  if (0 === keyListeners.size) listeners.delete(key);
783
809
  }
@@ -3,7 +3,6 @@ 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;
7
6
  export declare function listen(key: string, cb: (update: {
8
7
  key: string;
9
8
  value: any;
package/dist/ls.js CHANGED
@@ -267,71 +267,82 @@ function getJSON(key, _default) {
267
267
  }
268
268
  function local_storage_update(key, update1, broadcast = false) {
269
269
  const prev = get(key);
270
- const value = update1(prev);
270
+ let value = update1(prev);
271
+ const v = value;
272
+ if ('object' == typeof value) value = JSON.stringify(value);
273
+ localStorage.setItem(key, value);
271
274
  if (prev !== value || broadcast) {
272
275
  const event = new CustomEvent('@corvid/ls-update', {
273
276
  detail: {
274
277
  key,
275
- value
278
+ value: v
276
279
  }
277
280
  });
278
281
  document.dispatchEvent(event);
279
282
  }
280
- localStorage.setItem(key, value);
281
283
  }
282
284
  function set(key, value, broadcast = false) {
285
+ const v = value;
286
+ if ('object' == typeof value) value = JSON.stringify(value);
283
287
  const prev = get(key);
288
+ localStorage.setItem(key, value);
284
289
  if (prev !== value || broadcast) {
285
290
  const event = new CustomEvent('@corvid/ls-update', {
286
291
  detail: {
287
292
  key,
288
- value
293
+ value: v
289
294
  }
290
295
  });
291
296
  document.dispatchEvent(event);
292
297
  }
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
- }
310
298
  }
311
299
  const listeners = new Map();
312
300
  function listen(key, cb) {
313
- const listener = (ev)=>{
314
- if (ev.detail.key === key || '*' === key) {
301
+ const customListener = (ev)=>{
302
+ const customEv = ev;
303
+ if (customEv.detail.key === key || '*' === key) {
304
+ if (cb instanceof dom_el) {
305
+ if (customEv.detail.key === key) cb.content(customEv.detail.value);
306
+ return;
307
+ }
308
+ cb({
309
+ key: customEv.detail.key,
310
+ value: customEv.detail.value
311
+ });
312
+ }
313
+ };
314
+ const storageListener = (ev)=>{
315
+ const storageEv = ev;
316
+ if (storageEv.key === key || '*' === key) {
317
+ let value = storageEv.newValue;
318
+ try {
319
+ value = JSON.parse(value);
320
+ } catch (e) {}
315
321
  if (cb instanceof dom_el) {
316
- if (ev.detail.key === key) cb.content(ev.detail.value);
322
+ if (storageEv.key === key) cb.content(value);
317
323
  return;
318
324
  }
319
325
  cb({
320
- key: ev.detail.key,
321
- value: ev.detail.value
326
+ key: storageEv.key,
327
+ value
322
328
  });
323
329
  }
324
330
  };
325
331
  if (!listeners.has(key)) listeners.set(key, new Map());
326
- listeners.get(key).set(cb, listener);
327
- document.addEventListener('@corvid/ls-update', listener);
332
+ listeners.get(key).set(cb, {
333
+ custom: customListener,
334
+ storage: storageListener
335
+ });
336
+ document.addEventListener('@corvid/ls-update', customListener);
337
+ window.addEventListener('storage', storageListener);
328
338
  }
329
339
  function unlisten(key, cb) {
330
340
  const keyListeners = listeners.get(key);
331
341
  if (!keyListeners) return;
332
342
  const listener = keyListeners.get(cb);
333
343
  if (!listener) return;
334
- document.removeEventListener('@corvid/ls-update', listener);
344
+ document.removeEventListener('@corvid/ls-update', listener.custom);
345
+ window.removeEventListener('storage', listener.storage);
335
346
  keyListeners.delete(cb);
336
347
  if (0 === keyListeners.size) listeners.delete(key);
337
348
  }
@@ -347,4 +358,4 @@ const local_storage = {
347
358
  unlisten,
348
359
  clear
349
360
  };
350
- export { clear, local_storage as default, get, getJSON, listen, set, setObj, unlisten, local_storage_update as update };
361
+ export { clear, local_storage as default, get, getJSON, listen, set, unlisten, local_storage_update as update };
package/dist/utils.js CHANGED
@@ -18,20 +18,36 @@ const clipboard = {
18
18
  if (!navigator.clipboard) throw new Error('Clipboard API not supported, or context is not https');
19
19
  },
20
20
  async copy (text) {
21
- this.check();
22
- await navigator.clipboard.writeText(text);
21
+ try {
22
+ this.check();
23
+ await navigator.clipboard.writeText(text);
24
+ } catch (e) {
25
+ throw e;
26
+ }
23
27
  },
24
28
  async copyArbitrary (data) {
25
- this.check();
26
- await navigator.clipboard.write(data);
29
+ try {
30
+ this.check();
31
+ await navigator.clipboard.write(data);
32
+ } catch (e) {
33
+ throw e;
34
+ }
27
35
  },
28
36
  async read () {
29
- this.check();
30
- return await navigator.clipboard.readText();
37
+ try {
38
+ this.check();
39
+ return await navigator.clipboard.readText();
40
+ } catch (e) {
41
+ throw e;
42
+ }
31
43
  },
32
44
  async readArbitrary () {
33
- this.check();
34
- return await navigator.clipboard.read();
45
+ try {
46
+ this.check();
47
+ return await navigator.clipboard.read();
48
+ } catch (e) {
49
+ throw e;
50
+ }
35
51
  },
36
52
  listen (query, cb) {
37
53
  let el;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taybart/corvid",
3
- "version": "0.1.26",
3
+ "version": "0.1.28",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {