@vacantthinker/firefox-addon-framework-easy 2026.5.2205 → 2026.5.2206

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/baseORM.js +202 -93
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vacantthinker/firefox-addon-framework-easy",
3
- "version": "2026.5.2205",
3
+ "version": "2026.5.2206",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
package/src/baseORM.js CHANGED
@@ -1,119 +1,228 @@
1
- import {
2
- stoOpCheck,
3
- stoOpGet,
4
- stoOpQuery_startsWith,
5
- stoOpRem,
6
- stoOpSet
7
- } from "./baseOp.js";
1
+ import {stoOpCheck, stoOpGet, stoOpQuery_startsWith, stoOpRem, stoOpSet} from "./baseOp.js";
2
+
8
3
 
9
4
  /**
10
5
  * eg:
11
6
  *
12
- * "domain www.abcdefg.com":{
7
+ * "domain ://abcdefg.com":{
13
8
  * "keyAAA": "valueBBB"
14
9
  * }
15
- *
16
- * @returns {{getALLDomainKey: function(): Promise<string[]>, getALLDomainMap: function(): Promise<{domainList: *, domainKeyValueMap: {}}>, getDomain: function(string): Promise<{}>, updateDomainValueByOneKeyValue: function(string, string, string): Promise<{}>, clearThisDomain: function(*): Promise<{}>}}
17
10
  */
18
- export function baseORM() {
11
+ export class BaseORM {
12
+ // Private class fields for encapsulation
13
+ #keyPrefix = `domain `;
14
+ #domainDefaultValue = {};
15
+
16
+ // Private helper method to generate the prefix key
17
+ #domainKey(k) {
18
+ return `${this.#keyPrefix}${k}`;
19
+ }
20
+
21
+ /**
22
+ * check domain exists, return true/false
23
+ * @param {string} domain
24
+ * @return {Promise<boolean>}
25
+ */
26
+ async #checkDomain(domain) {
27
+ return await stoOpCheck(this.#domainKey(domain));
28
+ }
29
+
30
+ /**
31
+ * @param {string} domain
32
+ * @return {Promise<void>}
33
+ */
34
+ async #addDomain(domain) {
35
+ await stoOpSet(this.#domainKey(domain), this.#domainDefaultValue);
36
+ }
37
+
38
+ /**
39
+ * @param {string} domain
40
+ * @return {Promise<void>}
41
+ */
42
+ async #removeDomain(domain) {
43
+ await stoOpRem(this.#domainKey(domain));
44
+ }
45
+
46
+ /**
47
+ * @param {string} domain
48
+ * @param {*} valueNew
49
+ * @return {Promise<void>}
50
+ */
51
+ async #updateDomain(domain, valueNew) {
52
+ await stoOpSet(this.#domainKey(domain), valueNew);
53
+ }
19
54
 
20
- let keyPrefix = `domain `;
21
- const domainKey = (k) => `${keyPrefix}${k}`;
22
- const domainDefaultValue = {};
23
-
24
- /**
25
- * check domain exists, return true/false
26
- * @param domain{string}
27
- * @return {Promise<boolean>}
28
- */
29
- async function checkDomain(domain) {
30
- return await stoOpCheck(domainKey(domain));
31
- }
32
-
33
- /**
34
- * @param domain{string}
35
- * @return {Promise<void>}
36
- */
37
- async function addDomain(domain) {
38
- await stoOpSet(domainKey(domain), domainDefaultValue);
39
- }
40
-
41
- /**
42
- * @param domain{string}
43
- * @return {Promise<void>}
44
- */
45
- async function removeDomain(domain) {
46
- await stoOpRem(domainKey(domain));
47
- }
48
-
49
- /**
50
- * @param domain{string}
51
- * @param valueNew
52
- * @return {Promise<void>}
53
- */
54
- async function updateDomain(domain, valueNew) {
55
- await stoOpSet(domainKey(domain), valueNew);
56
- }
57
-
58
- return {
59
55
  /**
60
56
  * eg: ['a.com', 'b.com', 'c.com']
61
57
  * @returns {Promise<string[]>}
62
58
  */
63
- getALLDomainKey: async function () {
64
- // stoOpQueryByPrefix
65
- let strings = await stoOpQuery_startsWith(keyPrefix);
66
- return strings.map(v => v.replaceAll(keyPrefix, ''));
67
- },
68
- getALLDomainMap: async function () {
69
- let domainList = await this.getALLDomainKey();
70
-
71
- // todo use for-loop not the reduce()!
72
- const domainKeyValueMap = {}
73
- for (let domain of domainList) {
74
- domainKeyValueMap[domain] = await this.getDomain(domain)
75
- }
76
-
77
- return {domainList, domainKeyValueMap};
78
- },
59
+ async getALLDomainKey() {
60
+ // stoOpQueryByPrefix
61
+ let strings = await stoOpQuery_startsWith(this.#keyPrefix);
62
+ return strings.map(v => v.replaceAll(this.#keyPrefix, ''));
63
+ }
79
64
 
80
65
  /**
81
- *
82
- * @param {string}domain
66
+ * @returns {Promise<{domainList: string[], domainKeyValueMap: {}}>}
67
+ */
68
+ async getALLDomainMap() {
69
+ let domainList = await this.getALLDomainKey();
70
+
71
+ const domainKeyValueMap = {};
72
+ for (let domain of domainList) {
73
+ domainKeyValueMap[domain] = await this.getDomain(domain);
74
+ }
75
+
76
+ return {domainList, domainKeyValueMap};
77
+ }
78
+
79
+ /**
80
+ * @param {string} domain
83
81
  * @returns {Promise<{}>}
84
82
  */
85
- getDomain: async function (domain) {
86
- if (!await checkDomain(domain)) {
87
- await addDomain(domain);
88
- }
89
- return await stoOpGet(domainKey(domain));
90
- },
83
+ async getDomain(domain) {
84
+ if (!(await this.#checkDomain(domain))) {
85
+ await this.#addDomain(domain);
86
+ }
87
+ return await stoOpGet(this.#domainKey(domain));
88
+ }
91
89
 
92
90
  /**
93
91
  * {a:a1} => {a:a222}
94
- * @param {string}domain 'xxx.xxxxx.xxx'
95
- * @param{string}key
96
- * @param {string}valueToUpdate
92
+ * @param {string} domain 'xxx.xxxxx.xxx'
93
+ * @param {string} key
94
+ * @param {string} valueToUpdate
97
95
  * @return {Promise<{}>}
98
96
  */
99
- updateDomainValueByOneKeyValue: async function (domain, key ,valueToUpdate) {
100
- if (!await checkDomain(domain)) {
101
- await addDomain(domain);
102
- }
103
- let domainValueGet = await this.getDomain(domain);
104
- domainValueGet[key]=valueToUpdate;
105
- await updateDomain(domain, domainValueGet);
106
- return (await this.getDomain(domain));
107
- },
97
+ async updateDomainValueByOneKeyValue(domain, key, valueToUpdate) {
98
+ if (!(await this.#checkDomain(domain))) {
99
+ await this.#addDomain(domain);
100
+ }
101
+ let domainValueGet = await this.getDomain(domain);
102
+ domainValueGet[key] = valueToUpdate;
103
+ await this.#updateDomain(domain, domainValueGet);
104
+ return await this.getDomain(domain);
105
+ }
108
106
 
109
107
  /**
110
- * @param domain 'xxx.xxxxx.xxx'
108
+ * @param {string} domain 'xxx.xxxxx.xxx'
111
109
  * @return {Promise<{}>}
112
110
  */
113
- clearThisDomain: async function (domain) {
114
- let domainValue = await this.getDomain(domain);
115
- await removeDomain(domain);
116
- return domainValue;
117
- },
118
- };
111
+ async clearThisDomain(domain) {
112
+ let domainValue = await this.getDomain(domain);
113
+ await this.#removeDomain(domain);
114
+ return domainValue;
115
+ }
116
+ }
117
+
118
+ /**
119
+ * eg:
120
+ *
121
+ * "domain www.abcdefg.com":{
122
+ * "keyAAA": "valueBBB"
123
+ * }
124
+ *
125
+ * @returns {{getALLDomainKey: function(): Promise<string[]>, getALLDomainMap: function(): Promise<{domainList: *, domainKeyValueMap: {}}>, getDomain: function(string): Promise<{}>, updateDomainValueByOneKeyValue: function(string, string, string): Promise<{}>, clearThisDomain: function(*): Promise<{}>}}
126
+ */
127
+ export function baseORM() {
128
+
129
+ let keyPrefix = `domain `;
130
+ const domainKey = (k) => `${keyPrefix}${k}`;
131
+ const domainDefaultValue = {};
132
+
133
+ /**
134
+ * check domain exists, return true/false
135
+ * @param domain{string}
136
+ * @return {Promise<boolean>}
137
+ */
138
+ async function checkDomain(domain) {
139
+ return await stoOpCheck(domainKey(domain));
140
+ }
141
+
142
+ /**
143
+ * @param domain{string}
144
+ * @return {Promise<void>}
145
+ */
146
+ async function addDomain(domain) {
147
+ await stoOpSet(domainKey(domain), domainDefaultValue);
148
+ }
149
+
150
+ /**
151
+ * @param domain{string}
152
+ * @return {Promise<void>}
153
+ */
154
+ async function removeDomain(domain) {
155
+ await stoOpRem(domainKey(domain));
156
+ }
157
+
158
+ /**
159
+ * @param domain{string}
160
+ * @param valueNew
161
+ * @return {Promise<void>}
162
+ */
163
+ async function updateDomain(domain, valueNew) {
164
+ await stoOpSet(domainKey(domain), valueNew);
165
+ }
166
+
167
+ return {
168
+ /**
169
+ * eg: ['a.com', 'b.com', 'c.com']
170
+ * @returns {Promise<string[]>}
171
+ */
172
+ getALLDomainKey: async function () {
173
+ // stoOpQueryByPrefix
174
+ let strings = await stoOpQuery_startsWith(keyPrefix);
175
+ return strings.map(v => v.replaceAll(keyPrefix, ''));
176
+ },
177
+ getALLDomainMap: async function () {
178
+ let domainList = await this.getALLDomainKey();
179
+
180
+ // todo use for-loop not the reduce()!
181
+ const domainKeyValueMap = {}
182
+ for (let domain of domainList) {
183
+ domainKeyValueMap[domain] = await this.getDomain(domain)
184
+ }
185
+
186
+ return {domainList, domainKeyValueMap};
187
+ },
188
+
189
+ /**
190
+ *
191
+ * @param {string}domain
192
+ * @returns {Promise<{}>}
193
+ */
194
+ getDomain: async function (domain) {
195
+ if (!await checkDomain(domain)) {
196
+ await addDomain(domain);
197
+ }
198
+ return await stoOpGet(domainKey(domain));
199
+ },
200
+
201
+ /**
202
+ * {a:a1} => {a:a222}
203
+ * @param {string}domain 'xxx.xxxxx.xxx'
204
+ * @param{string}key
205
+ * @param {string}valueToUpdate
206
+ * @return {Promise<{}>}
207
+ */
208
+ updateDomainValueByOneKeyValue: async function (domain, key, valueToUpdate) {
209
+ if (!await checkDomain(domain)) {
210
+ await addDomain(domain);
211
+ }
212
+ let domainValueGet = await this.getDomain(domain);
213
+ domainValueGet[key] = valueToUpdate;
214
+ await updateDomain(domain, domainValueGet);
215
+ return (await this.getDomain(domain));
216
+ },
217
+
218
+ /**
219
+ * @param domain 'xxx.xxxxx.xxx'
220
+ * @return {Promise<{}>}
221
+ */
222
+ clearThisDomain: async function (domain) {
223
+ let domainValue = await this.getDomain(domain);
224
+ await removeDomain(domain);
225
+ return domainValue;
226
+ },
227
+ };
119
228
  }