@togglely/sdk-core 1.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/README.md +86 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# @togglely/sdk-core
|
|
2
|
+
|
|
3
|
+
Core SDK for Togglely - Framework agnostic feature toggles.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @togglely/sdk-core
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { TogglelyClient } from '@togglely/sdk-core';
|
|
15
|
+
|
|
16
|
+
const client = new TogglelyClient({
|
|
17
|
+
apiKey: 'your-api-key',
|
|
18
|
+
environment: 'production',
|
|
19
|
+
baseUrl: 'https://your-togglely-instance.com'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Check if feature is enabled
|
|
23
|
+
const isEnabled = await client.isEnabled('new-feature', false);
|
|
24
|
+
|
|
25
|
+
// Get string value
|
|
26
|
+
const message = await client.getString('welcome-message', 'Hello');
|
|
27
|
+
|
|
28
|
+
// Get number value
|
|
29
|
+
const limit = await client.getNumber('max-items', 10);
|
|
30
|
+
|
|
31
|
+
// Get JSON value
|
|
32
|
+
const config = await client.getJSON('app-config', {});
|
|
33
|
+
|
|
34
|
+
// Listen to events
|
|
35
|
+
client.on('ready', () => console.log('Toggles loaded!'));
|
|
36
|
+
client.on('offline', () => console.log('Using offline toggles'));
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Offline Mode
|
|
40
|
+
|
|
41
|
+
The SDK automatically falls back to environment variables when the service is unavailable.
|
|
42
|
+
|
|
43
|
+
### Environment Variables
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
TOGGLELY_NEW_FEATURE=true
|
|
47
|
+
TOGGLELY_MAX_ITEMS=100
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Browser Global
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<script>
|
|
54
|
+
window.__TOGGLELY_TOGGLES = {
|
|
55
|
+
'new-feature': true,
|
|
56
|
+
'max-items': 100
|
|
57
|
+
};
|
|
58
|
+
</script>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## API
|
|
62
|
+
|
|
63
|
+
### `TogglelyClient(config)`
|
|
64
|
+
|
|
65
|
+
Creates a new Togglely client.
|
|
66
|
+
|
|
67
|
+
**Config options:**
|
|
68
|
+
- `apiKey` (string, required): Your API key
|
|
69
|
+
- `environment` (string, required): Environment name
|
|
70
|
+
- `baseUrl` (string, required): Togglely instance URL
|
|
71
|
+
- `refreshInterval` (number, default: 60000): Polling interval in ms
|
|
72
|
+
- `timeout` (number, default: 5000): Request timeout in ms
|
|
73
|
+
- `offlineFallback` (boolean, default: true): Enable offline mode
|
|
74
|
+
- `envPrefix` (string, default: 'TOGGLELY_'): Environment variable prefix
|
|
75
|
+
|
|
76
|
+
### Methods
|
|
77
|
+
|
|
78
|
+
- `isEnabled(key, defaultValue)`: Check if a boolean toggle is enabled
|
|
79
|
+
- `getString(key, defaultValue)`: Get a string toggle value
|
|
80
|
+
- `getNumber(key, defaultValue)`: Get a number toggle value
|
|
81
|
+
- `getJSON(key, defaultValue)`: Get a JSON toggle value
|
|
82
|
+
- `getAllToggles()`: Get all toggles
|
|
83
|
+
- `setContext(context)`: Set evaluation context (userId, email, etc.)
|
|
84
|
+
- `refresh()`: Manually refresh toggles
|
|
85
|
+
- `destroy()`: Cleanup and stop polling
|
|
86
|
+
- `on(event, handler)`: Listen to events ('ready', 'update', 'error', 'offline', 'online')
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@togglely/sdk-core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Core SDK for Togglely - Framework agnostic",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc && rollup -c",
|
|
13
|
+
"test": "jest"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"feature-flags",
|
|
17
|
+
"feature-toggles",
|
|
18
|
+
"togglely",
|
|
19
|
+
"core"
|
|
20
|
+
],
|
|
21
|
+
"author": "Togglely",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@rollup/plugin-typescript": "^11.1.5",
|
|
25
|
+
"@types/node": "^20.10.4",
|
|
26
|
+
"rollup": "^4.9.1",
|
|
27
|
+
"tslib": "^2.6.2",
|
|
28
|
+
"typescript": "^5.3.3"
|
|
29
|
+
}
|
|
30
|
+
}
|