@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.
Files changed (2) hide show
  1. package/README.md +86 -0
  2. 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
+ }