@togglely/sdk-core 1.1.6 → 1.1.8
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/README.md +4 -2
- package/dist/__tests__/cors-security.test.d.ts +15 -0
- package/dist/__tests__/cors-security.test.d.ts.map +1 -0
- package/dist/__tests__/cors-security.test.js +297 -0
- package/dist/__tests__/cors-security.test.js.map +1 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +294 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/__tests__/integration.test.d.ts +17 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +304 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/setup.d.ts +1 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +7 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/string-flag-value.test.d.ts +8 -0
- package/dist/__tests__/string-flag-value.test.d.ts.map +1 -0
- package/dist/__tests__/string-flag-value.test.js +96 -0
- package/dist/__tests__/string-flag-value.test.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +19 -32
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +19 -32
- package/dist/index.js.map +1 -1
- package/package.json +38 -30
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Tests for Togglely SDK
|
|
3
|
+
*
|
|
4
|
+
* These tests run against the actual Docker backend container.
|
|
5
|
+
* They verify:
|
|
6
|
+
* 1. SDK can fetch flags from the API
|
|
7
|
+
* 2. CORS origin validation works correctly
|
|
8
|
+
* 3. Multi-tenant brand resolution works
|
|
9
|
+
*
|
|
10
|
+
* Prerequisites:
|
|
11
|
+
* - Backend container must be running on localhost:4000
|
|
12
|
+
* - Demo data must be seeded
|
|
13
|
+
*
|
|
14
|
+
* Run with: npm run test:integration
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=integration.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Tests for Togglely SDK
|
|
3
|
+
*
|
|
4
|
+
* These tests run against the actual Docker backend container.
|
|
5
|
+
* They verify:
|
|
6
|
+
* 1. SDK can fetch flags from the API
|
|
7
|
+
* 2. CORS origin validation works correctly
|
|
8
|
+
* 3. Multi-tenant brand resolution works
|
|
9
|
+
*
|
|
10
|
+
* Prerequisites:
|
|
11
|
+
* - Backend container must be running on localhost:4000
|
|
12
|
+
* - Demo data must be seeded
|
|
13
|
+
*
|
|
14
|
+
* Run with: npm run test:integration
|
|
15
|
+
*/
|
|
16
|
+
import { TogglelyClient } from '../index';
|
|
17
|
+
// Test configuration - matches demo data
|
|
18
|
+
const TEST_API_URL = 'http://localhost:4000';
|
|
19
|
+
const TEST_API_KEY = 'togglely_demo_simple_key'; // Simple Web App project
|
|
20
|
+
const TEST_PROJECT = 'simple-web-app';
|
|
21
|
+
const TEST_ENVIRONMENT = 'development';
|
|
22
|
+
// Multi-tenant test config
|
|
23
|
+
const TEST_MT_API_KEY = 'togglely_demo_saas_key'; // Multi-Tenant SaaS project
|
|
24
|
+
const TEST_MT_PROJECT = 'multi-tenant-saas';
|
|
25
|
+
// Helper to wait for SDK to be ready
|
|
26
|
+
const waitForReady = (client, timeout = 5000) => {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const startTime = Date.now();
|
|
29
|
+
const checkReady = () => {
|
|
30
|
+
const state = client.getState();
|
|
31
|
+
if (state.isReady) {
|
|
32
|
+
resolve();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (Date.now() - startTime > timeout) {
|
|
36
|
+
reject(new Error('SDK failed to become ready within timeout'));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setTimeout(checkReady, 100);
|
|
40
|
+
};
|
|
41
|
+
checkReady();
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
describe('Togglely SDK Integration Tests', () => {
|
|
45
|
+
let client;
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
client?.destroy();
|
|
48
|
+
});
|
|
49
|
+
describe('Basic Connectivity', () => {
|
|
50
|
+
it('should successfully connect and fetch flags from Docker backend', async () => {
|
|
51
|
+
client = new TogglelyClient({
|
|
52
|
+
apiKey: TEST_API_KEY,
|
|
53
|
+
baseUrl: TEST_API_URL,
|
|
54
|
+
project: TEST_PROJECT,
|
|
55
|
+
environment: TEST_ENVIRONMENT,
|
|
56
|
+
autoFetch: true,
|
|
57
|
+
});
|
|
58
|
+
await waitForReady(client);
|
|
59
|
+
// Verify SDK fetched flags
|
|
60
|
+
const toggles = client.getAllToggles();
|
|
61
|
+
expect(Object.keys(toggles).length).toBeGreaterThan(0);
|
|
62
|
+
// Verify we can get flag values
|
|
63
|
+
const toggleValue = await client.getValue('new-dashboard');
|
|
64
|
+
expect(toggleValue).not.toBeNull();
|
|
65
|
+
expect(typeof toggleValue?.value).toBe('boolean');
|
|
66
|
+
console.log('Successfully fetched toggles:', Object.keys(toggles));
|
|
67
|
+
});
|
|
68
|
+
it('should return correct flag values', async () => {
|
|
69
|
+
client = new TogglelyClient({
|
|
70
|
+
apiKey: TEST_API_KEY,
|
|
71
|
+
baseUrl: TEST_API_URL,
|
|
72
|
+
project: TEST_PROJECT,
|
|
73
|
+
environment: TEST_ENVIRONMENT,
|
|
74
|
+
autoFetch: true,
|
|
75
|
+
});
|
|
76
|
+
await waitForReady(client);
|
|
77
|
+
// Test boolean flags
|
|
78
|
+
const darkMode = await client.getValue('dark-mode');
|
|
79
|
+
expect(darkMode).not.toBeNull();
|
|
80
|
+
expect(typeof darkMode?.value).toBe('boolean');
|
|
81
|
+
expect(typeof darkMode?.enabled).toBe('boolean');
|
|
82
|
+
});
|
|
83
|
+
it('should handle offline mode gracefully when backend is unreachable', async () => {
|
|
84
|
+
client = new TogglelyClient({
|
|
85
|
+
apiKey: TEST_API_KEY,
|
|
86
|
+
baseUrl: 'http://localhost:99999', // Invalid port
|
|
87
|
+
project: TEST_PROJECT,
|
|
88
|
+
environment: TEST_ENVIRONMENT,
|
|
89
|
+
autoFetch: true,
|
|
90
|
+
offlineFallback: true,
|
|
91
|
+
});
|
|
92
|
+
// Wait for offline mode
|
|
93
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
94
|
+
const state = client.getState();
|
|
95
|
+
// Should be offline or have error
|
|
96
|
+
expect(state.isOffline || state.lastError !== null).toBe(true);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('CORS Origin Validation', () => {
|
|
100
|
+
it('should successfully fetch when origin is allowed', async () => {
|
|
101
|
+
// The demo project has allowedOrigins: [] initially (allows all)
|
|
102
|
+
client = new TogglelyClient({
|
|
103
|
+
apiKey: TEST_API_KEY,
|
|
104
|
+
baseUrl: TEST_API_URL,
|
|
105
|
+
project: TEST_PROJECT,
|
|
106
|
+
environment: TEST_ENVIRONMENT,
|
|
107
|
+
autoFetch: true,
|
|
108
|
+
});
|
|
109
|
+
await waitForReady(client);
|
|
110
|
+
const toggles = client.getAllToggles();
|
|
111
|
+
expect(Object.keys(toggles).length).toBeGreaterThan(0);
|
|
112
|
+
console.log('Origin validation passed - toggles fetched successfully');
|
|
113
|
+
});
|
|
114
|
+
it('should track SDK connection state correctly', async () => {
|
|
115
|
+
const stateUpdates = [];
|
|
116
|
+
client = new TogglelyClient({
|
|
117
|
+
apiKey: TEST_API_KEY,
|
|
118
|
+
baseUrl: TEST_API_URL,
|
|
119
|
+
project: TEST_PROJECT,
|
|
120
|
+
environment: TEST_ENVIRONMENT,
|
|
121
|
+
autoFetch: true,
|
|
122
|
+
});
|
|
123
|
+
client.on('update', () => {
|
|
124
|
+
stateUpdates.push('updated');
|
|
125
|
+
});
|
|
126
|
+
// Wait for initialization
|
|
127
|
+
await new Promise(resolve => setTimeout(resolve, 1500));
|
|
128
|
+
// Check SDK state
|
|
129
|
+
const state = client.getState();
|
|
130
|
+
console.log('SDK State:', state);
|
|
131
|
+
// State should be ready or offline
|
|
132
|
+
expect(state.isReady || state.isOffline).toBe(true);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('Multi-Tenant Brand Resolution', () => {
|
|
136
|
+
it('should fetch flags with brand context', async () => {
|
|
137
|
+
client = new TogglelyClient({
|
|
138
|
+
apiKey: TEST_MT_API_KEY,
|
|
139
|
+
baseUrl: TEST_API_URL,
|
|
140
|
+
project: TEST_MT_PROJECT,
|
|
141
|
+
environment: TEST_ENVIRONMENT,
|
|
142
|
+
autoFetch: true,
|
|
143
|
+
});
|
|
144
|
+
// Set brand context
|
|
145
|
+
client.setContext({
|
|
146
|
+
tenantId: 'acme-corp', // One of the demo brands
|
|
147
|
+
});
|
|
148
|
+
await waitForReady(client);
|
|
149
|
+
const toggles = client.getAllToggles();
|
|
150
|
+
expect(Object.keys(toggles).length).toBeGreaterThan(0);
|
|
151
|
+
console.log('Multi-tenant toggles fetched for brand:', Object.keys(toggles));
|
|
152
|
+
});
|
|
153
|
+
it('should include tenantId in API requests', async () => {
|
|
154
|
+
let requestUrl = '';
|
|
155
|
+
// Mock fetch to capture URL
|
|
156
|
+
const originalFetch = global.fetch;
|
|
157
|
+
global.fetch = jest.fn(async (url, init) => {
|
|
158
|
+
if (typeof url === 'string' && url.includes('/sdk/')) {
|
|
159
|
+
requestUrl = url;
|
|
160
|
+
}
|
|
161
|
+
return originalFetch(url, init);
|
|
162
|
+
});
|
|
163
|
+
client = new TogglelyClient({
|
|
164
|
+
apiKey: TEST_MT_API_KEY,
|
|
165
|
+
baseUrl: TEST_API_URL,
|
|
166
|
+
project: TEST_MT_PROJECT,
|
|
167
|
+
environment: TEST_ENVIRONMENT,
|
|
168
|
+
autoFetch: true,
|
|
169
|
+
});
|
|
170
|
+
client.setContext({
|
|
171
|
+
tenantId: 'startup-inc',
|
|
172
|
+
});
|
|
173
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
174
|
+
// Restore fetch
|
|
175
|
+
global.fetch = originalFetch;
|
|
176
|
+
console.log('Request URL:', requestUrl);
|
|
177
|
+
// Check if tenantId was included in the URL
|
|
178
|
+
if (requestUrl) {
|
|
179
|
+
expect(requestUrl.includes('startup-inc') || requestUrl.includes('context=')).toBe(true);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
it('should handle different brands', async () => {
|
|
183
|
+
// Create client for first brand
|
|
184
|
+
const client1 = new TogglelyClient({
|
|
185
|
+
apiKey: TEST_MT_API_KEY,
|
|
186
|
+
baseUrl: TEST_API_URL,
|
|
187
|
+
project: TEST_MT_PROJECT,
|
|
188
|
+
environment: TEST_ENVIRONMENT,
|
|
189
|
+
autoFetch: true,
|
|
190
|
+
});
|
|
191
|
+
client1.setContext({ tenantId: 'acme-corp' });
|
|
192
|
+
await waitForReady(client1);
|
|
193
|
+
const toggles1 = client1.getAllToggles();
|
|
194
|
+
client1.destroy();
|
|
195
|
+
// Create client for second brand
|
|
196
|
+
const client2 = new TogglelyClient({
|
|
197
|
+
apiKey: TEST_MT_API_KEY,
|
|
198
|
+
baseUrl: TEST_API_URL,
|
|
199
|
+
project: TEST_MT_PROJECT,
|
|
200
|
+
environment: TEST_ENVIRONMENT,
|
|
201
|
+
autoFetch: true,
|
|
202
|
+
});
|
|
203
|
+
client2.setContext({ tenantId: 'startup-inc' });
|
|
204
|
+
await waitForReady(client2);
|
|
205
|
+
const toggles2 = client2.getAllToggles();
|
|
206
|
+
client2.destroy();
|
|
207
|
+
// Both should have toggles
|
|
208
|
+
expect(Object.keys(toggles1).length).toBeGreaterThan(0);
|
|
209
|
+
expect(Object.keys(toggles2).length).toBeGreaterThan(0);
|
|
210
|
+
console.log('Brand 1 toggles:', Object.keys(toggles1));
|
|
211
|
+
console.log('Brand 2 toggles:', Object.keys(toggles2));
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
describe('SDK Event Handling', () => {
|
|
215
|
+
it('should trigger ready event when ready', async () => {
|
|
216
|
+
let readyCalled = false;
|
|
217
|
+
client = new TogglelyClient({
|
|
218
|
+
apiKey: TEST_API_KEY,
|
|
219
|
+
baseUrl: TEST_API_URL,
|
|
220
|
+
project: TEST_PROJECT,
|
|
221
|
+
environment: TEST_ENVIRONMENT,
|
|
222
|
+
autoFetch: true,
|
|
223
|
+
});
|
|
224
|
+
client.on('ready', () => {
|
|
225
|
+
readyCalled = true;
|
|
226
|
+
});
|
|
227
|
+
await waitForReady(client);
|
|
228
|
+
// Wait a bit for callback
|
|
229
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
230
|
+
expect(readyCalled).toBe(true);
|
|
231
|
+
});
|
|
232
|
+
it('should trigger error event on connection failure', async () => {
|
|
233
|
+
let errorCalled = false;
|
|
234
|
+
client = new TogglelyClient({
|
|
235
|
+
apiKey: 'invalid-key',
|
|
236
|
+
baseUrl: TEST_API_URL,
|
|
237
|
+
project: TEST_PROJECT,
|
|
238
|
+
environment: TEST_ENVIRONMENT,
|
|
239
|
+
autoFetch: true,
|
|
240
|
+
});
|
|
241
|
+
client.on('error', () => {
|
|
242
|
+
errorCalled = true;
|
|
243
|
+
});
|
|
244
|
+
// Wait for error
|
|
245
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
246
|
+
// Error should be called or SDK should be offline
|
|
247
|
+
const state = client.getState();
|
|
248
|
+
expect(errorCalled || state.lastError !== null || state.isOffline).toBe(true);
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
describe('Refresh and Updates', () => {
|
|
252
|
+
it('should manually refresh toggles', async () => {
|
|
253
|
+
client = new TogglelyClient({
|
|
254
|
+
apiKey: TEST_API_KEY,
|
|
255
|
+
baseUrl: TEST_API_URL,
|
|
256
|
+
project: TEST_PROJECT,
|
|
257
|
+
environment: TEST_ENVIRONMENT,
|
|
258
|
+
autoFetch: false, // Don't auto-fetch
|
|
259
|
+
});
|
|
260
|
+
// Initially no toggles
|
|
261
|
+
let toggles = client.getAllToggles();
|
|
262
|
+
expect(Object.keys(toggles).length).toBe(0);
|
|
263
|
+
// Manually refresh
|
|
264
|
+
await client.refresh();
|
|
265
|
+
// Now should have toggles (or be offline)
|
|
266
|
+
toggles = client.getAllToggles();
|
|
267
|
+
const state = client.getState();
|
|
268
|
+
expect(Object.keys(toggles).length > 0 || state.isOffline).toBe(true);
|
|
269
|
+
});
|
|
270
|
+
it('should update context dynamically', async () => {
|
|
271
|
+
client = new TogglelyClient({
|
|
272
|
+
apiKey: TEST_MT_API_KEY,
|
|
273
|
+
baseUrl: TEST_API_URL,
|
|
274
|
+
project: TEST_MT_PROJECT,
|
|
275
|
+
environment: TEST_ENVIRONMENT,
|
|
276
|
+
autoFetch: true,
|
|
277
|
+
});
|
|
278
|
+
client.setContext({ tenantId: 'acme-corp' });
|
|
279
|
+
await waitForReady(client);
|
|
280
|
+
// Update context
|
|
281
|
+
client.setContext({ tenantId: 'startup-inc' });
|
|
282
|
+
// Refresh with new context
|
|
283
|
+
await client.refresh();
|
|
284
|
+
const toggles = client.getAllToggles();
|
|
285
|
+
expect(Object.keys(toggles).length).toBeGreaterThan(0);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
// Health check test to verify backend is running
|
|
290
|
+
describe('Backend Health Check', () => {
|
|
291
|
+
it('should confirm backend is accessible', async () => {
|
|
292
|
+
try {
|
|
293
|
+
const response = await fetch(`${TEST_API_URL}/health`);
|
|
294
|
+
expect(response.ok).toBe(true);
|
|
295
|
+
console.log('Backend is healthy and accessible');
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
console.error('Backend is not accessible at', TEST_API_URL);
|
|
299
|
+
console.error('Make sure Docker containers are running: docker-compose up -d');
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
//# sourceMappingURL=integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEzB,mBAAmB;AACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-flag-value.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/string-flag-value.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Test: String Flag Value Bug
|
|
3
|
+
*
|
|
4
|
+
* This test reproduces the issue where a STRING flag with value "hallo"
|
|
5
|
+
* returns "false" instead of the actual value.
|
|
6
|
+
*/
|
|
7
|
+
import { TogglelyClient } from '../index';
|
|
8
|
+
const TEST_API_URL = 'http://localhost:4000';
|
|
9
|
+
const TEST_API_KEY = 'togglely_demo_saas_key';
|
|
10
|
+
const TEST_PROJECT = 'multi-tenant-saas';
|
|
11
|
+
const TEST_ENVIRONMENT = 'development';
|
|
12
|
+
describe('String Flag Value Bug', () => {
|
|
13
|
+
let client;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
client = new TogglelyClient({
|
|
16
|
+
apiKey: TEST_API_KEY,
|
|
17
|
+
baseUrl: TEST_API_URL,
|
|
18
|
+
project: TEST_PROJECT,
|
|
19
|
+
environment: TEST_ENVIRONMENT,
|
|
20
|
+
autoFetch: false,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
client.destroy();
|
|
25
|
+
});
|
|
26
|
+
it('should return correct string value for existing flag', async () => {
|
|
27
|
+
// Get the "welcome-message" flag (STRING type in demo data)
|
|
28
|
+
const result = await client.getValue('welcome-message');
|
|
29
|
+
console.log('welcome-message result:', JSON.stringify(result, null, 2));
|
|
30
|
+
// The value should be a string, not "false"
|
|
31
|
+
expect(result).not.toBeNull();
|
|
32
|
+
expect(result?.value).not.toBe('false');
|
|
33
|
+
expect(result?.value).not.toBe(false);
|
|
34
|
+
// For STRING type, value should be the actual string value
|
|
35
|
+
expect(typeof result?.value).toBe('string');
|
|
36
|
+
});
|
|
37
|
+
it('should return correct boolean value for boolean flag', async () => {
|
|
38
|
+
// Get the "premium-features" flag (BOOLEAN type)
|
|
39
|
+
const result = await client.getValue('premium-features');
|
|
40
|
+
console.log('premium-features result:', JSON.stringify(result, null, 2));
|
|
41
|
+
expect(result).not.toBeNull();
|
|
42
|
+
// Boolean flag should return actual boolean
|
|
43
|
+
expect(typeof result?.value).toBe('boolean');
|
|
44
|
+
});
|
|
45
|
+
it('should return correct value with brand context', async () => {
|
|
46
|
+
client.setContext({ tenantId: 'acme-corp' });
|
|
47
|
+
const result = await client.getValue('welcome-message');
|
|
48
|
+
console.log('welcome-message with brand:', JSON.stringify(result, null, 2));
|
|
49
|
+
expect(result).not.toBeNull();
|
|
50
|
+
expect(result?.value).not.toBe('false');
|
|
51
|
+
});
|
|
52
|
+
it('should fetch all flags and verify string values', async () => {
|
|
53
|
+
await client.refresh();
|
|
54
|
+
const allToggles = client.getAllToggles();
|
|
55
|
+
console.log('All toggles:', JSON.stringify(allToggles, null, 2));
|
|
56
|
+
// Check each flag
|
|
57
|
+
Object.entries(allToggles).forEach(([key, toggle]) => {
|
|
58
|
+
console.log(`Flag ${key}:`, {
|
|
59
|
+
value: toggle.value,
|
|
60
|
+
enabled: toggle.enabled,
|
|
61
|
+
valueType: typeof toggle.value
|
|
62
|
+
});
|
|
63
|
+
// No flag should have "false" as string value unless it's a boolean false
|
|
64
|
+
if (toggle.value === 'false' && toggle.enabled) {
|
|
65
|
+
console.error(`BUG DETECTED: Flag "${key}" has string "false" but is enabled!`);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
// Direct API test without SDK
|
|
71
|
+
describe('Direct API Test', () => {
|
|
72
|
+
it('should return correct value from API directly', async () => {
|
|
73
|
+
const url = `${TEST_API_URL}/sdk/flags/${TEST_PROJECT}/${TEST_ENVIRONMENT}/welcome-message?apiKey=${TEST_API_KEY}`;
|
|
74
|
+
console.log('Fetching:', url);
|
|
75
|
+
const response = await fetch(url);
|
|
76
|
+
const data = await response.json();
|
|
77
|
+
console.log('API Response:', JSON.stringify(data, null, 2));
|
|
78
|
+
expect(data.value).not.toBe('false');
|
|
79
|
+
expect(data.value).not.toBe(false);
|
|
80
|
+
expect(typeof data.value).toBe('string');
|
|
81
|
+
});
|
|
82
|
+
it('should return correct value with brandKey', async () => {
|
|
83
|
+
const url = `${TEST_API_URL}/sdk/flags/${TEST_PROJECT}/${TEST_ENVIRONMENT}/welcome-message?apiKey=${TEST_API_KEY}&brandKey=acme-corp`;
|
|
84
|
+
console.log('Fetching with brand:', url);
|
|
85
|
+
const response = await fetch(url);
|
|
86
|
+
const data = await response.json();
|
|
87
|
+
console.log('API Response with brand:', JSON.stringify(data, null, 2));
|
|
88
|
+
// This is where the bug manifests - value should NOT be "false"
|
|
89
|
+
if (data.value === 'false' || data.value === false) {
|
|
90
|
+
console.error('BUG CONFIRMED: API returns false instead of actual value!');
|
|
91
|
+
}
|
|
92
|
+
expect(data.value).not.toBe('false');
|
|
93
|
+
expect(data.value).not.toBe(false);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=string-flag-value.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-flag-value.test.js","sourceRoot":"","sources":["../../src/__tests__/string-flag-value.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,14 +12,14 @@ export interface TogglelyConfig {
|
|
|
12
12
|
environment: string;
|
|
13
13
|
/** Base URL of your Togglely instance */
|
|
14
14
|
baseUrl: string;
|
|
15
|
-
/** Refresh interval in milliseconds (default: 60000) */
|
|
16
|
-
refreshInterval?: number;
|
|
17
15
|
/** Request timeout in milliseconds (default: 5000) */
|
|
18
16
|
timeout?: number;
|
|
19
17
|
/** Enable offline mode fallback via environment variables (default: true) */
|
|
20
18
|
offlineFallback?: boolean;
|
|
21
19
|
/** Prefix for environment variables (default: 'TOGGLELY_') */
|
|
22
20
|
envPrefix?: string;
|
|
21
|
+
/** Auto-fetch toggles on init (default: true) */
|
|
22
|
+
autoFetch?: boolean;
|
|
23
23
|
}
|
|
24
24
|
export interface ToggleContext {
|
|
25
25
|
userId?: string;
|
|
@@ -49,7 +49,6 @@ export type TogglelyEventHandler = (state: TogglelyState) => void;
|
|
|
49
49
|
export declare class TogglelyClient {
|
|
50
50
|
private config;
|
|
51
51
|
private toggles;
|
|
52
|
-
private refreshTimer?;
|
|
53
52
|
private context;
|
|
54
53
|
private state;
|
|
55
54
|
private eventHandlers;
|
|
@@ -81,7 +80,6 @@ export declare class TogglelyClient {
|
|
|
81
80
|
forceOfflineMode(): void;
|
|
82
81
|
forceOnlineMode(): void;
|
|
83
82
|
destroy(): void;
|
|
84
|
-
private startPolling;
|
|
85
83
|
private fetchWithTimeout;
|
|
86
84
|
}
|
|
87
85
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|