varstor 0.6.6 → 0.6.62
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 +111 -58
- package/dist/varstor-webextension.js +441 -506
- package/dist/varstor-webextension.min.js +1 -1
- package/dist/varstor.js +380 -430
- package/dist/varstor.min.js +1 -1
- package/package.json +5 -1
- package/src/constants.ts +1 -0
- package/src/helpers.ts +88 -0
- package/src/index.ts +311 -0
- package/src/listeners.ts +74 -0
- package/src/storage.ts +37 -0
- package/src/types.d.ts +39 -0
- package/src/{validation.js → validation.ts} +11 -8
- package/src/{webextension-storage.js → webextension-storage.ts} +6 -6
- package/src/{webextension.js → webextension.ts} +5 -2
- package/tsconfig.json +28 -0
- package/webpack.config.js +16 -2
- package/src/helpers.js +0 -40
- package/src/index.js +0 -283
- package/src/namespace.js +0 -35
- package/src/storage.js +0 -31
|
@@ -11,436 +11,374 @@
|
|
|
11
11
|
return /******/ (() => { // webpackBootstrap
|
|
12
12
|
/******/ var __webpack_modules__ = ({
|
|
13
13
|
|
|
14
|
-
/***/ "./
|
|
15
|
-
|
|
16
|
-
!*** ./
|
|
17
|
-
|
|
18
|
-
(
|
|
19
|
-
|
|
20
|
-
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [module], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),
|
|
21
|
-
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
|
|
22
|
-
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
|
|
23
|
-
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else // removed by dead control flow
|
|
24
|
-
{ var c; }})("undefined"==typeof globalThis?"undefined"==typeof self?this:self:globalThis,function(a){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(!(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)){a.exports=(a=>{const b={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(b).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class c extends WeakMap{constructor(a,b=void 0){super(b),this.createItem=a}get(a){return this.has(a)||this.set(a,this.createItem(a)),super.get(a)}}const d=a=>a&&"object"==typeof a&&"function"==typeof a.then,e=(b,c)=>(...d)=>{a.runtime.lastError?b.reject(new Error(a.runtime.lastError.message)):c.singleCallbackArg||1>=d.length&&!1!==c.singleCallbackArg?b.resolve(d[0]):b.resolve(d)},f=a=>1==a?"argument":"arguments",g=(a,b)=>function(c,...d){if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((f,g)=>{if(b.fallbackToNoCallback)try{c[a](...d,e({resolve:f,reject:g},b))}catch(e){console.warn(`${a} API method doesn't seem to support the callback parameter, `+"falling back to call it without a callback: ",e),c[a](...d),b.fallbackToNoCallback=!1,b.noCallback=!0,f()}else b.noCallback?(c[a](...d),f()):c[a](...d,e({resolve:f,reject:g},b))})},h=(a,b,c)=>new Proxy(b,{apply(b,d,e){return c.call(d,a,...e)}});let i=Function.call.bind(Object.prototype.hasOwnProperty);const j=(a,b={},c={})=>{let d=Object.create(null),e=Object.create(a);return new Proxy(e,{has(b,c){return c in a||c in d},get(e,f){if(f in d)return d[f];if(!(f in a))return;let k=a[f];if("function"==typeof k){if("function"==typeof b[f])k=h(a,a[f],b[f]);else if(i(c,f)){let b=g(f,c[f]);k=h(a,a[f],b)}else k=k.bind(a);}else if("object"==typeof k&&null!==k&&(i(b,f)||i(c,f)))k=j(k,b[f],c[f]);else if(i(c,"*"))k=j(k,b[f],c["*"]);else return Object.defineProperty(d,f,{configurable:!0,enumerable:!0,get(){return a[f]},set(b){a[f]=b}}),k;return d[f]=k,k},set(b,c,e){return c in d?d[c]=e:a[c]=e,!0},defineProperty(a,b,c){return Reflect.defineProperty(d,b,c)},deleteProperty(a,b){return Reflect.deleteProperty(d,b)}})},k=a=>({addListener(b,c,...d){b.addListener(a.get(c),...d)},hasListener(b,c){return b.hasListener(a.get(c))},removeListener(b,c){b.removeListener(a.get(c))}}),l=new c(a=>"function"==typeof a?function(b){const c=j(b,{},{getContent:{minArgs:0,maxArgs:0}});a(c)}:a),m=new c(a=>"function"==typeof a?function(b,c,e){let f,g,h=!1,i=new Promise(a=>{f=function(b){h=!0,a(b)}});try{g=a(b,c,f)}catch(a){g=Promise.reject(a)}const j=!0!==g&&d(g);if(!0!==g&&!j&&!h)return!1;const k=a=>{a.then(a=>{e(a)},a=>{let b;b=a&&(a instanceof Error||"string"==typeof a.message)?a.message:"An unexpected error occurred",e({__mozWebExtensionPolyfillReject__:!0,message:b})}).catch(a=>{console.error("Failed to send onMessage rejected reply",a)})};return j?k(g):k(i),!0}:a),n=({reject:b,resolve:c},d)=>{a.runtime.lastError?a.runtime.lastError.message==="The message port closed before a response was received."?c():b(new Error(a.runtime.lastError.message)):d&&d.__mozWebExtensionPolyfillReject__?b(new Error(d.message)):c(d)},o=(a,b,c,...d)=>{if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((a,b)=>{const e=n.bind(null,{resolve:a,reject:b});d.push(e),c.sendMessage(...d)})},p={devtools:{network:{onRequestFinished:k(l)}},runtime:{onMessage:k(m),onMessageExternal:k(m),sendMessage:o.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:o.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},q={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return b.privacy={network:{"*":q},services:{"*":q},websites:{"*":q}},j(a,p,b)})(chrome)}else a.exports=globalThis.browser});
|
|
25
|
-
//# sourceMappingURL=browser-polyfill.min.js.map
|
|
26
|
-
|
|
27
|
-
// webextension-polyfill v.0.12.0 (https://github.com/mozilla/webextension-polyfill)
|
|
14
|
+
/***/ "./src/constants.ts"
|
|
15
|
+
/*!**************************!*\
|
|
16
|
+
!*** ./src/constants.ts ***!
|
|
17
|
+
\**************************/
|
|
18
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
28
19
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
"use strict";
|
|
21
|
+
__webpack_require__.r(__webpack_exports__);
|
|
22
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
23
|
+
/* harmony export */ NAMESPACE_DELIMITER: () => (/* binding */ NAMESPACE_DELIMITER)
|
|
24
|
+
/* harmony export */ });
|
|
25
|
+
const NAMESPACE_DELIMITER = "::";
|
|
32
26
|
|
|
33
27
|
|
|
34
28
|
/***/ },
|
|
35
29
|
|
|
36
|
-
/***/ "./src/helpers.
|
|
30
|
+
/***/ "./src/helpers.ts"
|
|
37
31
|
/*!************************!*\
|
|
38
|
-
!*** ./src/helpers.
|
|
32
|
+
!*** ./src/helpers.ts ***!
|
|
39
33
|
\************************/
|
|
40
34
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
41
35
|
|
|
42
36
|
"use strict";
|
|
43
37
|
__webpack_require__.r(__webpack_exports__);
|
|
44
38
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
45
|
-
/* harmony export */
|
|
39
|
+
/* harmony export */ filter: () => (/* binding */ filter),
|
|
40
|
+
/* harmony export */ forEach: () => (/* binding */ forEach),
|
|
46
41
|
/* harmony export */ getParamNames: () => (/* binding */ getParamNames),
|
|
47
42
|
/* harmony export */ isArray: () => (/* binding */ isArray),
|
|
48
43
|
/* harmony export */ isFunction: () => (/* binding */ isFunction),
|
|
49
44
|
/* harmony export */ isObject: () => (/* binding */ isObject),
|
|
50
45
|
/* harmony export */ isString: () => (/* binding */ isString),
|
|
51
|
-
/* harmony export */
|
|
46
|
+
/* harmony export */ map: () => (/* binding */ map),
|
|
47
|
+
/* harmony export */ recreateStructure: () => (/* binding */ recreateStructure)
|
|
52
48
|
/* harmony export */ });
|
|
53
|
-
const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;
|
|
54
|
-
const ARGUMENT_NAMES = /([^\s,]+)/g;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
function
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
49
|
+
const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;
|
|
50
|
+
const ARGUMENT_NAMES = /([^\s,]+)/g;
|
|
51
|
+
function isArray(obj) {
|
|
52
|
+
return getObjectType(obj) === "[object Array]";
|
|
53
|
+
}
|
|
54
|
+
function isString(obj) {
|
|
55
|
+
return getObjectType(obj) === "[object String]";
|
|
56
|
+
}
|
|
57
|
+
function isFunction(obj) {
|
|
58
|
+
return getObjectType(obj) === "[object Function]";
|
|
59
|
+
}
|
|
60
|
+
function isObject(obj) {
|
|
61
|
+
return getObjectType(obj) === "[object Object]";
|
|
62
|
+
}
|
|
63
|
+
function getObjectType(obj) {
|
|
64
|
+
return Object.prototype.toString.call(obj);
|
|
65
|
+
}
|
|
66
|
+
function getParamNames(fn) {
|
|
67
|
+
const fnStr = fn.toString().replace(STRIP_COMMENTS, "").split("=>")[0];
|
|
68
|
+
const names = fnStr
|
|
69
|
+
.slice(fnStr.indexOf("(") + 1, fnStr.indexOf(")"))
|
|
70
|
+
.match(ARGUMENT_NAMES);
|
|
71
|
+
if (names === null) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
return names;
|
|
75
|
+
}
|
|
76
|
+
function map(obj, cb) {
|
|
77
|
+
const res = Object.entries(obj).map(([k, v]) => cb(k, v));
|
|
78
|
+
if (res[0]?.length === 2) {
|
|
79
|
+
return Object.fromEntries(res);
|
|
80
|
+
}
|
|
81
|
+
return res;
|
|
82
|
+
}
|
|
83
|
+
function forEach(obj, cb) {
|
|
84
|
+
Object.entries(obj || {}).forEach(([k, v]) => cb(k, v));
|
|
85
|
+
}
|
|
86
|
+
function filter(obj, cb) {
|
|
87
|
+
return Object.fromEntries(Object.entries(obj || {}).filter(([k, v]) => cb(k, v) === true));
|
|
88
|
+
}
|
|
89
|
+
function recreateStructure(value) {
|
|
90
|
+
let newValue = value;
|
|
91
|
+
if (isArray(value)) {
|
|
92
|
+
newValue = [];
|
|
93
|
+
value.forEach((v) => newValue.push(recreateStructure(v)));
|
|
94
|
+
return newValue;
|
|
95
|
+
}
|
|
96
|
+
if (isObject(value)) {
|
|
97
|
+
newValue = {};
|
|
98
|
+
for (let key in value) {
|
|
99
|
+
newValue[key] = recreateStructure(value[key]);
|
|
100
|
+
}
|
|
101
|
+
return newValue;
|
|
102
|
+
}
|
|
103
|
+
return newValue;
|
|
104
|
+
}
|
|
93
105
|
|
|
94
106
|
|
|
95
107
|
/***/ },
|
|
96
108
|
|
|
97
|
-
/***/ "./src/index.
|
|
109
|
+
/***/ "./src/index.ts"
|
|
98
110
|
/*!**********************!*\
|
|
99
|
-
!*** ./src/index.
|
|
111
|
+
!*** ./src/index.ts ***!
|
|
100
112
|
\**********************/
|
|
101
113
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
102
114
|
|
|
103
115
|
"use strict";
|
|
104
116
|
__webpack_require__.r(__webpack_exports__);
|
|
105
117
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
106
|
-
/* harmony export */
|
|
107
|
-
/* harmony export */
|
|
118
|
+
/* harmony export */ STATE: () => (/* binding */ STATE),
|
|
119
|
+
/* harmony export */ createStore: () => (/* binding */ createStore),
|
|
120
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
121
|
+
/* harmony export */ getValues: () => (/* binding */ getValues)
|
|
108
122
|
/* harmony export */ });
|
|
109
|
-
/* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./storage */ "./src/storage.
|
|
110
|
-
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/helpers.
|
|
111
|
-
/* harmony import */ var
|
|
112
|
-
/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validation */ "./src/validation.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
function
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
} else {
|
|
297
|
-
for (const [k,v] of Object.entries(changes)) {
|
|
298
|
-
_validation__WEBPACK_IMPORTED_MODULE_3__.isValid.Setting(namespace(k));
|
|
299
|
-
ACCESSORS[namespace(k)].set(v);
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
return createStore(namespace());
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
function resetAllState (namespace) {
|
|
307
|
-
Object.entries(ACCESSORS)
|
|
308
|
-
.filter(([k]) => k.startsWith(namespace()))
|
|
309
|
-
.forEach((k, { reset }) => reset());
|
|
310
|
-
|
|
311
|
-
return createStore(namespace());
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
function addStateLitener (namespace, observables, cb) {
|
|
315
|
-
observables.forEach((key) => ACCESSORS[namespace(key)].onChange(cb));
|
|
316
|
-
|
|
317
|
-
return createStore(namespace());
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
function removeStateListener(namespace, observables, cb) {
|
|
321
|
-
observables.forEach((key) =>
|
|
322
|
-
ACCESSORS[namespace(key)].removeListener(cb),
|
|
323
|
-
);
|
|
324
|
-
|
|
325
|
-
return createStore(namespace());
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
function recreateStructure (value) {
|
|
329
|
-
let newValue = value;
|
|
330
|
-
|
|
331
|
-
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(value)) {
|
|
332
|
-
newValue = [];
|
|
333
|
-
value.forEach((v) => newValue.push(recreateStructure(v)));
|
|
334
|
-
return newValue;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(value)) {
|
|
338
|
-
newValue = {};
|
|
339
|
-
for (let key in value) {
|
|
340
|
-
newValue[key] = recreateStructure(value[key]);
|
|
341
|
-
}
|
|
342
|
-
return newValue;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
return newValue;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
function main () {
|
|
349
|
-
const arg1 = arguments[1];
|
|
350
|
-
|
|
351
|
-
if (!arg1 || (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(arg1) || (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arg1)) {
|
|
352
|
-
return getState.apply(null, arguments);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
if (Array.isArray(arg1)) {
|
|
356
|
-
return addStateLitener.apply(null, arguments);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(arg1)) {
|
|
360
|
-
return setState.apply(null, arguments);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
function setStorageUtils(storageUtils) {
|
|
365
|
-
Object.assign(STORAGE, storageUtils);
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
function createStore (_namespace) {
|
|
369
|
-
const namespace = (key) => (0,_namespace__WEBPACK_IMPORTED_MODULE_2__.addNamespace)(_namespace, key);
|
|
370
|
-
|
|
371
|
-
return Object.assign(main.bind(null, namespace), {
|
|
372
|
-
add: (state) => addState(namespace, state, false),
|
|
373
|
-
addPersistent: (state) => addState(namespace, state, true),
|
|
374
|
-
get: (arg) => getState(namespace, arg),
|
|
375
|
-
set: (changes) => setState(namespace, changes),
|
|
376
|
-
resetAll: () => resetAllState(namespace),
|
|
377
|
-
onChange: (keys, cb) => addStateLitener(namespace, keys, cb),
|
|
378
|
-
removeListener: (keys, cb) => removeStateListener(namespace, keys, cb),
|
|
379
|
-
setStorageUtils,
|
|
380
|
-
onStateChange,
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createStore(""));
|
|
123
|
+
/* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./storage */ "./src/storage.ts");
|
|
124
|
+
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
|
|
125
|
+
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
|
|
126
|
+
/* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validation */ "./src/validation.ts");
|
|
127
|
+
/* harmony import */ var _listeners__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./listeners */ "./src/listeners.ts");
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
const STATE = {};
|
|
134
|
+
const STORAGE = {};
|
|
135
|
+
setStorageUtils(_storage__WEBPACK_IMPORTED_MODULE_0__["default"]);
|
|
136
|
+
async function addState(namespace, initialState, isPersistent) {
|
|
137
|
+
const storageType = STORAGE.GET_TYPE(isPersistent);
|
|
138
|
+
const defaultValues = Object.assign({}, initialState);
|
|
139
|
+
const values = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(initialState, (k, v) => [namespace(k), v]);
|
|
140
|
+
if (STORAGE.IS_AVAILABE(storageType)) {
|
|
141
|
+
await STORAGE.UPDATE_STATE(values, storageType);
|
|
142
|
+
}
|
|
143
|
+
if (!_listeners__WEBPACK_IMPORTED_MODULE_4__.LISTENERS[namespace()]) {
|
|
144
|
+
_listeners__WEBPACK_IMPORTED_MODULE_4__.LISTENERS[namespace()] = [];
|
|
145
|
+
}
|
|
146
|
+
for (const key in initialState) {
|
|
147
|
+
const fullKey = namespace(key);
|
|
148
|
+
_validation__WEBPACK_IMPORTED_MODULE_3__.isValid.Defining(fullKey);
|
|
149
|
+
STATE[fullKey] = setupValue(key, namespace, values[fullKey], defaultValues[key], storageType);
|
|
150
|
+
}
|
|
151
|
+
return createStore(namespace());
|
|
152
|
+
}
|
|
153
|
+
function setupValue(key, namespace, value, defaultValue, storageType) {
|
|
154
|
+
const fullKey = namespace(key);
|
|
155
|
+
const isComputedValue = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(value);
|
|
156
|
+
const dependencies = isComputedValue
|
|
157
|
+
? (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getParamNames)(value)
|
|
158
|
+
: [];
|
|
159
|
+
dependencies.forEach((dependency) => {
|
|
160
|
+
const fullDependencyKey = namespace(dependency);
|
|
161
|
+
if (!STATE[fullDependencyKey]) {
|
|
162
|
+
STATE[fullDependencyKey] = {
|
|
163
|
+
dependants: [],
|
|
164
|
+
dependencies: [],
|
|
165
|
+
namespace,
|
|
166
|
+
storageType,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
STATE[fullDependencyKey].dependants?.push(fullKey);
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
key,
|
|
173
|
+
fullKey,
|
|
174
|
+
value: isComputedValue
|
|
175
|
+
? value.apply(null, getArguments(dependencies, namespace))
|
|
176
|
+
: value,
|
|
177
|
+
computeFn: isComputedValue && value,
|
|
178
|
+
dependencies,
|
|
179
|
+
dependants: [],
|
|
180
|
+
listeners: [],
|
|
181
|
+
defaultValue,
|
|
182
|
+
storageType,
|
|
183
|
+
namespace,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function getNamespaceState(namespace) {
|
|
187
|
+
return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(STATE, (k, { key }) => k === namespace(key));
|
|
188
|
+
}
|
|
189
|
+
function getValues(namespace) {
|
|
190
|
+
return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(getNamespaceState(namespace), (k, { key, value }) => [
|
|
191
|
+
key,
|
|
192
|
+
value,
|
|
193
|
+
]);
|
|
194
|
+
}
|
|
195
|
+
function getArguments(dependencies, namespace) {
|
|
196
|
+
const values = getValues(namespace);
|
|
197
|
+
return dependencies.map((name) => values[name]);
|
|
198
|
+
}
|
|
199
|
+
async function onStateChange(changes) {
|
|
200
|
+
const realChanges = {};
|
|
201
|
+
for (const key in changes) {
|
|
202
|
+
const prevValue = STATE[key].value;
|
|
203
|
+
const newValue = changes[key].newValue;
|
|
204
|
+
if (prevValue !== newValue) {
|
|
205
|
+
realChanges[key] = { newValue, prevValue };
|
|
206
|
+
STATE[key].value = newValue;
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
realChanges[key] = { isSame: true };
|
|
210
|
+
}
|
|
211
|
+
updateDependencies(key, changes, realChanges);
|
|
212
|
+
}
|
|
213
|
+
await (0,_listeners__WEBPACK_IMPORTED_MODULE_4__.runStateChangeListeners)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(realChanges, (k, v) => !v.isSame));
|
|
214
|
+
}
|
|
215
|
+
function updateDependencies(key, changes, realChanges) {
|
|
216
|
+
STATE[key].dependants?.forEach((name) => {
|
|
217
|
+
const { dependencies, namespace } = STATE[name];
|
|
218
|
+
if (!isEveryDependencyReady(dependencies, namespace, Object.keys(changes), Object.keys(realChanges)) ||
|
|
219
|
+
realChanges[name]) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const prevValue = STATE[name].value;
|
|
223
|
+
const newValue = STATE[name].computeFn?.apply(null, getArguments(dependencies, namespace));
|
|
224
|
+
if (prevValue !== newValue) {
|
|
225
|
+
realChanges[name] = { newValue, prevValue };
|
|
226
|
+
STATE[name].value = newValue;
|
|
227
|
+
updateDependencies(name, changes, realChanges);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
function isEveryDependencyReady(dependencies, namespace, changesKeys, realChangesKeys) {
|
|
232
|
+
return dependencies.every((name) => {
|
|
233
|
+
const fullKey = namespace(name);
|
|
234
|
+
return ((changesKeys.includes(fullKey) && realChangesKeys.includes(fullKey)) ||
|
|
235
|
+
!changesKeys.includes(fullKey));
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
function getState(namespace, arg) {
|
|
239
|
+
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arg)) {
|
|
240
|
+
return createStore(arg);
|
|
241
|
+
}
|
|
242
|
+
return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.recreateStructure)(getValues(namespace));
|
|
243
|
+
}
|
|
244
|
+
async function setState(namespace, changes) {
|
|
245
|
+
const storageChanges = {};
|
|
246
|
+
(0,_helpers__WEBPACK_IMPORTED_MODULE_1__.forEach)(changes, (k, v) => {
|
|
247
|
+
const fullKey = namespace(k);
|
|
248
|
+
const { storageType, computeFn } = STATE[fullKey];
|
|
249
|
+
if (computeFn) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
if (!storageChanges[storageType]) {
|
|
253
|
+
storageChanges[storageType] = {};
|
|
254
|
+
}
|
|
255
|
+
storageChanges[storageType][fullKey] = v;
|
|
256
|
+
});
|
|
257
|
+
for (let [storageType, changes] of Object.entries(storageChanges)) {
|
|
258
|
+
await setValues(storageType, changes);
|
|
259
|
+
}
|
|
260
|
+
return createStore(namespace());
|
|
261
|
+
}
|
|
262
|
+
async function setValues(storageType, changes) {
|
|
263
|
+
if (STORAGE.IS_AVAILABE(storageType)) {
|
|
264
|
+
const isAutoUpdate = await STORAGE.SET_VALUES(storageType, changes);
|
|
265
|
+
if (isAutoUpdate) {
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
onStateChange((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(changes, (k, newValue) => [k, { newValue }]));
|
|
270
|
+
}
|
|
271
|
+
async function resetState(namespace, keys) {
|
|
272
|
+
const namespaceState = getNamespaceState(namespace);
|
|
273
|
+
await setState(namespace, (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(keys
|
|
274
|
+
? (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(namespaceState, (k, { key }) => keys.includes(key))
|
|
275
|
+
: namespaceState, (k, { key, defaultValue }) => [key, defaultValue]));
|
|
276
|
+
return createStore(namespace());
|
|
277
|
+
}
|
|
278
|
+
function main(namespace) {
|
|
279
|
+
if (!arguments[1] || (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arguments[1])) {
|
|
280
|
+
return getState.apply(null, arguments);
|
|
281
|
+
}
|
|
282
|
+
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(arguments[1])) {
|
|
283
|
+
return _listeners__WEBPACK_IMPORTED_MODULE_4__.addStateListener.apply(null, arguments);
|
|
284
|
+
}
|
|
285
|
+
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(arguments[1])) {
|
|
286
|
+
return setState.apply(null, arguments);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
function setStorageUtils(storageUtils) {
|
|
290
|
+
Object.assign(STORAGE, storageUtils);
|
|
291
|
+
}
|
|
292
|
+
function addNamespace(namespace, str) {
|
|
293
|
+
return `${namespace}${((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(str) && _constants__WEBPACK_IMPORTED_MODULE_2__.NAMESPACE_DELIMITER) || ""}${str || ""}`;
|
|
294
|
+
}
|
|
295
|
+
function createStore(_namespace) {
|
|
296
|
+
const namespace = ((key) => addNamespace(_namespace, key));
|
|
297
|
+
return Object.assign(main.bind(null, namespace), {
|
|
298
|
+
add: (state) => addState(namespace, state, false),
|
|
299
|
+
addPersistent: (state) => addState(namespace, state, true),
|
|
300
|
+
get: (newNamespace) => getState(namespace, newNamespace),
|
|
301
|
+
set: async (changes) => await setState(namespace, changes),
|
|
302
|
+
reset: (keys) => resetState(namespace, keys),
|
|
303
|
+
onChange: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_4__.addStateListener)(namespace, keys, cb),
|
|
304
|
+
removeListener: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_4__.removeStateListener)(namespace, keys, cb),
|
|
305
|
+
setStorageUtils,
|
|
306
|
+
onStateChange,
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createStore(""));
|
|
385
310
|
|
|
386
311
|
|
|
387
312
|
/***/ },
|
|
388
313
|
|
|
389
|
-
/***/ "./src/
|
|
314
|
+
/***/ "./src/listeners.ts"
|
|
390
315
|
/*!**************************!*\
|
|
391
|
-
!*** ./src/
|
|
316
|
+
!*** ./src/listeners.ts ***!
|
|
392
317
|
\**************************/
|
|
393
318
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
394
319
|
|
|
395
320
|
"use strict";
|
|
396
321
|
__webpack_require__.r(__webpack_exports__);
|
|
397
322
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
398
|
-
/* harmony export */
|
|
399
|
-
/* harmony export */
|
|
400
|
-
/* harmony export */
|
|
401
|
-
/* harmony export */
|
|
323
|
+
/* harmony export */ LISTENERS: () => (/* binding */ LISTENERS),
|
|
324
|
+
/* harmony export */ addStateListener: () => (/* binding */ addStateListener),
|
|
325
|
+
/* harmony export */ removeStateListener: () => (/* binding */ removeStateListener),
|
|
326
|
+
/* harmony export */ runStateChangeListeners: () => (/* binding */ runStateChangeListeners)
|
|
402
327
|
/* harmony export */ });
|
|
403
|
-
/* harmony import */ var
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
328
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
|
|
329
|
+
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
|
|
330
|
+
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
const LISTENERS = {};
|
|
335
|
+
async function runStateChangeListeners(realChanges) {
|
|
336
|
+
if (Object.keys(realChanges).length) {
|
|
337
|
+
const { namespace } = ___WEBPACK_IMPORTED_MODULE_0__.STATE[Object.keys(realChanges)[0]];
|
|
338
|
+
const stateValues = (0,___WEBPACK_IMPORTED_MODULE_0__.getValues)(namespace);
|
|
339
|
+
for (let [changeKey, change] of Object.entries(realChanges)) {
|
|
340
|
+
const { listeners, key } = ___WEBPACK_IMPORTED_MODULE_0__.STATE[changeKey];
|
|
341
|
+
for (const cb of listeners) {
|
|
342
|
+
await cb([key], stateValues, change);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const readableKeys = (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(realChanges, (k) => k.slice(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER.length));
|
|
346
|
+
for (const cb of LISTENERS[namespace()]) {
|
|
347
|
+
await cb(readableKeys, stateValues, (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(realChanges, (k, v) => [
|
|
348
|
+
k.slice(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER.length),
|
|
349
|
+
v,
|
|
350
|
+
]));
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
function addStateListener(namespace, observables, cb) {
|
|
355
|
+
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observables)) {
|
|
356
|
+
LISTENERS[namespace()].push(observables);
|
|
357
|
+
return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
|
|
358
|
+
}
|
|
359
|
+
observables.forEach((key) => ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(key)].listeners?.push(cb));
|
|
360
|
+
return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
|
|
361
|
+
}
|
|
362
|
+
function removeStateListener(namespace, observables, removeCb) {
|
|
363
|
+
if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observables)) {
|
|
364
|
+
const removeIdx = LISTENERS[namespace()].findIndex((cb) => cb === observables);
|
|
365
|
+
LISTENERS[namespace()].splice(removeIdx, 1);
|
|
366
|
+
return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
|
|
367
|
+
}
|
|
368
|
+
observables.forEach((key) => {
|
|
369
|
+
const listeners = ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(key)].listeners;
|
|
370
|
+
const removeIdx = listeners?.findIndex((cb) => cb === removeCb);
|
|
371
|
+
listeners?.splice(removeIdx, 1);
|
|
372
|
+
});
|
|
373
|
+
return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
|
|
374
|
+
}
|
|
437
375
|
|
|
438
376
|
|
|
439
377
|
/***/ },
|
|
440
378
|
|
|
441
|
-
/***/ "./src/storage.
|
|
379
|
+
/***/ "./src/storage.ts"
|
|
442
380
|
/*!************************!*\
|
|
443
|
-
!*** ./src/storage.
|
|
381
|
+
!*** ./src/storage.ts ***!
|
|
444
382
|
\************************/
|
|
445
383
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
446
384
|
|
|
@@ -449,44 +387,41 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
449
387
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
450
388
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
451
389
|
/* harmony export */ });
|
|
452
|
-
function updateFromLocalStorage(state) {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
function
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
UPDATE_STATE: updateFromLocalStorage,
|
|
481
|
-
SET_VALUE: setStorageValue,
|
|
482
|
-
});
|
|
390
|
+
async function updateFromLocalStorage(state) {
|
|
391
|
+
const stored = {};
|
|
392
|
+
for (const key in state) {
|
|
393
|
+
const value = localStorage.getItem(key);
|
|
394
|
+
if (value !== null) {
|
|
395
|
+
stored[key] = value;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return Object.assign(state, stored);
|
|
399
|
+
}
|
|
400
|
+
function getStorageType(isPersistent) {
|
|
401
|
+
return isPersistent ? "localStorage" : "";
|
|
402
|
+
}
|
|
403
|
+
function isStorageAvailable(storageType) {
|
|
404
|
+
return !!storageType;
|
|
405
|
+
}
|
|
406
|
+
async function setStorageValue(storageType, changes) {
|
|
407
|
+
for (let [k, v] of Object.entries(changes)) {
|
|
408
|
+
localStorage.setItem(k, v);
|
|
409
|
+
}
|
|
410
|
+
return false;
|
|
411
|
+
}
|
|
412
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
|
413
|
+
GET_TYPE: getStorageType,
|
|
414
|
+
IS_AVAILABE: isStorageAvailable,
|
|
415
|
+
UPDATE_STATE: updateFromLocalStorage,
|
|
416
|
+
SET_VALUES: setStorageValue,
|
|
417
|
+
});
|
|
483
418
|
|
|
484
419
|
|
|
485
420
|
/***/ },
|
|
486
421
|
|
|
487
|
-
/***/ "./src/validation.
|
|
422
|
+
/***/ "./src/validation.ts"
|
|
488
423
|
/*!***************************!*\
|
|
489
|
-
!*** ./src/validation.
|
|
424
|
+
!*** ./src/validation.ts ***!
|
|
490
425
|
\***************************/
|
|
491
426
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
492
427
|
|
|
@@ -495,43 +430,37 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
495
430
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
496
431
|
/* harmony export */ isValid: () => (/* binding */ isValid)
|
|
497
432
|
/* harmony export */ });
|
|
498
|
-
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.
|
|
499
|
-
/* harmony import */ var
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
return true;
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
};
|
|
433
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
|
|
434
|
+
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
function splitFullKey(fullKey) {
|
|
438
|
+
const segments = fullKey.split(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER);
|
|
439
|
+
return [segments.slice(-1)[0], segments.join(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER)];
|
|
440
|
+
}
|
|
441
|
+
const isValid = {
|
|
442
|
+
Setting: (fullKey) => {
|
|
443
|
+
if (!___WEBPACK_IMPORTED_MODULE_0__.STATE[fullKey]) {
|
|
444
|
+
const [key, namespace] = splitFullKey(fullKey);
|
|
445
|
+
throw new Error(`Setting "${key}" key in "${namespace}" namespace. DOES NOT EXIST`);
|
|
446
|
+
}
|
|
447
|
+
return true;
|
|
448
|
+
},
|
|
449
|
+
Defining: (fullKey) => {
|
|
450
|
+
if (___WEBPACK_IMPORTED_MODULE_0__.STATE[fullKey]) {
|
|
451
|
+
const [key, namespace] = splitFullKey(fullKey);
|
|
452
|
+
throw new Error(`Redefining "${key}" key in "${namespace}" namespace. ALREADY DEFINED`);
|
|
453
|
+
}
|
|
454
|
+
return true;
|
|
455
|
+
},
|
|
456
|
+
};
|
|
528
457
|
|
|
529
458
|
|
|
530
459
|
/***/ },
|
|
531
460
|
|
|
532
|
-
/***/ "./src/webextension-storage.
|
|
461
|
+
/***/ "./src/webextension-storage.ts"
|
|
533
462
|
/*!*************************************!*\
|
|
534
|
-
!*** ./src/webextension-storage.
|
|
463
|
+
!*** ./src/webextension-storage.ts ***!
|
|
535
464
|
\*************************************/
|
|
536
465
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
537
466
|
|
|
@@ -542,45 +471,56 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
542
471
|
/* harmony export */ isBackgroundScript: () => (/* binding */ isBackgroundScript),
|
|
543
472
|
/* harmony export */ isSessionStorageSupport: () => (/* binding */ isSessionStorageSupport)
|
|
544
473
|
/* harmony export */ });
|
|
545
|
-
const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
function
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
}
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
474
|
+
const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
|
|
475
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
|
476
|
+
GET_TYPE: getStorageType,
|
|
477
|
+
IS_AVAILABE: isStorageAvailable,
|
|
478
|
+
UPDATE_STATE: updateStateFromStorage,
|
|
479
|
+
SET_VALUES: setStorageValue,
|
|
480
|
+
});
|
|
481
|
+
function getStorageType(isPersistent) {
|
|
482
|
+
return (isBackgroundScript() && isPersistent && "local") || "session";
|
|
483
|
+
}
|
|
484
|
+
function isStorageAvailable(storageType) {
|
|
485
|
+
return (storageType === "local" ||
|
|
486
|
+
(storageType === "session" && isSessionStorageSupport()));
|
|
487
|
+
}
|
|
488
|
+
async function updateStateFromStorage(state, type) {
|
|
489
|
+
return Object.assign(state, await browser.storage[type].get());
|
|
490
|
+
}
|
|
491
|
+
async function setStorageValue(type, changes) {
|
|
492
|
+
await browser.storage[type].set(changes);
|
|
493
|
+
return true;
|
|
494
|
+
}
|
|
495
|
+
function isSessionStorageSupport() {
|
|
496
|
+
return !!browser.storage.session;
|
|
497
|
+
}
|
|
498
|
+
function isBackgroundScript() {
|
|
499
|
+
return (window.location.protocol === "chrome-extension:" ||
|
|
500
|
+
window.location.protocol === "moz-extension:");
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
/***/ },
|
|
505
|
+
|
|
506
|
+
/***/ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js"
|
|
507
|
+
/*!*************************************************************************!*\
|
|
508
|
+
!*** ./node_modules/webextension-polyfill/dist/browser-polyfill.min.js ***!
|
|
509
|
+
\*************************************************************************/
|
|
510
|
+
(module, exports) {
|
|
511
|
+
|
|
512
|
+
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [module], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),
|
|
513
|
+
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
|
|
514
|
+
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
|
|
515
|
+
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else // removed by dead control flow
|
|
516
|
+
{ var c; }})("undefined"==typeof globalThis?"undefined"==typeof self?this:self:globalThis,function(a){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(!(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)){a.exports=(a=>{const b={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(b).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class c extends WeakMap{constructor(a,b=void 0){super(b),this.createItem=a}get(a){return this.has(a)||this.set(a,this.createItem(a)),super.get(a)}}const d=a=>a&&"object"==typeof a&&"function"==typeof a.then,e=(b,c)=>(...d)=>{a.runtime.lastError?b.reject(new Error(a.runtime.lastError.message)):c.singleCallbackArg||1>=d.length&&!1!==c.singleCallbackArg?b.resolve(d[0]):b.resolve(d)},f=a=>1==a?"argument":"arguments",g=(a,b)=>function(c,...d){if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((f,g)=>{if(b.fallbackToNoCallback)try{c[a](...d,e({resolve:f,reject:g},b))}catch(e){console.warn(`${a} API method doesn't seem to support the callback parameter, `+"falling back to call it without a callback: ",e),c[a](...d),b.fallbackToNoCallback=!1,b.noCallback=!0,f()}else b.noCallback?(c[a](...d),f()):c[a](...d,e({resolve:f,reject:g},b))})},h=(a,b,c)=>new Proxy(b,{apply(b,d,e){return c.call(d,a,...e)}});let i=Function.call.bind(Object.prototype.hasOwnProperty);const j=(a,b={},c={})=>{let d=Object.create(null),e=Object.create(a);return new Proxy(e,{has(b,c){return c in a||c in d},get(e,f){if(f in d)return d[f];if(!(f in a))return;let k=a[f];if("function"==typeof k){if("function"==typeof b[f])k=h(a,a[f],b[f]);else if(i(c,f)){let b=g(f,c[f]);k=h(a,a[f],b)}else k=k.bind(a);}else if("object"==typeof k&&null!==k&&(i(b,f)||i(c,f)))k=j(k,b[f],c[f]);else if(i(c,"*"))k=j(k,b[f],c["*"]);else return Object.defineProperty(d,f,{configurable:!0,enumerable:!0,get(){return a[f]},set(b){a[f]=b}}),k;return d[f]=k,k},set(b,c,e){return c in d?d[c]=e:a[c]=e,!0},defineProperty(a,b,c){return Reflect.defineProperty(d,b,c)},deleteProperty(a,b){return Reflect.deleteProperty(d,b)}})},k=a=>({addListener(b,c,...d){b.addListener(a.get(c),...d)},hasListener(b,c){return b.hasListener(a.get(c))},removeListener(b,c){b.removeListener(a.get(c))}}),l=new c(a=>"function"==typeof a?function(b){const c=j(b,{},{getContent:{minArgs:0,maxArgs:0}});a(c)}:a),m=new c(a=>"function"==typeof a?function(b,c,e){let f,g,h=!1,i=new Promise(a=>{f=function(b){h=!0,a(b)}});try{g=a(b,c,f)}catch(a){g=Promise.reject(a)}const j=!0!==g&&d(g);if(!0!==g&&!j&&!h)return!1;const k=a=>{a.then(a=>{e(a)},a=>{let b;b=a&&(a instanceof Error||"string"==typeof a.message)?a.message:"An unexpected error occurred",e({__mozWebExtensionPolyfillReject__:!0,message:b})}).catch(a=>{console.error("Failed to send onMessage rejected reply",a)})};return j?k(g):k(i),!0}:a),n=({reject:b,resolve:c},d)=>{a.runtime.lastError?a.runtime.lastError.message==="The message port closed before a response was received."?c():b(new Error(a.runtime.lastError.message)):d&&d.__mozWebExtensionPolyfillReject__?b(new Error(d.message)):c(d)},o=(a,b,c,...d)=>{if(d.length<b.minArgs)throw new Error(`Expected at least ${b.minArgs} ${f(b.minArgs)} for ${a}(), got ${d.length}`);if(d.length>b.maxArgs)throw new Error(`Expected at most ${b.maxArgs} ${f(b.maxArgs)} for ${a}(), got ${d.length}`);return new Promise((a,b)=>{const e=n.bind(null,{resolve:a,reject:b});d.push(e),c.sendMessage(...d)})},p={devtools:{network:{onRequestFinished:k(l)}},runtime:{onMessage:k(m),onMessageExternal:k(m),sendMessage:o.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:o.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},q={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return b.privacy={network:{"*":q},services:{"*":q},websites:{"*":q}},j(a,p,b)})(chrome)}else a.exports=globalThis.browser});
|
|
517
|
+
//# sourceMappingURL=browser-polyfill.min.js.map
|
|
518
|
+
|
|
519
|
+
// webextension-polyfill v.0.12.0 (https://github.com/mozilla/webextension-polyfill)
|
|
520
|
+
|
|
521
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
522
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
523
|
+
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
584
524
|
|
|
585
525
|
|
|
586
526
|
/***/ }
|
|
@@ -667,30 +607,25 @@ let __webpack_exports__ = {};
|
|
|
667
607
|
(() => {
|
|
668
608
|
"use strict";
|
|
669
609
|
/*!*****************************!*\
|
|
670
|
-
!*** ./src/webextension.
|
|
610
|
+
!*** ./src/webextension.ts ***!
|
|
671
611
|
\*****************************/
|
|
672
612
|
__webpack_require__.r(__webpack_exports__);
|
|
673
613
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
674
614
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
675
615
|
/* harmony export */ });
|
|
676
|
-
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.
|
|
677
|
-
/* harmony import */ var _webextension_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webextension-storage */ "./src/webextension-storage.
|
|
678
|
-
const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
setStorageUtils(_webextension_storage__WEBPACK_IMPORTED_MODULE_1__["default"]);
|
|
692
|
-
|
|
693
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___WEBPACK_IMPORTED_MODULE_0__["default"]);
|
|
616
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
|
|
617
|
+
/* harmony import */ var _webextension_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webextension-storage */ "./src/webextension-storage.ts");
|
|
618
|
+
const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
const { onStateChange, setStorageUtils } = ___WEBPACK_IMPORTED_MODULE_0__["default"];
|
|
622
|
+
if ((0,_webextension_storage__WEBPACK_IMPORTED_MODULE_1__.isBackgroundScript)()) {
|
|
623
|
+
browser.storage.local.onChanged.addListener(onStateChange);
|
|
624
|
+
(0,_webextension_storage__WEBPACK_IMPORTED_MODULE_1__.isSessionStorageSupport)() &&
|
|
625
|
+
browser.storage.session.onChanged.addListener(onStateChange);
|
|
626
|
+
}
|
|
627
|
+
setStorageUtils(_webextension_storage__WEBPACK_IMPORTED_MODULE_1__["default"]);
|
|
628
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___WEBPACK_IMPORTED_MODULE_0__["default"]);
|
|
694
629
|
|
|
695
630
|
})();
|
|
696
631
|
|