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
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.activateConfig = activateConfig;
7
+ exports.canonicalizeConfigJson = canonicalizeConfigJson;
7
8
  exports.configureConfig = configureConfig;
8
9
  exports.fetchConfig = fetchConfig;
9
10
  exports.getAllConfig = getAllConfig;
@@ -22,6 +23,8 @@ exports.onConfigChange = onConfigChange;
22
23
  exports.resetConfigForTests = resetConfigForTests;
23
24
  exports.setConfigDefaults = setConfigDefaults;
24
25
  exports.startConfigAutoRefresh = startConfigAutoRefresh;
26
+ var _tweetnacl = _interopRequireDefault(require("tweetnacl"));
27
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
28
  /**
26
29
  * Pulse Config — the client half of the Firebase Remote Config replacement.
27
30
  *
@@ -90,11 +93,14 @@ let fetchedAt = 0;
90
93
  */
91
94
  let verifiedAt = 0;
92
95
  let source = 'defaults';
96
+ let signatureStatus = 'not-configured';
97
+ let signatureKeyId = null;
93
98
  let pending = null;
94
99
  /** The arm set already reported this session, so a poll does not re-report it. */
95
100
  let reportedExposure = null;
96
101
  let inFlight = null;
97
102
  let pollTimer = null;
103
+ let configGeneration = 0;
98
104
  const listeners = new Set();
99
105
 
100
106
  /**
@@ -103,18 +109,27 @@ const listeners = new Set();
103
109
  * while the network call is in flight.
104
110
  */
105
111
  function configureConfig(opts) {
112
+ // A host can switch app/tenant without restarting the JS runtime. Nothing from the
113
+ // previous app — values, ETag, pending activation or an eventual network response —
114
+ // may cross that boundary.
115
+ configGeneration += 1;
116
+ stopPolling();
106
117
  options = opts;
107
118
  defaults = {
108
119
  ...(opts.defaults ?? {})
109
120
  };
110
- const cached = readCache(opts.storage);
111
- if (cached) {
112
- values = cached.values;
113
- experiments = cached.experiments ?? [];
114
- etag = cached.etag;
115
- fetchedAt = cached.fetchedAt;
116
- source = 'cache';
117
- }
121
+ values = {};
122
+ experiments = [];
123
+ etag = null;
124
+ fetchedAt = 0;
125
+ verifiedAt = 0;
126
+ source = 'defaults';
127
+ signatureStatus = 'not-configured';
128
+ signatureKeyId = null;
129
+ pending = null;
130
+ reportedExposure = null;
131
+ inFlight = null;
132
+ applyCachedPayload(readCache(opts.storage, opts.storageKey), opts);
118
133
  }
119
134
 
120
135
  /** Merge more defaults after configure (a late-loading module registering its own). */
@@ -140,7 +155,8 @@ async function fetchConfig() {
140
155
  if (minInterval > 0 && fetchedAt > 0 && Date.now() - fetchedAt < minInterval) {
141
156
  return false;
142
157
  }
143
- inFlight = (async () => {
158
+ const requestGeneration = configGeneration;
159
+ const request = (async () => {
144
160
  const opts = options;
145
161
  const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;
146
162
  const timer = controller ? setTimeout(() => controller.abort(), opts.timeoutMs ?? DEFAULT_TIMEOUT_MS) : null;
@@ -150,6 +166,7 @@ async function fetchConfig() {
150
166
  headers: buildHeaders(opts, etag),
151
167
  signal: controller?.signal
152
168
  });
169
+ if (requestGeneration !== configGeneration || options !== opts) return false;
153
170
 
154
171
  // Nothing changed — which is a positive answer about freshness, not a
155
172
  // non-event: the values we hold are the ones the server would send.
@@ -159,7 +176,10 @@ async function fetchConfig() {
159
176
  }
160
177
  if (!response.ok) throw new Error(`Pulse config HTTP ${response.status}`);
161
178
  const payload = await response.json();
162
- const nextValues = payload?.values;
179
+ await verifyConfigPayload(payload, opts, requestGeneration);
180
+ if (requestGeneration !== configGeneration || options !== opts) return false;
181
+ const payloadObject = payload;
182
+ const nextValues = payloadObject.values;
163
183
  // A payload without a values object is a broken response, not "no keys": adopting
164
184
  // it would blank every flag at once.
165
185
  if (!nextValues || typeof nextValues !== 'object' || Array.isArray(nextValues)) {
@@ -170,7 +190,7 @@ async function fetchConfig() {
170
190
  verifiedAt = fetchedAt;
171
191
  const snapshot = {
172
192
  values: nextValues,
173
- experiments: parseExperiments(payload?.experiments)
193
+ experiments: parseExperiments(payloadObject.experiments)
174
194
  };
175
195
  if (opts.activateOnFetch === false) {
176
196
  pending = snapshot;
@@ -184,10 +204,11 @@ async function fetchConfig() {
184
204
  return false;
185
205
  } finally {
186
206
  if (timer) clearTimeout(timer);
187
- inFlight = null;
207
+ if (requestGeneration === configGeneration) inFlight = null;
188
208
  }
189
209
  })();
190
- return inFlight;
210
+ inFlight = request;
211
+ return request;
191
212
  }
192
213
 
193
214
  /**
@@ -237,8 +258,10 @@ function applySnapshot(next, opts) {
237
258
  values,
238
259
  experiments,
239
260
  etag,
240
- fetchedAt
241
- });
261
+ fetchedAt,
262
+ signatureVerified: signatureStatus === 'verified',
263
+ signatureKeyId
264
+ }, opts.storageKey);
242
265
 
243
266
  // Reported on apply, never on fetch: with activateOnFetch false a payload can sit
244
267
  // unapplied for the rest of a session, and an arm the app is not actually serving
@@ -292,10 +315,115 @@ async function reportExposure(opts) {
292
315
  });
293
316
  } catch {
294
317
  // A device that cannot report its arm still has the right arm.
295
- reportedExposure = signature;
318
+ if (options === opts) reportedExposure = signature;
296
319
  }
297
320
  }
298
321
 
322
+ /**
323
+ * Verifies the exact unsigned JSON object the server signs. A configured verifier
324
+ * also rejects a bad optional signature: accepting a payload that claims to be
325
+ * signed but is not valid would make signature stripping safer than tampering.
326
+ */
327
+ async function verifyConfigPayload(payload, opts, requestGeneration) {
328
+ const setSignatureState = (status, keyId = null) => {
329
+ if (requestGeneration !== configGeneration || options !== opts) return;
330
+ signatureStatus = status;
331
+ signatureKeyId = keyId;
332
+ };
333
+ const verificationConfigured = Boolean(opts.requireSignature || opts.signingPublicKey || opts.signingKeyId || opts.verifySignature);
334
+ if (!verificationConfigured) {
335
+ setSignatureState('not-configured');
336
+ return;
337
+ }
338
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
339
+ setSignatureState('invalid');
340
+ throw new Error('Pulse config: malformed signed payload');
341
+ }
342
+ const record = payload;
343
+ const rawSignature = record.signature;
344
+ if (!isConfigSignature(rawSignature)) {
345
+ setSignatureState('unsigned');
346
+ if (opts.requireSignature) throw new Error('Pulse config: signature required but missing');
347
+ return;
348
+ }
349
+ setSignatureState('not-configured', rawSignature.keyId);
350
+ if (rawSignature.alg.toLowerCase() !== 'ed25519' || opts.signingKeyId && rawSignature.keyId !== opts.signingKeyId) {
351
+ setSignatureState('invalid', rawSignature.keyId);
352
+ throw new Error('Pulse config: signature algorithm or key id is not trusted');
353
+ }
354
+ const unsigned = {
355
+ ...record
356
+ };
357
+ delete unsigned.signature;
358
+ const locallyCanonical = canonicalizeConfigJson(unsigned);
359
+ let canonical = locallyCanonical;
360
+ if (rawSignature.canonical) {
361
+ try {
362
+ // Compare semantic JSON after parsing, then verify the server's exact bytes.
363
+ // This preserves tamper detection while avoiding 1.0/1 formatting drift
364
+ // between System.Text.Json and JavaScript.
365
+ if (canonicalizeConfigJson(JSON.parse(rawSignature.canonical)) !== locallyCanonical) {
366
+ throw new Error('canonical payload mismatch');
367
+ }
368
+ canonical = rawSignature.canonical;
369
+ } catch {
370
+ setSignatureState('invalid', rawSignature.keyId);
371
+ throw new Error('Pulse config: signed canonical payload does not match response');
372
+ }
373
+ }
374
+ let valid = false;
375
+ if (opts.verifySignature) {
376
+ valid = await opts.verifySignature(canonical, rawSignature);
377
+ } else if (opts.signingPublicKey) {
378
+ try {
379
+ valid = _tweetnacl.default.sign.detached.verify(utf8Bytes(canonical), decodeBase64(rawSignature.sig), decodeBase64(opts.signingPublicKey));
380
+ } catch {
381
+ valid = false;
382
+ }
383
+ } else if (opts.requireSignature) {
384
+ setSignatureState('invalid', rawSignature.keyId);
385
+ throw new Error('Pulse config: signature required but no verifier or public key is configured');
386
+ } else {
387
+ setSignatureState('not-configured', rawSignature.keyId);
388
+ return;
389
+ }
390
+ if (!valid) {
391
+ setSignatureState('invalid', rawSignature.keyId);
392
+ throw new Error('Pulse config: signature verification failed');
393
+ }
394
+ setSignatureState('verified', rawSignature.keyId);
395
+ }
396
+ function isConfigSignature(value) {
397
+ if (!value || typeof value !== 'object') return false;
398
+ const signature = value;
399
+ return typeof signature.alg === 'string' && typeof signature.keyId === 'string' && typeof signature.sig === 'string' && (signature.canonical === undefined || typeof signature.canonical === 'string');
400
+ }
401
+
402
+ /** Same recursive ordinal-key JSON form used by PulseServer's ManifestSigner. */
403
+ function canonicalizeConfigJson(value) {
404
+ if (value === null || typeof value !== 'object') return JSON.stringify(value);
405
+ if (Array.isArray(value)) return `[${value.map(canonicalizeConfigJson).join(',')}]`;
406
+ return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalizeConfigJson(value[key])}`).join(',')}}`;
407
+ }
408
+ function decodeBase64(value) {
409
+ const atobLike = globalThis.atob;
410
+ if (atobLike) {
411
+ const decoded = atobLike(value);
412
+ return Uint8Array.from(decoded, char => char.charCodeAt(0));
413
+ }
414
+ // Node/older React Native hosts commonly expose Buffer even when atob is absent.
415
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
416
+ const BufferCtor = require('buffer').Buffer;
417
+ return Uint8Array.from(BufferCtor.from(value, 'base64'));
418
+ }
419
+ function utf8Bytes(value) {
420
+ const Encoder = globalThis.TextEncoder;
421
+ if (Encoder) return new Encoder().encode(value);
422
+ // encodeURIComponent is available in every RN JS runtime supported by this package.
423
+ const encoded = unescape(encodeURIComponent(value));
424
+ return Uint8Array.from(encoded, char => char.charCodeAt(0));
425
+ }
426
+
299
427
  /**
300
428
  * The arms as the server sent them, keeping only entries that name both halves.
301
429
  *
@@ -430,17 +558,22 @@ function getConfigInfo() {
430
558
  fetchedAt,
431
559
  verifiedAt,
432
560
  etag,
433
- keyCount: Object.keys(getAllConfig()).length
561
+ keyCount: Object.keys(getAllConfig()).length,
562
+ signatureStatus,
563
+ signatureKeyId
434
564
  };
435
565
  }
436
566
 
437
567
  /** Test seam: drops every piece of module state. */
438
568
  function resetConfigForTests() {
569
+ configGeneration += 1;
439
570
  options = null;
440
571
  defaults = {};
441
572
  verifiedAt = 0;
442
573
  values = {};
443
574
  experiments = [];
575
+ signatureStatus = 'not-configured';
576
+ signatureKeyId = null;
444
577
  etag = null;
445
578
  fetchedAt = 0;
446
579
  source = 'defaults';
@@ -473,10 +606,18 @@ function buildHeaders(opts, currentEtag) {
473
606
  if (currentEtag) headers['If-None-Match'] = currentEtag;
474
607
  return headers;
475
608
  }
476
- function readCache(storage) {
609
+ function readCache(storage, key) {
477
610
  if (!storage) return null;
478
611
  try {
479
- const raw = storage.getString(STORAGE_KEY);
612
+ const raw = storage.getString(key?.trim() || STORAGE_KEY);
613
+ return parseCachedPayload(raw);
614
+ } catch {
615
+ // A corrupt cache is not worth a crash at boot: fall back to defaults.
616
+ return null;
617
+ }
618
+ }
619
+ function parseCachedPayload(raw) {
620
+ try {
480
621
  if (!raw) return null;
481
622
  const parsed = JSON.parse(raw);
482
623
  if (!parsed || typeof parsed !== 'object' || !parsed.values) return null;
@@ -486,10 +627,23 @@ function readCache(storage) {
486
627
  return null;
487
628
  }
488
629
  }
489
- function writeCache(storage, payload) {
630
+ function applyCachedPayload(cached, opts) {
631
+ if (!cached || opts.requireSignature && cached.signatureVerified !== true) return;
632
+ values = cached.values;
633
+ experiments = cached.experiments ?? [];
634
+ etag = cached.etag;
635
+ fetchedAt = cached.fetchedAt;
636
+ source = 'cache';
637
+ if (cached.signatureVerified) {
638
+ signatureStatus = 'cached-verified';
639
+ signatureKeyId = cached.signatureKeyId ?? null;
640
+ }
641
+ notify();
642
+ }
643
+ function writeCache(storage, payload, key) {
490
644
  if (!storage) return;
491
645
  try {
492
- storage.set(STORAGE_KEY, JSON.stringify(payload));
646
+ void storage.set(key?.trim() || STORAGE_KEY, JSON.stringify(payload));
493
647
  } catch {
494
648
  // Persistence is an optimisation; failing to write must not fail the fetch.
495
649
  }
@@ -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":["_tweetnacl","_interopRequireDefault","require","e","__esModule","default","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","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","nacl","sign","detached","verify","utf8Bytes","decodeBase64","sig","value","undefined","Object","keys","sort","atobLike","globalThis","atob","decoded","Uint8Array","from","char","charCodeAt","BufferCtor","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":[]}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createPulseDecisionClient = createPulseDecisionClient;
7
+ /** Generic decision protocol. Product-specific action handlers remain in each app. */
8
+ function createPulseDecisionClient(options) {
9
+ const fetcher = options.fetch ?? globalThis.fetch;
10
+ const base = options.apiUrl.replace(/\/+$/, '');
11
+ const slug = encodeURIComponent(options.appSlug);
12
+ const timeoutMs = Math.max(250, options.timeoutMs ?? 3_000);
13
+ const executionMode = options.executionMode ?? 'shadow-only';
14
+ const reportOutcome = async (decisionId, outcome, metadata) => {
15
+ try {
16
+ const response = await timedFetch(fetcher, `${base}/pulse/decisions/${slug}/${encodeURIComponent(decisionId)}/outcome`, {
17
+ method: 'POST',
18
+ headers: {
19
+ 'Content-Type': 'application/json'
20
+ },
21
+ body: JSON.stringify({
22
+ outcome,
23
+ ...(metadata ? {
24
+ metadata
25
+ } : {})
26
+ })
27
+ }, timeoutMs);
28
+ return response.ok;
29
+ } catch (error) {
30
+ options.onError?.(error);
31
+ return false;
32
+ }
33
+ };
34
+ const decide = async (trigger, request = {}) => {
35
+ try {
36
+ const context = await options.getContext();
37
+ const response = await timedFetch(fetcher, `${base}/pulse/decisions/${slug}`, {
38
+ method: 'POST',
39
+ headers: {
40
+ 'Content-Type': 'application/json'
41
+ },
42
+ body: JSON.stringify({
43
+ ...context,
44
+ attributes: {
45
+ ...(context.attributes ?? {}),
46
+ ...(request.attributes ?? {})
47
+ },
48
+ trigger,
49
+ channel: request.channel ?? 'in_app',
50
+ idempotencyKey: request.idempotencyKey ?? randomKey()
51
+ })
52
+ }, timeoutMs);
53
+ if (!response.ok) throw new Error(`Pulse decision HTTP ${response.status}`);
54
+ const decision = parseDecision(await response.json());
55
+ if (!decision.execute) return decision;
56
+ if (executionMode !== 'allow-live') {
57
+ void reportOutcome(decision.decisionId, 'failed', {
58
+ reason: 'client_executor_not_armed'
59
+ });
60
+ return decision;
61
+ }
62
+ const action = decision.action;
63
+ const handler = action?.kind ? options.handlers?.[action.kind] : undefined;
64
+ if (!action || !handler) {
65
+ void reportOutcome(decision.decisionId, 'failed', {
66
+ reason: 'unknown_action_kind',
67
+ kind: action?.kind ?? null
68
+ });
69
+ return decision;
70
+ }
71
+ try {
72
+ const result = await handler(action, decision);
73
+ void reportOutcome(decision.decisionId, result?.outcome ?? 'accepted', result?.metadata);
74
+ } catch (error) {
75
+ options.onError?.(error);
76
+ void reportOutcome(decision.decisionId, 'failed', {
77
+ reason: 'handler_failed'
78
+ });
79
+ }
80
+ return decision;
81
+ } catch (error) {
82
+ options.onError?.(error);
83
+ return null;
84
+ }
85
+ };
86
+ return {
87
+ decide,
88
+ reportOutcome
89
+ };
90
+ }
91
+ function parseDecision(raw) {
92
+ if (!raw || typeof raw !== 'object') throw new Error('Malformed Pulse decision');
93
+ const value = raw;
94
+ if (typeof value.decisionId !== 'string' || typeof value.execute !== 'boolean' || typeof value.mode !== 'string' || typeof value.verdict !== 'string' || typeof value.reasonCode !== 'string') throw new Error('Malformed Pulse decision');
95
+ const action = value.action;
96
+ if (action != null && (typeof action !== 'object' || typeof action.kind !== 'string')) {
97
+ throw new Error('Malformed Pulse action');
98
+ }
99
+ return {
100
+ decisionId: value.decisionId,
101
+ replayed: value.replayed === true,
102
+ execute: value.execute,
103
+ mode: value.mode,
104
+ verdict: value.verdict,
105
+ reasonCode: value.reasonCode,
106
+ policyKey: typeof value.policyKey === 'string' ? value.policyKey : null,
107
+ policyVersion: typeof value.policyVersion === 'number' ? value.policyVersion : null,
108
+ action: action ?? null
109
+ };
110
+ }
111
+ async function timedFetch(fetcher, url, init, timeoutMs) {
112
+ const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;
113
+ const timer = controller ? setTimeout(() => controller.abort(), timeoutMs) : null;
114
+ try {
115
+ return await fetcher(url, {
116
+ ...init,
117
+ signal: controller?.signal
118
+ });
119
+ } finally {
120
+ if (timer) clearTimeout(timer);
121
+ }
122
+ }
123
+ function randomKey() {
124
+ const cryptoLike = globalThis.crypto;
125
+ if (typeof cryptoLike?.randomUUID === 'function') return cryptoLike.randomUUID();
126
+ return `moment-${Date.now()}-${Math.random().toString(36).slice(2, 14)}`;
127
+ }
128
+ //# sourceMappingURL=decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPulseDecisionClient","options","fetcher","fetch","globalThis","base","apiUrl","replace","slug","encodeURIComponent","appSlug","timeoutMs","Math","max","executionMode","reportOutcome","decisionId","outcome","metadata","response","timedFetch","method","headers","body","JSON","stringify","ok","error","onError","decide","trigger","request","context","getContext","attributes","channel","idempotencyKey","randomKey","Error","status","decision","parseDecision","json","execute","reason","action","handler","kind","handlers","undefined","result","raw","value","mode","verdict","reasonCode","replayed","policyKey","policyVersion","url","init","controller","AbortController","timer","setTimeout","abort","signal","clearTimeout","cryptoLike","crypto","randomUUID","Date","now","random","toString","slice"],"sourceRoot":"../../src","sources":["decisions.ts"],"mappings":"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","ignoreList":[]}
@@ -88,4 +88,16 @@ Object.keys(_init).forEach(function (key) {
88
88
  }
89
89
  });
90
90
  });
91
+ var _decisions = require("./decisions");
92
+ Object.keys(_decisions).forEach(function (key) {
93
+ if (key === "default" || key === "__esModule") return;
94
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
95
+ if (key in exports && exports[key] === _decisions[key]) return;
96
+ Object.defineProperty(exports, key, {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _decisions[key];
100
+ }
101
+ });
102
+ });
91
103
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_PulseUpdates","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_types","_usePulseUpdates","_assetResolver","_config","_track","_init"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,aAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,aAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,aAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,gBAAA,GAAAd,OAAA;AACA,IAAAe,cAAA,GAAAf,OAAA;AACA,IAAAgB,OAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,OAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,OAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,OAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,MAAA,GAAAjB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAe,MAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAa,MAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,MAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AACA,IAAAc,KAAA,GAAAlB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAgB,KAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAc,KAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,KAAA,CAAAd,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_PulseUpdates","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_types","_usePulseUpdates","_assetResolver","_config","_track","_init","_decisions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}