@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
@@ -0,0 +1,128 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // initConfig — Primary SDK entry point
3
+ //
4
+ // Usage:
5
+ // const flags = initConfig({
6
+ // clientId: "cid_xxx",
7
+ // defaults: { "feature.dark_mode": false, "app.upload_limit": 50 },
8
+ // context: autoContext({ userId: "user_123", plan: "pro" }),
9
+ // });
10
+ //
11
+ // flags.get("feature.dark_mode") // → false (instant, from defaults)
12
+ // // ...API responds...
13
+ // flags.get("feature.dark_mode") // → true (resolved from server)
14
+ // ═══════════════════════════════════════════════════════════════
15
+ import { createConfig } from "./createConfig";
16
+ /**
17
+ * Initialize the feature flags SDK.
18
+ *
19
+ * Returns a Flags instance that immediately serves default values,
20
+ * then resolves to real values from the API in the background.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const flags = initConfig({
25
+ * clientId: "cid_xxx",
26
+ * defaults: { "feature.dark_mode": false },
27
+ * context: autoContext({ userId: "user_123", plan: "pro" }),
28
+ * });
29
+ *
30
+ * flags.get("feature.dark_mode"); // → false (instant)
31
+ * flags.on("updated", () => {
32
+ * flags.get("feature.dark_mode"); // → true (from API)
33
+ * });
34
+ * ```
35
+ */
36
+ export function initConfig(options) {
37
+ const defaults = options.defaults ?? {};
38
+ const pollInterval = options.pollInterval ?? 300_000; // 5 minutes default
39
+ const baseUrl = options.baseUrl ?? "https://jewel998-config.web.app/api";
40
+ // Create the underlying config client (optimistic strategy = instant return + background fetch)
41
+ const client = createConfig({
42
+ clientId: options.clientId,
43
+ loadingStrategy: "optimistic",
44
+ context: options.context,
45
+ baseUrl,
46
+ });
47
+ // Version-based polling: check /api/version periodically, delta-fetch on change
48
+ let cachedVersion = null;
49
+ let pollTimer = null;
50
+ async function checkVersion() {
51
+ try {
52
+ const res = await fetch(`${baseUrl}/getVersion?clientId=${options.clientId}`, {
53
+ headers: cachedVersion
54
+ ? { "If-None-Match": `"${cachedVersion}"` }
55
+ : {},
56
+ });
57
+ // 304 = version unchanged, no action needed
58
+ if (res.status === 304)
59
+ return;
60
+ if (!res.ok)
61
+ return;
62
+ const { version, changedKeys } = (await res.json());
63
+ // First check — just store version, no refetch (initial fetch already happened)
64
+ if (cachedVersion === null) {
65
+ cachedVersion = version;
66
+ return;
67
+ }
68
+ // Version changed — need to refresh
69
+ if (version !== cachedVersion) {
70
+ cachedVersion = version;
71
+ // If we know which keys changed, we could delta-fetch in the future
72
+ // For now, full refresh (still efficient with CDN + deduplication)
73
+ await client.refresh();
74
+ }
75
+ }
76
+ catch {
77
+ // Silently ignore polling errors — cache continues to work
78
+ }
79
+ }
80
+ // Start polling if interval > 0
81
+ if (pollInterval > 0 && typeof window !== "undefined") {
82
+ // Initial version check after first fetch completes
83
+ client.on("ready", () => {
84
+ void checkVersion();
85
+ });
86
+ pollTimer = setInterval(checkVersion, pollInterval);
87
+ // Also check on tab visibility change (user returns to tab)
88
+ document.addEventListener("visibilitychange", () => {
89
+ if (document.visibilityState === "visible") {
90
+ void checkVersion();
91
+ }
92
+ });
93
+ }
94
+ return {
95
+ get(key) {
96
+ const resolved = client.getValue(key);
97
+ if (resolved !== undefined)
98
+ return resolved;
99
+ return defaults[key];
100
+ },
101
+ flag(key) {
102
+ const resolved = client.getFlag(key);
103
+ if (resolved)
104
+ return true;
105
+ const val = client.getValue(key);
106
+ if (val !== undefined)
107
+ return val === true;
108
+ return defaults[key] === true;
109
+ },
110
+ all() {
111
+ const resolved = client.getAll();
112
+ return { ...defaults, ...resolved };
113
+ },
114
+ setContext(context) {
115
+ client.setContext(context);
116
+ },
117
+ refresh() {
118
+ return client.refresh();
119
+ },
120
+ on(event, cb) {
121
+ client.on(event, cb);
122
+ },
123
+ off(event, cb) {
124
+ client.off(event, cb);
125
+ },
126
+ };
127
+ }
128
+ //# sourceMappingURL=initConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pessimistic.d.ts","sourceRoot":"","sources":["../../src/loading/pessimistic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9D,eAAO,MAAM,kBAAkB,GAC7B,KAAK,cAAc,KAClB,OAAO,CAAC,aAAa,CAyBvB,CAAC"}
1
+ {"version":3,"file":"pessimistic.d.ts","sourceRoot":"","sources":["../../src/loading/pessimistic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9D,eAAO,MAAM,kBAAkB,GAC7B,KAAK,cAAc,KAClB,OAAO,CAAC,aAAa,CA8BvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { InitializationError, TimeoutError } from "../errors/index";
1
+ import { TimeoutError } from "../errors/index";
2
2
  import { withRetry } from "../retry/RetryEngine";
3
3
  import { DEFAULT_CACHE_TTL } from "../types";
4
4
  export const executePessimistic = async (ctx) => {
@@ -15,10 +15,17 @@ export const executePessimistic = async (ctx) => {
15
15
  return { initialData: data, status: "ready" };
16
16
  }
17
17
  catch (error) {
18
- if (error instanceof TimeoutError) {
19
- throw error;
20
- }
21
- throw new InitializationError("Failed to fetch config after all retries", error);
18
+ // On failure: fall back to cached data instead of throwing.
19
+ // This prevents SDK errors from hitting the consumer's error tracking.
20
+ // The error is communicated via the "fetchError" event instead.
21
+ ctx.events.emit("fetchError", {
22
+ error: error,
23
+ retryCount: ctx.retry.maxRetries,
24
+ willRetry: false,
25
+ });
26
+ // Try cache as fallback
27
+ const cached = ctx.cache.get("__all__");
28
+ return { initialData: cached ?? {}, status: "ready" };
22
29
  }
23
30
  };
24
31
  //# sourceMappingURL=pessimistic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pessimistic.js","sourceRoot":"","sources":["../../src/loading/pessimistic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,GAAmB,EACK,EAAE;IAC1B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAExE,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;QAEhE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,mBAAmB,CAC3B,0CAA0C,EAC1C,KAAc,CACf,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"pessimistic.js","sourceRoot":"","sources":["../../src/loading/pessimistic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,GAAmB,EACK,EAAE;IAC1B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAExE,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;QAEhE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4DAA4D;QAC5D,uEAAuE;QACvE,gEAAgE;QAChE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;YAC5B,KAAK,EAAE,KAAc;YACrB,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU;YAChC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAA0B,SAAS,CAAC,CAAC;QACjE,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;AACH,CAAC,CAAC"}
@@ -15,6 +15,7 @@ export interface ConfigFlagData {
15
15
  };
16
16
  prerequisites?: Array<{
17
17
  flagKey: string;
18
+ operator?: "equals" | "not_equals" | "greater_than" | "less_than" | "contains";
18
19
  requiredValue: unknown;
19
20
  }>;
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/plugins/models.ts"],"names":[],"mappings":"AAIA,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IAG1D,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAGjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAGF,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC,CAAC;CACJ;AAED,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,yBAAyB;AACzB,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;CAC7C;AAED,oCAAoC;AACpC,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,aAAa,GACb,WAAW,GACX,SAAS,GACT,aAAa,GACb,cAAc,GACd,WAAW,GACX,aAAa,GACb,YAAY,GACZ,gBAAgB,CAAC;AAErB,kCAAkC;AAClC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/plugins/models.ts"],"names":[],"mappings":"AAIA,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IAG1D,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAGjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGpC,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IAGF,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EACP,QAAQ,GAAG,YAAY,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;QACtE,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC,CAAC;CACJ;AAED,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,yBAAyB;AACzB,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;CAC7C;AAED,oCAAoC;AACpC,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,aAAa,GACb,WAAW,GACX,SAAS,GACT,aAAa,GACb,cAAc,GACd,WAAW,GACX,aAAa,GACb,YAAY,GACZ,gBAAgB,CAAC;AAErB,kCAAkC;AAClC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"prerequisitePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/prerequisites/prerequisitePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AAErB,0CAA0C;AAC1C,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE,yBAAyB,GAClC,gBAAgB,CA4DlB"}
1
+ {"version":3,"file":"prerequisitePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/prerequisites/prerequisitePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AAErB,0CAA0C;AAC1C,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,CAAC,EAAE,yBAAyB,GAClC,gBAAgB,CAmElB"}
@@ -44,8 +44,9 @@ export function prerequisitePlugin(options) {
44
44
  // Evaluate each prerequisite
45
45
  for (const prerequisite of flag.prerequisites) {
46
46
  const resolvedValue = helpers.evaluateFlag(prerequisite.flagKey, context);
47
- // Strict equality check — prerequisite is unmet if values don't match
48
- if (resolvedValue !== prerequisite.requiredValue) {
47
+ // Evaluate using the specified operator (defaults to "equals")
48
+ const op = prerequisite.operator ?? "equals";
49
+ if (!evaluatePrerequisiteOp(resolvedValue, op, prerequisite.requiredValue)) {
49
50
  return { resolved: true, value: flag.value };
50
51
  }
51
52
  }
@@ -59,4 +60,23 @@ export function prerequisitePlugin(options) {
59
60
  },
60
61
  };
61
62
  }
63
+ /**
64
+ * Evaluate a prerequisite comparison using the specified operator.
65
+ */
66
+ function evaluatePrerequisiteOp(actual, operator, expected) {
67
+ switch (operator) {
68
+ case "equals":
69
+ return actual === expected || String(actual) === String(expected);
70
+ case "not_equals":
71
+ return actual !== expected && String(actual) !== String(expected);
72
+ case "greater_than":
73
+ return Number(actual) > Number(expected);
74
+ case "less_than":
75
+ return Number(actual) < Number(expected);
76
+ case "contains":
77
+ return String(actual ?? "").includes(String(expected));
78
+ default:
79
+ return actual === expected || String(actual) === String(expected);
80
+ }
81
+ }
62
82
  //# sourceMappingURL=prerequisitePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prerequisitePlugin.js","sourceRoot":"","sources":["../../../src/plugins/prerequisites/prerequisitePlugin.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,kCAAkC;AAClC,kEAAkE;AAgBlE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAmC;IAEnC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;IAExC,iFAAiF;IACjF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,OAAO;QACL,MAAM,EAAE,eAAe;QAEvB,QAAQ,CACN,IAAoB,EACpB,OAA0B,EAC1B,OAAwB;YAExB,qCAAqC;YACrC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC7B,CAAC;YAED,sEAAsE;YACtE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,SAAS,CACf,uCAAuC,IAAI,CAAC,GAAG,mDAAmD,CACnG,CAAC;gBACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,CAAC;YAED,qDAAqD;YACrD,IAAI,eAAe,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,SAAS,CACf,qDAAqD,QAAQ,kCAAkC,IAAI,CAAC,GAAG,GAAG,CAC3G,CAAC;gBACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/C,CAAC;YAED,2CAA2C;YAC3C,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC;gBACH,6BAA6B;gBAC7B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CACxC,YAAY,CAAC,OAAO,EACpB,OAAO,CACR,CAAC;oBAEF,sEAAsE;oBACtE,IAAI,aAAa,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;wBACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAED,gDAAgD;gBAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,6DAA6D;gBAC7D,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"prerequisitePlugin.js","sourceRoot":"","sources":["../../../src/plugins/prerequisites/prerequisitePlugin.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
+ import type { EvaluationContext } from "../plugins/types";
1
2
  import type { HttpTransport } from "../types";
2
3
  export interface TransportConfig {
3
4
  baseUrl: string;
4
5
  clientId: string;
6
+ /** Internal mode (auto-detected from key prefix). Controls whether context is sent. */
7
+ evaluationMode?: "server" | "client";
8
+ getContext?: () => EvaluationContext;
5
9
  }
6
10
  export declare const createHttpTransport: (config: TransportConfig) => HttpTransport;
7
11
  //# sourceMappingURL=HttpTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,eAAe,KACtB,aAyCD,CAAC"}
1
+ {"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,iBAAiB,CAAC;CACtC;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,eAAe,KACtB,aAsDD,CAAC"}
@@ -3,16 +3,27 @@ import { AuthenticationError, ConfigError } from "../errors/index";
3
3
  export const createHttpTransport = (config) => ({
4
4
  async request(endpoint, body) {
5
5
  const url = `${config.baseUrl}/${endpoint}`;
6
+ const requestData = {
7
+ clientId: config.clientId,
8
+ ...body,
9
+ };
10
+ // In server mode (cid_ key), include the current context for server-side evaluation
11
+ if (config.evaluationMode === "server" && config.getContext) {
12
+ const ctx = config.getContext();
13
+ if (ctx && (ctx.userId || ctx.attributes)) {
14
+ requestData.context = {
15
+ ...(ctx.userId && { userId: ctx.userId }),
16
+ ...(ctx.attributes && { attributes: ctx.attributes }),
17
+ };
18
+ }
19
+ }
6
20
  const response = await fetch(url, {
7
21
  method: "POST",
8
22
  headers: {
9
23
  "Content-Type": "application/json",
10
24
  },
11
25
  body: JSON.stringify({
12
- data: {
13
- clientId: config.clientId,
14
- ...body,
15
- },
26
+ data: requestData,
16
27
  }),
17
28
  });
18
29
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"HttpTransport.js","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAuB,EACR,EAAE,CAAC,CAAC;IACnB,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,IAA8B;QAE9B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;QAE5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG,IAAI;iBACR;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,SAEjB,CAAC;YACF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,CAAC;YACtD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,IAAuB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"HttpTransport.js","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAYnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAuB,EACR,EAAE,CAAC,CAAC;IACnB,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,IAA8B;QAE9B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;QAE5C,MAAM,WAAW,GAA4B;YAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,GAAG,IAAI;SACR,CAAC;QAEF,oFAAoF;QACpF,IAAI,MAAM,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,WAAW,CAAC,OAAO,GAAG;oBACpB,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;oBACzC,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;iBACtD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;aAClB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,SAEjB,CAAC;YACF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,eAAe,CAAC;YACtD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,IAAuB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;CACF,CAAC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { EvaluationContext, EvaluationPlugin } from "./plugins/types.js";
2
2
  /** Loading strategy for SDK initialization */
3
3
  export type LoadingStrategy = "optimistic" | "pessimistic" | "deferred";
4
+ /** Evaluation mode for the SDK */
5
+ export type EvaluationMode = "server" | "client";
4
6
  /** Fetch granularity for remote config retrieval */
5
7
  export type FetchGranularity = "batch" | "projected";
6
8
  /** Default cache TTL: 7 days in milliseconds */
@@ -29,11 +31,19 @@ export interface CreateConfigOptions {
29
31
  retry?: RetryConfig;
30
32
  /** Timeout for pessimistic loading (ms). Default: 10000 */
31
33
  timeout?: number;
32
- /** Cloud Function base URL (override for testing/custom deployments) */
34
+ /**
35
+ * Your self-hosted API URL. Points to your Firebase deployment.
36
+ * Default: https://jewel998-config.web.app/api (demo instance)
37
+ *
38
+ * @example "https://your-project.web.app/api"
39
+ */
33
40
  baseUrl?: string;
34
- /** Evaluation plugins to register (tree-shakeable pipeline steps) */
41
+ /**
42
+ * Evaluation plugins to register (tree-shakeable pipeline steps).
43
+ * Only used with server keys (svr_). Client keys (cid_) receive pre-resolved values.
44
+ */
35
45
  plugins?: EvaluationPlugin[];
36
- /** Evaluation context for plugin pipeline (can be updated post-init via setContext) */
46
+ /** Evaluation context for targeting (can be updated post-init via setContext) */
37
47
  context?: EvaluationContext;
38
48
  /** Enable consent-aware mode (GDPR): if true and context.consentGranted !== true, returns defaults */
39
49
  consentAware?: boolean;
@@ -135,11 +145,22 @@ export interface HttpTransport {
135
145
  export interface GetConfigRequest {
136
146
  clientId: string;
137
147
  keys?: string[];
148
+ context?: {
149
+ userId?: string;
150
+ attributes?: Record<string, string | number | boolean | string[]>;
151
+ };
152
+ }
153
+ export interface EvaluationWarning {
154
+ key: string;
155
+ reason: "evaluation_error" | "segment_not_found" | "prerequisite_failed";
156
+ message: string;
138
157
  }
139
158
  export interface GetConfigResponse {
140
159
  data: Record<string, unknown>;
160
+ segments?: Record<string, unknown>;
141
161
  version: string;
142
162
  timestamp: string;
163
+ warnings?: EvaluationWarning[];
143
164
  }
144
165
  export interface EventEmitterInterface {
145
166
  on<E extends ConfigEventType>(event: E, callback: ConfigEventCallback<E>): void;
@@ -147,24 +168,6 @@ export interface EventEmitterInterface {
147
168
  emit<E extends ConfigEventType>(event: E, payload: ConfigEventPayloads[E]): void;
148
169
  removeAllListeners(): void;
149
170
  }
150
- /** @deprecated Use CreateConfigOptions instead */
151
- export type ConfigScope = "tenant" | "project" | "environment";
152
- /** @deprecated Use LoadingStrategy instead */
153
- export type ConfigSourceMode = "offline" | "remote" | "hybrid";
154
- /** @deprecated Config definitions are no longer needed client-side */
155
- export interface ConfigDefinition<T = unknown> {
156
- key: string;
157
- defaultValue: T;
158
- sourceMode: ConfigSourceMode;
159
- scope: ConfigScope;
160
- fallbackValue?: T;
161
- }
162
- /** @deprecated Scoping is handled by clientId */
163
- export interface ConfigResolveContext {
164
- tenantId?: string;
165
- projectId?: string;
166
- environment?: string;
167
- }
168
171
  export interface ProjectRecord {
169
172
  id: string;
170
173
  name: string;
@@ -198,20 +201,4 @@ export interface ConfigRecord {
198
201
  updatedAt: string;
199
202
  updatedBy: string;
200
203
  }
201
- /** @deprecated Use ProjectRecord instead */
202
- export interface TenantRecord {
203
- id: string;
204
- name: string;
205
- ownerId: string;
206
- createdAt: string;
207
- }
208
- /** @deprecated Use ConfigRecord instead */
209
- export interface ConfigVersionRecord {
210
- id: string;
211
- projectId: string;
212
- environmentId?: string;
213
- version: string;
214
- payload: Record<string, unknown>;
215
- publishedAt?: string;
216
- }
217
204
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,iBAAiB;AACjB,kEAAkE;AAUlE,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,iBAAiB;AAE3E,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAmGtC,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,MAAM;CACjB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,iBAAiB;AACjB,kEAAkE;AAalE,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,iBAAiB;AAE3E,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AA2GtC,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,MAAM;CACjB,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Supported webhook format identifiers.
3
+ */
4
+ export declare const WEBHOOK_FORMATS: readonly ["standard", "slack", "discord", "google-chat", "ms-teams", "custom"];
5
+ export type WebhookFormat = (typeof WEBHOOK_FORMATS)[number];
6
+ /**
7
+ * Human-readable descriptions for each webhook format.
8
+ */
9
+ export declare const WEBHOOK_FORMAT_INFO: Record<WebhookFormat, {
10
+ label: string;
11
+ description: string;
12
+ }>;
13
+ /**
14
+ * Available template variables for the custom format.
15
+ * Used by: portal UI (variable reference), docs page, and the function's template engine.
16
+ */
17
+ export declare const TEMPLATE_VARIABLES: readonly [{
18
+ readonly variable: "{{action}}";
19
+ readonly description: "The action that occurred";
20
+ readonly example: "create, update, delete, state_change";
21
+ }, {
22
+ readonly variable: "{{resource.category}}";
23
+ readonly description: "Resource category";
24
+ readonly example: "config, segment, api_key, team";
25
+ }, {
26
+ readonly variable: "{{resource.path}}";
27
+ readonly description: "Full resource path";
28
+ readonly example: "environments/prod/configs/feature.dark_mode";
29
+ }, {
30
+ readonly variable: "{{resource.name}}";
31
+ readonly description: "Human-readable resource name";
32
+ readonly example: "feature.dark_mode";
33
+ }, {
34
+ readonly variable: "{{environment}}";
35
+ readonly description: "Environment name (empty if none)";
36
+ readonly example: "production";
37
+ }, {
38
+ readonly variable: "{{actor.id}}";
39
+ readonly description: "User ID of the person who made the change";
40
+ readonly example: "user_abc123";
41
+ }, {
42
+ readonly variable: "{{timestamp}}";
43
+ readonly description: "ISO 8601 timestamp of the event";
44
+ readonly example: "2025-01-15T09:30:00.000Z";
45
+ }, {
46
+ readonly variable: "{{project.id}}";
47
+ readonly description: "Project identifier";
48
+ readonly example: "proj_xyz";
49
+ }, {
50
+ readonly variable: "{{webhook.id}}";
51
+ readonly description: "Webhook identifier";
52
+ readonly example: "whk_123";
53
+ }, {
54
+ readonly variable: "{{changes.old}}";
55
+ readonly description: "Previous value as JSON string (empty if create)";
56
+ readonly example: "{\"enabled\": true}";
57
+ }, {
58
+ readonly variable: "{{changes.new}}";
59
+ readonly description: "New value as JSON string (empty if delete)";
60
+ readonly example: "{\"enabled\": false}";
61
+ }];
62
+ /**
63
+ * Event types that can trigger webhooks.
64
+ */
65
+ export declare const WEBHOOK_EVENT_TYPES: readonly ["create", "update", "delete", "state_change"];
66
+ export type WebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];
67
+ /**
68
+ * Resource categories for webhook filtering.
69
+ */
70
+ export declare const WEBHOOK_RESOURCE_CATEGORIES: readonly ["config", "segment", "api_key", "project", "team", "environment"];
71
+ export type WebhookResourceCategory = (typeof WEBHOOK_RESOURCE_CATEGORIES)[number];
72
+ /**
73
+ * Sample payload used for preview/testing (shared between portal and docs).
74
+ */
75
+ export declare const SAMPLE_WEBHOOK_EVENT: {
76
+ readonly action: "update";
77
+ readonly resourceCategory: "config";
78
+ readonly resourcePath: "environments/production/configs/feature.dark_mode";
79
+ readonly resourceName: "feature.dark_mode";
80
+ readonly environment: "production";
81
+ readonly actorId: "user_abc123";
82
+ readonly timestamp: "2025-01-15T09:30:00.000Z";
83
+ readonly oldValue: {
84
+ readonly value: false;
85
+ };
86
+ readonly newValue: {
87
+ readonly value: true;
88
+ };
89
+ readonly projectId: "proj_xyz";
90
+ readonly webhookId: "whk_sample";
91
+ };
92
+ //# sourceMappingURL=webhook-formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-formats.d.ts","sourceRoot":"","sources":["../src/webhook-formats.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,eAAe,gFAOlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,aAAa,EACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CA0BvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,yDAKtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,2BAA2B,6EAO9B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAYvB,CAAC"}