@vercel/functions 3.3.6 → 3.4.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/CHANGELOG.md +7 -0
- package/cache/index.js +21 -2
- package/docs/modules/index.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @vercel/functions
|
|
2
2
|
|
|
3
|
+
## 3.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Fix cache tags to be URL encoded before being sent to the cache API. Tags containing special characters (spaces, commas, ampersands, etc.) are now properly encoded using `encodeURIComponent`. This ([#14749](https://github.com/vercel/vercel/pull/14749))
|
|
8
|
+
ensures tags like `"my tag"` or `"category,item"` are correctly handled when setting cache entries or expiring tags.
|
|
9
|
+
|
|
3
10
|
## 3.3.6
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
package/cache/index.js
CHANGED
|
@@ -37,6 +37,21 @@ const defaultKeyHashFunction = (key) => {
|
|
|
37
37
|
return (hash >>> 0).toString(16);
|
|
38
38
|
};
|
|
39
39
|
const defaultNamespaceSeparator = "$";
|
|
40
|
+
function encodeTags(tags) {
|
|
41
|
+
return tags.map(encodeURIComponent);
|
|
42
|
+
}
|
|
43
|
+
function encodeTag(tag) {
|
|
44
|
+
return Array.isArray(tag) ? encodeTags(tag) : encodeURIComponent(tag);
|
|
45
|
+
}
|
|
46
|
+
function encodeOptions(options) {
|
|
47
|
+
if (!options) {
|
|
48
|
+
return void 0;
|
|
49
|
+
}
|
|
50
|
+
if (options.tags && options.tags.length > 0) {
|
|
51
|
+
return { ...options, tags: encodeTags(options.tags) };
|
|
52
|
+
}
|
|
53
|
+
return options;
|
|
54
|
+
}
|
|
40
55
|
let inMemoryCacheInstance = null;
|
|
41
56
|
let buildCacheInstance = null;
|
|
42
57
|
const getCache = (cacheOptions) => {
|
|
@@ -71,13 +86,17 @@ function wrapWithKeyTransformation(resolveCache, makeKey) {
|
|
|
71
86
|
return resolveCache().get(makeKey(key));
|
|
72
87
|
},
|
|
73
88
|
set: (key, value, options) => {
|
|
74
|
-
|
|
89
|
+
const encodedOptions = encodeOptions(options);
|
|
90
|
+
if (encodedOptions) {
|
|
91
|
+
return resolveCache().set(makeKey(key), value, encodedOptions);
|
|
92
|
+
}
|
|
93
|
+
return resolveCache().set(makeKey(key), value);
|
|
75
94
|
},
|
|
76
95
|
delete: (key) => {
|
|
77
96
|
return resolveCache().delete(makeKey(key));
|
|
78
97
|
},
|
|
79
98
|
expireTag: (tag) => {
|
|
80
|
-
return resolveCache().expireTag(tag);
|
|
99
|
+
return resolveCache().expireTag(encodeTag(tag));
|
|
81
100
|
}
|
|
82
101
|
};
|
|
83
102
|
}
|
package/docs/modules/index.md
CHANGED
|
@@ -261,7 +261,7 @@ An instance of the Vercel Runtime Cache.
|
|
|
261
261
|
|
|
262
262
|
#### Defined in
|
|
263
263
|
|
|
264
|
-
[packages/functions/src/cache/index.ts:
|
|
264
|
+
[packages/functions/src/cache/index.ts:55](https://github.com/vercel/vercel/blob/main/packages/functions/src/cache/index.ts#L55)
|
|
265
265
|
|
|
266
266
|
---
|
|
267
267
|
|