@flopflip/http-adapter 14.0.2 → 15.0.1

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,312 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
24
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
25
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
26
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
27
+ var __async = (__this, __arguments, generator) => {
28
+ return new Promise((resolve, reject) => {
29
+ var fulfilled = (value) => {
30
+ try {
31
+ step(generator.next(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var rejected = (value) => {
37
+ try {
38
+ step(generator.throw(value));
39
+ } catch (e) {
40
+ reject(e);
41
+ }
42
+ };
43
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
44
+ step((generator = generator.apply(__this, __arguments)).next());
45
+ });
46
+ };
47
+
48
+ // src/adapter.ts
49
+
50
+
51
+
52
+
53
+ var _adapterutilities = require('@flopflip/adapter-utilities');
54
+ var _cache = require('@flopflip/cache');
55
+
56
+
57
+
58
+
59
+
60
+
61
+ var _types = require('@flopflip/types');
62
+ var _isEqual = require('lodash/isEqual'); var _isEqual2 = _interopRequireDefault(_isEqual);
63
+ var _mitt = require('mitt'); var _mitt2 = _interopRequireDefault(_mitt);
64
+ var _tinywarning = require('tiny-warning'); var _tinywarning2 = _interopRequireDefault(_tinywarning);
65
+ var intialAdapterState = {
66
+ subscriptionStatus: _types.AdapterSubscriptionStatus.Subscribed,
67
+ configurationStatus: _types.AdapterConfigurationStatus.Unconfigured,
68
+ flags: {},
69
+ lockedFlags: /* @__PURE__ */ new Set(),
70
+ user: {},
71
+ emitter: _mitt2.default.call(void 0, )
72
+ };
73
+ var ___internalConfiguredStatusChange__, _flagPollingInternal, _adapterState, _defaultpollingIntervalMs, _getIsAdapterUnsubscribed, _getIsFlagLocked, _didFlagsChange, _fetchFlags, _subscribeToFlagsChanges;
74
+ var HttpAdapter = class {
75
+ constructor() {
76
+ __privateAdd(this, ___internalConfiguredStatusChange__, "__internalConfiguredStatusChange__");
77
+ __privateAdd(this, _flagPollingInternal);
78
+ __privateAdd(this, _adapterState);
79
+ __privateAdd(this, _defaultpollingIntervalMs, 1e3 * 60);
80
+ __privateAdd(this, _getIsAdapterUnsubscribed, () => __privateGet(this, _adapterState).subscriptionStatus === _types.AdapterSubscriptionStatus.Unsubscribed);
81
+ __privateAdd(this, _getIsFlagLocked, (flagName) => __privateGet(this, _adapterState).lockedFlags.has(flagName));
82
+ __privateAdd(this, _didFlagsChange, (nextFlags) => {
83
+ const previousFlags = __privateGet(this, _adapterState).flags;
84
+ if (previousFlags === void 0) {
85
+ return true;
86
+ }
87
+ return !_isEqual2.default.call(void 0, nextFlags, previousFlags);
88
+ });
89
+ __privateAdd(this, _fetchFlags, (adapterArgs) => __async(null, null, function* () {
90
+ const flags = yield adapterArgs.execute(adapterArgs);
91
+ return flags;
92
+ }));
93
+ __privateAdd(this, _subscribeToFlagsChanges, (adapterArgs) => {
94
+ var _a;
95
+ const pollingIntervalMs = (_a = adapterArgs.pollingIntervalMs) != null ? _a : __privateGet(this, _defaultpollingIntervalMs);
96
+ if (__privateGet(this, _flagPollingInternal)) {
97
+ clearInterval(__privateGet(this, _flagPollingInternal));
98
+ }
99
+ __privateSet(this, _flagPollingInternal, setInterval(() => __async(this, null, function* () {
100
+ var _a2;
101
+ if (!__privateGet(this, _getIsAdapterUnsubscribed).call(this)) {
102
+ const nextFlags = _adapterutilities.normalizeFlags.call(void 0, yield __privateGet(this, _fetchFlags).call(this, adapterArgs));
103
+ if (__privateGet(this, _didFlagsChange).call(this, nextFlags)) {
104
+ if (adapterArgs.cacheIdentifier) {
105
+ const cache = yield _cache.getCache.call(void 0,
106
+ adapterArgs.cacheIdentifier,
107
+ _types.adapterIdentifiers.http,
108
+ { key: (_a2 = __privateGet(this, _adapterState).user) == null ? void 0 : _a2.key }
109
+ );
110
+ cache.set(nextFlags);
111
+ }
112
+ __privateGet(this, _adapterState).flags = nextFlags;
113
+ if (adapterArgs.cacheMode === _types.cacheModes.lazy) {
114
+ return;
115
+ }
116
+ __privateGet(this, _adapterState).emitter.emit("flagsStateChange", nextFlags);
117
+ }
118
+ }
119
+ }), pollingIntervalMs));
120
+ });
121
+ this.getUser = () => __privateGet(this, _adapterState).user;
122
+ this.updateFlags = (flags, options) => {
123
+ const isAdapterConfigured = this.getIsConfigurationStatus(
124
+ _types.AdapterConfigurationStatus.Configured
125
+ );
126
+ _tinywarning2.default.call(void 0,
127
+ isAdapterConfigured,
128
+ "@flopflip/http-adapter: adapter not configured. Flags can not be updated before."
129
+ );
130
+ if (!isAdapterConfigured) {
131
+ return;
132
+ }
133
+ const previousFlags = __privateGet(this, _adapterState).flags;
134
+ const updatedFlags = Object.entries(flags).reduce(
135
+ (updatedFlags2, [flagName, flagValue]) => {
136
+ const [normalizedFlagName, normalizedFlagValue] = _adapterutilities.normalizeFlag.call(void 0,
137
+ flagName,
138
+ flagValue
139
+ );
140
+ if (__privateGet(this, _getIsFlagLocked).call(this, normalizedFlagName)) {
141
+ return updatedFlags2;
142
+ }
143
+ if (options == null ? void 0 : options.lockFlags) {
144
+ __privateGet(this, _adapterState).lockedFlags.add(normalizedFlagName);
145
+ }
146
+ const updated = __spreadProps(__spreadValues({}, updatedFlags2), {
147
+ [normalizedFlagName]: normalizedFlagValue
148
+ });
149
+ return updated;
150
+ },
151
+ {}
152
+ );
153
+ const nextFlags = __spreadValues(__spreadValues({}, previousFlags), updatedFlags);
154
+ __privateGet(this, _adapterState).flags = nextFlags;
155
+ __privateGet(this, _adapterState).emitter.emit("flagsStateChange", nextFlags);
156
+ };
157
+ this.reset = () => {
158
+ __privateSet(this, _adapterState, __spreadValues({}, intialAdapterState));
159
+ };
160
+ this.unsubscribe = () => {
161
+ __privateGet(this, _adapterState).subscriptionStatus = _types.AdapterSubscriptionStatus.Unsubscribed;
162
+ };
163
+ this.subscribe = () => {
164
+ __privateGet(this, _adapterState).subscriptionStatus = _types.AdapterSubscriptionStatus.Subscribed;
165
+ };
166
+ this.id = _types.adapterIdentifiers.http;
167
+ __privateSet(this, _adapterState, __spreadValues({}, intialAdapterState));
168
+ }
169
+ configure(adapterArgs, adapterEventHandlers) {
170
+ return __async(this, null, function* () {
171
+ const handleFlagsChange = (nextFlags) => {
172
+ if (__privateGet(this, _getIsAdapterUnsubscribed).call(this)) {
173
+ return;
174
+ }
175
+ adapterEventHandlers.onFlagsStateChange({
176
+ flags: nextFlags,
177
+ id: this.id
178
+ });
179
+ };
180
+ const handleStatusChange = (nextStatus) => {
181
+ if (__privateGet(this, _getIsAdapterUnsubscribed).call(this)) {
182
+ return;
183
+ }
184
+ adapterEventHandlers.onStatusStateChange({
185
+ status: nextStatus,
186
+ id: this.id
187
+ });
188
+ };
189
+ __privateGet(this, _adapterState).emitter.on("flagsStateChange", handleFlagsChange);
190
+ __privateGet(this, _adapterState).emitter.on("statusStateChange", handleStatusChange);
191
+ this.setConfigurationStatus(_types.AdapterConfigurationStatus.Configuring);
192
+ __privateGet(this, _adapterState).user = adapterArgs.user;
193
+ return Promise.resolve().then(() => __async(this, null, function* () {
194
+ var _a, _b;
195
+ let cachedFlags = null;
196
+ if (adapterArgs.cacheIdentifier) {
197
+ const cache = yield _cache.getCache.call(void 0,
198
+ adapterArgs.cacheIdentifier,
199
+ _types.adapterIdentifiers.http,
200
+ { key: (_a = __privateGet(this, _adapterState).user) == null ? void 0 : _a.key }
201
+ );
202
+ cachedFlags = cache.get();
203
+ if (cachedFlags) {
204
+ __privateGet(this, _adapterState).flags = cachedFlags;
205
+ __privateGet(this, _adapterState).emitter.emit(
206
+ "flagsStateChange",
207
+ cachedFlags
208
+ );
209
+ }
210
+ }
211
+ const flags = _adapterutilities.normalizeFlags.call(void 0, yield __privateGet(this, _fetchFlags).call(this, adapterArgs));
212
+ __privateGet(this, _adapterState).flags = flags;
213
+ this.setConfigurationStatus(_types.AdapterConfigurationStatus.Configured);
214
+ if (adapterArgs.cacheIdentifier) {
215
+ const cache = yield _cache.getCache.call(void 0,
216
+ adapterArgs.cacheIdentifier,
217
+ _types.adapterIdentifiers.http,
218
+ { key: (_b = __privateGet(this, _adapterState).user) == null ? void 0 : _b.key }
219
+ );
220
+ cache.set(flags);
221
+ }
222
+ if (adapterArgs.cacheMode !== _types.cacheModes.lazy) {
223
+ __privateGet(this, _adapterState).emitter.emit("flagsStateChange", flags);
224
+ }
225
+ __privateGet(this, _adapterState).emitter.emit(__privateGet(this, ___internalConfiguredStatusChange__));
226
+ __privateGet(this, _subscribeToFlagsChanges).call(this, adapterArgs);
227
+ return {
228
+ initializationStatus: _types.AdapterInitializationStatus.Succeeded
229
+ };
230
+ }));
231
+ });
232
+ }
233
+ reconfigure(adapterArgs, _adapterEventHandlers) {
234
+ return __async(this, null, function* () {
235
+ var _a;
236
+ if (!this.getIsConfigurationStatus(_types.AdapterConfigurationStatus.Configured)) {
237
+ return Promise.reject(
238
+ new Error(
239
+ "@flopflip/http-adapter: please configure adapter before reconfiguring."
240
+ )
241
+ );
242
+ }
243
+ const nextUser = adapterArgs.user;
244
+ if (!_isEqual2.default.call(void 0, __privateGet(this, _adapterState).user, nextUser)) {
245
+ __privateGet(this, _adapterState).flags = {};
246
+ if (adapterArgs.cacheIdentifier) {
247
+ const cache = yield _cache.getCache.call(void 0,
248
+ adapterArgs.cacheIdentifier,
249
+ _types.adapterIdentifiers.http,
250
+ { key: (_a = __privateGet(this, _adapterState).user) == null ? void 0 : _a.key }
251
+ );
252
+ cache.unset();
253
+ }
254
+ __privateGet(this, _adapterState).user = nextUser;
255
+ const flags = _adapterutilities.normalizeFlags.call(void 0, yield __privateGet(this, _fetchFlags).call(this, adapterArgs));
256
+ __privateGet(this, _adapterState).flags = flags;
257
+ __privateGet(this, _adapterState).emitter.emit("flagsStateChange", flags);
258
+ __privateGet(this, _adapterState).emitter.emit(__privateGet(this, ___internalConfiguredStatusChange__));
259
+ __privateGet(this, _subscribeToFlagsChanges).call(this, adapterArgs);
260
+ }
261
+ return Promise.resolve({
262
+ initializationStatus: _types.AdapterInitializationStatus.Succeeded
263
+ });
264
+ });
265
+ }
266
+ waitUntilConfigured() {
267
+ return __async(this, null, function* () {
268
+ return new Promise((resolve) => {
269
+ if (this.getIsConfigurationStatus(_types.AdapterConfigurationStatus.Configured)) {
270
+ resolve();
271
+ } else {
272
+ __privateGet(this, _adapterState).emitter.on(
273
+ __privateGet(this, ___internalConfiguredStatusChange__),
274
+ resolve
275
+ );
276
+ }
277
+ });
278
+ });
279
+ }
280
+ getIsConfigurationStatus(configurationStatus) {
281
+ return __privateGet(this, _adapterState).configurationStatus === configurationStatus;
282
+ }
283
+ getFlag(flagName) {
284
+ var _a;
285
+ return (_a = __privateGet(this, _adapterState)) == null ? void 0 : _a.flags[flagName];
286
+ }
287
+ setConfigurationStatus(nextConfigurationStatus) {
288
+ __privateGet(this, _adapterState).configurationStatus = nextConfigurationStatus;
289
+ __privateGet(this, _adapterState).emitter.emit("statusStateChange", {
290
+ configurationStatus: __privateGet(this, _adapterState).configurationStatus
291
+ });
292
+ }
293
+ };
294
+ ___internalConfiguredStatusChange__ = new WeakMap();
295
+ _flagPollingInternal = new WeakMap();
296
+ _adapterState = new WeakMap();
297
+ _defaultpollingIntervalMs = new WeakMap();
298
+ _getIsAdapterUnsubscribed = new WeakMap();
299
+ _getIsFlagLocked = new WeakMap();
300
+ _didFlagsChange = new WeakMap();
301
+ _fetchFlags = new WeakMap();
302
+ _subscribeToFlagsChanges = new WeakMap();
303
+ var adapter = new HttpAdapter();
304
+ _adapterutilities.exposeGlobally.call(void 0, adapter);
305
+
306
+ // src/index.ts
307
+ var version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
308
+
309
+
310
+
311
+ exports.adapter = adapter; exports.version = version;
312
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/flopflip/flopflip/packages/http-adapter/dist/index.cjs","../src/adapter.ts","../src/index.ts"],"names":["_a","updatedFlags"],"mappings":"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","file":"/home/runner/work/flopflip/flopflip/packages/http-adapter/dist/index.cjs","sourcesContent":[null,"import {\n exposeGlobally,\n normalizeFlag,\n normalizeFlags,\n} from '@flopflip/adapter-utilities';\nimport { getCache } from '@flopflip/cache';\nimport {\n AdapterConfigurationStatus,\n AdapterInitializationStatus,\n AdapterSubscriptionStatus,\n type TAdapterEventHandlers,\n type TAdapterStatus,\n type TAdapterStatusChange,\n type TCacheIdentifiers,\n type TFlagName,\n type TFlagVariation,\n type TFlags,\n type TFlagsChange,\n type TFlagsUpdateFunction,\n type THttpAdapterArgs,\n type THttpAdapterInterface,\n type TUser,\n adapterIdentifiers,\n cacheModes,\n} from '@flopflip/types';\nimport isEqual from 'lodash/isEqual';\nimport mitt, { type Emitter } from 'mitt';\nimport warning from 'tiny-warning';\n\ntype TInternalStatusChange = '__internalConfiguredStatusChange__';\ntype TEmitterEvents = {\n __internalConfiguredStatusChange__: undefined;\n flagsStateChange: TFlags;\n statusStateChange: Partial<TAdapterStatus>;\n};\ntype THttpAdapterState = {\n flags: TFlags;\n user?: TUser;\n emitter: Emitter<TEmitterEvents>;\n lockedFlags: Set<TFlagName>;\n cacheIdentifier?: TCacheIdentifiers;\n};\n\nconst intialAdapterState: TAdapterStatus & THttpAdapterState = {\n subscriptionStatus: AdapterSubscriptionStatus.Subscribed,\n configurationStatus: AdapterConfigurationStatus.Unconfigured,\n flags: {},\n lockedFlags: new Set<TFlagName>(),\n user: {},\n emitter: mitt(),\n};\n\nclass HttpAdapter implements THttpAdapterInterface {\n id: typeof adapterIdentifiers.http;\n #__internalConfiguredStatusChange__: TInternalStatusChange =\n '__internalConfiguredStatusChange__';\n\n #flagPollingInternal?: ReturnType<typeof setInterval>;\n #adapterState: TAdapterStatus & THttpAdapterState;\n readonly #defaultpollingIntervalMs = 1000 * 60;\n\n constructor() {\n this.id = adapterIdentifiers.http;\n this.#adapterState = {\n ...intialAdapterState,\n };\n }\n\n readonly #getIsAdapterUnsubscribed = () =>\n this.#adapterState.subscriptionStatus ===\n AdapterSubscriptionStatus.Unsubscribed;\n\n readonly #getIsFlagLocked = (flagName: TFlagName) =>\n this.#adapterState.lockedFlags.has(flagName);\n\n readonly #didFlagsChange = (nextFlags: TFlags) => {\n const previousFlags = this.#adapterState.flags;\n\n if (previousFlags === undefined) {\n return true;\n }\n\n return !isEqual(nextFlags, previousFlags);\n };\n\n readonly #fetchFlags = async (\n adapterArgs: THttpAdapterArgs\n ): Promise<TFlags> => {\n const flags = await adapterArgs.execute(adapterArgs);\n\n return flags;\n };\n\n readonly #subscribeToFlagsChanges = (adapterArgs: THttpAdapterArgs) => {\n const pollingIntervalMs =\n adapterArgs.pollingIntervalMs ?? this.#defaultpollingIntervalMs;\n\n if (this.#flagPollingInternal) {\n clearInterval(this.#flagPollingInternal);\n }\n\n this.#flagPollingInternal = setInterval(async () => {\n if (!this.#getIsAdapterUnsubscribed()) {\n const nextFlags = normalizeFlags(await this.#fetchFlags(adapterArgs));\n\n if (this.#didFlagsChange(nextFlags)) {\n if (adapterArgs.cacheIdentifier) {\n const cache = await getCache(\n adapterArgs.cacheIdentifier,\n adapterIdentifiers.http,\n { key: this.#adapterState.user?.key }\n );\n\n cache.set(nextFlags);\n }\n\n this.#adapterState.flags = nextFlags;\n\n if (adapterArgs.cacheMode === cacheModes.lazy) {\n return;\n }\n\n this.#adapterState.emitter.emit('flagsStateChange', nextFlags);\n }\n }\n }, pollingIntervalMs);\n };\n\n getUser = () => this.#adapterState.user;\n\n updateFlags: TFlagsUpdateFunction = (flags, options) => {\n const isAdapterConfigured = this.getIsConfigurationStatus(\n AdapterConfigurationStatus.Configured\n );\n\n warning(\n isAdapterConfigured,\n '@flopflip/http-adapter: adapter not configured. Flags can not be updated before.'\n );\n\n if (!isAdapterConfigured) {\n return;\n }\n\n const previousFlags: TFlags | undefined = this.#adapterState.flags;\n\n const updatedFlags = Object.entries(flags).reduce(\n (updatedFlags, [flagName, flagValue]) => {\n const [normalizedFlagName, normalizedFlagValue] = normalizeFlag(\n flagName,\n flagValue\n );\n\n if (this.#getIsFlagLocked(normalizedFlagName)) {\n return updatedFlags;\n }\n\n if (options?.lockFlags) {\n this.#adapterState.lockedFlags.add(normalizedFlagName);\n }\n\n const updated = {\n ...updatedFlags,\n [normalizedFlagName]: normalizedFlagValue,\n };\n\n return updated;\n },\n {}\n );\n\n const nextFlags: TFlags = {\n ...previousFlags,\n ...updatedFlags,\n };\n\n this.#adapterState.flags = nextFlags;\n this.#adapterState.emitter.emit('flagsStateChange', nextFlags);\n };\n\n async configure(\n adapterArgs: THttpAdapterArgs,\n adapterEventHandlers: TAdapterEventHandlers\n ) {\n const handleFlagsChange = (nextFlags: TFlagsChange['flags']) => {\n if (this.#getIsAdapterUnsubscribed()) {\n return;\n }\n\n adapterEventHandlers.onFlagsStateChange({\n flags: nextFlags,\n id: this.id,\n });\n };\n\n const handleStatusChange = (nextStatus: TAdapterStatusChange['status']) => {\n if (this.#getIsAdapterUnsubscribed()) {\n return;\n }\n\n adapterEventHandlers.onStatusStateChange({\n status: nextStatus,\n id: this.id,\n });\n };\n\n this.#adapterState.emitter.on('flagsStateChange', handleFlagsChange);\n this.#adapterState.emitter.on('statusStateChange', handleStatusChange);\n\n this.setConfigurationStatus(AdapterConfigurationStatus.Configuring);\n\n this.#adapterState.user = adapterArgs.user;\n\n return Promise.resolve().then(async () => {\n let cachedFlags = null;\n\n if (adapterArgs.cacheIdentifier) {\n const cache = await getCache(\n adapterArgs.cacheIdentifier,\n adapterIdentifiers.http,\n { key: this.#adapterState.user?.key }\n );\n\n cachedFlags = cache.get();\n\n if (cachedFlags) {\n this.#adapterState.flags = cachedFlags;\n this.#adapterState.emitter.emit(\n 'flagsStateChange',\n cachedFlags as TFlags\n );\n }\n }\n\n const flags = normalizeFlags(await this.#fetchFlags(adapterArgs));\n\n this.#adapterState.flags = flags;\n\n this.setConfigurationStatus(AdapterConfigurationStatus.Configured);\n\n if (adapterArgs.cacheIdentifier) {\n const cache = await getCache(\n adapterArgs.cacheIdentifier,\n adapterIdentifiers.http,\n { key: this.#adapterState.user?.key }\n );\n\n cache.set(flags);\n }\n\n if (adapterArgs.cacheMode !== cacheModes.lazy) {\n this.#adapterState.emitter.emit('flagsStateChange', flags);\n }\n\n this.#adapterState.emitter.emit(this.#__internalConfiguredStatusChange__);\n\n this.#subscribeToFlagsChanges(adapterArgs);\n\n return {\n initializationStatus: AdapterInitializationStatus.Succeeded,\n };\n });\n }\n\n async reconfigure(\n adapterArgs: THttpAdapterArgs,\n _adapterEventHandlers: TAdapterEventHandlers\n ) {\n if (!this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured)) {\n return Promise.reject(\n new Error(\n '@flopflip/http-adapter: please configure adapter before reconfiguring.'\n )\n );\n }\n\n const nextUser = adapterArgs.user;\n\n if (!isEqual(this.#adapterState.user, nextUser)) {\n this.#adapterState.flags = {};\n\n if (adapterArgs.cacheIdentifier) {\n const cache = await getCache(\n adapterArgs.cacheIdentifier,\n adapterIdentifiers.http,\n { key: this.#adapterState.user?.key }\n );\n\n cache.unset();\n }\n\n this.#adapterState.user = nextUser;\n\n const flags = normalizeFlags(await this.#fetchFlags(adapterArgs));\n\n this.#adapterState.flags = flags;\n\n this.#adapterState.emitter.emit('flagsStateChange', flags);\n\n this.#adapterState.emitter.emit(this.#__internalConfiguredStatusChange__);\n\n this.#subscribeToFlagsChanges(adapterArgs);\n }\n\n return Promise.resolve({\n initializationStatus: AdapterInitializationStatus.Succeeded,\n });\n }\n\n async waitUntilConfigured() {\n return new Promise<void>((resolve) => {\n if (\n this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured)\n ) {\n resolve();\n } else {\n this.#adapterState.emitter.on(\n this.#__internalConfiguredStatusChange__,\n resolve\n );\n }\n });\n }\n\n getIsConfigurationStatus(configurationStatus: AdapterConfigurationStatus) {\n return this.#adapterState.configurationStatus === configurationStatus;\n }\n\n getFlag(flagName: TFlagName): TFlagVariation {\n return this.#adapterState?.flags[flagName];\n }\n\n reset = () => {\n this.#adapterState = {\n ...intialAdapterState,\n };\n };\n\n setConfigurationStatus(nextConfigurationStatus: AdapterConfigurationStatus) {\n this.#adapterState.configurationStatus = nextConfigurationStatus;\n\n this.#adapterState.emitter.emit('statusStateChange', {\n configurationStatus: this.#adapterState.configurationStatus,\n });\n }\n\n unsubscribe = () => {\n this.#adapterState.subscriptionStatus =\n AdapterSubscriptionStatus.Unsubscribed;\n };\n\n subscribe = () => {\n this.#adapterState.subscriptionStatus =\n AdapterSubscriptionStatus.Subscribed;\n };\n}\n\nconst adapter = new HttpAdapter();\n\nexposeGlobally(adapter);\n\nexport { adapter };\n","const version = '__@FLOPFLIP/VERSION_OF_RELEASE__';\n\nexport { adapter } from './adapter';\nexport { version };\n"]}
@@ -1,4 +1,5 @@
1
- import { AdapterConfigurationStatus, adapterIdentifiers, AdapterInitializationStatus, type TAdapterEventHandlers, type TFlagName, type TFlagsUpdateFunction, type TFlagVariation, type THttpAdapterArgs, type THttpAdapterInterface, type TUser } from '@flopflip/types';
1
+ import { THttpAdapterInterface, adapterIdentifiers, TUser, TFlagsUpdateFunction, THttpAdapterArgs, TAdapterEventHandlers, AdapterInitializationStatus, AdapterConfigurationStatus, TFlagName, TFlagVariation } from '@flopflip/types';
2
+
2
3
  declare class HttpAdapter implements THttpAdapterInterface {
3
4
  #private;
4
5
  id: typeof adapterIdentifiers.http;
@@ -20,4 +21,7 @@ declare class HttpAdapter implements THttpAdapterInterface {
20
21
  subscribe: () => void;
21
22
  }
22
23
  declare const adapter: HttpAdapter;
23
- export default adapter;
24
+
25
+ declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
26
+
27
+ export { adapter, version };
@@ -0,0 +1,27 @@
1
+ import { THttpAdapterInterface, adapterIdentifiers, TUser, TFlagsUpdateFunction, THttpAdapterArgs, TAdapterEventHandlers, AdapterInitializationStatus, AdapterConfigurationStatus, TFlagName, TFlagVariation } from '@flopflip/types';
2
+
3
+ declare class HttpAdapter implements THttpAdapterInterface {
4
+ #private;
5
+ id: typeof adapterIdentifiers.http;
6
+ constructor();
7
+ getUser: () => TUser | undefined;
8
+ updateFlags: TFlagsUpdateFunction;
9
+ configure(adapterArgs: THttpAdapterArgs, adapterEventHandlers: TAdapterEventHandlers): Promise<{
10
+ initializationStatus: AdapterInitializationStatus;
11
+ }>;
12
+ reconfigure(adapterArgs: THttpAdapterArgs, _adapterEventHandlers: TAdapterEventHandlers): Promise<{
13
+ initializationStatus: AdapterInitializationStatus;
14
+ }>;
15
+ waitUntilConfigured(): Promise<void>;
16
+ getIsConfigurationStatus(configurationStatus: AdapterConfigurationStatus): boolean;
17
+ getFlag(flagName: TFlagName): TFlagVariation;
18
+ reset: () => void;
19
+ setConfigurationStatus(nextConfigurationStatus: AdapterConfigurationStatus): void;
20
+ unsubscribe: () => void;
21
+ subscribe: () => void;
22
+ }
23
+ declare const adapter: HttpAdapter;
24
+
25
+ declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
26
+
27
+ export { adapter, version };