@togglely/sdk-core 1.1.10 → 1.2.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.esm.js CHANGED
@@ -1,11 +1,14 @@
1
1
  /**
2
- * Togglely Core SDK - Framework agnostic
2
+ * Togglely Core SDK - Framework agnostic feature flag management
3
3
  *
4
- * Supports offline fallback via environment variables
5
- */
6
- /**
7
- * Core Togglely Client
4
+ * Features:
5
+ * - Real-time feature flag evaluation
6
+ * - Offline fallback via JSON file, environment variables, or window object
7
+ * - Multi-brand/tenant support
8
+ * - Type-safe flag access
9
+ * - Build-time JSON generation for offline-first deployment
8
10
  */
11
+ // ==================== Togglely Client ====================
9
12
  class TogglelyClient {
10
13
  constructor(config) {
11
14
  this.toggles = new Map();
@@ -23,6 +26,7 @@ class TogglelyClient {
23
26
  offlineFallback: true,
24
27
  envPrefix: 'TOGGLELY_',
25
28
  autoFetch: true,
29
+ offlineJsonPath: undefined,
26
30
  ...config
27
31
  };
28
32
  // Initialize event handlers
@@ -31,6 +35,13 @@ class TogglelyClient {
31
35
  this.eventHandlers.set('error', new Set());
32
36
  this.eventHandlers.set('offline', new Set());
33
37
  this.eventHandlers.set('online', new Set());
38
+ // Set initial context if provided (including brandKey/tenantId)
39
+ const initialContext = { ...config.context };
40
+ if (config.brandKey)
41
+ initialContext.brandKey = config.brandKey;
42
+ if (config.tenantId)
43
+ initialContext.tenantId = config.tenantId;
44
+ this.context = initialContext;
34
45
  // Load offline toggles first (if enabled)
35
46
  if (this.config.offlineFallback) {
36
47
  this.loadOfflineToggles();
@@ -81,24 +92,49 @@ class TogglelyClient {
81
92
  return this.state.isOffline;
82
93
  }
83
94
  // ==================== Toggle Accessors ====================
95
+ /**
96
+ * Check if a boolean feature flag is enabled
97
+ * @param key - The flag key
98
+ * @param defaultValue - Default value if flag not found
99
+ * @returns Promise<boolean>
100
+ */
84
101
  async isEnabled(key, defaultValue = false) {
85
102
  const value = await this.getValue(key);
86
- if (value === null)
103
+ if (value === null) {
87
104
  return defaultValue;
105
+ }
88
106
  return value.enabled && value.value === true;
89
107
  }
108
+ /**
109
+ * Get a string feature flag value
110
+ * @param key - The flag key
111
+ * @param defaultValue - Default value if flag not found or disabled
112
+ * @returns Promise<string>
113
+ */
90
114
  async getString(key, defaultValue = '') {
91
115
  const value = await this.getValue(key);
92
116
  if (value === null || !value.enabled)
93
117
  return defaultValue;
94
118
  return String(value.value);
95
119
  }
120
+ /**
121
+ * Get a number feature flag value
122
+ * @param key - The flag key
123
+ * @param defaultValue - Default value if flag not found or disabled
124
+ * @returns Promise<number>
125
+ */
96
126
  async getNumber(key, defaultValue = 0) {
97
127
  const value = await this.getValue(key);
98
128
  if (value === null || !value.enabled)
99
129
  return defaultValue;
100
130
  return Number(value.value);
101
131
  }
132
+ /**
133
+ * Get a JSON feature flag value
134
+ * @param key - The flag key
135
+ * @param defaultValue - Default value if flag not found or disabled
136
+ * @returns Promise<T>
137
+ */
102
138
  async getJSON(key, defaultValue = {}) {
103
139
  const value = await this.getValue(key);
104
140
  if (value === null || !value.enabled)
@@ -113,6 +149,11 @@ class TogglelyClient {
113
149
  }
114
150
  return value.value;
115
151
  }
152
+ /**
153
+ * Get raw toggle value
154
+ * @param key - The flag key
155
+ * @returns Promise<ToggleValue | null>
156
+ */
116
157
  async getValue(key) {
117
158
  // Try cache first - but only if no context is set
118
159
  if (Object.keys(this.context).length === 0) {
@@ -124,29 +165,25 @@ class TogglelyClient {
124
165
  // Fetch from server
125
166
  try {
126
167
  const params = new URLSearchParams();
127
- // Send API key as query parameter (required by backend)
128
168
  if (this.config.apiKey)
129
169
  params.set('apiKey', this.config.apiKey);
130
170
  const brandKey = this.context.tenantId || this.context.brandKey;
131
171
  if (brandKey)
132
172
  params.set('tenantId', String(brandKey));
133
- // Always send context if available (needed for targeting rules)
134
173
  if (Object.keys(this.context).length > 0) {
135
174
  params.set('context', JSON.stringify(this.context));
136
175
  }
137
176
  const query = params.toString() ? `?${params.toString()}` : '';
138
177
  const url = `${this.config.baseUrl}/sdk/flags/${encodeURIComponent(this.config.project)}/${encodeURIComponent(this.config.environment)}/${encodeURIComponent(key)}${query}`;
139
- console.log(`[Togglely SDK] Fetching: ${url}`);
140
178
  const response = await this.fetchWithTimeout(url, { headers: { 'Content-Type': 'application/json' } });
141
179
  if (!response.ok) {
142
180
  if (response.status === 404) {
143
181
  return null;
144
182
  }
145
- throw new Error(`HTTP ${response.status}`);
183
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
146
184
  }
147
185
  const data = await response.json();
148
186
  this.toggles.set(key, data);
149
- // Update state if we were offline
150
187
  if (this.state.isOffline) {
151
188
  this.state.isOffline = false;
152
189
  this.emit('online');
@@ -155,14 +192,20 @@ class TogglelyClient {
155
192
  }
156
193
  catch (error) {
157
194
  // Try offline fallback
158
- const offlineValue = this.getOfflineToggle(key);
159
- if (offlineValue !== null) {
160
- return offlineValue;
195
+ if (this.config.offlineFallback) {
196
+ const offlineValue = this.getOfflineToggle(key);
197
+ if (offlineValue !== null) {
198
+ return offlineValue;
199
+ }
161
200
  }
162
- console.error(`[Togglely] Failed to fetch toggle "${key}":`, error);
163
- return null;
201
+ // Return safe default
202
+ return { value: false, enabled: false };
164
203
  }
165
204
  }
205
+ /**
206
+ * Get all toggles
207
+ * @returns Record<string, ToggleValue>
208
+ */
166
209
  getAllToggles() {
167
210
  const result = {};
168
211
  this.toggles.forEach((value, key) => {
@@ -172,12 +215,28 @@ class TogglelyClient {
172
215
  }
173
216
  // ==================== Offline Fallback ====================
174
217
  /**
175
- * Load toggles from environment variables
176
- * Format: TOGGLELY_<TOGGLE_KEY>=<value> or TOGGLELY_<TOGGLE_KEY>_ENABLED=true
218
+ * Load offline toggles from multiple sources (in priority order):
219
+ * 1. Inline offlineToggles from config
220
+ * 2. JSON file (if offlineJsonPath is set)
221
+ * 3. window.__TOGGLELY_TOGGLES (browser)
222
+ * 4. Environment variables (Node.js)
177
223
  */
178
224
  loadOfflineToggles() {
179
225
  try {
180
- // Browser environment - check window.__TOGGLELY_TOGGLES
226
+ // Priority 1: Inline offline toggles from config
227
+ if (this.config.offlineToggles && Object.keys(this.config.offlineToggles).length > 0) {
228
+ for (const [key, value] of Object.entries(this.config.offlineToggles)) {
229
+ this.toggles.set(key, value);
230
+ }
231
+ this.offlineTogglesLoaded = true;
232
+ console.log('[Togglely] Loaded offline toggles from config');
233
+ return;
234
+ }
235
+ // Priority 2: JSON file (browser only - fetch synchronously not possible, will try async)
236
+ if (this.config.offlineJsonPath && typeof window !== 'undefined') {
237
+ this.loadOfflineJsonFile(this.config.offlineJsonPath);
238
+ }
239
+ // Priority 3: Browser environment - check window.__TOGGLELY_TOGGLES
181
240
  if (typeof window !== 'undefined' && window.__TOGGLELY_TOGGLES) {
182
241
  const offlineToggles = window.__TOGGLELY_TOGGLES;
183
242
  for (const [key, value] of Object.entries(offlineToggles)) {
@@ -187,12 +246,11 @@ class TogglelyClient {
187
246
  console.log('[Togglely] Loaded offline toggles from window.__TOGGLELY_TOGGLES');
188
247
  return;
189
248
  }
190
- // Node.js / Bun / Deno environment - check process.env
249
+ // Priority 4: Node.js / Bun / Deno environment - check process.env
191
250
  if (typeof process !== 'undefined' && process.env) {
192
251
  const prefix = this.config.envPrefix;
193
252
  for (const [envKey, envValue] of Object.entries(process.env)) {
194
253
  if (envKey?.startsWith(prefix) && envValue !== undefined) {
195
- // Parse toggle key: TOGGLELY_MY_FEATURE -> my-feature
196
254
  const toggleKey = envKey
197
255
  .slice(prefix.length)
198
256
  .toLowerCase()
@@ -208,13 +266,47 @@ class TogglelyClient {
208
266
  console.warn('[Togglely] Failed to load offline toggles:', error);
209
267
  }
210
268
  }
269
+ /**
270
+ * Load offline toggles from JSON file (async)
271
+ */
272
+ async loadOfflineJsonFile(path) {
273
+ try {
274
+ if (typeof window !== 'undefined') {
275
+ // Browser - fetch the JSON file
276
+ const response = await fetch(path);
277
+ if (response.ok) {
278
+ const data = await response.json();
279
+ for (const [key, value] of Object.entries(data)) {
280
+ this.toggles.set(key, this.parseOfflineValue(value));
281
+ }
282
+ this.offlineTogglesLoaded = true;
283
+ console.log('[Togglely] Loaded offline toggles from JSON file:', path);
284
+ }
285
+ }
286
+ else if (typeof require !== 'undefined') {
287
+ // Node.js - require the JSON file
288
+ const fs = require('fs');
289
+ const pathModule = require('path');
290
+ const fullPath = pathModule.resolve(path);
291
+ if (fs.existsSync(fullPath)) {
292
+ const data = JSON.parse(fs.readFileSync(fullPath, 'utf-8'));
293
+ for (const [key, value] of Object.entries(data)) {
294
+ this.toggles.set(key, this.parseOfflineValue(value));
295
+ }
296
+ this.offlineTogglesLoaded = true;
297
+ console.log('[Togglely] Loaded offline toggles from JSON file:', fullPath);
298
+ }
299
+ }
300
+ }
301
+ catch (error) {
302
+ console.warn('[Togglely] Failed to load offline JSON file:', error);
303
+ }
304
+ }
211
305
  getOfflineToggle(key) {
212
306
  if (!this.config.offlineFallback)
213
307
  return null;
214
- // Try to get from already loaded offline toggles
215
308
  const cached = this.toggles.get(key);
216
309
  if (cached) {
217
- // If we haven't emitted offline event yet, do it now
218
310
  if (!this.state.isOffline) {
219
311
  this.state.isOffline = true;
220
312
  this.emit('offline');
@@ -224,40 +316,37 @@ class TogglelyClient {
224
316
  return null;
225
317
  }
226
318
  parseOfflineValue(value) {
227
- // Handle boolean strings
228
319
  if (typeof value === 'string') {
229
320
  const lower = value.toLowerCase();
230
321
  if (lower === 'true')
231
322
  return { value: true, enabled: true };
232
323
  if (lower === 'false')
233
324
  return { value: false, enabled: true };
234
- // Try to parse as number
235
325
  if (!isNaN(Number(value))) {
236
326
  return { value: Number(value), enabled: true };
237
327
  }
238
- // Try to parse as JSON
239
328
  try {
240
329
  const parsed = JSON.parse(value);
241
330
  return { value: parsed, enabled: true };
242
331
  }
243
332
  catch {
244
- // Return as string
245
333
  return { value, enabled: true };
246
334
  }
247
335
  }
248
336
  return { value, enabled: true };
249
337
  }
250
338
  // ==================== Refresh / Polling ====================
339
+ /**
340
+ * Refresh all toggles from the server
341
+ */
251
342
  async refresh() {
252
343
  try {
253
344
  const params = new URLSearchParams();
254
- // Send API key as query parameter (required by backend)
255
345
  if (this.config.apiKey)
256
346
  params.set('apiKey', this.config.apiKey);
257
347
  const brandKey = this.context.tenantId || this.context.brandKey;
258
348
  if (brandKey)
259
349
  params.set('tenantId', String(brandKey));
260
- // Always send context if available (needed for targeting rules)
261
350
  if (Object.keys(this.context).length > 0) {
262
351
  params.set('context', JSON.stringify(this.context));
263
352
  }
@@ -276,7 +365,6 @@ class TogglelyClient {
276
365
  this.state.isReady = true;
277
366
  this.emit('ready');
278
367
  }
279
- // If we were offline, go online
280
368
  if (this.state.isOffline) {
281
369
  this.state.isOffline = false;
282
370
  this.emit('online');
@@ -285,7 +373,6 @@ class TogglelyClient {
285
373
  }
286
374
  catch (error) {
287
375
  this.state.lastError = error;
288
- // If we have offline toggles, switch to offline mode
289
376
  if (this.config.offlineFallback && this.offlineTogglesLoaded) {
290
377
  if (!this.state.isOffline) {
291
378
  this.state.isOffline = true;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}