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