@jewel998/config 0.1.0 → 0.1.2

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 (108) hide show
  1. package/dist/client/ConfigClient.d.ts +3 -1
  2. package/dist/client/ConfigClient.d.ts.map +1 -1
  3. package/dist/client/ConfigClient.js +53 -19
  4. package/dist/client/ConfigClient.js.map +1 -1
  5. package/dist/context/autoContext.d.ts +28 -0
  6. package/dist/context/autoContext.d.ts.map +1 -0
  7. package/dist/context/autoContext.js +135 -0
  8. package/dist/context/autoContext.js.map +1 -0
  9. package/dist/createConfig.d.ts.map +1 -1
  10. package/dist/createConfig.js +31 -7
  11. package/dist/createConfig.js.map +1 -1
  12. package/dist/index.d.ts +6 -15
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +8 -9
  15. package/dist/index.js.map +1 -1
  16. package/dist/initConfig.d.ts +66 -0
  17. package/dist/initConfig.d.ts.map +1 -0
  18. package/dist/initConfig.js +128 -0
  19. package/dist/initConfig.js.map +1 -0
  20. package/dist/loading/pessimistic.d.ts.map +1 -1
  21. package/dist/loading/pessimistic.js +12 -5
  22. package/dist/loading/pessimistic.js.map +1 -1
  23. package/dist/plugins/models.d.ts +1 -0
  24. package/dist/plugins/models.d.ts.map +1 -1
  25. package/dist/plugins/prerequisites/prerequisitePlugin.d.ts.map +1 -1
  26. package/dist/plugins/prerequisites/prerequisitePlugin.js +22 -2
  27. package/dist/plugins/prerequisites/prerequisitePlugin.js.map +1 -1
  28. package/dist/transport/HttpTransport.d.ts +4 -0
  29. package/dist/transport/HttpTransport.d.ts.map +1 -1
  30. package/dist/transport/HttpTransport.js +15 -4
  31. package/dist/transport/HttpTransport.js.map +1 -1
  32. package/dist/types.d.ts +24 -37
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js.map +1 -1
  35. package/dist/webhook-formats.d.ts +92 -0
  36. package/dist/webhook-formats.d.ts.map +1 -0
  37. package/dist/webhook-formats.js +141 -0
  38. package/dist/webhook-formats.js.map +1 -0
  39. package/package.json +1 -1
  40. package/dist/cache/storage.d.ts +0 -15
  41. package/dist/cache/storage.d.ts.map +0 -1
  42. package/dist/cache/storage.js +0 -43
  43. package/dist/cache/storage.js.map +0 -1
  44. package/dist/cache/types.d.ts +0 -3
  45. package/dist/cache/types.js +0 -2
  46. package/dist/cache/types.js.map +0 -1
  47. package/dist/client.d.ts +0 -15
  48. package/dist/client.d.ts.map +0 -1
  49. package/dist/client.js +0 -80
  50. package/dist/client.js.map +0 -1
  51. package/dist/core/resolver.d.ts +0 -8
  52. package/dist/core/resolver.d.ts.map +0 -1
  53. package/dist/core/resolver.js +0 -22
  54. package/dist/core/resolver.js.map +0 -1
  55. package/dist/errors/index.d.ts +0 -17
  56. package/dist/errors/index.d.ts.map +0 -1
  57. package/dist/errors/index.js +0 -29
  58. package/dist/errors/index.js.map +0 -1
  59. package/dist/example.d.ts +0 -2
  60. package/dist/example.d.ts.map +0 -1
  61. package/dist/example.js +0 -23
  62. package/dist/example.js.map +0 -1
  63. package/dist/loading/deferred.d.ts +0 -3
  64. package/dist/loading/deferred.js +0 -5
  65. package/dist/loading/deferred.js.map +0 -1
  66. package/dist/loading/optimistic.d.ts +0 -3
  67. package/dist/loading/pessimistic.d.ts +0 -3
  68. package/dist/management/index.d.ts +0 -3
  69. package/dist/management/index.d.ts.map +0 -1
  70. package/dist/management/index.js +0 -2
  71. package/dist/management/index.js.map +0 -1
  72. package/dist/management/manager.d.ts +0 -34
  73. package/dist/management/manager.d.ts.map +0 -1
  74. package/dist/management/manager.js +0 -21
  75. package/dist/management/manager.js.map +0 -1
  76. package/dist/management/memory-backend.d.ts +0 -6
  77. package/dist/management/memory-backend.d.ts.map +0 -1
  78. package/dist/management/memory-backend.js +0 -78
  79. package/dist/management/memory-backend.js.map +0 -1
  80. package/dist/plugins/index.d.ts +0 -5
  81. package/dist/plugins/lifecycle/index.d.ts +0 -4
  82. package/dist/plugins/overrides/index.d.ts +0 -2
  83. package/dist/plugins/prerequisites/index.d.ts +0 -3
  84. package/dist/plugins/rollout/index.d.ts +0 -3
  85. package/dist/plugins/rollout/murmurhash3.d.ts +0 -6
  86. package/dist/plugins/rollout/murmurhash3.d.ts.map +0 -1
  87. package/dist/plugins/rollout/murmurhash3.js +0 -56
  88. package/dist/plugins/rollout/murmurhash3.js.map +0 -1
  89. package/dist/plugins/schedule/index.d.ts +0 -2
  90. package/dist/plugins/targeting/index.d.ts +0 -4
  91. package/dist/plugins/targeting/predicates.d.ts +0 -23
  92. package/dist/plugins/targeting/predicates.js +0 -110
  93. package/dist/plugins/targeting/predicates.js.map +0 -1
  94. package/dist/plugins/types.d.ts +0 -35
  95. package/dist/plugins/types.js +0 -13
  96. package/dist/plugins/types.js.map +0 -1
  97. package/dist/registry.d.ts +0 -9
  98. package/dist/registry.d.ts.map +0 -1
  99. package/dist/registry.js +0 -22
  100. package/dist/registry.js.map +0 -1
  101. package/dist/remote/firebase-adapter.d.ts +0 -6
  102. package/dist/remote/firebase-adapter.d.ts.map +0 -1
  103. package/dist/remote/firebase-adapter.js +0 -12
  104. package/dist/remote/firebase-adapter.js.map +0 -1
  105. package/dist/remote/provider.d.ts +0 -6
  106. package/dist/remote/provider.d.ts.map +0 -1
  107. package/dist/remote/provider.js +0 -5
  108. package/dist/remote/provider.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { EvaluationContext, EvaluationPlugin } from "../plugins/types.js";
2
- import type { CacheStorage, ConfigClient, ConfigFetcher, EventEmitterInterface, FetchGranularity, RetryConfig } from "../types";
2
+ import type { CacheStorage, ConfigClient, ConfigFetcher, EvaluationMode, EventEmitterInterface, FetchGranularity, RetryConfig } from "../types";
3
3
  export interface ConfigClientInternals {
4
4
  data: Record<string, unknown>;
5
5
  cache: CacheStorage;
@@ -11,6 +11,8 @@ export interface ConfigClientInternals {
11
11
  plugins?: EvaluationPlugin[];
12
12
  context?: EvaluationContext;
13
13
  consentAware?: boolean;
14
+ evaluationMode?: EvaluationMode;
15
+ onContextChange?: (ctx: EvaluationContext) => void;
14
16
  }
15
17
  export declare const buildConfigClient: (internals: ConfigClientInternals) => ConfigClient;
16
18
  //# sourceMappingURL=ConfigClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigClient.d.ts","sourceRoot":"","sources":["../../src/client/ConfigClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG/E,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAGZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACZ,MAAM,UAAU,CAAC;AAGlB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,GAC5B,WAAW,qBAAqB,KAC/B,YAsNF,CAAC"}
1
+ {"version":3,"file":"ConfigClient.d.ts","sourceRoot":"","sources":["../../src/client/ConfigClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG/E,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAGZ,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACZ,MAAM,UAAU,CAAC;AAGlB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD;AAED,eAAO,MAAM,iBAAiB,GAC5B,WAAW,qBAAqB,KAC/B,YAuPF,CAAC"}
@@ -6,8 +6,16 @@ export const buildConfigClient = (internals) => {
6
6
  const plugins = internals.plugins ?? [];
7
7
  let evalContext = internals.context ?? {};
8
8
  const consentAware = internals.consentAware ?? false;
9
+ const evaluationMode = internals.evaluationMode ?? "server";
10
+ const onContextChange = internals.onContextChange;
9
11
  let data = { ...internals.data };
10
12
  let batchFetchTriggered = false;
13
+ // ── Request deduplication & debouncing ──
14
+ let inflightRefresh = null;
15
+ let lastFetchTime = 0;
16
+ let contextDebounceTimer = null;
17
+ const MIN_FETCH_INTERVAL = 30_000; // Don't re-fetch within 30s
18
+ const CONTEXT_DEBOUNCE_MS = 100; // Batch rapid setContext calls
11
19
  const triggerDeferredFetch = () => {
12
20
  if (!isDeferred || batchFetchTriggered) {
13
21
  return;
@@ -158,26 +166,35 @@ export const buildConfigClient = (internals) => {
158
166
  return { ...data };
159
167
  },
160
168
  async refresh() {
161
- try {
162
- const result = await withRetry(() => fetcher.fetchAll(), retry);
163
- cache.set("__all__", result, DEFAULT_CACHE_TTL);
164
- for (const [key, value] of Object.entries(result)) {
165
- cache.set(key, value, DEFAULT_CACHE_TTL);
169
+ // Deduplication: if a refresh is already in-flight, reuse it
170
+ if (inflightRefresh)
171
+ return inflightRefresh;
172
+ inflightRefresh = (async () => {
173
+ try {
174
+ const result = await withRetry(() => fetcher.fetchAll(), retry);
175
+ cache.set("__all__", result, DEFAULT_CACHE_TTL);
176
+ for (const [key, value] of Object.entries(result)) {
177
+ cache.set(key, value, DEFAULT_CACHE_TTL);
178
+ }
179
+ data = { ...data, ...result };
180
+ lastFetchTime = Date.now();
181
+ events.emit("updated", {
182
+ keys: Object.keys(result),
183
+ source: "refresh",
184
+ });
166
185
  }
167
- data = { ...data, ...result };
168
- events.emit("updated", {
169
- keys: Object.keys(result),
170
- source: "refresh",
171
- });
172
- }
173
- catch (error) {
174
- events.emit("fetchError", {
175
- error: error,
176
- retryCount: retry.maxRetries,
177
- willRetry: false,
178
- });
179
- throw error;
180
- }
186
+ catch (error) {
187
+ events.emit("fetchError", {
188
+ error: error,
189
+ retryCount: retry.maxRetries,
190
+ willRetry: false,
191
+ });
192
+ }
193
+ finally {
194
+ inflightRefresh = null;
195
+ }
196
+ })();
197
+ return inflightRefresh;
181
198
  },
182
199
  on(event, callback) {
183
200
  events.on(event, callback);
@@ -187,6 +204,23 @@ export const buildConfigClient = (internals) => {
187
204
  },
188
205
  setContext(newContext) {
189
206
  evalContext = { ...newContext };
207
+ // Notify the transport layer of the context change
208
+ if (onContextChange) {
209
+ onContextChange(evalContext);
210
+ }
211
+ // In server mode, context change means we need fresh resolved values.
212
+ // Debounce rapid setContext calls (e.g., form typing, navigation)
213
+ if (evaluationMode === "server") {
214
+ if (contextDebounceTimer)
215
+ clearTimeout(contextDebounceTimer);
216
+ contextDebounceTimer = setTimeout(() => {
217
+ contextDebounceTimer = null;
218
+ // Skip if we fetched very recently (stale check)
219
+ if (Date.now() - lastFetchTime < MIN_FETCH_INTERVAL)
220
+ return;
221
+ void client.refresh();
222
+ }, CONTEXT_DEBOUNCE_MS);
223
+ }
190
224
  },
191
225
  };
192
226
  return client;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigClient.js","sourceRoot":"","sources":["../../src/client/ConfigClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigClient.js","sourceRoot":"","sources":["../../src/client/ConfigClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { EvaluationContext } from "../plugins/types.js";
2
+ /**
3
+ * Automatically detect browser/device attributes and merge with user-provided context.
4
+ *
5
+ * Can be called two ways:
6
+ * 1. No args: returns auto-detected context only
7
+ * `autoContext()`
8
+ *
9
+ * 2. With user attributes: auto-detects AND merges your attributes (yours win on conflict)
10
+ * `autoContext({ userId: "user_123", plan: "pro", country: "US" })`
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const flags = initFlags({
15
+ * clientId: "cid_xxx",
16
+ * context: autoContext({ userId: "user_123", plan: "pro" }),
17
+ * });
18
+ * ```
19
+ */
20
+ export declare function autoContext(user?: {
21
+ userId?: string;
22
+ [key: string]: string | number | boolean | string[] | undefined;
23
+ }): EvaluationContext;
24
+ /**
25
+ * Deep-merge two evaluation contexts. User-provided values take precedence.
26
+ */
27
+ export declare function mergeContext(auto: EvaluationContext, user: EvaluationContext): EvaluationContext;
28
+ //# sourceMappingURL=autoContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoContext.d.ts","sourceRoot":"","sources":["../../src/context/autoContext.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CACjE,GAAG,iBAAiB,CAmCpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CASnB"}
@@ -0,0 +1,135 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // Auto-Context Detection Helpers
3
+ // Tree-shakeable: only included if explicitly imported by consumer
4
+ // ═══════════════════════════════════════════════════════════════
5
+ /**
6
+ * Automatically detect browser/device attributes and merge with user-provided context.
7
+ *
8
+ * Can be called two ways:
9
+ * 1. No args: returns auto-detected context only
10
+ * `autoContext()`
11
+ *
12
+ * 2. With user attributes: auto-detects AND merges your attributes (yours win on conflict)
13
+ * `autoContext({ userId: "user_123", plan: "pro", country: "US" })`
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const flags = initFlags({
18
+ * clientId: "cid_xxx",
19
+ * context: autoContext({ userId: "user_123", plan: "pro" }),
20
+ * });
21
+ * ```
22
+ */
23
+ export function autoContext(user) {
24
+ const detected = {
25
+ attributes: {},
26
+ };
27
+ if (typeof window !== "undefined" && typeof navigator !== "undefined") {
28
+ const ua = navigator.userAgent;
29
+ detected.attributes = {
30
+ browser: detectBrowser(ua),
31
+ browserVersion: detectBrowserVersion(ua),
32
+ os: detectOS(ua),
33
+ device: detectDevice(),
34
+ screenWidth: window.screen?.width ?? 0,
35
+ screenHeight: window.screen?.height ?? 0,
36
+ locale: navigator.language ?? "en",
37
+ timezone: getTimezone(),
38
+ };
39
+ }
40
+ if (!user)
41
+ return detected;
42
+ // Extract userId from the user object, rest goes to attributes
43
+ const { userId, ...attrs } = user;
44
+ const userAttrs = {};
45
+ for (const [k, v] of Object.entries(attrs)) {
46
+ if (v !== undefined)
47
+ userAttrs[k] = v;
48
+ }
49
+ return {
50
+ userId,
51
+ attributes: {
52
+ ...(detected.attributes ?? {}),
53
+ ...userAttrs,
54
+ },
55
+ };
56
+ }
57
+ /**
58
+ * Deep-merge two evaluation contexts. User-provided values take precedence.
59
+ */
60
+ export function mergeContext(auto, user) {
61
+ return {
62
+ userId: user.userId ?? auto.userId,
63
+ attributes: {
64
+ ...(auto.attributes ?? {}),
65
+ ...(user.attributes ?? {}),
66
+ },
67
+ consentGranted: user.consentGranted ?? auto.consentGranted,
68
+ };
69
+ }
70
+ // ═══════════════════════════════════════════════════════════════
71
+ // Detection Helpers (lightweight, no external deps)
72
+ // ═══════════════════════════════════════════════════════════════
73
+ function detectBrowser(ua) {
74
+ if (ua.includes("Firefox/"))
75
+ return "Firefox";
76
+ if (ua.includes("Edg/"))
77
+ return "Edge";
78
+ if (ua.includes("OPR/") || ua.includes("Opera"))
79
+ return "Opera";
80
+ if (ua.includes("Chrome/") && !ua.includes("Edg/"))
81
+ return "Chrome";
82
+ if (ua.includes("Safari/") && !ua.includes("Chrome/"))
83
+ return "Safari";
84
+ return "Unknown";
85
+ }
86
+ function detectBrowserVersion(ua) {
87
+ const patterns = [
88
+ ["Firefox", /Firefox\/(\d+[\d.]*)/],
89
+ ["Edge", /Edg\/(\d+[\d.]*)/],
90
+ ["Opera", /OPR\/(\d+[\d.]*)/],
91
+ ["Chrome", /Chrome\/(\d+[\d.]*)/],
92
+ ["Safari", /Version\/(\d+[\d.]*)/],
93
+ ];
94
+ for (const [, regex] of patterns) {
95
+ const match = ua.match(regex);
96
+ if (match?.[1])
97
+ return match[1];
98
+ }
99
+ return "0";
100
+ }
101
+ function detectOS(ua) {
102
+ if (ua.includes("Windows"))
103
+ return "Windows";
104
+ if (ua.includes("Mac OS"))
105
+ return "macOS";
106
+ if (ua.includes("Linux") && !ua.includes("Android"))
107
+ return "Linux";
108
+ if (ua.includes("Android"))
109
+ return "Android";
110
+ if (/iPhone|iPad|iPod/.test(ua))
111
+ return "iOS";
112
+ if (ua.includes("CrOS"))
113
+ return "ChromeOS";
114
+ return "Unknown";
115
+ }
116
+ function detectDevice() {
117
+ if (typeof window === "undefined")
118
+ return "desktop";
119
+ const width = window.screen?.width ?? window.innerWidth;
120
+ const hasTouch = "ontouchstart" in window || navigator.maxTouchPoints > 0;
121
+ if (hasTouch && width < 768)
122
+ return "mobile";
123
+ if (hasTouch && width >= 768 && width < 1024)
124
+ return "tablet";
125
+ return "desktop";
126
+ }
127
+ function getTimezone() {
128
+ try {
129
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
130
+ }
131
+ catch {
132
+ return "UTC";
133
+ }
134
+ }
135
+ //# sourceMappingURL=autoContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoContext.js","sourceRoot":"","sources":["../../src/context/autoContext.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createConfig.d.ts","sourceRoot":"","sources":["../src/createConfig.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAMjB,wBAAgB,YAAY,CAC1B,OAAO,EAAE,mBAAmB,GAAG;IAAE,eAAe,EAAE,aAAa,CAAA;CAAE,GAChE,OAAO,CAAC,YAAY,CAAC,CAAC;AACzB,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"createConfig.d.ts","sourceRoot":"","sources":["../src/createConfig.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAKjB,wBAAgB,YAAY,CAC1B,OAAO,EAAE,mBAAmB,GAAG;IAAE,eAAe,EAAE,aAAa,CAAA;CAAE,GAChE,OAAO,CAAC,YAAY,CAAC,CAAC;AACzB,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAAC"}
@@ -9,7 +9,7 @@ import { executeOptimistic } from "./loading/optimistic";
9
9
  import { executePessimistic } from "./loading/pessimistic";
10
10
  import { createHttpTransport } from "./transport/HttpTransport";
11
11
  import { DEFAULT_RETRY, DEFAULT_TIMEOUT } from "./types";
12
- const DEFAULT_BASE_URL = "https://us-central1-jewel998-config.cloudfunctions.net";
12
+ const DEFAULT_BASE_URL = "https://jewel998-config.web.app/api";
13
13
  export function createConfig(options) {
14
14
  // 1. Validate clientId
15
15
  if (!options.clientId) {
@@ -26,16 +26,26 @@ export function createConfig(options) {
26
26
  const retry = { ...DEFAULT_RETRY, ...options.retry };
27
27
  const timeout = options.timeout ?? DEFAULT_TIMEOUT;
28
28
  const baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
29
- // 4. Create internal modules
29
+ // Auto-detect evaluation mode from key prefix:
30
+ // cid_ = client key → server evaluates (frontend)
31
+ // svr_ = server key → client evaluates locally (backend)
32
+ const evaluationMode = options.clientId.startsWith("svr_")
33
+ ? "client"
34
+ : "server";
35
+ // 4. Maintain a mutable context reference for server mode
36
+ let currentContext = options.context ?? {};
37
+ // 5. Create internal modules
30
38
  const transport = createHttpTransport({
31
39
  baseUrl,
32
40
  clientId: options.clientId,
41
+ evaluationMode,
42
+ getContext: () => currentContext,
33
43
  });
34
44
  const events = new TypedEventEmitter();
35
45
  const fetcher = granularity === "batch"
36
46
  ? createBatchFetcher(transport)
37
47
  : createProjectedFetcher(transport);
38
- // 5. Create loading context
48
+ // 6. Create loading context
39
49
  const context = {
40
50
  clientId: options.clientId,
41
51
  fetcher,
@@ -45,7 +55,9 @@ export function createConfig(options) {
45
55
  timeout,
46
56
  granularity,
47
57
  };
48
- // 6. Execute strategy
58
+ // 7. In server mode, plugins are not needed (API resolves everything)
59
+ const plugins = evaluationMode === "client" ? options.plugins : undefined;
60
+ // 8. Execute strategy
49
61
  if (strategy === "pessimistic") {
50
62
  return executePessimistic(context).then((result) => {
51
63
  const client = buildConfigClient({
@@ -56,9 +68,13 @@ export function createConfig(options) {
56
68
  retry,
57
69
  granularity,
58
70
  isDeferred: false,
59
- plugins: options.plugins,
71
+ plugins,
60
72
  context: options.context,
61
73
  consentAware: options.consentAware,
74
+ evaluationMode,
75
+ onContextChange: (ctx) => {
76
+ currentContext = ctx;
77
+ },
62
78
  });
63
79
  events.emit("ready", {
64
80
  loadingStrategy: "pessimistic",
@@ -77,9 +93,13 @@ export function createConfig(options) {
77
93
  retry,
78
94
  granularity,
79
95
  isDeferred: true,
80
- plugins: options.plugins,
96
+ plugins,
81
97
  context: options.context,
82
98
  consentAware: options.consentAware,
99
+ evaluationMode,
100
+ onContextChange: (ctx) => {
101
+ currentContext = ctx;
102
+ },
83
103
  });
84
104
  events.emit("ready", {
85
105
  loadingStrategy: "deferred",
@@ -97,9 +117,13 @@ export function createConfig(options) {
97
117
  retry,
98
118
  granularity,
99
119
  isDeferred: false,
100
- plugins: options.plugins,
120
+ plugins,
101
121
  context: options.context,
102
122
  consentAware: options.consentAware,
123
+ evaluationMode,
124
+ onContextChange: (ctx) => {
125
+ currentContext = ctx;
126
+ },
103
127
  });
104
128
  events.emit("ready", {
105
129
  loadingStrategy: "optimistic",
@@ -1 +1 @@
1
- {"version":3,"file":"createConfig.js","sourceRoot":"","sources":["../src/createConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createConfig.js","sourceRoot":"","sources":["../src/createConfig.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,23 +1,14 @@
1
+ export { initConfig } from "./initConfig";
2
+ export type { InitConfigOptions, Flags } from "./initConfig";
1
3
  export { createConfig } from "./createConfig";
2
- export type { CacheStorage, ClientIdRecord, ConfigClient, ConfigEventCallback, ConfigEventPayloads, ConfigEventType, ConfigRecord, CreateConfigOptions, EnvironmentRecord, FetchGranularity, LoadingStrategy, ProjectRecord, RetryConfig, } from "./types";
4
+ export type { CacheStorage, ClientIdRecord, ConfigClient, ConfigEventCallback, ConfigEventPayloads, ConfigEventType, ConfigRecord, CreateConfigOptions, EnvironmentRecord, EvaluationWarning, FetchGranularity, LoadingStrategy, ProjectRecord, RetryConfig, } from "./types";
3
5
  export type { EvaluationContext, EvaluationPlugin, PipelineStepId, PipelineStepResult, PipelineHelpers, } from "./plugins/types.js";
4
6
  export { PIPELINE_ORDER } from "./plugins/types.js";
7
+ export { autoContext, mergeContext } from "./context/autoContext";
8
+ export { WEBHOOK_FORMATS, WEBHOOK_FORMAT_INFO, TEMPLATE_VARIABLES, WEBHOOK_EVENT_TYPES, WEBHOOK_RESOURCE_CATEGORIES, SAMPLE_WEBHOOK_EVENT, } from "./webhook-formats";
9
+ export type { WebhookFormat, WebhookEventType, WebhookResourceCategory, } from "./webhook-formats";
5
10
  export { memoryStorage } from "./cache/memoryStorage";
6
11
  export { browserStorage } from "./cache/browserStorage";
7
12
  export { AuthenticationError, ConfigError, InitializationError, TimeoutError, } from "./errors/index";
8
13
  export type { ConfigErrorCode } from "./errors/index";
9
- /** @deprecated Use createConfig() instead */
10
- export { createConfigClient } from "./client";
11
- export type { ConfigClient as LegacyConfigClient, ConfigClientOptions, } from "./client";
12
- /** @deprecated Tenant concept removed. Use ProjectRecord instead. */
13
- export type { TenantRecord } from "./types";
14
- /** @deprecated Use ConfigRecord instead */
15
- export type { ConfigVersionRecord } from "./types";
16
- /** @deprecated Scoping is handled by clientId */
17
- export type { ConfigResolveContext, ConfigDefinition } from "./types";
18
- /** @deprecated Use LoadingStrategy instead */
19
- export type { ConfigScope, ConfigSourceMode } from "./types";
20
- export { createConfigManager } from "./management/index";
21
- export type { ConfigManager, ConfigManagerOptions } from "./management/index";
22
- export type { ConfigManagerBackend } from "./management/manager";
23
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,YAAY,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMtD,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EACV,YAAY,IAAI,kBAAkB,EAClC,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,qEAAqE;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,2CAA2C;AAC3C,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,iDAAiD;AACjD,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEtE,8CAA8C;AAC9C,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,YAAY,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,19 +1,18 @@
1
1
  // ═══════════════════════════════════════════════════════════════
2
- // New API (v0.2.0+)
2
+ // @jewel998/config SDK
3
3
  // ═══════════════════════════════════════════════════════════════
4
- // Entry point
4
+ // Primary entry point
5
+ export { initConfig } from "./initConfig";
6
+ // Legacy (still works, use initConfig for new projects)
5
7
  export { createConfig } from "./createConfig";
6
8
  export { PIPELINE_ORDER } from "./plugins/types.js";
9
+ // Context helpers (tree-shakeable)
10
+ export { autoContext, mergeContext } from "./context/autoContext";
11
+ // Webhook format constants (shared between portal, docs, functions)
12
+ export { WEBHOOK_FORMATS, WEBHOOK_FORMAT_INFO, TEMPLATE_VARIABLES, WEBHOOK_EVENT_TYPES, WEBHOOK_RESOURCE_CATEGORIES, SAMPLE_WEBHOOK_EVENT, } from "./webhook-formats";
7
13
  // Cache adapters
8
14
  export { memoryStorage } from "./cache/memoryStorage";
9
15
  export { browserStorage } from "./cache/browserStorage";
10
16
  // Errors
11
17
  export { AuthenticationError, ConfigError, InitializationError, TimeoutError, } from "./errors/index";
12
- // ═══════════════════════════════════════════════════════════════
13
- // Deprecated API (kept for Phase 1 migration, remove in v1.0.0)
14
- // ═══════════════════════════════════════════════════════════════
15
- /** @deprecated Use createConfig() instead */
16
- export { createConfigClient } from "./client";
17
- // Management (Portal only — still active)
18
- export { createConfigManager } from "./management/index";
19
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,oBAAoB;AACpB,kEAAkE;AAElE,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA4B9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,SAAS;AACT,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,kEAAkE;AAClE,gEAAgE;AAChE,kEAAkE;AAElE,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAkB9C,0CAA0C;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,uBAAuB;AACvB,kEAAkE;AAElE,sBAAsB;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,wDAAwD;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA6B9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,mCAAmC;AACnC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAElE,oEAAoE;AACpE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAO3B,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,SAAS;AACT,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,GACb,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { ConfigEventCallback, ConfigEventType } from "./types";
2
+ import type { EvaluationContext } from "./plugins/types.js";
3
+ export interface InitConfigOptions {
4
+ /** Required. API key from the portal (cid_ for client, svr_ for server). */
5
+ clientId: string;
6
+ /**
7
+ * Default/fallback values returned instantly before the API responds.
8
+ * Keys are flag names, values are what your app uses immediately (optimistic).
9
+ */
10
+ defaults?: Record<string, unknown>;
11
+ /** User context for targeting evaluation. Use autoContext() to auto-detect browser info. */
12
+ context?: EvaluationContext;
13
+ /**
14
+ * Your self-hosted API URL. Points to your Firebase deployment.
15
+ * Default: https://jewel998-config.web.app/api (demo instance)
16
+ *
17
+ * @example "https://your-project.web.app/api"
18
+ */
19
+ baseUrl?: string;
20
+ /**
21
+ * Polling interval in milliseconds for version checks.
22
+ * The SDK periodically calls /api/version (lightweight ~100 bytes)
23
+ * and only re-fetches full data when the version changes.
24
+ *
25
+ * Default: 300000 (5 minutes). Set to 0 to disable polling.
26
+ */
27
+ pollInterval?: number;
28
+ }
29
+ export interface Flags {
30
+ /** Get a flag value. Returns the default until the API responds, then the resolved value. */
31
+ get<T = unknown>(key: string): T;
32
+ /** Get a boolean flag. Returns false if the flag doesn't exist. */
33
+ flag(key: string): boolean;
34
+ /** Get all resolved flag values. */
35
+ all(): Record<string, unknown>;
36
+ /** Update user context. Triggers a re-fetch in client-key mode. */
37
+ setContext(context: EvaluationContext): void;
38
+ /** Force re-fetch from the API. */
39
+ refresh(): Promise<void>;
40
+ /** Subscribe to events: "ready", "updated", "fetchError" */
41
+ on<E extends ConfigEventType>(event: E, cb: ConfigEventCallback<E>): void;
42
+ /** Unsubscribe from events. */
43
+ off<E extends ConfigEventType>(event: E, cb: ConfigEventCallback<E>): void;
44
+ }
45
+ /**
46
+ * Initialize the feature flags SDK.
47
+ *
48
+ * Returns a Flags instance that immediately serves default values,
49
+ * then resolves to real values from the API in the background.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const flags = initConfig({
54
+ * clientId: "cid_xxx",
55
+ * defaults: { "feature.dark_mode": false },
56
+ * context: autoContext({ userId: "user_123", plan: "pro" }),
57
+ * });
58
+ *
59
+ * flags.get("feature.dark_mode"); // → false (instant)
60
+ * flags.on("updated", () => {
61
+ * flags.get("feature.dark_mode"); // → true (from API)
62
+ * });
63
+ * ```
64
+ */
65
+ export declare function initConfig(options: InitConfigOptions): Flags;
66
+ //# sourceMappingURL=initConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initConfig.d.ts","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAEV,mBAAmB,EACnB,eAAe,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,4FAA4F;IAC5F,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAE5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,KAAK;IACpB,6FAA6F;IAC7F,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAEjC,mEAAmE;IACnE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE3B,oCAAoC;IACpC,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,mEAAmE;IACnE,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE7C,mCAAmC;IACnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,4DAA4D;IAC5D,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAE1E,+BAA+B;IAC/B,GAAG,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC5E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,KAAK,CA4G5D"}