@nka212bg/backend-utils 0.1.32 → 0.1.34
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/package.json +1 -1
- package/session.js +29 -12
package/package.json
CHANGED
package/session.js
CHANGED
|
@@ -46,6 +46,9 @@ exports.serverState = new Proxy(
|
|
|
46
46
|
// const all = serverState.getAll; // => whole STATE map
|
|
47
47
|
// const alices = serverState["name=alice"]; // => all entries where name == "alice", each with its token
|
|
48
48
|
get(_, token) {
|
|
49
|
+
if (/^\s*(undefined|null|0)?\s*$/.test(token)) return false;
|
|
50
|
+
token = String(token).trim();
|
|
51
|
+
|
|
49
52
|
if (token === "getAll") return STATE;
|
|
50
53
|
|
|
51
54
|
if (token.includes("=")) {
|
|
@@ -55,7 +58,7 @@ exports.serverState = new Proxy(
|
|
|
55
58
|
.map(([token, s]) => ({ ...s, token }));
|
|
56
59
|
}
|
|
57
60
|
|
|
58
|
-
if (!STATE[token]) return
|
|
61
|
+
if (!STATE[token]) return false;
|
|
59
62
|
return { ...STATE[token], expireIn: STATE[token].expireTime - Date.now() + 60000 };
|
|
60
63
|
},
|
|
61
64
|
|
|
@@ -63,12 +66,19 @@ exports.serverState = new Proxy(
|
|
|
63
66
|
// delete serverState["abc123"];
|
|
64
67
|
// delete serverState["name=alice"]; // bulk delete, removes every entry where name == "alice"
|
|
65
68
|
deleteProperty(_, token) {
|
|
69
|
+
if (/^\s*(undefined|null|0)?\s*$/.test(token)) return false;
|
|
70
|
+
token = String(token).trim();
|
|
71
|
+
|
|
66
72
|
if (token.includes("=")) {
|
|
67
73
|
const [field, value] = token.trim().split(/\s*=\s*/);
|
|
74
|
+
let itemsCount = 0;
|
|
68
75
|
Object.entries(STATE).forEach(([t, s]) => {
|
|
69
|
-
if (s[field] == value)
|
|
76
|
+
if (s[field] == value) {
|
|
77
|
+
delete STATE[t];
|
|
78
|
+
itemsCount += 1;
|
|
79
|
+
}
|
|
70
80
|
});
|
|
71
|
-
return
|
|
81
|
+
return !itemsCount ? false : String(itemsCount);
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
delete STATE[token];
|
|
@@ -81,25 +91,32 @@ exports.serverState = new Proxy(
|
|
|
81
91
|
// serverState["abc123"] = null; // delete, cookie-expiry trick
|
|
82
92
|
// serverState["name=alice"] = {name: 'john'}; // bulk update, merges into every entry where name == "alice"
|
|
83
93
|
set(_, token, fields) {
|
|
84
|
-
if (
|
|
85
|
-
|
|
86
|
-
Object.entries(STATE).forEach(([t, s]) => {
|
|
87
|
-
if (s[field] == value) STATE[t] = { ...s, ...fields };
|
|
88
|
-
});
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
94
|
+
if (/^\s*(undefined|null|0)?\s*$/.test(token)) return false;
|
|
95
|
+
token = String(token).trim();
|
|
91
96
|
|
|
92
97
|
if (!fields) {
|
|
93
98
|
delete STATE[token];
|
|
94
99
|
return true;
|
|
95
100
|
}
|
|
96
101
|
|
|
102
|
+
if (token.includes("=")) {
|
|
103
|
+
const [field, value] = token.trim().split(/\s*=\s*/);
|
|
104
|
+
let itemsCount = 0;
|
|
105
|
+
Object.entries(STATE).forEach(([t, s]) => {
|
|
106
|
+
if (s[field] == value) {
|
|
107
|
+
STATE[t] = { ...s, ...fields };
|
|
108
|
+
itemsCount += 1;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
return !itemsCount ? false : String(itemsCount);
|
|
112
|
+
}
|
|
113
|
+
|
|
97
114
|
const now = Date.now();
|
|
98
115
|
|
|
99
116
|
if (STATE[token]) {
|
|
100
117
|
if (fields.expirePeriod) fields.expireTime = now + fields.expirePeriod;
|
|
101
118
|
STATE[token] = { ...STATE[token], ...fields };
|
|
102
|
-
return
|
|
119
|
+
return { ...STATE[token] };
|
|
103
120
|
}
|
|
104
121
|
|
|
105
122
|
fields.expirePeriod ||= 60000 * 60 * 24 * 7; // 7 days
|
|
@@ -107,7 +124,7 @@ exports.serverState = new Proxy(
|
|
|
107
124
|
fields.uuid = createToken({ type: "date" });
|
|
108
125
|
|
|
109
126
|
STATE[token] = fields;
|
|
110
|
-
return
|
|
127
|
+
return { ...fields };
|
|
111
128
|
},
|
|
112
129
|
},
|
|
113
130
|
);
|