@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 +64 -38
- package/dist/local_storage.d.ts +0 -1
- package/dist/ls.js +41 -30
- package/dist/utils.js +24 -8
- package/package.json +1 -1
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
|
-
|
|
172
|
-
|
|
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
|
-
|
|
176
|
-
|
|
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
|
-
|
|
180
|
-
|
|
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
|
-
|
|
184
|
-
|
|
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
|
-
|
|
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
|
|
760
|
-
|
|
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 (
|
|
783
|
+
if (storageEv.key === key) cb.content(value);
|
|
763
784
|
return;
|
|
764
785
|
}
|
|
765
786
|
cb({
|
|
766
|
-
key:
|
|
767
|
-
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,
|
|
773
|
-
|
|
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
|
}
|
package/dist/local_storage.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
314
|
-
|
|
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 (
|
|
322
|
+
if (storageEv.key === key) cb.content(value);
|
|
317
323
|
return;
|
|
318
324
|
}
|
|
319
325
|
cb({
|
|
320
|
-
key:
|
|
321
|
-
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,
|
|
327
|
-
|
|
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,
|
|
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
|
-
|
|
22
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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
|
-
|
|
30
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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;
|