@flopflip/cache 14.0.1 → 15.0.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.cjs ADDED
@@ -0,0 +1,148 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+
38
+ // src/cache.ts
39
+
40
+
41
+ var _types = require('@flopflip/types');
42
+ var FLAGS_CACHE_KEY = "flags";
43
+ var FLAGS_REFERENCE_CACHE_KEY = "flags-reference";
44
+ function getCachePrefix(adapterIdentifiers) {
45
+ return `@flopflip/${adapterIdentifiers}-adapter`;
46
+ }
47
+ function encodeCacheContext(cacheContext) {
48
+ const encodedAsJson = JSON.stringify(cacheContext);
49
+ const hashCode = [...encodedAsJson].reduce(
50
+ (hash, c) => Math.imul(31, hash) + c.charCodeAt(0) | 0,
51
+ 0
52
+ );
53
+ const encodedCacheContext = Math.abs(hashCode).toString();
54
+ return encodedCacheContext;
55
+ }
56
+ function importCache(cacheIdentifier) {
57
+ return __async(this, null, function* () {
58
+ let cacheModule;
59
+ switch (cacheIdentifier) {
60
+ case _types.cacheIdentifiers.local: {
61
+ cacheModule = yield Promise.resolve().then(() => _interopRequireWildcard(require("@flopflip/localstorage-cache")));
62
+ break;
63
+ }
64
+ case _types.cacheIdentifiers.session: {
65
+ cacheModule = yield Promise.resolve().then(() => _interopRequireWildcard(require("@flopflip/sessionstorage-cache")));
66
+ break;
67
+ }
68
+ }
69
+ return cacheModule;
70
+ });
71
+ }
72
+ function getCache(cacheIdentifier, adapterIdentifiers, cacheContext) {
73
+ return __async(this, null, function* () {
74
+ const cacheModule = yield importCache(cacheIdentifier);
75
+ const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
76
+ const createCache = cacheModule.createCache;
77
+ let encodedCacheContext = "";
78
+ try {
79
+ encodedCacheContext = encodeCacheContext(cacheContext);
80
+ } catch (_) {
81
+ }
82
+ const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext].filter(Boolean).join("/");
83
+ const flagsCache = createCache({ prefix: flagsCachePrefix });
84
+ const referenceCache = createCache({ prefix: CACHE_PREFIX });
85
+ return {
86
+ set(flags) {
87
+ const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);
88
+ if (haveFlagsBeenWritten) {
89
+ referenceCache.set(
90
+ FLAGS_REFERENCE_CACHE_KEY,
91
+ [flagsCachePrefix, FLAGS_CACHE_KEY].join("/")
92
+ );
93
+ }
94
+ return haveFlagsBeenWritten;
95
+ },
96
+ get() {
97
+ return flagsCache.get(FLAGS_CACHE_KEY);
98
+ },
99
+ unset() {
100
+ referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);
101
+ return flagsCache.unset(FLAGS_CACHE_KEY);
102
+ }
103
+ };
104
+ });
105
+ }
106
+ function getCachedFlags(cacheIdentifier, adapterIdentifiers) {
107
+ const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
108
+ const cacheModule = cacheIdentifier === _types.cacheIdentifiers.local ? localStorage : sessionStorage;
109
+ const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join("/");
110
+ const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);
111
+ if (referenceToCachedFlags) {
112
+ try {
113
+ const cacheKey = JSON.parse(referenceToCachedFlags);
114
+ const cachedFlags = cacheModule.getItem(cacheKey);
115
+ if (cacheKey && cachedFlags) {
116
+ return JSON.parse(cachedFlags);
117
+ }
118
+ } catch (_) {
119
+ console.warn(
120
+ `@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`
121
+ );
122
+ }
123
+ }
124
+ return {};
125
+ }
126
+ function getAllCachedFlags(adapter, cacheIdentifier) {
127
+ if (!cacheIdentifier) {
128
+ return {};
129
+ }
130
+ if (adapter.effectIds) {
131
+ return adapter.effectIds.reduce(
132
+ (defaultFlags, effectId) => __spreadValues(__spreadValues({}, defaultFlags), getCachedFlags(cacheIdentifier, effectId)),
133
+ {}
134
+ );
135
+ }
136
+ return getCachedFlags(cacheIdentifier, adapter.id);
137
+ }
138
+
139
+ // src/index.ts
140
+ var version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
141
+
142
+
143
+
144
+
145
+
146
+
147
+ exports.encodeCacheContext = encodeCacheContext; exports.getAllCachedFlags = getAllCachedFlags; exports.getCache = getCache; exports.getCachedFlags = getCachedFlags; exports.version = version;
148
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/flopflip/flopflip/packages/cache/dist/index.cjs","../src/cache.ts","../src/index.ts"],"names":[],"mappings":"AAAA,+VAAI,UAAU,EAAE,MAAM,CAAC,cAAc;AACrC,IAAI,oBAAoB,EAAE,MAAM,CAAC,qBAAqB;AACtD,IAAI,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;AAClD,IAAI,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB;AACxD,IAAI,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAC/J,IAAI,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AAC/B,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,EAAE,GAAG,CAAC,mBAAmB;AACzB,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,IAAI;AACJ,EAAE,OAAO,CAAC;AACV,CAAC;AACD,IAAI,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG;AAClD,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG;AAC1C,IAAI,IAAI,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG;AAC/B,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG;AAC9B,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AACpG,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,EAAE,CAAC,CAAC;AACJ,CAAC;AACD;AACA;ACrCA;AAKE;AAAA,wCACK;AAEP,IAAM,gBAAA,EAAkB,OAAA;AACxB,IAAM,0BAAA,EAA4B,iBAAA;AAElC,SAAS,cAAA,CAAe,kBAAA,EAAyC;AAC/D,EAAA,OAAO,CAAA,UAAA,EAAa,kBAAkB,CAAA,QAAA,CAAA;AACxC;AAEO,SAAS,kBAAA,CAAmB,YAAA,EAAmB;AACpD,EAAA,MAAM,cAAA,EAAgB,IAAA,CAAK,SAAA,CAAU,YAAY,CAAA;AAEjD,EAAA,MAAM,SAAA,EAAW,CAAC,GAAG,aAAa,CAAA,CAAE,MAAA;AAAA,IAClC,CAAC,IAAA,EAAM,CAAA,EAAA,GAAO,IAAA,CAAK,IAAA,CAAK,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,CAAE,UAAA,CAAW,CAAC,EAAA,EAAK,CAAA;AAAA,IACvD;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,oBAAA,EAAsB,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,CAAE,QAAA,CAAS,CAAA;AAExD,EAAA,OAAO,mBAAA;AACT;AAEA,SAAe,WAAA,CAAY,eAAA,EAAoC;AAAA,EAAA,OAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA;AAC7D,IAAA,IAAI,WAAA;AAEJ,IAAA,OAAA,CAAQ,eAAA,EAAiB;AAAA,MACvB,KAAK,uBAAA,CAAiB,KAAA,EAAO;AAC3B,QAAA,YAAA,EAAc,MAAM,4DAAA,CAAO,8BAA8B,GAAA;AACzD,QAAA,KAAA;AAAA,MACF;AAAA,MAEA,KAAK,uBAAA,CAAiB,OAAA,EAAS;AAC7B,QAAA,YAAA,EAAc,MAAM,4DAAA,CAAO,gCAAgC,GAAA;AAC3D,QAAA,KAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,WAAA;AAAA,EACT,CAAA,CAAA;AAAA;AAEA,SAAe,QAAA,CACb,eAAA,EACA,kBAAA,EACA,YAAA,EACA;AAAA,EAAA,OAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA;AACA,IAAA,MAAM,YAAA,EAAc,MAAM,WAAA,CAAY,eAAe,CAAA;AAErD,IAAA,MAAM,aAAA,EAAe,cAAA,CAAe,kBAAkB,CAAA;AACtD,IAAA,MAAM,YAAA,EAAc,WAAA,CAAY,WAAA;AAChC,IAAA,IAAI,oBAAA,EAAsB,EAAA;AAC1B,IAAA,IAAI;AACF,MAAA,oBAAA,EAAsB,kBAAA,CAAmB,YAAY,CAAA;AAAA,IACvD,EAAA,MAAA,CAAS,CAAA,EAAG;AAAA,IAEZ;AAEA,IAAA,MAAM,iBAAA,EAAmB,CAAC,YAAA,EAAc,mBAAmB,CAAA,CACxD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,IAAA,MAAM,WAAA,EAAa,WAAA,CAAY,EAAE,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAC3D,IAAA,MAAM,eAAA,EAAiB,WAAA,CAAY,EAAE,MAAA,EAAQ,aAAa,CAAC,CAAA;AAE3D,IAAA,OAAO;AAAA,MACL,GAAA,CAAI,KAAA,EAAe;AACjB,QAAA,MAAM,qBAAA,EAAuB,UAAA,CAAW,GAAA,CAAI,eAAA,EAAiB,KAAK,CAAA;AAElE,QAAA,GAAA,CAAI,oBAAA,EAAsB;AACxB,UAAA,cAAA,CAAe,GAAA;AAAA,YACb,yBAAA;AAAA,YACA,CAAC,gBAAA,EAAkB,eAAe,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,UAC9C,CAAA;AAAA,QACF;AAEA,QAAA,OAAO,oBAAA;AAAA,MACT,CAAA;AAAA,MACA,GAAA,CAAA,EAAM;AACJ,QAAA,OAAO,UAAA,CAAW,GAAA,CAAI,eAAe,CAAA;AAAA,MACvC,CAAA;AAAA,MACA,KAAA,CAAA,EAAQ;AACN,QAAA,cAAA,CAAe,KAAA,CAAM,yBAAyB,CAAA;AAE9C,QAAA,OAAO,UAAA,CAAW,KAAA,CAAM,eAAe,CAAA;AAAA,MACzC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,CAAA;AAAA;AAEA,SAAS,cAAA,CACP,eAAA,EACA,kBAAA,EACQ;AACR,EAAA,MAAM,aAAA,EAAe,cAAA,CAAe,kBAAkB,CAAA;AAEtD,EAAA,MAAM,YAAA,EACJ,gBAAA,IAAoB,uBAAA,CAAiB,MAAA,EAAQ,aAAA,EAAe,cAAA;AAC9D,EAAA,MAAM,iBAAA,EAAmB,CAAC,YAAA,EAAc,yBAAyB,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE3E,EAAA,MAAM,uBAAA,EAAyB,WAAA,CAAY,OAAA,CAAQ,gBAAgB,CAAA;AAEnE,EAAA,GAAA,CAAI,sBAAA,EAAwB;AAC1B,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,EAAmB,IAAA,CAAK,KAAA,CAAM,sBAAsB,CAAA;AAC1D,MAAA,MAAM,YAAA,EAAc,WAAA,CAAY,OAAA,CAAQ,QAAQ,CAAA;AAEhD,MAAA,GAAA,CAAI,SAAA,GAAY,WAAA,EAAa;AAC3B,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA;AAAA,MAC/B;AAAA,IACF,EAAA,MAAA,CAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,IAAA;AAAA,QACN,CAAA,mDAAA,EAAsD,eAAe,CAAA,CAAA;AAAA,MACvE,CAAA;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,CAAC,CAAA;AACV;AAEA,SAAS,iBAAA,CACP,OAAA,EACA,eAAA,EACA;AACA,EAAA,GAAA,CAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,OAAO,CAAC,CAAA;AAAA,EACV;AAEA,EAAA,GAAA,CAAI,OAAA,CAAQ,SAAA,EAAW;AACrB,IAAA,OAAO,OAAA,CAAQ,SAAA,CAAU,MAAA;AAAA,MACvB,CAAC,YAAA,EAAc,QAAA,EAAA,GAAc,cAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EACxB,YAAA,CAAA,EACA,cAAA,CAAe,eAAA,EAAiB,QAAQ,CAAA,CAAA;AAAA,MAE7C,CAAC;AAAA,IACH,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,cAAA,CAAe,eAAA,EAAiB,OAAA,CAAQ,EAAE,CAAA;AACnD;ADLA;AACA;AE1IA,IAAM,QAAA,EAAU,kCAAA;AF4IhB;AACE;AACA;AACA;AACA;AACA;AACF,gMAAC","file":"/home/runner/work/flopflip/flopflip/packages/cache/dist/index.cjs","sourcesContent":[null,"import {\n type TAdapter,\n type TAdapterIdentifiers,\n type TCacheIdentifiers,\n type TFlags,\n cacheIdentifiers,\n} from '@flopflip/types';\n\nconst FLAGS_CACHE_KEY = 'flags';\nconst FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';\n\nfunction getCachePrefix(adapterIdentifiers: TAdapterIdentifiers) {\n return `@flopflip/${adapterIdentifiers}-adapter`;\n}\n\nexport function encodeCacheContext(cacheContext: any) {\n const encodedAsJson = JSON.stringify(cacheContext);\n\n const hashCode = [...encodedAsJson].reduce(\n (hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0,\n 0\n );\n\n const encodedCacheContext = Math.abs(hashCode).toString();\n\n return encodedCacheContext;\n}\n\nasync function importCache(cacheIdentifier: TCacheIdentifiers) {\n let cacheModule: any;\n\n switch (cacheIdentifier) {\n case cacheIdentifiers.local: {\n cacheModule = await import('@flopflip/localstorage-cache');\n break;\n }\n\n case cacheIdentifiers.session: {\n cacheModule = await import('@flopflip/sessionstorage-cache');\n break;\n }\n }\n\n return cacheModule;\n}\n\nasync function getCache(\n cacheIdentifier: TCacheIdentifiers,\n adapterIdentifiers: TAdapterIdentifiers,\n cacheContext?: any\n) {\n const cacheModule = await importCache(cacheIdentifier);\n\n const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);\n const createCache = cacheModule.createCache;\n let encodedCacheContext = '';\n try {\n encodedCacheContext = encodeCacheContext(cacheContext);\n } catch (_) {\n // continue regardless of error\n }\n\n const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext]\n .filter(Boolean)\n .join('/');\n\n const flagsCache = createCache({ prefix: flagsCachePrefix });\n const referenceCache = createCache({ prefix: CACHE_PREFIX });\n\n return {\n set(flags: TFlags) {\n const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);\n\n if (haveFlagsBeenWritten) {\n referenceCache.set(\n FLAGS_REFERENCE_CACHE_KEY,\n [flagsCachePrefix, FLAGS_CACHE_KEY].join('/')\n );\n }\n\n return haveFlagsBeenWritten;\n },\n get() {\n return flagsCache.get(FLAGS_CACHE_KEY);\n },\n unset() {\n referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);\n\n return flagsCache.unset(FLAGS_CACHE_KEY);\n },\n };\n}\n\nfunction getCachedFlags(\n cacheIdentifier: TCacheIdentifiers,\n adapterIdentifiers: TAdapterIdentifiers\n): TFlags {\n const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);\n\n const cacheModule =\n cacheIdentifier === cacheIdentifiers.local ? localStorage : sessionStorage;\n const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join('/');\n\n const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);\n\n if (referenceToCachedFlags) {\n try {\n const cacheKey: string = JSON.parse(referenceToCachedFlags);\n const cachedFlags = cacheModule.getItem(cacheKey);\n\n if (cacheKey && cachedFlags) {\n return JSON.parse(cachedFlags);\n }\n } catch (_) {\n console.warn(\n `@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`\n );\n }\n }\n\n return {};\n}\n\nfunction getAllCachedFlags(\n adapter: TAdapter,\n cacheIdentifier?: TCacheIdentifiers\n) {\n if (!cacheIdentifier) {\n return {};\n }\n\n if (adapter.effectIds) {\n return adapter.effectIds.reduce(\n (defaultFlags, effectId) => ({\n ...defaultFlags,\n ...getCachedFlags(cacheIdentifier, effectId),\n }),\n {}\n );\n }\n\n return getCachedFlags(cacheIdentifier, adapter.id);\n}\n\nexport { getAllCachedFlags, getCache, getCachedFlags, getCachePrefix };\n","const version = '__@FLOPFLIP/VERSION_OF_RELEASE__';\n\nexport {\n encodeCacheContext,\n getAllCachedFlags,\n getCache,\n getCachedFlags,\n} from './cache';\nexport { version };\n"]}
@@ -0,0 +1,14 @@
1
+ import { TAdapter, TCacheIdentifiers, TFlags, TAdapterIdentifiers } from '@flopflip/types';
2
+
3
+ declare function encodeCacheContext(cacheContext: any): string;
4
+ declare function getCache(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers, cacheContext?: any): Promise<{
5
+ set(flags: TFlags): any;
6
+ get(): any;
7
+ unset(): any;
8
+ }>;
9
+ declare function getCachedFlags(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers): TFlags;
10
+ declare function getAllCachedFlags(adapter: TAdapter, cacheIdentifier?: TCacheIdentifiers): TFlags;
11
+
12
+ declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
13
+
14
+ export { encodeCacheContext, getAllCachedFlags, getCache, getCachedFlags, version };
@@ -0,0 +1,14 @@
1
+ import { TAdapter, TCacheIdentifiers, TFlags, TAdapterIdentifiers } from '@flopflip/types';
2
+
3
+ declare function encodeCacheContext(cacheContext: any): string;
4
+ declare function getCache(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers, cacheContext?: any): Promise<{
5
+ set(flags: TFlags): any;
6
+ get(): any;
7
+ unset(): any;
8
+ }>;
9
+ declare function getCachedFlags(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers): TFlags;
10
+ declare function getAllCachedFlags(adapter: TAdapter, cacheIdentifier?: TCacheIdentifiers): TFlags;
11
+
12
+ declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
13
+
14
+ export { encodeCacheContext, getAllCachedFlags, getCache, getCachedFlags, version };
package/dist/index.js ADDED
@@ -0,0 +1,148 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+
38
+ // src/cache.ts
39
+ import {
40
+ cacheIdentifiers
41
+ } from "@flopflip/types";
42
+ var FLAGS_CACHE_KEY = "flags";
43
+ var FLAGS_REFERENCE_CACHE_KEY = "flags-reference";
44
+ function getCachePrefix(adapterIdentifiers) {
45
+ return `@flopflip/${adapterIdentifiers}-adapter`;
46
+ }
47
+ function encodeCacheContext(cacheContext) {
48
+ const encodedAsJson = JSON.stringify(cacheContext);
49
+ const hashCode = [...encodedAsJson].reduce(
50
+ (hash, c) => Math.imul(31, hash) + c.charCodeAt(0) | 0,
51
+ 0
52
+ );
53
+ const encodedCacheContext = Math.abs(hashCode).toString();
54
+ return encodedCacheContext;
55
+ }
56
+ function importCache(cacheIdentifier) {
57
+ return __async(this, null, function* () {
58
+ let cacheModule;
59
+ switch (cacheIdentifier) {
60
+ case cacheIdentifiers.local: {
61
+ cacheModule = yield import("@flopflip/localstorage-cache");
62
+ break;
63
+ }
64
+ case cacheIdentifiers.session: {
65
+ cacheModule = yield import("@flopflip/sessionstorage-cache");
66
+ break;
67
+ }
68
+ }
69
+ return cacheModule;
70
+ });
71
+ }
72
+ function getCache(cacheIdentifier, adapterIdentifiers, cacheContext) {
73
+ return __async(this, null, function* () {
74
+ const cacheModule = yield importCache(cacheIdentifier);
75
+ const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
76
+ const createCache = cacheModule.createCache;
77
+ let encodedCacheContext = "";
78
+ try {
79
+ encodedCacheContext = encodeCacheContext(cacheContext);
80
+ } catch (_) {
81
+ }
82
+ const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext].filter(Boolean).join("/");
83
+ const flagsCache = createCache({ prefix: flagsCachePrefix });
84
+ const referenceCache = createCache({ prefix: CACHE_PREFIX });
85
+ return {
86
+ set(flags) {
87
+ const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);
88
+ if (haveFlagsBeenWritten) {
89
+ referenceCache.set(
90
+ FLAGS_REFERENCE_CACHE_KEY,
91
+ [flagsCachePrefix, FLAGS_CACHE_KEY].join("/")
92
+ );
93
+ }
94
+ return haveFlagsBeenWritten;
95
+ },
96
+ get() {
97
+ return flagsCache.get(FLAGS_CACHE_KEY);
98
+ },
99
+ unset() {
100
+ referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);
101
+ return flagsCache.unset(FLAGS_CACHE_KEY);
102
+ }
103
+ };
104
+ });
105
+ }
106
+ function getCachedFlags(cacheIdentifier, adapterIdentifiers) {
107
+ const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
108
+ const cacheModule = cacheIdentifier === cacheIdentifiers.local ? localStorage : sessionStorage;
109
+ const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join("/");
110
+ const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);
111
+ if (referenceToCachedFlags) {
112
+ try {
113
+ const cacheKey = JSON.parse(referenceToCachedFlags);
114
+ const cachedFlags = cacheModule.getItem(cacheKey);
115
+ if (cacheKey && cachedFlags) {
116
+ return JSON.parse(cachedFlags);
117
+ }
118
+ } catch (_) {
119
+ console.warn(
120
+ `@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`
121
+ );
122
+ }
123
+ }
124
+ return {};
125
+ }
126
+ function getAllCachedFlags(adapter, cacheIdentifier) {
127
+ if (!cacheIdentifier) {
128
+ return {};
129
+ }
130
+ if (adapter.effectIds) {
131
+ return adapter.effectIds.reduce(
132
+ (defaultFlags, effectId) => __spreadValues(__spreadValues({}, defaultFlags), getCachedFlags(cacheIdentifier, effectId)),
133
+ {}
134
+ );
135
+ }
136
+ return getCachedFlags(cacheIdentifier, adapter.id);
137
+ }
138
+
139
+ // src/index.ts
140
+ var version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
141
+ export {
142
+ encodeCacheContext,
143
+ getAllCachedFlags,
144
+ getCache,
145
+ getCachedFlags,
146
+ version
147
+ };
148
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cache.ts","../src/index.ts"],"sourcesContent":["import {\n type TAdapter,\n type TAdapterIdentifiers,\n type TCacheIdentifiers,\n type TFlags,\n cacheIdentifiers,\n} from '@flopflip/types';\n\nconst FLAGS_CACHE_KEY = 'flags';\nconst FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';\n\nfunction getCachePrefix(adapterIdentifiers: TAdapterIdentifiers) {\n return `@flopflip/${adapterIdentifiers}-adapter`;\n}\n\nexport function encodeCacheContext(cacheContext: any) {\n const encodedAsJson = JSON.stringify(cacheContext);\n\n const hashCode = [...encodedAsJson].reduce(\n (hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0,\n 0\n );\n\n const encodedCacheContext = Math.abs(hashCode).toString();\n\n return encodedCacheContext;\n}\n\nasync function importCache(cacheIdentifier: TCacheIdentifiers) {\n let cacheModule: any;\n\n switch (cacheIdentifier) {\n case cacheIdentifiers.local: {\n cacheModule = await import('@flopflip/localstorage-cache');\n break;\n }\n\n case cacheIdentifiers.session: {\n cacheModule = await import('@flopflip/sessionstorage-cache');\n break;\n }\n }\n\n return cacheModule;\n}\n\nasync function getCache(\n cacheIdentifier: TCacheIdentifiers,\n adapterIdentifiers: TAdapterIdentifiers,\n cacheContext?: any\n) {\n const cacheModule = await importCache(cacheIdentifier);\n\n const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);\n const createCache = cacheModule.createCache;\n let encodedCacheContext = '';\n try {\n encodedCacheContext = encodeCacheContext(cacheContext);\n } catch (_) {\n // continue regardless of error\n }\n\n const flagsCachePrefix = [CACHE_PREFIX, encodedCacheContext]\n .filter(Boolean)\n .join('/');\n\n const flagsCache = createCache({ prefix: flagsCachePrefix });\n const referenceCache = createCache({ prefix: CACHE_PREFIX });\n\n return {\n set(flags: TFlags) {\n const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);\n\n if (haveFlagsBeenWritten) {\n referenceCache.set(\n FLAGS_REFERENCE_CACHE_KEY,\n [flagsCachePrefix, FLAGS_CACHE_KEY].join('/')\n );\n }\n\n return haveFlagsBeenWritten;\n },\n get() {\n return flagsCache.get(FLAGS_CACHE_KEY);\n },\n unset() {\n referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);\n\n return flagsCache.unset(FLAGS_CACHE_KEY);\n },\n };\n}\n\nfunction getCachedFlags(\n cacheIdentifier: TCacheIdentifiers,\n adapterIdentifiers: TAdapterIdentifiers\n): TFlags {\n const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);\n\n const cacheModule =\n cacheIdentifier === cacheIdentifiers.local ? localStorage : sessionStorage;\n const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join('/');\n\n const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);\n\n if (referenceToCachedFlags) {\n try {\n const cacheKey: string = JSON.parse(referenceToCachedFlags);\n const cachedFlags = cacheModule.getItem(cacheKey);\n\n if (cacheKey && cachedFlags) {\n return JSON.parse(cachedFlags);\n }\n } catch (_) {\n console.warn(\n `@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`\n );\n }\n }\n\n return {};\n}\n\nfunction getAllCachedFlags(\n adapter: TAdapter,\n cacheIdentifier?: TCacheIdentifiers\n) {\n if (!cacheIdentifier) {\n return {};\n }\n\n if (adapter.effectIds) {\n return adapter.effectIds.reduce(\n (defaultFlags, effectId) => ({\n ...defaultFlags,\n ...getCachedFlags(cacheIdentifier, effectId),\n }),\n {}\n );\n }\n\n return getCachedFlags(cacheIdentifier, adapter.id);\n}\n\nexport { getAllCachedFlags, getCache, getCachedFlags, getCachePrefix };\n","const version = '__@FLOPFLIP/VERSION_OF_RELEASE__';\n\nexport {\n encodeCacheContext,\n getAllCachedFlags,\n getCache,\n getCachedFlags,\n} from './cache';\nexport { version };\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,9 +1,24 @@
1
1
  {
2
2
  "name": "@flopflip/cache",
3
- "version": "14.0.1",
3
+ "version": "15.0.0",
4
4
  "description": "Caching for flipflop adapters",
5
- "main": "dist/flopflip-cache.cjs.js",
6
- "module": "dist/flopflip-cache.esm.js",
5
+ "sideEffects": false,
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.cjs"
11
+ }
12
+ },
13
+ "main": "./dist/index.js",
14
+ "typesVersions": {
15
+ "*": {
16
+ ".": [
17
+ "dist/*.d.ts",
18
+ "dist/*.d.cts"
19
+ ]
20
+ }
21
+ },
7
22
  "files": [
8
23
  "readme.md",
9
24
  "dist/**"
@@ -29,8 +44,19 @@
29
44
  "client"
30
45
  ],
31
46
  "dependencies": {
32
- "@flopflip/localstorage-cache": "14.0.1",
33
- "@flopflip/sessionstorage-cache": "14.0.1",
34
- "@flopflip/types": "14.0.1"
47
+ "@flopflip/localstorage-cache": "15.0.0",
48
+ "@flopflip/sessionstorage-cache": "15.0.0",
49
+ "@flopflip/types": "15.0.0"
50
+ },
51
+ "devDependencies": {
52
+ "tsup": "8.4.0",
53
+ "@flopflip/tsconfig": "15.0.0"
54
+ },
55
+ "scripts": {
56
+ "build": "rimraf dist && tsup",
57
+ "check-types": "tsc --noEmit",
58
+ "test": "vitest --run",
59
+ "test:watch": "vitest",
60
+ "dev": "tsup --watch --clean=false"
35
61
  }
36
62
  }
@@ -1,10 +0,0 @@
1
- import { type TAdapter, type TAdapterIdentifiers, type TCacheIdentifiers, type TFlags } from '@flopflip/types';
2
- declare function getCachePrefix(adapterIdentifiers: TAdapterIdentifiers): string;
3
- declare function getCache(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers, cacheKey?: string): Promise<{
4
- set(flags: TFlags): any;
5
- get(): any;
6
- unset(): any;
7
- }>;
8
- declare function getCachedFlags(cacheIdentifier: TCacheIdentifiers, adapterIdentifiers: TAdapterIdentifiers): TFlags;
9
- declare function getAllCachedFlags(adapter: TAdapter, cacheIdentifier?: TCacheIdentifiers): TFlags;
10
- export { getAllCachedFlags, getCache, getCachedFlags, getCachePrefix };
@@ -1,3 +0,0 @@
1
- declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
2
- export { version };
3
- export { getAllCachedFlags, getCache, getCachedFlags } from "./cache.js";
@@ -1,3 +0,0 @@
1
- declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
2
- export { getAllCachedFlags, getCache, getCachedFlags } from "./cache/index.js";
3
- export { version };
@@ -1,2 +0,0 @@
1
- export * from "./declarations/src/index";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvcGZsaXAtY2FjaGUuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuL2RlY2xhcmF0aW9ucy9zcmMvaW5kZXguZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9
@@ -1,160 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var types = require('@flopflip/types');
6
-
7
- function _interopNamespace(e) {
8
- if (e && e.__esModule) return e;
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n["default"] = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- function toPrimitive(t, r) {
26
- if ("object" != typeof t || !t) return t;
27
- var e = t[Symbol.toPrimitive];
28
- if (void 0 !== e) {
29
- var i = e.call(t, r || "default");
30
- if ("object" != typeof i) return i;
31
- throw new TypeError("@@toPrimitive must return a primitive value.");
32
- }
33
- return ("string" === r ? String : Number)(t);
34
- }
35
-
36
- function toPropertyKey(t) {
37
- var i = toPrimitive(t, "string");
38
- return "symbol" == typeof i ? i : i + "";
39
- }
40
-
41
- function _defineProperty(obj, key, value) {
42
- key = toPropertyKey(key);
43
- if (key in obj) {
44
- Object.defineProperty(obj, key, {
45
- value: value,
46
- enumerable: true,
47
- configurable: true,
48
- writable: true
49
- });
50
- } else {
51
- obj[key] = value;
52
- }
53
- return obj;
54
- }
55
-
56
- function ownKeys(e, r) {
57
- var t = Object.keys(e);
58
- if (Object.getOwnPropertySymbols) {
59
- var o = Object.getOwnPropertySymbols(e);
60
- r && (o = o.filter(function (r) {
61
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
62
- })), t.push.apply(t, o);
63
- }
64
- return t;
65
- }
66
- function _objectSpread2(e) {
67
- for (var r = 1; r < arguments.length; r++) {
68
- var t = null != arguments[r] ? arguments[r] : {};
69
- r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
70
- _defineProperty(e, r, t[r]);
71
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
72
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
73
- });
74
- }
75
- return e;
76
- }
77
-
78
- const FLAGS_CACHE_KEY = 'flags';
79
- const FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';
80
- function getCachePrefix(adapterIdentifiers) {
81
- return `@flopflip/${adapterIdentifiers}-adapter`;
82
- }
83
- async function importCache(cacheIdentifier) {
84
- let cacheModule;
85
- switch (cacheIdentifier) {
86
- case types.cacheIdentifiers.local:
87
- {
88
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
89
- break;
90
- }
91
- case types.cacheIdentifiers.session:
92
- {
93
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
94
- break;
95
- }
96
- }
97
- return cacheModule;
98
- }
99
- async function getCache(cacheIdentifier, adapterIdentifiers, cacheKey) {
100
- const cacheModule = await importCache(cacheIdentifier);
101
- const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
102
- const createCache = cacheModule.default;
103
- const flagsCachePrefix = [CACHE_PREFIX, cacheKey].filter(Boolean).join('/');
104
- const flagsCache = createCache({
105
- prefix: flagsCachePrefix
106
- });
107
- const referenceCache = createCache({
108
- prefix: CACHE_PREFIX
109
- });
110
- return {
111
- set(flags) {
112
- const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);
113
- if (haveFlagsBeenWritten) {
114
- referenceCache.set(FLAGS_REFERENCE_CACHE_KEY, [flagsCachePrefix, FLAGS_CACHE_KEY].join('/'));
115
- }
116
- return haveFlagsBeenWritten;
117
- },
118
- get() {
119
- return flagsCache.get(FLAGS_CACHE_KEY);
120
- },
121
- unset() {
122
- referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);
123
- return flagsCache.unset(FLAGS_CACHE_KEY);
124
- }
125
- };
126
- }
127
- function getCachedFlags(cacheIdentifier, adapterIdentifiers) {
128
- const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
129
- const cacheModule = cacheIdentifier === types.cacheIdentifiers.local ? localStorage : sessionStorage;
130
- const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join('/');
131
- const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);
132
- if (referenceToCachedFlags) {
133
- try {
134
- const cacheKey = JSON.parse(referenceToCachedFlags);
135
- const cachedFlags = cacheModule.getItem(cacheKey);
136
- if (cacheKey && cachedFlags) {
137
- return JSON.parse(cachedFlags);
138
- }
139
- } catch (error) {
140
- console.warn(`@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`);
141
- }
142
- }
143
- return {};
144
- }
145
- function getAllCachedFlags(adapter, cacheIdentifier) {
146
- if (!cacheIdentifier) {
147
- return {};
148
- }
149
- if (adapter.effectIds) {
150
- return adapter.effectIds.reduce((defaultFlags, effectId) => _objectSpread2(_objectSpread2({}, defaultFlags), getCachedFlags(cacheIdentifier, effectId)), {});
151
- }
152
- return getCachedFlags(cacheIdentifier, adapter.id);
153
- }
154
-
155
- const version = "14.0.1";
156
-
157
- exports.getAllCachedFlags = getAllCachedFlags;
158
- exports.getCache = getCache;
159
- exports.getCachedFlags = getCachedFlags;
160
- exports.version = version;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./flopflip-cache.cjs.prod.js");
5
- } else {
6
- module.exports = require("./flopflip-cache.cjs.dev.js");
7
- }
@@ -1,160 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var types = require('@flopflip/types');
6
-
7
- function _interopNamespace(e) {
8
- if (e && e.__esModule) return e;
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n["default"] = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- function toPrimitive(t, r) {
26
- if ("object" != typeof t || !t) return t;
27
- var e = t[Symbol.toPrimitive];
28
- if (void 0 !== e) {
29
- var i = e.call(t, r || "default");
30
- if ("object" != typeof i) return i;
31
- throw new TypeError("@@toPrimitive must return a primitive value.");
32
- }
33
- return ("string" === r ? String : Number)(t);
34
- }
35
-
36
- function toPropertyKey(t) {
37
- var i = toPrimitive(t, "string");
38
- return "symbol" == typeof i ? i : i + "";
39
- }
40
-
41
- function _defineProperty(obj, key, value) {
42
- key = toPropertyKey(key);
43
- if (key in obj) {
44
- Object.defineProperty(obj, key, {
45
- value: value,
46
- enumerable: true,
47
- configurable: true,
48
- writable: true
49
- });
50
- } else {
51
- obj[key] = value;
52
- }
53
- return obj;
54
- }
55
-
56
- function ownKeys(e, r) {
57
- var t = Object.keys(e);
58
- if (Object.getOwnPropertySymbols) {
59
- var o = Object.getOwnPropertySymbols(e);
60
- r && (o = o.filter(function (r) {
61
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
62
- })), t.push.apply(t, o);
63
- }
64
- return t;
65
- }
66
- function _objectSpread2(e) {
67
- for (var r = 1; r < arguments.length; r++) {
68
- var t = null != arguments[r] ? arguments[r] : {};
69
- r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
70
- _defineProperty(e, r, t[r]);
71
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
72
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
73
- });
74
- }
75
- return e;
76
- }
77
-
78
- const FLAGS_CACHE_KEY = 'flags';
79
- const FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';
80
- function getCachePrefix(adapterIdentifiers) {
81
- return `@flopflip/${adapterIdentifiers}-adapter`;
82
- }
83
- async function importCache(cacheIdentifier) {
84
- let cacheModule;
85
- switch (cacheIdentifier) {
86
- case types.cacheIdentifiers.local:
87
- {
88
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
89
- break;
90
- }
91
- case types.cacheIdentifiers.session:
92
- {
93
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
94
- break;
95
- }
96
- }
97
- return cacheModule;
98
- }
99
- async function getCache(cacheIdentifier, adapterIdentifiers, cacheKey) {
100
- const cacheModule = await importCache(cacheIdentifier);
101
- const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
102
- const createCache = cacheModule.default;
103
- const flagsCachePrefix = [CACHE_PREFIX, cacheKey].filter(Boolean).join('/');
104
- const flagsCache = createCache({
105
- prefix: flagsCachePrefix
106
- });
107
- const referenceCache = createCache({
108
- prefix: CACHE_PREFIX
109
- });
110
- return {
111
- set(flags) {
112
- const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);
113
- if (haveFlagsBeenWritten) {
114
- referenceCache.set(FLAGS_REFERENCE_CACHE_KEY, [flagsCachePrefix, FLAGS_CACHE_KEY].join('/'));
115
- }
116
- return haveFlagsBeenWritten;
117
- },
118
- get() {
119
- return flagsCache.get(FLAGS_CACHE_KEY);
120
- },
121
- unset() {
122
- referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);
123
- return flagsCache.unset(FLAGS_CACHE_KEY);
124
- }
125
- };
126
- }
127
- function getCachedFlags(cacheIdentifier, adapterIdentifiers) {
128
- const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
129
- const cacheModule = cacheIdentifier === types.cacheIdentifiers.local ? localStorage : sessionStorage;
130
- const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join('/');
131
- const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);
132
- if (referenceToCachedFlags) {
133
- try {
134
- const cacheKey = JSON.parse(referenceToCachedFlags);
135
- const cachedFlags = cacheModule.getItem(cacheKey);
136
- if (cacheKey && cachedFlags) {
137
- return JSON.parse(cachedFlags);
138
- }
139
- } catch (error) {
140
- console.warn(`@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`);
141
- }
142
- }
143
- return {};
144
- }
145
- function getAllCachedFlags(adapter, cacheIdentifier) {
146
- if (!cacheIdentifier) {
147
- return {};
148
- }
149
- if (adapter.effectIds) {
150
- return adapter.effectIds.reduce((defaultFlags, effectId) => _objectSpread2(_objectSpread2({}, defaultFlags), getCachedFlags(cacheIdentifier, effectId)), {});
151
- }
152
- return getCachedFlags(cacheIdentifier, adapter.id);
153
- }
154
-
155
- const version = "14.0.1";
156
-
157
- exports.getAllCachedFlags = getAllCachedFlags;
158
- exports.getCache = getCache;
159
- exports.getCachedFlags = getCachedFlags;
160
- exports.version = version;
@@ -1,135 +0,0 @@
1
- import { cacheIdentifiers } from '@flopflip/types';
2
-
3
- function toPrimitive(t, r) {
4
- if ("object" != typeof t || !t) return t;
5
- var e = t[Symbol.toPrimitive];
6
- if (void 0 !== e) {
7
- var i = e.call(t, r || "default");
8
- if ("object" != typeof i) return i;
9
- throw new TypeError("@@toPrimitive must return a primitive value.");
10
- }
11
- return ("string" === r ? String : Number)(t);
12
- }
13
-
14
- function toPropertyKey(t) {
15
- var i = toPrimitive(t, "string");
16
- return "symbol" == typeof i ? i : i + "";
17
- }
18
-
19
- function _defineProperty(obj, key, value) {
20
- key = toPropertyKey(key);
21
- if (key in obj) {
22
- Object.defineProperty(obj, key, {
23
- value: value,
24
- enumerable: true,
25
- configurable: true,
26
- writable: true
27
- });
28
- } else {
29
- obj[key] = value;
30
- }
31
- return obj;
32
- }
33
-
34
- function ownKeys(e, r) {
35
- var t = Object.keys(e);
36
- if (Object.getOwnPropertySymbols) {
37
- var o = Object.getOwnPropertySymbols(e);
38
- r && (o = o.filter(function (r) {
39
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
40
- })), t.push.apply(t, o);
41
- }
42
- return t;
43
- }
44
- function _objectSpread2(e) {
45
- for (var r = 1; r < arguments.length; r++) {
46
- var t = null != arguments[r] ? arguments[r] : {};
47
- r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
48
- _defineProperty(e, r, t[r]);
49
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
50
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
51
- });
52
- }
53
- return e;
54
- }
55
-
56
- const FLAGS_CACHE_KEY = 'flags';
57
- const FLAGS_REFERENCE_CACHE_KEY = 'flags-reference';
58
- function getCachePrefix(adapterIdentifiers) {
59
- return `@flopflip/${adapterIdentifiers}-adapter`;
60
- }
61
- async function importCache(cacheIdentifier) {
62
- let cacheModule;
63
- switch (cacheIdentifier) {
64
- case cacheIdentifiers.local:
65
- {
66
- cacheModule = await import('@flopflip/localstorage-cache');
67
- break;
68
- }
69
- case cacheIdentifiers.session:
70
- {
71
- cacheModule = await import('@flopflip/sessionstorage-cache');
72
- break;
73
- }
74
- }
75
- return cacheModule;
76
- }
77
- async function getCache(cacheIdentifier, adapterIdentifiers, cacheKey) {
78
- const cacheModule = await importCache(cacheIdentifier);
79
- const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
80
- const createCache = cacheModule.default;
81
- const flagsCachePrefix = [CACHE_PREFIX, cacheKey].filter(Boolean).join('/');
82
- const flagsCache = createCache({
83
- prefix: flagsCachePrefix
84
- });
85
- const referenceCache = createCache({
86
- prefix: CACHE_PREFIX
87
- });
88
- return {
89
- set(flags) {
90
- const haveFlagsBeenWritten = flagsCache.set(FLAGS_CACHE_KEY, flags);
91
- if (haveFlagsBeenWritten) {
92
- referenceCache.set(FLAGS_REFERENCE_CACHE_KEY, [flagsCachePrefix, FLAGS_CACHE_KEY].join('/'));
93
- }
94
- return haveFlagsBeenWritten;
95
- },
96
- get() {
97
- return flagsCache.get(FLAGS_CACHE_KEY);
98
- },
99
- unset() {
100
- referenceCache.unset(FLAGS_REFERENCE_CACHE_KEY);
101
- return flagsCache.unset(FLAGS_CACHE_KEY);
102
- }
103
- };
104
- }
105
- function getCachedFlags(cacheIdentifier, adapterIdentifiers) {
106
- const CACHE_PREFIX = getCachePrefix(adapterIdentifiers);
107
- const cacheModule = cacheIdentifier === cacheIdentifiers.local ? localStorage : sessionStorage;
108
- const flagReferenceKey = [CACHE_PREFIX, FLAGS_REFERENCE_CACHE_KEY].join('/');
109
- const referenceToCachedFlags = cacheModule.getItem(flagReferenceKey);
110
- if (referenceToCachedFlags) {
111
- try {
112
- const cacheKey = JSON.parse(referenceToCachedFlags);
113
- const cachedFlags = cacheModule.getItem(cacheKey);
114
- if (cacheKey && cachedFlags) {
115
- return JSON.parse(cachedFlags);
116
- }
117
- } catch (error) {
118
- console.warn(`@flopflip/cache: Failed to parse cached flags from ${cacheIdentifier}.`);
119
- }
120
- }
121
- return {};
122
- }
123
- function getAllCachedFlags(adapter, cacheIdentifier) {
124
- if (!cacheIdentifier) {
125
- return {};
126
- }
127
- if (adapter.effectIds) {
128
- return adapter.effectIds.reduce((defaultFlags, effectId) => _objectSpread2(_objectSpread2({}, defaultFlags), getCachedFlags(cacheIdentifier, effectId)), {});
129
- }
130
- return getCachedFlags(cacheIdentifier, adapter.id);
131
- }
132
-
133
- const version = "14.0.1";
134
-
135
- export { getAllCachedFlags, getCache, getCachedFlags, version };