@sebspark/promise-cache 3.0.1 → 3.2.0
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/dist/index.js +5 -120
- package/dist/index.mjs +12 -120
- package/package.json +4 -2
package/dist/index.js
CHANGED
|
@@ -72,119 +72,9 @@ var createLocalMemoryClient = () => {
|
|
|
72
72
|
return localStorage;
|
|
73
73
|
};
|
|
74
74
|
|
|
75
|
-
// src/serializerUtils.ts
|
|
76
|
-
function serialize(value) {
|
|
77
|
-
const type = typeof value;
|
|
78
|
-
if (value === null) {
|
|
79
|
-
return JSON.stringify({ type: "null" });
|
|
80
|
-
}
|
|
81
|
-
if (value === void 0) {
|
|
82
|
-
return JSON.stringify({ type: "undefined" });
|
|
83
|
-
}
|
|
84
|
-
switch (type) {
|
|
85
|
-
case "string":
|
|
86
|
-
case "number":
|
|
87
|
-
case "boolean":
|
|
88
|
-
return JSON.stringify({ type, value });
|
|
89
|
-
case "bigint":
|
|
90
|
-
return JSON.stringify({ type: "bigint", value: value.toString() });
|
|
91
|
-
case "object": {
|
|
92
|
-
if (Array.isArray(value)) {
|
|
93
|
-
return JSON.stringify({ type: "array", value: value.map(serialize) });
|
|
94
|
-
}
|
|
95
|
-
if (value instanceof Map) {
|
|
96
|
-
const entries = Array.from(value.entries()).map(([key, val]) => [
|
|
97
|
-
serialize(key),
|
|
98
|
-
serialize(val)
|
|
99
|
-
]);
|
|
100
|
-
return JSON.stringify({ type: "map", value: entries });
|
|
101
|
-
}
|
|
102
|
-
if (value instanceof Set) {
|
|
103
|
-
const entries = Array.from(value).map(serialize);
|
|
104
|
-
return JSON.stringify({ type: "set", value: entries });
|
|
105
|
-
}
|
|
106
|
-
if (value.constructor === Object) {
|
|
107
|
-
const entries = Object.entries(value).reduce(
|
|
108
|
-
(acc, [key, val]) => {
|
|
109
|
-
acc[key] = serialize(val);
|
|
110
|
-
return acc;
|
|
111
|
-
},
|
|
112
|
-
{}
|
|
113
|
-
);
|
|
114
|
-
return JSON.stringify({ type: "object", value: entries });
|
|
115
|
-
}
|
|
116
|
-
throw new Error("Cannot serialize non-plain objects");
|
|
117
|
-
}
|
|
118
|
-
default:
|
|
119
|
-
throw new Error(`Unsupported type: ${type}`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function deserializePrimitives(serialized) {
|
|
123
|
-
let parsed = serialized;
|
|
124
|
-
if (typeof serialized === "string") {
|
|
125
|
-
parsed = JSON.parse(serialized);
|
|
126
|
-
}
|
|
127
|
-
switch (parsed.type) {
|
|
128
|
-
case "string":
|
|
129
|
-
return parsed.value;
|
|
130
|
-
case "number":
|
|
131
|
-
return Number(parsed.value);
|
|
132
|
-
case "boolean":
|
|
133
|
-
return Boolean(parsed.value);
|
|
134
|
-
case "undefined":
|
|
135
|
-
return void 0;
|
|
136
|
-
case "bigint":
|
|
137
|
-
return BigInt(parsed.value);
|
|
138
|
-
case "null":
|
|
139
|
-
return null;
|
|
140
|
-
default:
|
|
141
|
-
throw new Error(
|
|
142
|
-
`Unsupported type during deserialization: ${JSON.stringify(parsed)}`
|
|
143
|
-
);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function deserialize(serialized) {
|
|
147
|
-
let parsed = serialized;
|
|
148
|
-
if (typeof serialized === "string") {
|
|
149
|
-
parsed = JSON.parse(serialized);
|
|
150
|
-
}
|
|
151
|
-
switch (parsed.type) {
|
|
152
|
-
case "string":
|
|
153
|
-
case "number":
|
|
154
|
-
case "boolean":
|
|
155
|
-
case "undefined":
|
|
156
|
-
case "bigint":
|
|
157
|
-
case "null":
|
|
158
|
-
return deserializePrimitives(parsed);
|
|
159
|
-
case "array":
|
|
160
|
-
return parsed.value.map(deserialize);
|
|
161
|
-
case "map": {
|
|
162
|
-
const map = /* @__PURE__ */ new Map();
|
|
163
|
-
for (const [key, val] of parsed.value) {
|
|
164
|
-
map.set(deserialize(key), deserialize(val));
|
|
165
|
-
}
|
|
166
|
-
return map;
|
|
167
|
-
}
|
|
168
|
-
case "set": {
|
|
169
|
-
const set = /* @__PURE__ */ new Set();
|
|
170
|
-
for (const item of parsed.value) {
|
|
171
|
-
set.add(deserialize(item));
|
|
172
|
-
}
|
|
173
|
-
return set;
|
|
174
|
-
}
|
|
175
|
-
case "object": {
|
|
176
|
-
const obj = {};
|
|
177
|
-
for (const [key, val] of Object.entries(parsed.value)) {
|
|
178
|
-
obj[key] = deserialize(val);
|
|
179
|
-
}
|
|
180
|
-
return obj;
|
|
181
|
-
}
|
|
182
|
-
default:
|
|
183
|
-
throw new Error(`Unsupported type during deserialization: ${parsed}`);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
75
|
// src/persistor.ts
|
|
76
|
+
var fixESM = require("fix-esm");
|
|
77
|
+
var superjson = fixESM.require("superjson");
|
|
188
78
|
var CACHE_CLIENT = import_redis.createClient;
|
|
189
79
|
var isTestRunning = process.env.NODE_ENV === "test";
|
|
190
80
|
function toMillis(seconds) {
|
|
@@ -285,8 +175,8 @@ var Persistor = class {
|
|
|
285
175
|
return;
|
|
286
176
|
}
|
|
287
177
|
try {
|
|
288
|
-
const serializedData =
|
|
289
|
-
value
|
|
178
|
+
const serializedData = superjson.stringify({
|
|
179
|
+
value,
|
|
290
180
|
ttl,
|
|
291
181
|
timestamp
|
|
292
182
|
});
|
|
@@ -313,12 +203,7 @@ var Persistor = class {
|
|
|
313
203
|
if (!data) {
|
|
314
204
|
return null;
|
|
315
205
|
}
|
|
316
|
-
|
|
317
|
-
const deserialized = JSON.parse(storedData.value);
|
|
318
|
-
return {
|
|
319
|
-
...storedData,
|
|
320
|
-
value: deserialize(deserialized)
|
|
321
|
-
};
|
|
206
|
+
return superjson.parse(data);
|
|
322
207
|
} catch (error) {
|
|
323
208
|
(_b = this.logger) == null ? void 0 : _b.error(`Error getting data in redis: ${error}`);
|
|
324
209
|
throw new Error(`Error getting data from redis: ${error}`);
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
1
8
|
// src/promiseCache.ts
|
|
2
9
|
import { randomUUID } from "node:crypto";
|
|
3
10
|
|
|
@@ -45,119 +52,9 @@ var createLocalMemoryClient = () => {
|
|
|
45
52
|
return localStorage;
|
|
46
53
|
};
|
|
47
54
|
|
|
48
|
-
// src/serializerUtils.ts
|
|
49
|
-
function serialize(value) {
|
|
50
|
-
const type = typeof value;
|
|
51
|
-
if (value === null) {
|
|
52
|
-
return JSON.stringify({ type: "null" });
|
|
53
|
-
}
|
|
54
|
-
if (value === void 0) {
|
|
55
|
-
return JSON.stringify({ type: "undefined" });
|
|
56
|
-
}
|
|
57
|
-
switch (type) {
|
|
58
|
-
case "string":
|
|
59
|
-
case "number":
|
|
60
|
-
case "boolean":
|
|
61
|
-
return JSON.stringify({ type, value });
|
|
62
|
-
case "bigint":
|
|
63
|
-
return JSON.stringify({ type: "bigint", value: value.toString() });
|
|
64
|
-
case "object": {
|
|
65
|
-
if (Array.isArray(value)) {
|
|
66
|
-
return JSON.stringify({ type: "array", value: value.map(serialize) });
|
|
67
|
-
}
|
|
68
|
-
if (value instanceof Map) {
|
|
69
|
-
const entries = Array.from(value.entries()).map(([key, val]) => [
|
|
70
|
-
serialize(key),
|
|
71
|
-
serialize(val)
|
|
72
|
-
]);
|
|
73
|
-
return JSON.stringify({ type: "map", value: entries });
|
|
74
|
-
}
|
|
75
|
-
if (value instanceof Set) {
|
|
76
|
-
const entries = Array.from(value).map(serialize);
|
|
77
|
-
return JSON.stringify({ type: "set", value: entries });
|
|
78
|
-
}
|
|
79
|
-
if (value.constructor === Object) {
|
|
80
|
-
const entries = Object.entries(value).reduce(
|
|
81
|
-
(acc, [key, val]) => {
|
|
82
|
-
acc[key] = serialize(val);
|
|
83
|
-
return acc;
|
|
84
|
-
},
|
|
85
|
-
{}
|
|
86
|
-
);
|
|
87
|
-
return JSON.stringify({ type: "object", value: entries });
|
|
88
|
-
}
|
|
89
|
-
throw new Error("Cannot serialize non-plain objects");
|
|
90
|
-
}
|
|
91
|
-
default:
|
|
92
|
-
throw new Error(`Unsupported type: ${type}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
function deserializePrimitives(serialized) {
|
|
96
|
-
let parsed = serialized;
|
|
97
|
-
if (typeof serialized === "string") {
|
|
98
|
-
parsed = JSON.parse(serialized);
|
|
99
|
-
}
|
|
100
|
-
switch (parsed.type) {
|
|
101
|
-
case "string":
|
|
102
|
-
return parsed.value;
|
|
103
|
-
case "number":
|
|
104
|
-
return Number(parsed.value);
|
|
105
|
-
case "boolean":
|
|
106
|
-
return Boolean(parsed.value);
|
|
107
|
-
case "undefined":
|
|
108
|
-
return void 0;
|
|
109
|
-
case "bigint":
|
|
110
|
-
return BigInt(parsed.value);
|
|
111
|
-
case "null":
|
|
112
|
-
return null;
|
|
113
|
-
default:
|
|
114
|
-
throw new Error(
|
|
115
|
-
`Unsupported type during deserialization: ${JSON.stringify(parsed)}`
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function deserialize(serialized) {
|
|
120
|
-
let parsed = serialized;
|
|
121
|
-
if (typeof serialized === "string") {
|
|
122
|
-
parsed = JSON.parse(serialized);
|
|
123
|
-
}
|
|
124
|
-
switch (parsed.type) {
|
|
125
|
-
case "string":
|
|
126
|
-
case "number":
|
|
127
|
-
case "boolean":
|
|
128
|
-
case "undefined":
|
|
129
|
-
case "bigint":
|
|
130
|
-
case "null":
|
|
131
|
-
return deserializePrimitives(parsed);
|
|
132
|
-
case "array":
|
|
133
|
-
return parsed.value.map(deserialize);
|
|
134
|
-
case "map": {
|
|
135
|
-
const map = /* @__PURE__ */ new Map();
|
|
136
|
-
for (const [key, val] of parsed.value) {
|
|
137
|
-
map.set(deserialize(key), deserialize(val));
|
|
138
|
-
}
|
|
139
|
-
return map;
|
|
140
|
-
}
|
|
141
|
-
case "set": {
|
|
142
|
-
const set = /* @__PURE__ */ new Set();
|
|
143
|
-
for (const item of parsed.value) {
|
|
144
|
-
set.add(deserialize(item));
|
|
145
|
-
}
|
|
146
|
-
return set;
|
|
147
|
-
}
|
|
148
|
-
case "object": {
|
|
149
|
-
const obj = {};
|
|
150
|
-
for (const [key, val] of Object.entries(parsed.value)) {
|
|
151
|
-
obj[key] = deserialize(val);
|
|
152
|
-
}
|
|
153
|
-
return obj;
|
|
154
|
-
}
|
|
155
|
-
default:
|
|
156
|
-
throw new Error(`Unsupported type during deserialization: ${parsed}`);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
55
|
// src/persistor.ts
|
|
56
|
+
var fixESM = __require("fix-esm");
|
|
57
|
+
var superjson = fixESM.require("superjson");
|
|
161
58
|
var CACHE_CLIENT = createClient;
|
|
162
59
|
var isTestRunning = process.env.NODE_ENV === "test";
|
|
163
60
|
function toMillis(seconds) {
|
|
@@ -258,8 +155,8 @@ var Persistor = class {
|
|
|
258
155
|
return;
|
|
259
156
|
}
|
|
260
157
|
try {
|
|
261
|
-
const serializedData =
|
|
262
|
-
value
|
|
158
|
+
const serializedData = superjson.stringify({
|
|
159
|
+
value,
|
|
263
160
|
ttl,
|
|
264
161
|
timestamp
|
|
265
162
|
});
|
|
@@ -286,12 +183,7 @@ var Persistor = class {
|
|
|
286
183
|
if (!data) {
|
|
287
184
|
return null;
|
|
288
185
|
}
|
|
289
|
-
|
|
290
|
-
const deserialized = JSON.parse(storedData.value);
|
|
291
|
-
return {
|
|
292
|
-
...storedData,
|
|
293
|
-
value: deserialize(deserialized)
|
|
294
|
-
};
|
|
186
|
+
return superjson.parse(data);
|
|
295
187
|
} catch (error) {
|
|
296
188
|
(_b = this.logger) == null ? void 0 : _b.error(`Error getting data in redis: ${error}`);
|
|
297
189
|
throw new Error(`Error getting data from redis: ${error}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebspark/promise-cache",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
"tsconfig": "*"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"
|
|
22
|
+
"fix-esm": "^1.0.1",
|
|
23
|
+
"redis": "4.7.0",
|
|
24
|
+
"superjson": "^2.2.2"
|
|
23
25
|
}
|
|
24
26
|
}
|