@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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/session.js +29 -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.34",
5
5
  "main": "index.js",
6
6
  "dependencies": {
7
7
  "@maxmind/geoip2-node": "^5.0.0",
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 undefined;
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) delete STATE[t];
76
+ if (s[field] == value) {
77
+ delete STATE[t];
78
+ itemsCount += 1;
79
+ }
70
80
  });
71
- return true;
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 (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
- }
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 true;
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 true;
127
+ return { ...fields };
111
128
  },
112
129
  },
113
130
  );