@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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/session.js +26 -12
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nka212bg/backend-utils",
3
3
  "author": "nka212bg",
4
- "version": "0.1.32",
4
+ "version": "0.1.33",
5
5
  "main": "index.js",
6
6
  "dependencies": {
7
7
  "@maxmind/geoip2-node": "^5.0.0",
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 undefined;
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) delete STATE[t];
74
+ if (s[field] == value) {
75
+ delete STATE[t];
76
+ itemsCount += 1;
77
+ }
70
78
  });
71
- return true;
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.includes("=")) {
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 true;
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 true;
124
+ return { ...fields };
111
125
  },
112
126
  },
113
127
  );