pulse-updates 1.1.0 → 1.2.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 (64) hide show
  1. package/README.md +50 -10
  2. package/SECURITY.md +42 -0
  3. package/android/src/main/java/app/pulse/updates/PulseController.kt +6 -2
  4. package/android/src/main/java/app/pulse/updates/PulseUpdatesModule.kt +25 -0
  5. package/app.plugin.js +47 -0
  6. package/ios/PulseUpdates/PulseController.swift +7 -2
  7. package/ios/PulseUpdates/PulseUpdates.m +7 -0
  8. package/ios/PulseUpdates/PulseUpdates.swift +22 -0
  9. package/lib/commonjs/NativePulseUpdates.js.map +1 -1
  10. package/lib/commonjs/PulseUpdates.js +36 -0
  11. package/lib/commonjs/PulseUpdates.js.map +1 -1
  12. package/lib/commonjs/config.js +175 -21
  13. package/lib/commonjs/config.js.map +1 -1
  14. package/lib/commonjs/decisions.js +128 -0
  15. package/lib/commonjs/decisions.js.map +1 -0
  16. package/lib/commonjs/index.js +12 -0
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/init.js +164 -12
  19. package/lib/commonjs/init.js.map +1 -1
  20. package/lib/commonjs/track.js +154 -12
  21. package/lib/commonjs/track.js.map +1 -1
  22. package/lib/commonjs/usePulseUpdates.js +21 -16
  23. package/lib/commonjs/usePulseUpdates.js.map +1 -1
  24. package/lib/module/NativePulseUpdates.js.map +1 -1
  25. package/lib/module/PulseUpdates.js +33 -0
  26. package/lib/module/PulseUpdates.js.map +1 -1
  27. package/lib/module/config.js +174 -21
  28. package/lib/module/config.js.map +1 -1
  29. package/lib/module/decisions.js +122 -0
  30. package/lib/module/decisions.js.map +1 -0
  31. package/lib/module/index.js +1 -0
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/init.js +165 -14
  34. package/lib/module/init.js.map +1 -1
  35. package/lib/module/track.js +152 -12
  36. package/lib/module/track.js.map +1 -1
  37. package/lib/module/usePulseUpdates.js +21 -16
  38. package/lib/module/usePulseUpdates.js.map +1 -1
  39. package/lib/typescript/NativePulseUpdates.d.ts +1 -0
  40. package/lib/typescript/NativePulseUpdates.d.ts.map +1 -1
  41. package/lib/typescript/PulseUpdates.d.ts +20 -0
  42. package/lib/typescript/PulseUpdates.d.ts.map +1 -1
  43. package/lib/typescript/config.d.ts +22 -0
  44. package/lib/typescript/config.d.ts.map +1 -1
  45. package/lib/typescript/decisions.d.ts +55 -0
  46. package/lib/typescript/decisions.d.ts.map +1 -0
  47. package/lib/typescript/index.d.ts +1 -0
  48. package/lib/typescript/index.d.ts.map +1 -1
  49. package/lib/typescript/init.d.ts +51 -4
  50. package/lib/typescript/init.d.ts.map +1 -1
  51. package/lib/typescript/track.d.ts +29 -1
  52. package/lib/typescript/track.d.ts.map +1 -1
  53. package/lib/typescript/usePulseUpdates.d.ts.map +1 -1
  54. package/logo.png +0 -0
  55. package/package.json +14 -3
  56. package/scripts/publish.mjs +68 -3
  57. package/src/NativePulseUpdates.ts +1 -0
  58. package/src/PulseUpdates.ts +54 -0
  59. package/src/config.ts +234 -21
  60. package/src/decisions.ts +179 -0
  61. package/src/index.ts +1 -0
  62. package/src/init.ts +240 -11
  63. package/src/track.ts +191 -13
  64. package/src/usePulseUpdates.ts +21 -16
@@ -8,6 +8,7 @@ var _react = require("react");
8
8
  var PulseUpdates = _interopRequireWildcard(require("./PulseUpdates"));
9
9
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
10
  function usePulseUpdates() {
11
+ const [nativeState, setNativeState] = (0, _react.useState)(PulseUpdates.getUpdatesState);
11
12
  const [isChecking, setIsChecking] = (0, _react.useState)(false);
12
13
  const [isDownloading, setIsDownloading] = (0, _react.useState)(false);
13
14
  const [availableUpdate, setAvailableUpdate] = (0, _react.useState)(null);
@@ -16,10 +17,14 @@ function usePulseUpdates() {
16
17
 
17
18
  // Refresh state on mount to get latest values after configure
18
19
  (0, _react.useEffect)(() => {
19
- PulseUpdates.refreshStateAsync().catch(() => {});
20
+ const unsubscribe = PulseUpdates.onUpdatesStateChange(() => {
21
+ setNativeState(PulseUpdates.getUpdatesState());
22
+ });
23
+ void PulseUpdates.refreshStateAsync();
24
+ return unsubscribe;
20
25
  }, []);
21
26
  (0, _react.useEffect)(() => {
22
- if (!PulseUpdates.isEnabled) return;
27
+ if (!nativeState.isEnabled) return;
23
28
  const subscription = PulseUpdates.addUpdateListener(event => {
24
29
  switch (event.type) {
25
30
  case 'updateAvailable':
@@ -37,9 +42,9 @@ function usePulseUpdates() {
37
42
  }
38
43
  });
39
44
  return () => subscription.remove();
40
- }, []);
45
+ }, [nativeState.isEnabled]);
41
46
  const checkForUpdate = (0, _react.useCallback)(async () => {
42
- if (!PulseUpdates.isEnabled) {
47
+ if (!nativeState.isEnabled) {
43
48
  return {
44
49
  isAvailable: false
45
50
  };
@@ -64,9 +69,9 @@ function usePulseUpdates() {
64
69
  } finally {
65
70
  setIsChecking(false);
66
71
  }
67
- }, []);
72
+ }, [nativeState.isEnabled]);
68
73
  const downloadUpdate = (0, _react.useCallback)(async () => {
69
- if (!PulseUpdates.isEnabled) {
74
+ if (!nativeState.isEnabled) {
70
75
  return {
71
76
  isNew: false
72
77
  };
@@ -88,21 +93,21 @@ function usePulseUpdates() {
88
93
  } finally {
89
94
  setIsDownloading(false);
90
95
  }
91
- }, []);
96
+ }, [nativeState.isEnabled]);
92
97
  const reload = (0, _react.useCallback)(async () => {
93
- if (!PulseUpdates.isEnabled) return;
98
+ if (!nativeState.isEnabled) return;
94
99
  await PulseUpdates.reloadAsync();
95
- }, []);
100
+ }, [nativeState.isEnabled]);
96
101
  return {
97
- isEnabled: PulseUpdates.isEnabled,
102
+ isEnabled: nativeState.isEnabled,
98
103
  isChecking,
99
104
  isDownloading,
100
- updateId: PulseUpdates.updateId,
101
- runtimeVersion: PulseUpdates.runtimeVersion,
102
- channel: PulseUpdates.channel,
103
- manifest: PulseUpdates.manifest,
104
- isEmbeddedLaunch: PulseUpdates.isEmbeddedLaunch,
105
- createdAt: PulseUpdates.createdAt,
105
+ updateId: nativeState.updateId,
106
+ runtimeVersion: nativeState.runtimeVersion,
107
+ channel: nativeState.channel,
108
+ manifest: nativeState.manifest,
109
+ isEmbeddedLaunch: nativeState.isEmbeddedLaunch,
110
+ createdAt: nativeState.createdAt,
106
111
  build: PulseUpdates.getUpdateBuild(),
107
112
  availableUpdate,
108
113
  downloadedUpdate,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","PulseUpdates","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","usePulseUpdates","isChecking","setIsChecking","useState","isDownloading","setIsDownloading","availableUpdate","setAvailableUpdate","downloadedUpdate","setDownloadedUpdate","error","setError","useEffect","refreshStateAsync","catch","isEnabled","subscription","addUpdateListener","event","type","manifest","Error","remove","checkForUpdate","useCallback","isAvailable","result","checkForUpdateAsync","err","String","failedReason","message","downloadUpdate","isNew","fetchUpdateAsync","reload","reloadAsync","updateId","runtimeVersion","channel","isEmbeddedLaunch","createdAt","build","getUpdateBuild"],"sourceRoot":"../../src","sources":["usePulseUpdates.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","PulseUpdates","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","usePulseUpdates","nativeState","setNativeState","useState","getUpdatesState","isChecking","setIsChecking","isDownloading","setIsDownloading","availableUpdate","setAvailableUpdate","downloadedUpdate","setDownloadedUpdate","error","setError","useEffect","unsubscribe","onUpdatesStateChange","refreshStateAsync","isEnabled","subscription","addUpdateListener","event","type","manifest","Error","remove","checkForUpdate","useCallback","isAvailable","result","checkForUpdateAsync","err","String","failedReason","message","downloadUpdate","isNew","fetchUpdateAsync","reload","reloadAsync","updateId","runtimeVersion","channel","isEmbeddedLaunch","createdAt","build","getUpdateBuild"],"sourceRoot":"../../src","sources":["usePulseUpdates.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativePulseUpdates.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAkDlD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativePulseUpdates.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AAmDlD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -14,6 +14,29 @@ let _isEmbeddedLaunch = true;
14
14
  let _manifest = null;
15
15
  let _createdAt = null;
16
16
  let _localAssets = null;
17
+ const stateListeners = new Set();
18
+ /** A stable read surface for React and for diagnostics. */
19
+ export function getUpdatesState() {
20
+ return {
21
+ isEnabled: _isEnabled,
22
+ updateId: _updateId,
23
+ runtimeVersion: _runtimeVersion,
24
+ channel: _channel,
25
+ isEmbeddedLaunch: _isEmbeddedLaunch,
26
+ manifest: _manifest,
27
+ createdAt: _createdAt,
28
+ localAssets: _localAssets
29
+ };
30
+ }
31
+
32
+ /** Subscribe to native-state refreshes without depending on mutable ES exports. */
33
+ export function onUpdatesStateChange(listener) {
34
+ stateListeners.add(listener);
35
+ return () => stateListeners.delete(listener);
36
+ }
37
+ function notifyStateListeners() {
38
+ for (const listener of stateListeners) listener();
39
+ }
17
40
 
18
41
  /**
19
42
  * Configure pulse-updates with the given options.
@@ -37,6 +60,9 @@ export function configure(config) {
37
60
  _isConfigured = true;
38
61
  _isEnabled = config.enabled;
39
62
  _runtimeVersion = config.runtimeVersion;
63
+ isEnabled = _isEnabled;
64
+ runtimeVersion = _runtimeVersion;
65
+ notifyStateListeners();
40
66
  }
41
67
 
42
68
  /**
@@ -116,6 +142,7 @@ export async function refreshStateAsync() {
116
142
  // Read localAssets map for asset resolution
117
143
  _localAssets = state.localAssets ?? null;
118
144
  localAssets = _localAssets;
145
+ notifyStateListeners();
119
146
  } catch (error) {
120
147
  console.warn('[PulseUpdates] Failed to refresh state:', error);
121
148
  // Keep current values on error
@@ -215,6 +242,12 @@ export async function reportLaunchFailure(reason) {
215
242
  await PulseUpdatesModule.reportLaunchFailure(reason);
216
243
  }
217
244
 
245
+ /** Verify config/decision payloads with the public key already pinned in native config. */
246
+ export async function verifyConfigSignatureAsync(canonicalPayload, signature) {
247
+ if (!PulseUpdatesModule?.verifySignatureAsync) return false;
248
+ return PulseUpdatesModule.verifySignatureAsync(canonicalPayload, signature.alg, signature.keyId, signature.sig);
249
+ }
250
+
218
251
  /**
219
252
  * Get the build number from the current update's metadata.
220
253
  */
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","NativePulseUpdates","PulseUpdatesModule","_isConfigured","_isEnabled","_updateId","_runtimeVersion","_channel","_isEmbeddedLaunch","_manifest","_createdAt","_localAssets","configure","config","console","warn","enabled","updateUrl","runtimeVersion","checkOnLaunch","launchWaitMs","channel","signingKeyId","signingPublicKey","isConfigured","getIsEnabled","isEnabled","updateId","isEmbeddedLaunch","isUsingEmbeddedAssets","manifest","createdAt","localAssets","refreshStateAsync","__DEV__","state","getStateAsync","manifestString","JSON","parse","commitTime","Date","error","checkForUpdateAsync","isAvailable","reason","Error","result","isRollback","failedReason","fetchUpdateAsync","isNew","reloadAsync","log","markAppReady","reportLaunchFailure","getUpdateBuild","metadata","build","getDisplayVersion","appVersion","getLocalAssetPath","assetKey","getLocalAssets","eventEmitter","getEventEmitter","addUpdateListener","listener","emitter","subscription","addListener","remove"],"sourceRoot":"../../src","sources":["PulseUpdates.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","NativePulseUpdates","PulseUpdatesModule","_isConfigured","_isEnabled","_updateId","_runtimeVersion","_channel","_isEmbeddedLaunch","_manifest","_createdAt","_localAssets","stateListeners","Set","getUpdatesState","isEnabled","updateId","runtimeVersion","channel","isEmbeddedLaunch","manifest","createdAt","localAssets","onUpdatesStateChange","listener","add","delete","notifyStateListeners","configure","config","console","warn","enabled","updateUrl","checkOnLaunch","launchWaitMs","signingKeyId","signingPublicKey","isConfigured","getIsEnabled","isUsingEmbeddedAssets","refreshStateAsync","__DEV__","state","getStateAsync","manifestString","JSON","parse","commitTime","Date","error","checkForUpdateAsync","isAvailable","reason","Error","result","isRollback","failedReason","fetchUpdateAsync","isNew","reloadAsync","log","markAppReady","reportLaunchFailure","verifyConfigSignatureAsync","canonicalPayload","signature","verifySignatureAsync","alg","keyId","sig","getUpdateBuild","metadata","build","getDisplayVersion","appVersion","getLocalAssetPath","assetKey","getLocalAssets","eventEmitter","getEventEmitter","addUpdateListener","emitter","subscription","addListener","remove"],"sourceRoot":"../../src","sources":["PulseUpdates.ts"],"mappings":"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","ignoreList":[]}
@@ -20,6 +20,8 @@
20
20
  * config costs a 304 with no body.
21
21
  */
22
22
 
23
+ import nacl from 'tweetnacl';
24
+
23
25
  /**
24
26
  * An A/B arm this install was assigned, as the server resolved it.
25
27
  *
@@ -66,11 +68,14 @@ let fetchedAt = 0;
66
68
  */
67
69
  let verifiedAt = 0;
68
70
  let source = 'defaults';
71
+ let signatureStatus = 'not-configured';
72
+ let signatureKeyId = null;
69
73
  let pending = null;
70
74
  /** The arm set already reported this session, so a poll does not re-report it. */
71
75
  let reportedExposure = null;
72
76
  let inFlight = null;
73
77
  let pollTimer = null;
78
+ let configGeneration = 0;
74
79
  const listeners = new Set();
75
80
 
76
81
  /**
@@ -79,18 +84,27 @@ const listeners = new Set();
79
84
  * while the network call is in flight.
80
85
  */
81
86
  export function configureConfig(opts) {
87
+ // A host can switch app/tenant without restarting the JS runtime. Nothing from the
88
+ // previous app — values, ETag, pending activation or an eventual network response —
89
+ // may cross that boundary.
90
+ configGeneration += 1;
91
+ stopPolling();
82
92
  options = opts;
83
93
  defaults = {
84
94
  ...(opts.defaults ?? {})
85
95
  };
86
- const cached = readCache(opts.storage);
87
- if (cached) {
88
- values = cached.values;
89
- experiments = cached.experiments ?? [];
90
- etag = cached.etag;
91
- fetchedAt = cached.fetchedAt;
92
- source = 'cache';
93
- }
96
+ values = {};
97
+ experiments = [];
98
+ etag = null;
99
+ fetchedAt = 0;
100
+ verifiedAt = 0;
101
+ source = 'defaults';
102
+ signatureStatus = 'not-configured';
103
+ signatureKeyId = null;
104
+ pending = null;
105
+ reportedExposure = null;
106
+ inFlight = null;
107
+ applyCachedPayload(readCache(opts.storage, opts.storageKey), opts);
94
108
  }
95
109
 
96
110
  /** Merge more defaults after configure (a late-loading module registering its own). */
@@ -116,7 +130,8 @@ export async function fetchConfig() {
116
130
  if (minInterval > 0 && fetchedAt > 0 && Date.now() - fetchedAt < minInterval) {
117
131
  return false;
118
132
  }
119
- inFlight = (async () => {
133
+ const requestGeneration = configGeneration;
134
+ const request = (async () => {
120
135
  const opts = options;
121
136
  const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;
122
137
  const timer = controller ? setTimeout(() => controller.abort(), opts.timeoutMs ?? DEFAULT_TIMEOUT_MS) : null;
@@ -126,6 +141,7 @@ export async function fetchConfig() {
126
141
  headers: buildHeaders(opts, etag),
127
142
  signal: controller?.signal
128
143
  });
144
+ if (requestGeneration !== configGeneration || options !== opts) return false;
129
145
 
130
146
  // Nothing changed — which is a positive answer about freshness, not a
131
147
  // non-event: the values we hold are the ones the server would send.
@@ -135,7 +151,10 @@ export async function fetchConfig() {
135
151
  }
136
152
  if (!response.ok) throw new Error(`Pulse config HTTP ${response.status}`);
137
153
  const payload = await response.json();
138
- const nextValues = payload?.values;
154
+ await verifyConfigPayload(payload, opts, requestGeneration);
155
+ if (requestGeneration !== configGeneration || options !== opts) return false;
156
+ const payloadObject = payload;
157
+ const nextValues = payloadObject.values;
139
158
  // A payload without a values object is a broken response, not "no keys": adopting
140
159
  // it would blank every flag at once.
141
160
  if (!nextValues || typeof nextValues !== 'object' || Array.isArray(nextValues)) {
@@ -146,7 +165,7 @@ export async function fetchConfig() {
146
165
  verifiedAt = fetchedAt;
147
166
  const snapshot = {
148
167
  values: nextValues,
149
- experiments: parseExperiments(payload?.experiments)
168
+ experiments: parseExperiments(payloadObject.experiments)
150
169
  };
151
170
  if (opts.activateOnFetch === false) {
152
171
  pending = snapshot;
@@ -160,10 +179,11 @@ export async function fetchConfig() {
160
179
  return false;
161
180
  } finally {
162
181
  if (timer) clearTimeout(timer);
163
- inFlight = null;
182
+ if (requestGeneration === configGeneration) inFlight = null;
164
183
  }
165
184
  })();
166
- return inFlight;
185
+ inFlight = request;
186
+ return request;
167
187
  }
168
188
 
169
189
  /**
@@ -213,8 +233,10 @@ function applySnapshot(next, opts) {
213
233
  values,
214
234
  experiments,
215
235
  etag,
216
- fetchedAt
217
- });
236
+ fetchedAt,
237
+ signatureVerified: signatureStatus === 'verified',
238
+ signatureKeyId
239
+ }, opts.storageKey);
218
240
 
219
241
  // Reported on apply, never on fetch: with activateOnFetch false a payload can sit
220
242
  // unapplied for the rest of a session, and an arm the app is not actually serving
@@ -268,8 +290,113 @@ async function reportExposure(opts) {
268
290
  });
269
291
  } catch {
270
292
  // A device that cannot report its arm still has the right arm.
271
- reportedExposure = signature;
293
+ if (options === opts) reportedExposure = signature;
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Verifies the exact unsigned JSON object the server signs. A configured verifier
299
+ * also rejects a bad optional signature: accepting a payload that claims to be
300
+ * signed but is not valid would make signature stripping safer than tampering.
301
+ */
302
+ async function verifyConfigPayload(payload, opts, requestGeneration) {
303
+ const setSignatureState = (status, keyId = null) => {
304
+ if (requestGeneration !== configGeneration || options !== opts) return;
305
+ signatureStatus = status;
306
+ signatureKeyId = keyId;
307
+ };
308
+ const verificationConfigured = Boolean(opts.requireSignature || opts.signingPublicKey || opts.signingKeyId || opts.verifySignature);
309
+ if (!verificationConfigured) {
310
+ setSignatureState('not-configured');
311
+ return;
312
+ }
313
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
314
+ setSignatureState('invalid');
315
+ throw new Error('Pulse config: malformed signed payload');
316
+ }
317
+ const record = payload;
318
+ const rawSignature = record.signature;
319
+ if (!isConfigSignature(rawSignature)) {
320
+ setSignatureState('unsigned');
321
+ if (opts.requireSignature) throw new Error('Pulse config: signature required but missing');
322
+ return;
323
+ }
324
+ setSignatureState('not-configured', rawSignature.keyId);
325
+ if (rawSignature.alg.toLowerCase() !== 'ed25519' || opts.signingKeyId && rawSignature.keyId !== opts.signingKeyId) {
326
+ setSignatureState('invalid', rawSignature.keyId);
327
+ throw new Error('Pulse config: signature algorithm or key id is not trusted');
328
+ }
329
+ const unsigned = {
330
+ ...record
331
+ };
332
+ delete unsigned.signature;
333
+ const locallyCanonical = canonicalizeConfigJson(unsigned);
334
+ let canonical = locallyCanonical;
335
+ if (rawSignature.canonical) {
336
+ try {
337
+ // Compare semantic JSON after parsing, then verify the server's exact bytes.
338
+ // This preserves tamper detection while avoiding 1.0/1 formatting drift
339
+ // between System.Text.Json and JavaScript.
340
+ if (canonicalizeConfigJson(JSON.parse(rawSignature.canonical)) !== locallyCanonical) {
341
+ throw new Error('canonical payload mismatch');
342
+ }
343
+ canonical = rawSignature.canonical;
344
+ } catch {
345
+ setSignatureState('invalid', rawSignature.keyId);
346
+ throw new Error('Pulse config: signed canonical payload does not match response');
347
+ }
348
+ }
349
+ let valid = false;
350
+ if (opts.verifySignature) {
351
+ valid = await opts.verifySignature(canonical, rawSignature);
352
+ } else if (opts.signingPublicKey) {
353
+ try {
354
+ valid = nacl.sign.detached.verify(utf8Bytes(canonical), decodeBase64(rawSignature.sig), decodeBase64(opts.signingPublicKey));
355
+ } catch {
356
+ valid = false;
357
+ }
358
+ } else if (opts.requireSignature) {
359
+ setSignatureState('invalid', rawSignature.keyId);
360
+ throw new Error('Pulse config: signature required but no verifier or public key is configured');
361
+ } else {
362
+ setSignatureState('not-configured', rawSignature.keyId);
363
+ return;
364
+ }
365
+ if (!valid) {
366
+ setSignatureState('invalid', rawSignature.keyId);
367
+ throw new Error('Pulse config: signature verification failed');
368
+ }
369
+ setSignatureState('verified', rawSignature.keyId);
370
+ }
371
+ function isConfigSignature(value) {
372
+ if (!value || typeof value !== 'object') return false;
373
+ const signature = value;
374
+ return typeof signature.alg === 'string' && typeof signature.keyId === 'string' && typeof signature.sig === 'string' && (signature.canonical === undefined || typeof signature.canonical === 'string');
375
+ }
376
+
377
+ /** Same recursive ordinal-key JSON form used by PulseServer's ManifestSigner. */
378
+ export function canonicalizeConfigJson(value) {
379
+ if (value === null || typeof value !== 'object') return JSON.stringify(value);
380
+ if (Array.isArray(value)) return `[${value.map(canonicalizeConfigJson).join(',')}]`;
381
+ return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalizeConfigJson(value[key])}`).join(',')}}`;
382
+ }
383
+ function decodeBase64(value) {
384
+ const atobLike = globalThis.atob;
385
+ if (atobLike) {
386
+ const decoded = atobLike(value);
387
+ return Uint8Array.from(decoded, char => char.charCodeAt(0));
272
388
  }
389
+ // Node/older React Native hosts commonly expose Buffer even when atob is absent.
390
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
391
+ const BufferCtor = require('buffer').Buffer;
392
+ return Uint8Array.from(BufferCtor.from(value, 'base64'));
393
+ }
394
+ function utf8Bytes(value) {
395
+ const Encoder = globalThis.TextEncoder;
396
+ if (Encoder) return new Encoder().encode(value);
397
+ // encodeURIComponent is available in every RN JS runtime supported by this package.
398
+ const encoded = unescape(encodeURIComponent(value));
399
+ return Uint8Array.from(encoded, char => char.charCodeAt(0));
273
400
  }
274
401
 
275
402
  /**
@@ -406,17 +533,22 @@ export function getConfigInfo() {
406
533
  fetchedAt,
407
534
  verifiedAt,
408
535
  etag,
409
- keyCount: Object.keys(getAllConfig()).length
536
+ keyCount: Object.keys(getAllConfig()).length,
537
+ signatureStatus,
538
+ signatureKeyId
410
539
  };
411
540
  }
412
541
 
413
542
  /** Test seam: drops every piece of module state. */
414
543
  export function resetConfigForTests() {
544
+ configGeneration += 1;
415
545
  options = null;
416
546
  defaults = {};
417
547
  verifiedAt = 0;
418
548
  values = {};
419
549
  experiments = [];
550
+ signatureStatus = 'not-configured';
551
+ signatureKeyId = null;
420
552
  etag = null;
421
553
  fetchedAt = 0;
422
554
  source = 'defaults';
@@ -449,10 +581,18 @@ function buildHeaders(opts, currentEtag) {
449
581
  if (currentEtag) headers['If-None-Match'] = currentEtag;
450
582
  return headers;
451
583
  }
452
- function readCache(storage) {
584
+ function readCache(storage, key) {
453
585
  if (!storage) return null;
454
586
  try {
455
- const raw = storage.getString(STORAGE_KEY);
587
+ const raw = storage.getString(key?.trim() || STORAGE_KEY);
588
+ return parseCachedPayload(raw);
589
+ } catch {
590
+ // A corrupt cache is not worth a crash at boot: fall back to defaults.
591
+ return null;
592
+ }
593
+ }
594
+ function parseCachedPayload(raw) {
595
+ try {
456
596
  if (!raw) return null;
457
597
  const parsed = JSON.parse(raw);
458
598
  if (!parsed || typeof parsed !== 'object' || !parsed.values) return null;
@@ -462,10 +602,23 @@ function readCache(storage) {
462
602
  return null;
463
603
  }
464
604
  }
465
- function writeCache(storage, payload) {
605
+ function applyCachedPayload(cached, opts) {
606
+ if (!cached || opts.requireSignature && cached.signatureVerified !== true) return;
607
+ values = cached.values;
608
+ experiments = cached.experiments ?? [];
609
+ etag = cached.etag;
610
+ fetchedAt = cached.fetchedAt;
611
+ source = 'cache';
612
+ if (cached.signatureVerified) {
613
+ signatureStatus = 'cached-verified';
614
+ signatureKeyId = cached.signatureKeyId ?? null;
615
+ }
616
+ notify();
617
+ }
618
+ function writeCache(storage, payload, key) {
466
619
  if (!storage) return;
467
620
  try {
468
- storage.set(STORAGE_KEY, JSON.stringify(payload));
621
+ void storage.set(key?.trim() || STORAGE_KEY, JSON.stringify(payload));
469
622
  } catch {
470
623
  // Persistence is an optimisation; failing to write must not fail the fetch.
471
624
  }
@@ -1 +1 @@
1
- {"version":3,"names":["STORAGE_KEY","DEFAULT_POLL_MS","DEFAULT_TIMEOUT_MS","options","defaults","values","experiments","etag","fetchedAt","verifiedAt","source","pending","reportedExposure","inFlight","pollTimer","listeners","Set","configureConfig","opts","cached","readCache","storage","setConfigDefaults","more","fetchConfig","minInterval","minimumFetchIntervalMs","Date","now","controller","AbortController","timer","setTimeout","abort","timeoutMs","response","fetch","url","method","headers","buildHeaders","signal","status","ok","Error","payload","json","nextValues","Array","isArray","get","snapshot","parseExperiments","activateOnFetch","applySnapshot","error","onError","clearTimeout","activateConfig","next","hasPendingConfig","startConfigAutoRefresh","appState","subscription","addEventListener","state","interval","pollIntervalMs","stopPolling","setInterval","unref","remove","changed","shallowEqual","sameExperiments","writeCache","reportExposure","notify","length","signature","map","e","key","variant","join","context","getContext","assignments","entry","replace","body","JSON","stringify","platform","appVersion","raw","filter","a","b","every","i","aKeys","Object","keys","bKeys","k","av","bv","clearInterval","getConfigValue","prototype","hasOwnProperty","call","fallback","undefined","getConfigBoolean","value","toLowerCase","getConfigNumber","parsed","Number","isNaN","getConfigString","String","getAllConfig","getConfigJson","parse","getConfigSource","getConfigExperiments","getConfigVariant","experimentKey","find","getConfigKeys","sort","onConfigChange","listener","add","delete","getConfigInfo","keyCount","resetConfigForTests","clear","currentEtag","ctx","Accept","osVersion","language","deviceId","userId","userAttributes","getString","set","forEach"],"sourceRoot":"../../src","sources":["config.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nacl","STORAGE_KEY","DEFAULT_POLL_MS","DEFAULT_TIMEOUT_MS","options","defaults","values","experiments","etag","fetchedAt","verifiedAt","source","signatureStatus","signatureKeyId","pending","reportedExposure","inFlight","pollTimer","configGeneration","listeners","Set","configureConfig","opts","stopPolling","applyCachedPayload","readCache","storage","storageKey","setConfigDefaults","more","fetchConfig","minInterval","minimumFetchIntervalMs","Date","now","requestGeneration","request","controller","AbortController","timer","setTimeout","abort","timeoutMs","response","fetch","url","method","headers","buildHeaders","signal","status","ok","Error","payload","json","verifyConfigPayload","payloadObject","nextValues","Array","isArray","get","snapshot","parseExperiments","activateOnFetch","applySnapshot","error","onError","clearTimeout","activateConfig","next","hasPendingConfig","startConfigAutoRefresh","appState","subscription","addEventListener","state","interval","pollIntervalMs","setInterval","unref","remove","changed","shallowEqual","sameExperiments","writeCache","signatureVerified","reportExposure","notify","length","signature","map","e","key","variant","join","context","getContext","assignments","entry","replace","body","JSON","stringify","platform","appVersion","setSignatureState","keyId","verificationConfigured","Boolean","requireSignature","signingPublicKey","signingKeyId","verifySignature","record","rawSignature","isConfigSignature","alg","toLowerCase","unsigned","locallyCanonical","canonicalizeConfigJson","canonical","parse","valid","sign","detached","verify","utf8Bytes","decodeBase64","sig","value","undefined","Object","keys","sort","atobLike","globalThis","atob","decoded","Uint8Array","from","char","charCodeAt","BufferCtor","require","Buffer","Encoder","TextEncoder","encode","encoded","unescape","encodeURIComponent","raw","filter","a","b","every","i","aKeys","bKeys","k","av","bv","clearInterval","getConfigValue","prototype","hasOwnProperty","call","fallback","getConfigBoolean","getConfigNumber","parsed","Number","isNaN","getConfigString","String","getAllConfig","getConfigJson","getConfigSource","getConfigExperiments","getConfigVariant","experimentKey","find","getConfigKeys","onConfigChange","listener","add","delete","getConfigInfo","keyCount","resetConfigForTests","clear","currentEtag","ctx","Accept","osVersion","language","deviceId","userId","userAttributes","getString","trim","parseCachedPayload","cached","set","forEach"],"sourceRoot":"../../src","sources":["config.ts"],"mappings":"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","ignoreList":[]}