@sebspark/promise-cache 3.0.1 → 3.1.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 +14 -120
- package/dist/index.mjs +4 -120
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// src/index.ts
|
|
@@ -30,6 +40,7 @@ var import_node_crypto = require("crypto");
|
|
|
30
40
|
|
|
31
41
|
// src/persistor.ts
|
|
32
42
|
var import_redis = require("redis");
|
|
43
|
+
var import_superjson = __toESM(require("superjson"));
|
|
33
44
|
|
|
34
45
|
// src/localMemory.ts
|
|
35
46
|
var LocalStorage = class {
|
|
@@ -72,118 +83,6 @@ var createLocalMemoryClient = () => {
|
|
|
72
83
|
return localStorage;
|
|
73
84
|
};
|
|
74
85
|
|
|
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
86
|
// src/persistor.ts
|
|
188
87
|
var CACHE_CLIENT = import_redis.createClient;
|
|
189
88
|
var isTestRunning = process.env.NODE_ENV === "test";
|
|
@@ -285,8 +184,8 @@ var Persistor = class {
|
|
|
285
184
|
return;
|
|
286
185
|
}
|
|
287
186
|
try {
|
|
288
|
-
const serializedData =
|
|
289
|
-
value
|
|
187
|
+
const serializedData = import_superjson.default.stringify({
|
|
188
|
+
value,
|
|
290
189
|
ttl,
|
|
291
190
|
timestamp
|
|
292
191
|
});
|
|
@@ -313,12 +212,7 @@ var Persistor = class {
|
|
|
313
212
|
if (!data) {
|
|
314
213
|
return null;
|
|
315
214
|
}
|
|
316
|
-
|
|
317
|
-
const deserialized = JSON.parse(storedData.value);
|
|
318
|
-
return {
|
|
319
|
-
...storedData,
|
|
320
|
-
value: deserialize(deserialized)
|
|
321
|
-
};
|
|
215
|
+
return import_superjson.default.parse(data);
|
|
322
216
|
} catch (error) {
|
|
323
217
|
(_b = this.logger) == null ? void 0 : _b.error(`Error getting data in redis: ${error}`);
|
|
324
218
|
throw new Error(`Error getting data from redis: ${error}`);
|
package/dist/index.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import { randomUUID } from "node:crypto";
|
|
|
3
3
|
|
|
4
4
|
// src/persistor.ts
|
|
5
5
|
import { createClient } from "redis";
|
|
6
|
+
import superjson from "superjson";
|
|
6
7
|
|
|
7
8
|
// src/localMemory.ts
|
|
8
9
|
var LocalStorage = class {
|
|
@@ -45,118 +46,6 @@ var createLocalMemoryClient = () => {
|
|
|
45
46
|
return localStorage;
|
|
46
47
|
};
|
|
47
48
|
|
|
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
49
|
// src/persistor.ts
|
|
161
50
|
var CACHE_CLIENT = createClient;
|
|
162
51
|
var isTestRunning = process.env.NODE_ENV === "test";
|
|
@@ -258,8 +147,8 @@ var Persistor = class {
|
|
|
258
147
|
return;
|
|
259
148
|
}
|
|
260
149
|
try {
|
|
261
|
-
const serializedData =
|
|
262
|
-
value
|
|
150
|
+
const serializedData = superjson.stringify({
|
|
151
|
+
value,
|
|
263
152
|
ttl,
|
|
264
153
|
timestamp
|
|
265
154
|
});
|
|
@@ -286,12 +175,7 @@ var Persistor = class {
|
|
|
286
175
|
if (!data) {
|
|
287
176
|
return null;
|
|
288
177
|
}
|
|
289
|
-
|
|
290
|
-
const deserialized = JSON.parse(storedData.value);
|
|
291
|
-
return {
|
|
292
|
-
...storedData,
|
|
293
|
-
value: deserialize(deserialized)
|
|
294
|
-
};
|
|
178
|
+
return superjson.parse(data);
|
|
295
179
|
} catch (error) {
|
|
296
180
|
(_b = this.logger) == null ? void 0 : _b.error(`Error getting data in redis: ${error}`);
|
|
297
181
|
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.1.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"tsconfig": "*"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"redis": "4.7.0"
|
|
22
|
+
"redis": "4.7.0",
|
|
23
|
+
"superjson": "^2.2.2"
|
|
23
24
|
}
|
|
24
25
|
}
|