@flopflip/cache 14.0.1 → 14.0.2
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/declarations/src/cache/cache.d.ts +2 -1
- package/dist/declarations/src/cache/index.d.ts +1 -1
- package/dist/declarations/src/index.d.ts +1 -1
- package/dist/flopflip-cache.cjs.dev.js +16 -3
- package/dist/flopflip-cache.cjs.prod.js +16 -3
- package/dist/flopflip-cache.esm.js +16 -4
- package/package.json +4 -4
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type TAdapter, type TAdapterIdentifiers, type TCacheIdentifiers, type TFlags } from '@flopflip/types';
|
|
2
2
|
declare function getCachePrefix(adapterIdentifiers: TAdapterIdentifiers): string;
|
|
3
|
-
declare function
|
|
3
|
+
export declare function encodeCacheContext(cacheContext: any): string;
|
|
4
|
+
declare function getCache(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers, cacheContext?: any): Promise<{
|
|
4
5
|
set(flags: TFlags): any;
|
|
5
6
|
get(): any;
|
|
6
7
|
unset(): any;
|
|
@@ -80,6 +80,14 @@ const FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';
|
|
|
80
80
|
function getCachePrefix(adapterIdentifiers) {
|
|
81
81
|
return `@flopflip/${adapterIdentifiers}-adapter`;
|
|
82
82
|
}
|
|
83
|
+
function encodeCacheContext(cacheContext) {
|
|
84
|
+
const encodedAsJson = JSON.stringify(cacheContext);
|
|
85
|
+
const hashCode = [...encodedAsJson].reduce(
|
|
86
|
+
// eslint-disable-next-line no-bitwise
|
|
87
|
+
(hash, c) => Math.imul(31, hash) + c.charCodeAt(0) | 0, 0);
|
|
88
|
+
const encodedCacheContext = Math.abs(hashCode).toString();
|
|
89
|
+
return encodedCacheContext;
|
|
90
|
+
}
|
|
83
91
|
async function importCache(cacheIdentifier) {
|
|
84
92
|
let cacheModule;
|
|
85
93
|
switch (cacheIdentifier) {
|
|
@@ -96,11 +104,15 @@ async function importCache(cacheIdentifier) {
|
|
|
96
104
|
}
|
|
97
105
|
return cacheModule;
|
|
98
106
|
}
|
|
99
|
-
async function getCache(cacheIdentifier, adapterIdentifiers,
|
|
107
|
+
async function getCache(cacheIdentifier, adapterIdentifiers, cacheContext) {
|
|
100
108
|
const cacheModule = await importCache(cacheIdentifier);
|
|
101
109
|
const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
|
|
102
110
|
const createCache = cacheModule.default;
|
|
103
|
-
|
|
111
|
+
let encodedCacheContext = '';
|
|
112
|
+
try {
|
|
113
|
+
encodedCacheContext = encodeCacheContext(cacheContext);
|
|
114
|
+
} catch (error) {}
|
|
115
|
+
const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext].filter(Boolean).join('/');
|
|
104
116
|
const flagsCache = createCache({
|
|
105
117
|
prefix: flagsCachePrefix
|
|
106
118
|
});
|
|
@@ -152,8 +164,9 @@ function getAllCachedFlags(adapter, cacheIdentifier) {
|
|
|
152
164
|
return getCachedFlags(cacheIdentifier, adapter.id);
|
|
153
165
|
}
|
|
154
166
|
|
|
155
|
-
const version = "14.0.
|
|
167
|
+
const version = "14.0.2";
|
|
156
168
|
|
|
169
|
+
exports.encodeCacheContext = encodeCacheContext;
|
|
157
170
|
exports.getAllCachedFlags = getAllCachedFlags;
|
|
158
171
|
exports.getCache = getCache;
|
|
159
172
|
exports.getCachedFlags = getCachedFlags;
|
|
@@ -80,6 +80,14 @@ const FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';
|
|
|
80
80
|
function getCachePrefix(adapterIdentifiers) {
|
|
81
81
|
return `@flopflip/${adapterIdentifiers}-adapter`;
|
|
82
82
|
}
|
|
83
|
+
function encodeCacheContext(cacheContext) {
|
|
84
|
+
const encodedAsJson = JSON.stringify(cacheContext);
|
|
85
|
+
const hashCode = [...encodedAsJson].reduce(
|
|
86
|
+
// eslint-disable-next-line no-bitwise
|
|
87
|
+
(hash, c) => Math.imul(31, hash) + c.charCodeAt(0) | 0, 0);
|
|
88
|
+
const encodedCacheContext = Math.abs(hashCode).toString();
|
|
89
|
+
return encodedCacheContext;
|
|
90
|
+
}
|
|
83
91
|
async function importCache(cacheIdentifier) {
|
|
84
92
|
let cacheModule;
|
|
85
93
|
switch (cacheIdentifier) {
|
|
@@ -96,11 +104,15 @@ async function importCache(cacheIdentifier) {
|
|
|
96
104
|
}
|
|
97
105
|
return cacheModule;
|
|
98
106
|
}
|
|
99
|
-
async function getCache(cacheIdentifier, adapterIdentifiers,
|
|
107
|
+
async function getCache(cacheIdentifier, adapterIdentifiers, cacheContext) {
|
|
100
108
|
const cacheModule = await importCache(cacheIdentifier);
|
|
101
109
|
const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
|
|
102
110
|
const createCache = cacheModule.default;
|
|
103
|
-
|
|
111
|
+
let encodedCacheContext = '';
|
|
112
|
+
try {
|
|
113
|
+
encodedCacheContext = encodeCacheContext(cacheContext);
|
|
114
|
+
} catch (error) {}
|
|
115
|
+
const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext].filter(Boolean).join('/');
|
|
104
116
|
const flagsCache = createCache({
|
|
105
117
|
prefix: flagsCachePrefix
|
|
106
118
|
});
|
|
@@ -152,8 +164,9 @@ function getAllCachedFlags(adapter, cacheIdentifier) {
|
|
|
152
164
|
return getCachedFlags(cacheIdentifier, adapter.id);
|
|
153
165
|
}
|
|
154
166
|
|
|
155
|
-
const version = "14.0.
|
|
167
|
+
const version = "14.0.2";
|
|
156
168
|
|
|
169
|
+
exports.encodeCacheContext = encodeCacheContext;
|
|
157
170
|
exports.getAllCachedFlags = getAllCachedFlags;
|
|
158
171
|
exports.getCache = getCache;
|
|
159
172
|
exports.getCachedFlags = getCachedFlags;
|
|
@@ -58,6 +58,14 @@ const FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';
|
|
|
58
58
|
function getCachePrefix(adapterIdentifiers) {
|
|
59
59
|
return `@flopflip/${adapterIdentifiers}-adapter`;
|
|
60
60
|
}
|
|
61
|
+
function encodeCacheContext(cacheContext) {
|
|
62
|
+
const encodedAsJson = JSON.stringify(cacheContext);
|
|
63
|
+
const hashCode = [...encodedAsJson].reduce(
|
|
64
|
+
// eslint-disable-next-line no-bitwise
|
|
65
|
+
(hash, c) => Math.imul(31, hash) + c.charCodeAt(0) | 0, 0);
|
|
66
|
+
const encodedCacheContext = Math.abs(hashCode).toString();
|
|
67
|
+
return encodedCacheContext;
|
|
68
|
+
}
|
|
61
69
|
async function importCache(cacheIdentifier) {
|
|
62
70
|
let cacheModule;
|
|
63
71
|
switch (cacheIdentifier) {
|
|
@@ -74,11 +82,15 @@ async function importCache(cacheIdentifier) {
|
|
|
74
82
|
}
|
|
75
83
|
return cacheModule;
|
|
76
84
|
}
|
|
77
|
-
async function getCache(cacheIdentifier, adapterIdentifiers,
|
|
85
|
+
async function getCache(cacheIdentifier, adapterIdentifiers, cacheContext) {
|
|
78
86
|
const cacheModule = await importCache(cacheIdentifier);
|
|
79
87
|
const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
|
|
80
88
|
const createCache = cacheModule.default;
|
|
81
|
-
|
|
89
|
+
let encodedCacheContext = '';
|
|
90
|
+
try {
|
|
91
|
+
encodedCacheContext = encodeCacheContext(cacheContext);
|
|
92
|
+
} catch (error) {}
|
|
93
|
+
const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext].filter(Boolean).join('/');
|
|
82
94
|
const flagsCache = createCache({
|
|
83
95
|
prefix: flagsCachePrefix
|
|
84
96
|
});
|
|
@@ -130,6 +142,6 @@ function getAllCachedFlags(adapter, cacheIdentifier) {
|
|
|
130
142
|
return getCachedFlags(cacheIdentifier, adapter.id);
|
|
131
143
|
}
|
|
132
144
|
|
|
133
|
-
const version = "14.0.
|
|
145
|
+
const version = "14.0.2";
|
|
134
146
|
|
|
135
|
-
export { getAllCachedFlags, getCache, getCachedFlags, version };
|
|
147
|
+
export { encodeCacheContext, getAllCachedFlags, getCache, getCachedFlags, version };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flopflip/cache",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.2",
|
|
4
4
|
"description": "Caching for flipflop adapters",
|
|
5
5
|
"main": "dist/flopflip-cache.cjs.js",
|
|
6
6
|
"module": "dist/flopflip-cache.esm.js",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"client"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@flopflip/localstorage-cache": "14.0.
|
|
33
|
-
"@flopflip/sessionstorage-cache": "14.0.
|
|
34
|
-
"@flopflip/types": "14.0.
|
|
32
|
+
"@flopflip/localstorage-cache": "14.0.2",
|
|
33
|
+
"@flopflip/sessionstorage-cache": "14.0.2",
|
|
34
|
+
"@flopflip/types": "14.0.2"
|
|
35
35
|
}
|
|
36
36
|
}
|