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.
- package/README.md +50 -10
- package/SECURITY.md +42 -0
- package/android/src/main/java/app/pulse/updates/PulseController.kt +6 -2
- package/android/src/main/java/app/pulse/updates/PulseUpdatesModule.kt +25 -0
- package/app.plugin.js +47 -0
- package/ios/PulseUpdates/PulseController.swift +7 -2
- package/ios/PulseUpdates/PulseUpdates.m +7 -0
- package/ios/PulseUpdates/PulseUpdates.swift +22 -0
- package/lib/commonjs/NativePulseUpdates.js.map +1 -1
- package/lib/commonjs/PulseUpdates.js +36 -0
- package/lib/commonjs/PulseUpdates.js.map +1 -1
- package/lib/commonjs/config.js +175 -21
- package/lib/commonjs/config.js.map +1 -1
- package/lib/commonjs/decisions.js +128 -0
- package/lib/commonjs/decisions.js.map +1 -0
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +164 -12
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/track.js +154 -12
- package/lib/commonjs/track.js.map +1 -1
- package/lib/commonjs/usePulseUpdates.js +21 -16
- package/lib/commonjs/usePulseUpdates.js.map +1 -1
- package/lib/module/NativePulseUpdates.js.map +1 -1
- package/lib/module/PulseUpdates.js +33 -0
- package/lib/module/PulseUpdates.js.map +1 -1
- package/lib/module/config.js +174 -21
- package/lib/module/config.js.map +1 -1
- package/lib/module/decisions.js +122 -0
- package/lib/module/decisions.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +165 -14
- package/lib/module/init.js.map +1 -1
- package/lib/module/track.js +152 -12
- package/lib/module/track.js.map +1 -1
- package/lib/module/usePulseUpdates.js +21 -16
- package/lib/module/usePulseUpdates.js.map +1 -1
- package/lib/typescript/NativePulseUpdates.d.ts +1 -0
- package/lib/typescript/NativePulseUpdates.d.ts.map +1 -1
- package/lib/typescript/PulseUpdates.d.ts +20 -0
- package/lib/typescript/PulseUpdates.d.ts.map +1 -1
- package/lib/typescript/config.d.ts +22 -0
- package/lib/typescript/config.d.ts.map +1 -1
- package/lib/typescript/decisions.d.ts +55 -0
- package/lib/typescript/decisions.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/init.d.ts +51 -4
- package/lib/typescript/init.d.ts.map +1 -1
- package/lib/typescript/track.d.ts +29 -1
- package/lib/typescript/track.d.ts.map +1 -1
- package/lib/typescript/usePulseUpdates.d.ts.map +1 -1
- package/logo.png +0 -0
- package/package.json +14 -3
- package/scripts/publish.mjs +68 -3
- package/src/NativePulseUpdates.ts +1 -0
- package/src/PulseUpdates.ts +54 -0
- package/src/config.ts +234 -21
- package/src/decisions.ts +179 -0
- package/src/index.ts +1 -0
- package/src/init.ts +240 -11
- package/src/track.ts +191 -13
- package/src/usePulseUpdates.ts +21 -16
package/lib/commonjs/config.js
CHANGED
|
@@ -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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
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":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -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":[]}
|