varstor 0.6.61 → 0.6.63

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.
@@ -11,436 +11,414 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js"
15
- /*!*************************************************************************!*\
16
- !*** ./node_modules/webextension-polyfill/dist/browser-polyfill.min.js ***!
17
- \*************************************************************************/
18
- (module, exports) {
14
+ /***/ "./src/actions.ts"
15
+ /*!************************!*\
16
+ !*** ./src/actions.ts ***!
17
+ \************************/
18
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
19
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
20
+ "use strict";
21
+ __webpack_require__.r(__webpack_exports__);
22
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
23
+ /* harmony export */ addStateActions: () => (/* binding */ addStateActions)
24
+ /* harmony export */ });
25
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
26
+
27
+ function addStateActions(namespace, actions) {
28
+ const stateAcessor = {
29
+ get: ___WEBPACK_IMPORTED_MODULE_0__.getState.bind(null, namespace),
30
+ set: ___WEBPACK_IMPORTED_MODULE_0__.setState.bind(null, namespace),
31
+ reset: ___WEBPACK_IMPORTED_MODULE_0__.resetState.bind(null, namespace),
32
+ };
33
+ for (let [actionName, actionFn] of Object.entries(actions)) {
34
+ ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(actionName)] = {
35
+ key: actionName,
36
+ namespace,
37
+ value: actionFn.bind(null, stateAcessor),
38
+ isAction: true,
39
+ listeners: [],
40
+ };
41
+ }
42
+ }
26
43
 
27
- // webextension-polyfill v.0.12.0 (https://github.com/mozilla/webextension-polyfill)
28
44
 
29
- /* This Source Code Form is subject to the terms of the Mozilla Public
30
- * License, v. 2.0. If a copy of the MPL was not distributed with this
31
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
45
+ /***/ },
46
+
47
+ /***/ "./src/constants.ts"
48
+ /*!**************************!*\
49
+ !*** ./src/constants.ts ***!
50
+ \**************************/
51
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
52
+
53
+ "use strict";
54
+ __webpack_require__.r(__webpack_exports__);
55
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
56
+ /* harmony export */ NAMESPACE_DELIMITER: () => (/* binding */ NAMESPACE_DELIMITER)
57
+ /* harmony export */ });
58
+ const NAMESPACE_DELIMITER = "::";
32
59
 
33
60
 
34
61
  /***/ },
35
62
 
36
- /***/ "./src/helpers.js"
63
+ /***/ "./src/helpers.ts"
37
64
  /*!************************!*\
38
- !*** ./src/helpers.js ***!
65
+ !*** ./src/helpers.ts ***!
39
66
  \************************/
40
67
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
41
68
 
42
69
  "use strict";
43
70
  __webpack_require__.r(__webpack_exports__);
44
71
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
45
- /* harmony export */ getKeys: () => (/* binding */ getKeys),
72
+ /* harmony export */ filter: () => (/* binding */ filter),
73
+ /* harmony export */ forEach: () => (/* binding */ forEach),
46
74
  /* harmony export */ getParamNames: () => (/* binding */ getParamNames),
47
75
  /* harmony export */ isArray: () => (/* binding */ isArray),
48
76
  /* harmony export */ isFunction: () => (/* binding */ isFunction),
49
77
  /* harmony export */ isObject: () => (/* binding */ isObject),
50
78
  /* harmony export */ isString: () => (/* binding */ isString),
51
- /* harmony export */ toCamelCase: () => (/* binding */ toCamelCase)
79
+ /* harmony export */ map: () => (/* binding */ map),
80
+ /* harmony export */ recreateStructure: () => (/* binding */ recreateStructure)
52
81
  /* harmony export */ });
53
- const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;
54
- const ARGUMENT_NAMES = /([^\s,]+)/g;
55
-
56
- function isFunction(x) {
57
- return typeof x === "function";
58
- }
59
-
60
- function isObject(x) {
61
- return Object.prototype.toString.call(x) === "[object Object]";
62
- }
63
-
64
- function isString(x) {
65
- return typeof x === "string";
66
- }
67
-
68
- function isArray(x) {
69
- return Array.isArray(x);
70
- }
71
-
72
- function getParamNames(fn) {
73
- const fnStr = fn.toString().replace(STRIP_COMMENTS, "").split("=>")[0];
74
- const names = fnStr
75
- .slice(fnStr.indexOf("(") + 1, fnStr.indexOf(")"))
76
- .match(ARGUMENT_NAMES);
77
-
78
- if (names === null) {
79
- return [];
80
- }
81
-
82
- return names;
83
- }
84
-
85
- function getKeys(obj, key) {
86
- return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, v[key]]));
87
- }
88
-
89
- function toCamelCase(str, delimiter) {
90
- const strArr = str.split(delimiter);
91
- return `${strArr[0]}${strArr.slice(1).reduce((a, c) => `${a}${c.charAt(0).toUpperCase()}${c.slice(1)}`, "")}`;
92
- }
82
+ const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;
83
+ const ARGUMENT_NAMES = /([^\s,]+)/g;
84
+ function isArray(obj) {
85
+ return getObjectType(obj) === "[object Array]";
86
+ }
87
+ function isString(obj) {
88
+ return getObjectType(obj) === "[object String]";
89
+ }
90
+ function isFunction(obj) {
91
+ return getObjectType(obj) === "[object Function]";
92
+ }
93
+ function isObject(obj) {
94
+ return getObjectType(obj) === "[object Object]";
95
+ }
96
+ function getObjectType(obj) {
97
+ return Object.prototype.toString.call(obj);
98
+ }
99
+ function getParamNames(fn) {
100
+ const fnStr = fn.toString().replace(STRIP_COMMENTS, "").split("=>")[0];
101
+ const names = fnStr
102
+ .slice(fnStr.indexOf("(") + 1, fnStr.indexOf(")"))
103
+ .match(ARGUMENT_NAMES);
104
+ if (names === null) {
105
+ return [];
106
+ }
107
+ return names;
108
+ }
109
+ function map(obj, cb) {
110
+ const res = Object.entries(obj).map(([k, v]) => cb(k, v));
111
+ if (res[0]?.length === 2) {
112
+ return Object.fromEntries(res);
113
+ }
114
+ return res;
115
+ }
116
+ function forEach(obj, cb) {
117
+ Object.entries(obj || {}).forEach(([k, v]) => cb(k, v));
118
+ }
119
+ function filter(obj, cb) {
120
+ return Object.fromEntries(Object.entries(obj || {}).filter(([k, v]) => cb(k, v) === true));
121
+ }
122
+ function recreateStructure(value) {
123
+ let newValue = value;
124
+ if (isArray(value)) {
125
+ newValue = [];
126
+ value.forEach((v) => newValue.push(recreateStructure(v)));
127
+ return newValue;
128
+ }
129
+ if (isObject(value)) {
130
+ newValue = {};
131
+ for (let key in value) {
132
+ newValue[key] = recreateStructure(value[key]);
133
+ }
134
+ return newValue;
135
+ }
136
+ return newValue;
137
+ }
93
138
 
94
139
 
95
140
  /***/ },
96
141
 
97
- /***/ "./src/index.js"
142
+ /***/ "./src/index.ts"
98
143
  /*!**********************!*\
99
- !*** ./src/index.js ***!
144
+ !*** ./src/index.ts ***!
100
145
  \**********************/
101
146
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
102
147
 
103
148
  "use strict";
104
149
  __webpack_require__.r(__webpack_exports__);
105
150
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
106
- /* harmony export */ ACCESSORS: () => (/* binding */ ACCESSORS),
107
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
151
+ /* harmony export */ STATE: () => (/* binding */ STATE),
152
+ /* harmony export */ createStore: () => (/* binding */ createStore),
153
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
154
+ /* harmony export */ getState: () => (/* binding */ getState),
155
+ /* harmony export */ getValues: () => (/* binding */ getValues),
156
+ /* harmony export */ resetState: () => (/* binding */ resetState),
157
+ /* harmony export */ setState: () => (/* binding */ setState),
158
+ /* harmony export */ setupValue: () => (/* binding */ setupValue)
108
159
  /* harmony export */ });
109
- /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./storage */ "./src/storage.js");
110
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/helpers.js");
111
- /* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./namespace */ "./src/namespace.js");
112
- /* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validation */ "./src/validation.js");
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
- const STATE = {};
122
- const ACCESSORS = {};
123
- const COMPUTED_DEPENDENCIES = {};
124
- const COMPUTED_ARGUMENTS = {};
125
-
126
- const STORAGE = {
127
- GET_TYPE: null,
128
- IS_AVAILABE: null,
129
- UPDATE_STATE: null,
130
- SET_VALUE: null
131
- };
132
-
133
- setStorageUtils(_storage__WEBPACK_IMPORTED_MODULE_0__["default"]);
134
-
135
- async function addState (namespace, initialState, isPersistent) {
136
- const storageType = STORAGE.GET_TYPE(isPersistent);
137
- const defaultValues = Object.assign({}, initialState);
138
- const namespacedValues = (0,_namespace__WEBPACK_IMPORTED_MODULE_2__.namespacify)(namespace(), initialState);
139
-
140
- if (STORAGE.IS_AVAILABE(storageType)) {
141
- await STORAGE.UPDATE_STATE(namespacedValues, storageType);
142
- }
143
-
144
- const accessors = {};
145
- for (const key in initialState) {
146
- _validation__WEBPACK_IMPORTED_MODULE_3__.isValid.Defining(namespace(key));
147
- accessors[namespace(key)] = setupValue(
148
- namespace(key),
149
- namespacedValues[namespace(key)],
150
- defaultValues[key],
151
- storageType,
152
- );
153
- }
154
-
155
- Object.assign(ACCESSORS, accessors);
156
- return createStore(namespace());
157
- }
158
-
159
- function setupValue (key, value, defaultValue, storageType) {
160
- const isComputedValue = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(value);
161
-
162
- if (isComputedValue) {
163
- setupDependencies(key, value);
164
- }
165
-
166
- STATE[key] = {
167
- value: isComputedValue ? value.apply(null, getArguments(key)) : value,
168
- computeFn: value,
169
- listeners: [],
170
- defaultValue,
171
- };
172
-
173
- return createAccessor(key, storageType);
174
- }
175
-
176
- function setupDependencies(computedValueName, computeFn) {
177
- const [, namespace] = (0,_namespace__WEBPACK_IMPORTED_MODULE_2__.splitFullKey)(computedValueName);
178
- const paramNames = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getParamNames)(computeFn).map((name) => (0,_namespace__WEBPACK_IMPORTED_MODULE_2__.addNamespace)(namespace, name));
179
- COMPUTED_ARGUMENTS[computedValueName] = paramNames;
180
-
181
- paramNames.forEach((param) => {
182
- if (COMPUTED_DEPENDENCIES[param]) {
183
- COMPUTED_DEPENDENCIES[param].push(computedValueName);
184
- } else {
185
- COMPUTED_DEPENDENCIES[param] = [computedValueName];
186
- }
187
- });
188
- }
189
-
190
- function getArguments(computedName) {
191
- const values = getNamespaceValues(computedName);
192
-
193
- return COMPUTED_ARGUMENTS[computedName]
194
- .map((name) => values[(0,_namespace__WEBPACK_IMPORTED_MODULE_2__.splitFullKey)(name)[0]])
195
- .concat(values);
196
- }
197
-
198
- function createAccessor(key, storageType) {
199
- const accessor = () => STATE[key].value;
200
-
201
- Object.assign(accessor, {
202
- valueOf: () => STATE[key].value,
203
- toString: () => STATE[key].value,
204
- set: async (value) => await setValue(key, value, storageType),
205
- onChange: (cb) => STATE[key].listeners.push(cb),
206
- removeListener: (removeCb) =>
207
- (STATE[key].listeners = STATE[key].listeners.filter(
208
- (cb) => cb !== removeCb,
209
- )),
210
- reset: () => setValue(key, STATE[key].defaultValue, storageType),
211
- });
212
-
213
- return new Proxy(accessor, {
214
- get: (target, prop) => {
215
- if (Object.keys(accessor).includes(prop)) {
216
- return target[prop];
217
- }
218
-
219
- return STATE[key].value[prop];
220
- },
221
- });
222
- }
223
-
224
- async function setValue (key, value, storageType) {
225
- if (STORAGE.IS_AVAILABE(storageType)) {
226
- const isAutoUpdate = await STORAGE.SET_VALUE(storageType, key, value);
227
- if (isAutoUpdate) {
228
- return;
229
- }
230
- }
231
-
232
- onStateChange({ [key]: { newValue: value } });
233
- }
234
-
235
- function onStateChange (changes) {
236
- const realChanges = {};
237
-
238
- for (const key in changes) {
239
- const prevValue = STATE[key].value;
240
- const newValue = changes[key].newValue;
241
-
242
- if (prevValue !== newValue) {
243
- STATE[key].value = newValue;
244
- realChanges[key] = { newValue, prevValue };
245
-
246
- updateDependencies(key, realChanges);
247
- }
248
- }
249
-
250
- for (const key in realChanges) {
251
- STATE[key].listeners.forEach(async (cb) => await cb(STATE[key].value, getNamespaceValues(key), realChanges[key]));
252
- }
253
- }
254
-
255
- function updateDependencies (key, realChanges) {
256
- const computedDependencies = COMPUTED_DEPENDENCIES[key];
257
- if (computedDependencies) {
258
- computedDependencies.forEach((name) => {
259
- const prevValue = STATE[name].value;
260
- const newValue = STATE[name].computeFn.apply(null, getArguments(name));
261
- if (prevValue !== newValue) {
262
- STATE[name].value = newValue;
263
- realChanges[name] = { newValue, prevValue };
264
- updateDependencies(name, realChanges);
265
- }
266
- });
267
- }
268
- }
269
-
270
- function getState(namespace, arg) {
271
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arg)) {
272
- return createStore(arg);
273
- }
274
-
275
- if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(arg)) {
276
- return getNamespaceAccessors(namespace(""), arg);
277
- }
278
-
279
- return getNamespaceValues(namespace(""));
280
- }
281
-
282
- function getNamespaceValues(namespace) {
283
- return recreateStructure((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getKeys)((0,_namespace__WEBPACK_IMPORTED_MODULE_2__.getByNamespace)(namespace, STATE), "value"));
284
- }
285
-
286
- function getNamespaceAccessors (namespace, cb) {
287
- const accessors = (0,_namespace__WEBPACK_IMPORTED_MODULE_2__.getByNamespace)(namespace, ACCESSORS);
288
- return cb.call(null, accessors, createStore(namespace()));
289
- }
290
-
291
- async function setState (namespace, changes) {
292
- const noKeys = !Object.keys(changes).length;
293
-
294
- if (noKeys) {
295
- resetAllState();
296
- } else {
297
- for (const [k,v] of Object.entries(changes)) {
298
- _validation__WEBPACK_IMPORTED_MODULE_3__.isValid.Setting(namespace(k));
299
- await 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: async (changes) => await 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(""));
160
+ /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./storage */ "./src/storage.ts");
161
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
162
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions */ "./src/actions.ts");
163
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
164
+ /* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./validation */ "./src/validation.ts");
165
+ /* harmony import */ var _listeners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./listeners */ "./src/listeners.ts");
166
+
167
+
168
+
169
+
170
+
171
+
172
+ const STATE = {};
173
+ const STORAGE = {};
174
+ setStorageUtils(_storage__WEBPACK_IMPORTED_MODULE_0__["default"]);
175
+ async function addState(namespace, initialState, isPersistent) {
176
+ const storageType = STORAGE.GET_TYPE(isPersistent);
177
+ const defaultValues = Object.assign({}, initialState);
178
+ const values = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(initialState, (k, v) => [namespace(k), v]);
179
+ if (STORAGE.IS_AVAILABE(storageType)) {
180
+ await STORAGE.UPDATE_STATE(values, storageType);
181
+ }
182
+ if (!_listeners__WEBPACK_IMPORTED_MODULE_5__.LISTENERS[namespace()]) {
183
+ _listeners__WEBPACK_IMPORTED_MODULE_5__.LISTENERS[namespace()] = [];
184
+ }
185
+ for (const key in initialState) {
186
+ const fullKey = namespace(key);
187
+ _validation__WEBPACK_IMPORTED_MODULE_4__.isValid.Defining(fullKey);
188
+ STATE[fullKey] = setupValue(key, namespace, values[fullKey], defaultValues[key], storageType);
189
+ }
190
+ return createStore(namespace());
191
+ }
192
+ function setupValue(key, namespace, value, defaultValue, storageType) {
193
+ const fullKey = namespace(key);
194
+ const isComputedValue = (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isFunction)(value);
195
+ const dependencies = isComputedValue
196
+ ? (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getParamNames)(value)
197
+ : [];
198
+ dependencies.forEach((dependency) => {
199
+ const fullDependencyKey = namespace(dependency);
200
+ if (!STATE[fullDependencyKey]) {
201
+ STATE[fullDependencyKey] = {
202
+ dependants: [],
203
+ dependencies: [],
204
+ namespace,
205
+ storageType,
206
+ };
207
+ }
208
+ STATE[fullDependencyKey].dependants?.push(fullKey);
209
+ });
210
+ return {
211
+ key,
212
+ fullKey,
213
+ value: isComputedValue
214
+ ? value.apply(null, getArguments(dependencies, namespace))
215
+ : value,
216
+ computeFn: isComputedValue && value,
217
+ dependencies,
218
+ dependants: [],
219
+ listeners: [],
220
+ defaultValue,
221
+ storageType,
222
+ namespace,
223
+ };
224
+ }
225
+ function getNamespaceState(namespace) {
226
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(STATE, (k, { key }) => k === namespace(key));
227
+ }
228
+ function getValues(namespace) {
229
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(getNamespaceState(namespace), (k, { key, value }) => [
230
+ key,
231
+ value,
232
+ ]);
233
+ }
234
+ function getArguments(dependencies, namespace) {
235
+ const values = getValues(namespace);
236
+ return dependencies.map((name) => values[name]);
237
+ }
238
+ async function onStateChange(changes) {
239
+ const realChanges = {};
240
+ for (const key in changes) {
241
+ const prevValue = STATE[key].value;
242
+ const newValue = changes[key].newValue;
243
+ if (prevValue !== newValue) {
244
+ realChanges[key] = { newValue, prevValue };
245
+ STATE[key].value = newValue;
246
+ }
247
+ else {
248
+ realChanges[key] = { isSame: true };
249
+ }
250
+ updateDependencies(key, changes, realChanges);
251
+ }
252
+ await (0,_listeners__WEBPACK_IMPORTED_MODULE_5__.runStateChangeListeners)((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(realChanges, (k, v) => !v.isSame));
253
+ }
254
+ function updateDependencies(key, changes, realChanges) {
255
+ STATE[key].dependants?.forEach((name) => {
256
+ const { dependencies, namespace } = STATE[name];
257
+ if (!isEveryDependencyReady(dependencies, namespace, Object.keys(changes), Object.keys(realChanges)) ||
258
+ realChanges[name]) {
259
+ return;
260
+ }
261
+ const prevValue = STATE[name].value;
262
+ const newValue = STATE[name].computeFn?.apply(null, getArguments(dependencies, namespace));
263
+ if (prevValue !== newValue) {
264
+ realChanges[name] = { newValue, prevValue };
265
+ STATE[name].value = newValue;
266
+ updateDependencies(name, changes, realChanges);
267
+ }
268
+ });
269
+ }
270
+ function isEveryDependencyReady(dependencies, namespace, changesKeys, realChangesKeys) {
271
+ return dependencies.every((name) => {
272
+ const fullKey = namespace(name);
273
+ return ((changesKeys.includes(fullKey) && realChangesKeys.includes(fullKey)) ||
274
+ !changesKeys.includes(fullKey));
275
+ });
276
+ }
277
+ function getState(namespace, arg) {
278
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arg)) {
279
+ return createStore(arg);
280
+ }
281
+ return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.recreateStructure)(getValues(namespace));
282
+ }
283
+ async function setState(namespace, changes) {
284
+ const storageChanges = {};
285
+ (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.forEach)(changes, (k, v) => {
286
+ const fullKey = namespace(k);
287
+ const { storageType, computeFn, isAction } = STATE[fullKey];
288
+ if (computeFn || isAction) {
289
+ return;
290
+ }
291
+ if (!storageChanges[storageType]) {
292
+ storageChanges[storageType] = {};
293
+ }
294
+ storageChanges[storageType][fullKey] = v;
295
+ });
296
+ for (let [storageType, changes] of Object.entries(storageChanges)) {
297
+ await setValues(storageType, changes);
298
+ }
299
+ return createStore(namespace());
300
+ }
301
+ async function setValues(storageType, changes) {
302
+ if (STORAGE.IS_AVAILABE(storageType)) {
303
+ const isAutoUpdate = await STORAGE.SET_VALUES(storageType, changes);
304
+ if (isAutoUpdate) {
305
+ return;
306
+ }
307
+ }
308
+ onStateChange((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(changes, (k, newValue) => [k, { newValue }]));
309
+ }
310
+ async function resetState(namespace, keys) {
311
+ const namespaceState = getNamespaceState(namespace);
312
+ await setState(namespace, (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.map)(keys
313
+ ? (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.filter)(namespaceState, (k, { key }) => keys.includes(key))
314
+ : namespaceState, (k, { key, defaultValue }) => [key, defaultValue]));
315
+ return createStore(namespace());
316
+ }
317
+ function main(namespace) {
318
+ if (!arguments[1] || (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(arguments[1])) {
319
+ return getState.apply(null, arguments);
320
+ }
321
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isArray)(arguments[1])) {
322
+ return _listeners__WEBPACK_IMPORTED_MODULE_5__.addStateListener.apply(null, arguments);
323
+ }
324
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isObject)(arguments[1])) {
325
+ return setState.apply(null, arguments);
326
+ }
327
+ }
328
+ function setStorageUtils(storageUtils) {
329
+ Object.assign(STORAGE, storageUtils);
330
+ }
331
+ function addNamespace(namespace, str) {
332
+ return `${namespace}${((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.isString)(str) && _constants__WEBPACK_IMPORTED_MODULE_3__.NAMESPACE_DELIMITER) || ""}${str || ""}`;
333
+ }
334
+ function createStore(_namespace) {
335
+ const namespace = ((key) => addNamespace(_namespace, key));
336
+ return Object.assign(main.bind(null, namespace), {
337
+ add: (state) => addState(namespace, state, false),
338
+ addPersistent: (state) => addState(namespace, state, true),
339
+ get: (newNamespace) => getState(namespace, newNamespace),
340
+ set: async (changes) => await setState(namespace, changes),
341
+ reset: (keys) => resetState(namespace, keys),
342
+ onChange: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_5__.addStateListener)(namespace, keys, cb),
343
+ removeListener: (keys, cb) => (0,_listeners__WEBPACK_IMPORTED_MODULE_5__.removeStateListener)(namespace, keys, cb),
344
+ actions: (actions) => (0,_actions__WEBPACK_IMPORTED_MODULE_2__.addStateActions)(namespace, actions),
345
+ setStorageUtils,
346
+ onStateChange,
347
+ });
348
+ }
349
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createStore(""));
385
350
 
386
351
 
387
352
  /***/ },
388
353
 
389
- /***/ "./src/namespace.js"
354
+ /***/ "./src/listeners.ts"
390
355
  /*!**************************!*\
391
- !*** ./src/namespace.js ***!
356
+ !*** ./src/listeners.ts ***!
392
357
  \**************************/
393
358
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
394
359
 
395
360
  "use strict";
396
361
  __webpack_require__.r(__webpack_exports__);
397
362
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
398
- /* harmony export */ addNamespace: () => (/* binding */ addNamespace),
399
- /* harmony export */ getByNamespace: () => (/* binding */ getByNamespace),
400
- /* harmony export */ namespacify: () => (/* binding */ namespacify),
401
- /* harmony export */ splitFullKey: () => (/* binding */ splitFullKey)
363
+ /* harmony export */ LISTENERS: () => (/* binding */ LISTENERS),
364
+ /* harmony export */ addStateListener: () => (/* binding */ addStateListener),
365
+ /* harmony export */ removeStateListener: () => (/* binding */ removeStateListener),
366
+ /* harmony export */ runStateChangeListeners: () => (/* binding */ runStateChangeListeners)
402
367
  /* harmony export */ });
403
- /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ "./src/helpers.js");
404
-
405
-
406
- const NAMESPACE_DELIMITER = "::";
407
-
408
- function addNamespace(namespace, str) {
409
- return `${namespace}${(0,_helpers__WEBPACK_IMPORTED_MODULE_0__.isString)(str) && NAMESPACE_DELIMITER || ""}${str || ""}`;
410
- }
411
-
412
- function splitFullKey (str) {
413
- const segments = str.split(NAMESPACE_DELIMITER);
414
-
415
- return [
416
- segments.slice(-1)[0],
417
- segments.slice(0, -1).join(NAMESPACE_DELIMITER),
418
- ];
419
- }
420
-
421
- function getByNamespace(str, obj) {
422
- const namespace = splitFullKey(str)[1] + NAMESPACE_DELIMITER;
423
-
424
- return Object.fromEntries(
425
- Object.entries(obj)
426
- .filter(([k, v]) => k.startsWith(namespace))
427
- .map(([k, v]) => [k.slice(namespace.length), v]),
428
- );
429
- }
430
-
431
- function namespacify (namespace, obj) {
432
- return Object.fromEntries(
433
- Object.entries(obj)
434
- .map(([k,v]) => [addNamespace(namespace, k), v]
435
- ));
436
- }
368
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
369
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
370
+ /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ "./src/helpers.ts");
371
+
372
+
373
+
374
+ const LISTENERS = {};
375
+ async function runStateChangeListeners(realChanges) {
376
+ if (Object.keys(realChanges).length) {
377
+ const { namespace } = ___WEBPACK_IMPORTED_MODULE_0__.STATE[Object.keys(realChanges)[0]];
378
+ const stateValues = (0,___WEBPACK_IMPORTED_MODULE_0__.getValues)(namespace);
379
+ for (let [changeKey, change] of Object.entries(realChanges)) {
380
+ const { listeners, key } = ___WEBPACK_IMPORTED_MODULE_0__.STATE[changeKey];
381
+ for (const cb of listeners) {
382
+ await cb([key], stateValues, change);
383
+ }
384
+ }
385
+ const readableKeys = (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(realChanges, (k) => k.slice(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER.length));
386
+ for (const cb of LISTENERS[namespace()]) {
387
+ await cb(readableKeys, stateValues, (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.map)(realChanges, (k, v) => [
388
+ k.slice(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER.length),
389
+ v,
390
+ ]));
391
+ }
392
+ }
393
+ }
394
+ function addStateListener(namespace, observables, cb) {
395
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observables)) {
396
+ LISTENERS[namespace()].push(observables);
397
+ return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
398
+ }
399
+ observables.forEach((key) => ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(key)].listeners?.push(cb));
400
+ return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
401
+ }
402
+ function removeStateListener(namespace, observables, removeCb) {
403
+ if ((0,_helpers__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observables)) {
404
+ const removeIdx = LISTENERS[namespace()].findIndex((cb) => cb === observables);
405
+ LISTENERS[namespace()].splice(removeIdx, 1);
406
+ return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
407
+ }
408
+ observables.forEach((key) => {
409
+ const listeners = ___WEBPACK_IMPORTED_MODULE_0__.STATE[namespace(key)].listeners;
410
+ const removeIdx = listeners?.findIndex((cb) => cb === removeCb);
411
+ listeners?.splice(removeIdx, 1);
412
+ });
413
+ return (0,___WEBPACK_IMPORTED_MODULE_0__.createStore)(namespace());
414
+ }
437
415
 
438
416
 
439
417
  /***/ },
440
418
 
441
- /***/ "./src/storage.js"
419
+ /***/ "./src/storage.ts"
442
420
  /*!************************!*\
443
- !*** ./src/storage.js ***!
421
+ !*** ./src/storage.ts ***!
444
422
  \************************/
445
423
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
446
424
 
@@ -449,44 +427,41 @@ __webpack_require__.r(__webpack_exports__);
449
427
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
450
428
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
451
429
  /* harmony export */ });
452
- function updateFromLocalStorage(state) {
453
- const stored = {};
454
- for (const key in state) {
455
- const value = localStorage.getItem(key);
456
- if (value !== null) {
457
- stored[key] = value;
458
- }
459
- }
460
-
461
- return Object.assign(state, stored);
462
- }
463
-
464
- function getStorageType(isPersistent) {
465
- return isPersistent && "localStorage";
466
- }
467
-
468
- function isStorageAvailable(storageType) {
469
- return storageType;
470
- }
471
-
472
- async function setStorageValue(storageType, key, value) {
473
- await window.localStorage.setItem(key, value);
474
- return false;
475
- }
476
-
477
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
478
- GET_TYPE: getStorageType,
479
- IS_AVAILABE: isStorageAvailable,
480
- UPDATE_STATE: updateFromLocalStorage,
481
- SET_VALUE: setStorageValue,
482
- });
430
+ async function updateFromLocalStorage(state) {
431
+ const stored = {};
432
+ for (const key in state) {
433
+ const value = localStorage.getItem(key);
434
+ if (value !== null) {
435
+ stored[key] = value;
436
+ }
437
+ }
438
+ return Object.assign(state, stored);
439
+ }
440
+ function getStorageType(isPersistent) {
441
+ return isPersistent ? "localStorage" : "";
442
+ }
443
+ function isStorageAvailable(storageType) {
444
+ return !!storageType;
445
+ }
446
+ async function setStorageValue(storageType, changes) {
447
+ for (let [k, v] of Object.entries(changes)) {
448
+ localStorage.setItem(k, v);
449
+ }
450
+ return false;
451
+ }
452
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
453
+ GET_TYPE: getStorageType,
454
+ IS_AVAILABE: isStorageAvailable,
455
+ UPDATE_STATE: updateFromLocalStorage,
456
+ SET_VALUES: setStorageValue,
457
+ });
483
458
 
484
459
 
485
460
  /***/ },
486
461
 
487
- /***/ "./src/validation.js"
462
+ /***/ "./src/validation.ts"
488
463
  /*!***************************!*\
489
- !*** ./src/validation.js ***!
464
+ !*** ./src/validation.ts ***!
490
465
  \***************************/
491
466
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
492
467
 
@@ -495,43 +470,37 @@ __webpack_require__.r(__webpack_exports__);
495
470
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
496
471
  /* harmony export */ isValid: () => (/* binding */ isValid)
497
472
  /* harmony export */ });
498
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.js");
499
- /* harmony import */ var _namespace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespace */ "./src/namespace.js");
500
-
501
-
502
-
503
-
504
- const isValid = {
505
- Setting: (fullKey) => {
506
- if (!___WEBPACK_IMPORTED_MODULE_0__.ACCESSORS[fullKey]) {
507
- const [key, namespace] = (0,_namespace__WEBPACK_IMPORTED_MODULE_1__.splitFullKey)(fullKey);
508
- throw new Error(
509
- `Setting "${key}" key in "${namespace}" namespace. DOES NOT EXIST`,
510
- );
511
- }
512
-
513
- return true;
514
- },
515
-
516
- Defining: (fullKey) => {
517
- if (___WEBPACK_IMPORTED_MODULE_0__.ACCESSORS[fullKey]) {
518
- const [key, namespace] = (0,_namespace__WEBPACK_IMPORTED_MODULE_1__.splitFullKey)(fullKey);
519
- throw new Error(
520
- `Redefining "${key}" key in "${namespace}" namespace. ALREADY DEFINED`,
521
- );
522
- }
523
-
524
- return true;
525
- }
526
-
527
- };
473
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
474
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
475
+
476
+
477
+ function splitFullKey(fullKey) {
478
+ const segments = fullKey.split(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER);
479
+ return [segments.slice(-1)[0], segments.join(_constants__WEBPACK_IMPORTED_MODULE_1__.NAMESPACE_DELIMITER)];
480
+ }
481
+ const isValid = {
482
+ Setting: (fullKey) => {
483
+ if (!___WEBPACK_IMPORTED_MODULE_0__.STATE[fullKey]) {
484
+ const [key, namespace] = splitFullKey(fullKey);
485
+ throw new Error(`Setting "${key}" key in "${namespace}" namespace. DOES NOT EXIST`);
486
+ }
487
+ return true;
488
+ },
489
+ Defining: (fullKey) => {
490
+ if (___WEBPACK_IMPORTED_MODULE_0__.STATE[fullKey]) {
491
+ const [key, namespace] = splitFullKey(fullKey);
492
+ throw new Error(`Redefining "${key}" key in "${namespace}" namespace. ALREADY DEFINED`);
493
+ }
494
+ return true;
495
+ },
496
+ };
528
497
 
529
498
 
530
499
  /***/ },
531
500
 
532
- /***/ "./src/webextension-storage.js"
501
+ /***/ "./src/webextension-storage.ts"
533
502
  /*!*************************************!*\
534
- !*** ./src/webextension-storage.js ***!
503
+ !*** ./src/webextension-storage.ts ***!
535
504
  \*************************************/
536
505
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
537
506
 
@@ -542,45 +511,56 @@ __webpack_require__.r(__webpack_exports__);
542
511
  /* harmony export */ isBackgroundScript: () => (/* binding */ isBackgroundScript),
543
512
  /* harmony export */ isSessionStorageSupport: () => (/* binding */ isSessionStorageSupport)
544
513
  /* harmony export */ });
545
- const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
546
-
547
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
548
- GET_TYPE: getStorageType,
549
- IS_AVAILABE: isStorageAvailable,
550
- UPDATE_STATE: updateStateFromStorage,
551
- SET_VALUE: setStorageValue,
552
- });
553
-
554
- function getStorageType(isPersistent) {
555
- return (isBackgroundScript() && isPersistent && "local") || "session";
556
- }
557
-
558
- function isStorageAvailable(storageType) {
559
- return (
560
- storageType === "local" ||
561
- (storageType === "session" && isSessionStorageSupport())
562
- );
563
- }
564
-
565
- async function updateStateFromStorage(state, type) {
566
- return Object.assign(state, await browser.storage[type].get());
567
- }
568
-
569
- async function setStorageValue(type, key, value) {
570
- await browser.storage[type].set({ [key]: value });
571
- return true;
572
- }
573
-
574
- function isSessionStorageSupport() {
575
- return !!browser.storage.session;
576
- }
577
-
578
- function isBackgroundScript() {
579
- return (
580
- window.location.protocol === "chrome-extension:" ||
581
- window.location.protocol === "moz-extension:"
582
- );
583
- }
514
+ const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
515
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
516
+ GET_TYPE: getStorageType,
517
+ IS_AVAILABE: isStorageAvailable,
518
+ UPDATE_STATE: updateStateFromStorage,
519
+ SET_VALUES: setStorageValue,
520
+ });
521
+ function getStorageType(isPersistent) {
522
+ return (isBackgroundScript() && isPersistent && "local") || "session";
523
+ }
524
+ function isStorageAvailable(storageType) {
525
+ return (storageType === "local" ||
526
+ (storageType === "session" && isSessionStorageSupport()));
527
+ }
528
+ async function updateStateFromStorage(state, type) {
529
+ return Object.assign(state, await browser.storage[type].get());
530
+ }
531
+ async function setStorageValue(type, changes) {
532
+ await browser.storage[type].set(changes);
533
+ return true;
534
+ }
535
+ function isSessionStorageSupport() {
536
+ return !!browser.storage.session;
537
+ }
538
+ function isBackgroundScript() {
539
+ return (window.location.protocol === "chrome-extension:" ||
540
+ window.location.protocol === "moz-extension:");
541
+ }
542
+
543
+
544
+ /***/ },
545
+
546
+ /***/ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js"
547
+ /*!*************************************************************************!*\
548
+ !*** ./node_modules/webextension-polyfill/dist/browser-polyfill.min.js ***!
549
+ \*************************************************************************/
550
+ (module, exports) {
551
+
552
+ 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),
553
+ __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
554
+ (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
555
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else // removed by dead control flow
556
+ { 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});
557
+ //# sourceMappingURL=browser-polyfill.min.js.map
558
+
559
+ // webextension-polyfill v.0.12.0 (https://github.com/mozilla/webextension-polyfill)
560
+
561
+ /* This Source Code Form is subject to the terms of the Mozilla Public
562
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
563
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
584
564
 
585
565
 
586
566
  /***/ }
@@ -667,30 +647,25 @@ let __webpack_exports__ = {};
667
647
  (() => {
668
648
  "use strict";
669
649
  /*!*****************************!*\
670
- !*** ./src/webextension.js ***!
650
+ !*** ./src/webextension.ts ***!
671
651
  \*****************************/
672
652
  __webpack_require__.r(__webpack_exports__);
673
653
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
674
654
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
675
655
  /* harmony export */ });
676
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.js");
677
- /* harmony import */ var _webextension_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webextension-storage */ "./src/webextension-storage.js");
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
- const { onStateChange, setStorageUtils } = ___WEBPACK_IMPORTED_MODULE_0__["default"];
684
-
685
- if ((0,_webextension_storage__WEBPACK_IMPORTED_MODULE_1__.isBackgroundScript)()) {
686
- browser.storage.local.onChanged.addListener(onStateChange);
687
- (0,_webextension_storage__WEBPACK_IMPORTED_MODULE_1__.isSessionStorageSupport)() &&
688
- browser.storage.session.onChanged.addListener(onStateChange);
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"]);
656
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "./src/index.ts");
657
+ /* harmony import */ var _webextension_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webextension-storage */ "./src/webextension-storage.ts");
658
+ const browser = __webpack_require__(/*! webextension-polyfill/dist/browser-polyfill.min */ "./node_modules/webextension-polyfill/dist/browser-polyfill.min.js");
659
+
660
+
661
+ const { onStateChange, setStorageUtils } = ___WEBPACK_IMPORTED_MODULE_0__["default"];
662
+ if ((0,_webextension_storage__WEBPACK_IMPORTED_MODULE_1__.isBackgroundScript)()) {
663
+ browser.storage.local.onChanged.addListener(onStateChange);
664
+ (0,_webextension_storage__WEBPACK_IMPORTED_MODULE_1__.isSessionStorageSupport)() &&
665
+ browser.storage.session.onChanged.addListener(onStateChange);
666
+ }
667
+ setStorageUtils(_webextension_storage__WEBPACK_IMPORTED_MODULE_1__["default"]);
668
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___WEBPACK_IMPORTED_MODULE_0__["default"]);
694
669
 
695
670
  })();
696
671