pulse-updates 1.4.1 → 1.5.1

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 (44) hide show
  1. package/README.md +59 -0
  2. package/lib/commonjs/config.js +25 -0
  3. package/lib/commonjs/config.js.map +1 -1
  4. package/lib/commonjs/decisions.js +20 -6
  5. package/lib/commonjs/decisions.js.map +1 -1
  6. package/lib/commonjs/experiences.js +72 -0
  7. package/lib/commonjs/experiences.js.map +1 -0
  8. package/lib/commonjs/index.js +24 -0
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/init.js +63 -17
  11. package/lib/commonjs/init.js.map +1 -1
  12. package/lib/commonjs/subject.js +44 -0
  13. package/lib/commonjs/subject.js.map +1 -0
  14. package/lib/module/config.js +24 -0
  15. package/lib/module/config.js.map +1 -1
  16. package/lib/module/decisions.js +20 -6
  17. package/lib/module/decisions.js.map +1 -1
  18. package/lib/module/experiences.js +66 -0
  19. package/lib/module/experiences.js.map +1 -0
  20. package/lib/module/index.js +2 -0
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/init.js +64 -18
  23. package/lib/module/init.js.map +1 -1
  24. package/lib/module/subject.js +37 -0
  25. package/lib/module/subject.js.map +1 -0
  26. package/lib/typescript/config.d.ts +2 -0
  27. package/lib/typescript/config.d.ts.map +1 -1
  28. package/lib/typescript/decisions.d.ts +12 -0
  29. package/lib/typescript/decisions.d.ts.map +1 -1
  30. package/lib/typescript/experiences.d.ts +28 -0
  31. package/lib/typescript/experiences.d.ts.map +1 -0
  32. package/lib/typescript/index.d.ts +2 -0
  33. package/lib/typescript/index.d.ts.map +1 -1
  34. package/lib/typescript/init.d.ts +11 -0
  35. package/lib/typescript/init.d.ts.map +1 -1
  36. package/lib/typescript/subject.d.ts +12 -0
  37. package/lib/typescript/subject.d.ts.map +1 -0
  38. package/package.json +1 -1
  39. package/src/config.ts +19 -0
  40. package/src/decisions.ts +36 -3
  41. package/src/experiences.ts +72 -0
  42. package/src/index.ts +2 -0
  43. package/src/init.ts +63 -19
  44. package/src/subject.ts +47 -0
@@ -0,0 +1,66 @@
1
+ import { createPulseDecisionClient } from './decisions';
2
+ import { getConfigBoolean, onConfigChange } from './config';
3
+ export function createPulseExperiences(options) {
4
+ const actions = {
5
+ ...options.actions
6
+ };
7
+ const capabilities = Object.entries(actions).map(([kind, action]) => {
8
+ if (!action.capability.startsWith(`${kind}:v`) || !/^.+:v[1-9]\d*$/.test(action.capability)) throw new Error(`Pulse: capability must be versioned and match action kind ${kind}`);
9
+ return action.capability;
10
+ });
11
+ if (!options.executionEnabledKey.trim()) throw new Error('Pulse: an execution gate key is required');
12
+ const enabled = () => getConfigBoolean(options.executionEnabledKey);
13
+ let generation = 0;
14
+ let disposed = false;
15
+ const reset = () => {
16
+ generation += 1;
17
+ for (const action of Object.values(actions)) {
18
+ try {
19
+ action.reset?.();
20
+ } catch (error) {
21
+ options.onError?.(error);
22
+ }
23
+ }
24
+ };
25
+ let wasEnabled = enabled();
26
+ const unsubscribe = onConfigChange(() => {
27
+ const next = enabled();
28
+ if (wasEnabled && !next) reset();
29
+ wasEnabled = next;
30
+ });
31
+ const client = createPulseDecisionClient({
32
+ apiUrl: options.apiUrl,
33
+ appSlug: options.appSlug,
34
+ storage: options.storage,
35
+ executionMode: 'allow-live',
36
+ isExecutionAllowed: enabled,
37
+ onError: options.onError,
38
+ getContextRevision: () => generation,
39
+ getContext: () => ({
40
+ ...options.getContext(),
41
+ capabilities
42
+ }),
43
+ handlers: Object.fromEntries(Object.entries(actions).map(([kind, handler]) => [kind, async (action, decision) => {
44
+ if (action.requiredCapability !== handler.capability || !handler.validate(action)) return {
45
+ outcome: 'failed',
46
+ metadata: {
47
+ reason: 'invalid_action_contract'
48
+ }
49
+ };
50
+ return handler.execute(action, decision);
51
+ }]))
52
+ });
53
+ return {
54
+ client,
55
+ capabilities,
56
+ reset,
57
+ dispose: async () => {
58
+ if (disposed) return;
59
+ disposed = true;
60
+ unsubscribe();
61
+ reset();
62
+ await client.dispose();
63
+ }
64
+ };
65
+ }
66
+ //# sourceMappingURL=experiences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPulseDecisionClient","getConfigBoolean","onConfigChange","createPulseExperiences","options","actions","capabilities","Object","entries","map","kind","action","capability","startsWith","test","Error","executionEnabledKey","trim","enabled","generation","disposed","reset","values","error","onError","wasEnabled","unsubscribe","next","client","apiUrl","appSlug","storage","executionMode","isExecutionAllowed","getContextRevision","getContext","handlers","fromEntries","handler","decision","requiredCapability","validate","outcome","metadata","reason","execute","dispose"],"sourceRoot":"../../src","sources":["experiences.ts"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,8 @@ export * from './config';
6
6
  export * from './track';
7
7
  export * from './init';
8
8
  export * from './decisions';
9
+ export * from './subject';
10
+ export * from './experiences';
9
11
  export * from './links';
10
12
  export * from './nativeAttribution';
11
13
  export { DeferredLinkPasteButton } from './DeferredLinkPasteButton';
@@ -1 +1 @@
1
- {"version":3,"names":["usePulseUpdates","initializeAssetResolver","updateLocalAssets","DeferredLinkPasteButton"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,SAASA,eAAe,QAAQ,mBAAmB;AACnD,SAASC,uBAAuB,EAAEC,iBAAiB,QAAQ,iBAAiB;AAC5E,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,cAAc,SAAS;AACvB,cAAc,qBAAqB;AACnC,SAASC,uBAAuB,QAAQ,2BAA2B","ignoreList":[]}
1
+ {"version":3,"names":["usePulseUpdates","initializeAssetResolver","updateLocalAssets","DeferredLinkPasteButton"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,SAASA,eAAe,QAAQ,mBAAmB;AACnD,SAASC,uBAAuB,EAAEC,iBAAiB,QAAQ,iBAAiB;AAC5E,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,cAAc,WAAW;AACzB,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,qBAAqB;AACnC,SAASC,uBAAuB,QAAQ,2BAA2B","ignoreList":[]}
@@ -24,11 +24,14 @@
24
24
  * installs — a targeting bug that looks like a rollout that "did not work".
25
25
  */
26
26
 
27
- import { configureConfig, fetchConfig, startConfigAutoRefresh, getConfigInfo, getConfigBoolean, getConfigNumber, getConfigString, getConfigJson, getExposureDeliveryInfo } from './config';
27
+ import { configureConfig, fetchConfig, startConfigAutoRefresh, getConfigInfo, getConfigBoolean, getConfigNumber, getConfigString, getConfigJson, getExposureDeliveryInfo, invalidateConfigContext } from './config';
28
+ import { normalizePulseAttributes, pulseProfileAttributes } from './subject';
29
+ import { createPulseExperiences } from './experiences';
28
30
  import { configureTracking, disposeTracking, flushEvents, getTrackingInfo, track, trackIdempotent } from './track';
29
31
  const DEVICE_ID_KEY = 'pulse.device-id';
30
32
  let activeClient = null;
31
33
  let stopActiveRefresh = null;
34
+ let stopActiveExperiences = null;
32
35
 
33
36
  /** Wires config and events with an explicit event-envelope identity policy. */
34
37
  export function initPulse(opts) {
@@ -37,6 +40,8 @@ export function initPulse(opts) {
37
40
  // fast app switch or test setup triggers. Persist the old outbox, stop its refresh,
38
41
  // then configure the new app in one uninterrupted turn.
39
42
  stopActiveRefresh?.();
43
+ void stopActiveExperiences?.();
44
+ stopActiveExperiences = null;
40
45
  disposeTracking();
41
46
  activeClient = null;
42
47
  stopActiveRefresh = null;
@@ -52,17 +57,21 @@ export function initPulse(opts) {
52
57
  const language = opts.language ?? detectLanguage();
53
58
  let userId;
54
59
  let userAttributes;
60
+ let userOverridden = false;
55
61
  let consentOverride = typeof opts.analyticsConsent === 'boolean' ? opts.analyticsConsent : undefined;
56
62
  const hasConsent = () => consentOverride ?? (typeof opts.analyticsConsent === 'function' ? opts.analyticsConsent() : true);
57
- const getContext = () => ({
58
- platform,
59
- osVersion,
60
- appVersion,
61
- language,
62
- deviceId,
63
- userId: userId ?? opts.getUserId?.(),
64
- userAttributes: userAttributes ?? opts.getUserAttributes?.()
65
- });
63
+ const getContext = () => {
64
+ const profile = userOverridden ? undefined : opts.getUserProfile?.();
65
+ return {
66
+ platform,
67
+ osVersion,
68
+ appVersion,
69
+ language,
70
+ deviceId,
71
+ userId: userOverridden ? userId : profile?.id ?? opts.getUserId?.(),
72
+ userAttributes: userOverridden ? userAttributes : profile ? pulseProfileAttributes(profile) : normalizePulseAttributes(opts.getUserAttributes?.())
73
+ };
74
+ };
66
75
  configureConfig({
67
76
  url: configUrl,
68
77
  defaults: opts.defaults,
@@ -110,6 +119,28 @@ export function initPulse(opts) {
110
119
  // off position of every flag.
111
120
  void fetchConfig();
112
121
  const stopRefresh = startConfigAutoRefresh(opts.appState);
122
+ const experiences = opts.experiences ? createPulseExperiences({
123
+ ...opts.experiences,
124
+ apiUrl: base,
125
+ appSlug: slug,
126
+ storage: opts.storage,
127
+ onError: opts.onError,
128
+ getContext: () => {
129
+ const {
130
+ userAttributes: attributes,
131
+ ...context
132
+ } = getContext();
133
+ return {
134
+ ...context,
135
+ attributes
136
+ };
137
+ }
138
+ }) : undefined;
139
+ const refreshContext = () => {
140
+ experiences?.reset();
141
+ invalidateConfigContext();
142
+ return fetchConfig();
143
+ };
113
144
  const client = {
114
145
  get deviceId() {
115
146
  return deviceId;
@@ -120,21 +151,38 @@ export function initPulse(opts) {
120
151
  trackIdempotent,
121
152
  flush: flushEvents,
122
153
  setUser: (nextUserId, attributes) => {
154
+ if (activeClient !== client) return;
155
+ userOverridden = true;
123
156
  userId = nextUserId?.trim() || undefined;
124
- userAttributes = sanitizeAttributes(attributes);
157
+ userAttributes = normalizePulseAttributes(attributes);
158
+ void refreshContext();
125
159
  },
126
160
  clearUser: () => {
161
+ if (activeClient !== client) return;
162
+ userOverridden = true;
127
163
  userId = undefined;
128
- userAttributes = undefined;
164
+ userAttributes = {};
165
+ void refreshContext();
129
166
  },
167
+ identify: profile => {
168
+ if (activeClient !== client) return;
169
+ userOverridden = true;
170
+ userId = profile.id.trim() || undefined;
171
+ userAttributes = userId ? pulseProfileAttributes(profile) : {};
172
+ void refreshContext();
173
+ },
174
+ refreshContext: () => activeClient === client ? refreshContext() : Promise.resolve(false),
175
+ decisions: experiences?.client,
130
176
  setAnalyticsConsent: granted => {
131
177
  consentOverride = granted;
132
178
  },
133
179
  resetInstallId: () => {
180
+ if (activeClient !== client) return deviceId;
134
181
  deviceId = randomId();
135
182
  try {
136
183
  opts.storage?.set(deviceStorageKey, deviceId);
137
184
  } catch {/* memory-only fallback */}
185
+ void refreshContext();
138
186
  return deviceId;
139
187
  },
140
188
  health: () => ({
@@ -154,6 +202,7 @@ export function initPulse(opts) {
154
202
  },
155
203
  dispose: async () => {
156
204
  stopRefresh();
205
+ await experiences?.dispose();
157
206
  if (activeClient !== client) return;
158
207
  await flushEvents();
159
208
  // Another init may have taken ownership while this network flush was pending.
@@ -161,11 +210,13 @@ export function initPulse(opts) {
161
210
  disposeTracking();
162
211
  activeClient = null;
163
212
  stopActiveRefresh = null;
213
+ stopActiveExperiences = null;
164
214
  }
165
215
  }
166
216
  };
167
217
  activeClient = client;
168
218
  stopActiveRefresh = stopRefresh;
219
+ stopActiveExperiences = experiences?.dispose ?? null;
169
220
  return client;
170
221
  }
171
222
 
@@ -176,7 +227,7 @@ export function initPulse(opts) {
176
227
  */
177
228
  export async function initPulseAsync(opts) {
178
229
  const slug = opts.appSlug.trim();
179
- const keys = [`pulse.${slug}.device-id`, `pulse.${slug}.config.v1`, `pulse.${slug}.events.v1`, `pulse.${slug}.events.v1.analytics-installation-id`, `pulse.${slug}.exposures.v1`, DEVICE_ID_KEY];
230
+ const keys = [`pulse.${slug}.device-id`, `pulse.${slug}.config.v1`, `pulse.${slug}.events.v1`, `pulse.${slug}.events.v1.analytics-installation-id`, `pulse.${slug}.exposures.v1`, `pulse.${slug}.outcomes.v1`, DEVICE_ID_KEY];
180
231
  const loaded = await Promise.all(keys.map(async key => [key, await opts.storage.getItem(key)]));
181
232
  const memory = new Map(loaded.filter(entry => entry[1] !== null));
182
233
  const storage = {
@@ -222,11 +273,6 @@ function resolveDeviceId(storage, key = DEVICE_ID_KEY) {
222
273
  return randomId();
223
274
  }
224
275
  }
225
- function sanitizeAttributes(attributes) {
226
- if (!attributes) return undefined;
227
- const clean = Object.fromEntries(Object.entries(attributes).filter(([key, value]) => key.trim() !== '' && typeof value === 'string').slice(0, 50));
228
- return Object.keys(clean).length > 0 ? clean : undefined;
229
- }
230
276
  function randomId() {
231
277
  const bytes = new Uint8Array(16);
232
278
  const crypto = globalThis.crypto;
@@ -1 +1 @@
1
- {"version":3,"names":["configureConfig","fetchConfig","startConfigAutoRefresh","getConfigInfo","getConfigBoolean","getConfigNumber","getConfigString","getConfigJson","getExposureDeliveryInfo","configureTracking","disposeTracking","flushEvents","getTrackingInfo","track","trackIdempotent","DEVICE_ID_KEY","activeClient","stopActiveRefresh","initPulse","opts","base","apiUrl","replace","slug","appSlug","trim","configUrl","trackUrl","deviceStorageKey","deviceId","resolveDeviceId","storage","platform","detectPlatform","osVersion","detectOsVersion","appVersion","detectAppVersion","language","detectLanguage","userId","userAttributes","consentOverride","analyticsConsent","undefined","hasConsent","getContext","getUserId","getUserAttributes","url","defaults","storageKey","exposureStorageKey","reportExposure","pollIntervalMs","onError","signingPublicKey","signingKeyId","requireSignature","requireConfigSignature","verifySignature","verifyConfigSignature","verifyWithNativeKey","identityMode","eventIdentityMode","flushIntervalMs","propertyAllowlist","eventPropertyAllowlist","redactProperties","redactEventProperties","appState","onIgnored","onIgnoredEvents","Error","stopRefresh","client","flush","setUser","nextUserId","attributes","sanitizeAttributes","clearUser","setAnalyticsConsent","granted","resetInstallId","randomId","set","health","config","events","exposures","boolean","number","string","json","refresh","dispose","initPulseAsync","keys","loaded","Promise","all","map","key","getItem","memory","Map","filter","entry","supportsDurableSyncWrites","getString","get","value","resolve","setItem","catch","error","existing","minted","clean","Object","fromEntries","entries","slice","length","bytes","Uint8Array","crypto","globalThis","getRandomValues","i","Math","floor","random","hex","Array","from","b","toString","padStart","join","rn","require","Platform","OS","version","Version","String","default","getVersion","canonicalPayload","signature","updates","verifyConfigSignatureAsync","localize","getLocales","languageTag","Intl","DateTimeFormat","resolvedOptions","locale"],"sourceRoot":"../../src","sources":["init.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["configureConfig","fetchConfig","startConfigAutoRefresh","getConfigInfo","getConfigBoolean","getConfigNumber","getConfigString","getConfigJson","getExposureDeliveryInfo","invalidateConfigContext","normalizePulseAttributes","pulseProfileAttributes","createPulseExperiences","configureTracking","disposeTracking","flushEvents","getTrackingInfo","track","trackIdempotent","DEVICE_ID_KEY","activeClient","stopActiveRefresh","stopActiveExperiences","initPulse","opts","base","apiUrl","replace","slug","appSlug","trim","configUrl","trackUrl","deviceStorageKey","deviceId","resolveDeviceId","storage","platform","detectPlatform","osVersion","detectOsVersion","appVersion","detectAppVersion","language","detectLanguage","userId","userAttributes","userOverridden","consentOverride","analyticsConsent","undefined","hasConsent","getContext","profile","getUserProfile","id","getUserId","getUserAttributes","url","defaults","storageKey","exposureStorageKey","reportExposure","pollIntervalMs","onError","signingPublicKey","signingKeyId","requireSignature","requireConfigSignature","verifySignature","verifyConfigSignature","verifyWithNativeKey","identityMode","eventIdentityMode","flushIntervalMs","propertyAllowlist","eventPropertyAllowlist","redactProperties","redactEventProperties","appState","onIgnored","onIgnoredEvents","Error","stopRefresh","experiences","attributes","context","refreshContext","reset","client","flush","setUser","nextUserId","clearUser","identify","Promise","resolve","decisions","setAnalyticsConsent","granted","resetInstallId","randomId","set","health","config","events","exposures","boolean","number","string","json","refresh","dispose","initPulseAsync","keys","loaded","all","map","key","getItem","memory","Map","filter","entry","supportsDurableSyncWrites","getString","get","value","setItem","catch","error","existing","minted","bytes","Uint8Array","crypto","globalThis","getRandomValues","i","length","Math","floor","random","hex","Array","from","b","toString","padStart","join","slice","rn","require","Platform","OS","version","Version","String","default","getVersion","canonicalPayload","signature","updates","verifyConfigSignatureAsync","localize","getLocales","languageTag","Intl","DateTimeFormat","resolvedOptions","locale"],"sourceRoot":"../../src","sources":["init.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ /** Scalar signals supplied by the host app. Never send contact details or credentials. */
2
+
3
+ /** Normalize the wire format shared by config and decisions. pulse.* belongs to the server. */
4
+ export function normalizePulseAttributes(attributes) {
5
+ const result = {};
6
+ for (const [rawKey, value] of Object.entries(attributes ?? {})) {
7
+ const key = rawKey.trim();
8
+ if (!key || key.length > 128 || key.toLowerCase().startsWith('pulse.') || value == null) continue;
9
+ let scalar;
10
+ if (value instanceof Date) {
11
+ if (!Number.isFinite(value.getTime())) continue;
12
+ scalar = value.toISOString();
13
+ } else if (typeof value === 'number') {
14
+ if (!Number.isFinite(value)) continue;
15
+ scalar = String(value);
16
+ } else if (typeof value === 'string' || typeof value === 'boolean') scalar = String(value);else continue;
17
+ if (scalar.length > 1024) continue;
18
+ result[key] = scalar;
19
+ if (Object.keys(result).length >= 64) break;
20
+ }
21
+ return result;
22
+ }
23
+ export function pulseProfileAttributes(profile) {
24
+ const attributes = normalizePulseAttributes(profile?.attributes);
25
+ if (profile?.registrationDate != null) {
26
+ // An explicit invalid backend date must not fall back to a conflicting custom value.
27
+ for (const key of Object.keys(attributes)) if (key.toLowerCase() === 'registeredat') delete attributes[key];
28
+ const raw = profile.registrationDate;
29
+ const date = raw instanceof Date ? raw : /^\d{4}-\d{2}-\d{2}(T.*(Z|[+-]\d{2}:\d{2}))?$/i.test(raw) ? new Date(raw) : null;
30
+ if (date && Number.isFinite(date.getTime())) {
31
+ if (Object.keys(attributes).length >= 64) delete attributes[Object.keys(attributes)[63]];
32
+ attributes.registeredAt = date.toISOString();
33
+ }
34
+ }
35
+ return attributes;
36
+ }
37
+ //# sourceMappingURL=subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizePulseAttributes","attributes","result","rawKey","value","Object","entries","key","trim","length","toLowerCase","startsWith","scalar","Date","Number","isFinite","getTime","toISOString","String","keys","pulseProfileAttributes","profile","registrationDate","raw","date","test","registeredAt"],"sourceRoot":"../../src","sources":["subject.ts"],"mappings":"AAAA;;AASA;AACA,OAAO,SAASA,wBAAwBA,CACtCC,UAAgD,EACxB;EACxB,MAAMC,MAA8B,GAAG,CAAC,CAAC;EACzC,KAAK,MAAM,CAACC,MAAM,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE;IAC9D,MAAMM,GAAG,GAAGJ,MAAM,CAACK,IAAI,CAAC,CAAC;IACzB,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACE,MAAM,GAAG,GAAG,IAAIF,GAAG,CAACG,WAAW,CAAC,CAAC,CAACC,UAAU,CAAC,QAAQ,CAAC,IAAIP,KAAK,IAAI,IAAI,EAAE;IACzF,IAAIQ,MAAc;IAClB,IAAIR,KAAK,YAAYS,IAAI,EAAE;MACzB,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACX,KAAK,CAACY,OAAO,CAAC,CAAC,CAAC,EAAE;MACvCJ,MAAM,GAAGR,KAAK,CAACa,WAAW,CAAC,CAAC;IAC9B,CAAC,MAAM,IAAI,OAAOb,KAAK,KAAK,QAAQ,EAAE;MACpC,IAAI,CAACU,MAAM,CAACC,QAAQ,CAACX,KAAK,CAAC,EAAE;MAC7BQ,MAAM,GAAGM,MAAM,CAACd,KAAK,CAAC;IACxB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAEQ,MAAM,GAAGM,MAAM,CAACd,KAAK,CAAC,CAAC,KACtF;IACL,IAAIQ,MAAM,CAACH,MAAM,GAAG,IAAI,EAAE;IAC1BP,MAAM,CAACK,GAAG,CAAC,GAAGK,MAAM;IACpB,IAAIP,MAAM,CAACc,IAAI,CAACjB,MAAM,CAAC,CAACO,MAAM,IAAI,EAAE,EAAE;EACxC;EACA,OAAOP,MAAM;AACf;AAEA,OAAO,SAASkB,sBAAsBA,CAACC,OAA0B,EAA0B;EACzF,MAAMpB,UAAU,GAAGD,wBAAwB,CAACqB,OAAO,EAAEpB,UAAU,CAAC;EAChE,IAAIoB,OAAO,EAAEC,gBAAgB,IAAI,IAAI,EAAE;IACrC;IACA,KAAK,MAAMf,GAAG,IAAIF,MAAM,CAACc,IAAI,CAAClB,UAAU,CAAC,EAAE,IAAIM,GAAG,CAACG,WAAW,CAAC,CAAC,KAAK,cAAc,EAAE,OAAOT,UAAU,CAACM,GAAG,CAAC;IAC3G,MAAMgB,GAAG,GAAGF,OAAO,CAACC,gBAAgB;IACpC,MAAME,IAAI,GAAGD,GAAG,YAAYV,IAAI,GAAGU,GAAG,GAAG,+CAA+C,CAACE,IAAI,CAACF,GAAG,CAAC,GAAG,IAAIV,IAAI,CAACU,GAAG,CAAC,GAAG,IAAI;IACzH,IAAIC,IAAI,IAAIV,MAAM,CAACC,QAAQ,CAACS,IAAI,CAACR,OAAO,CAAC,CAAC,CAAC,EAAE;MAC3C,IAAIX,MAAM,CAACc,IAAI,CAAClB,UAAU,CAAC,CAACQ,MAAM,IAAI,EAAE,EAAE,OAAOR,UAAU,CAACI,MAAM,CAACc,IAAI,CAAClB,UAAU,CAAC,CAAC,EAAE,CAAC,CAAE;MACzFA,UAAU,CAACyB,YAAY,GAAGF,IAAI,CAACP,WAAW,CAAC,CAAC;IAC9C;EACF;EACA,OAAOhB,UAAU;AACnB","ignoreList":[]}
@@ -132,6 +132,8 @@ export interface ConfigOptions {
132
132
  export declare function configureConfig(opts: ConfigOptions): void;
133
133
  /** Merge more defaults after configure (a late-loading module registering its own). */
134
134
  export declare function setConfigDefaults(more: Record<string, ConfigValue>): void;
135
+ /** Invalidate account-scoped values and pending responses before an identity change refresh. */
136
+ export declare function invalidateConfigContext(): void;
135
137
  /**
136
138
  * Fetch, and adopt the payload if it changed. Returns true when new values were
137
139
  * applied — false for "nothing changed" (304) and false for a failure, which are
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export interface DecisionContext {
9
9
  language?: string;
10
10
  osVersion?: string;
11
11
  attributes?: Record<string, string>;
12
+ /** Versioned action kinds this exact app build has wired an executor for. */
13
+ capabilities?: string[];
12
14
  }
13
15
  export interface DecisionAction {
14
16
  kind: string;
@@ -23,6 +25,12 @@ export interface PulseDecision {
23
25
  reasonCode: string;
24
26
  policyKey?: string | null;
25
27
  policyVersion?: number | null;
28
+ /** Exact measured experiment to tag on downstream product events. */
29
+ experimentKey?: string | null;
30
+ /** ISO timestamp bounding the client's offline assignment cache. */
31
+ experimentAssignmentExpiresAt?: string | null;
32
+ /** Stable control/treatment arm when the policy is linked to a measured experiment. */
33
+ variant?: string | null;
26
34
  action?: DecisionAction | null;
27
35
  }
28
36
  export interface DecisionHandlerResult {
@@ -38,6 +46,10 @@ export interface PulseDecisionClientOptions {
38
46
  timeoutMs?: number;
39
47
  /** Safe default. User-facing execution needs an explicit per-app opt-in. */
40
48
  executionMode?: 'shadow-only' | 'allow-live';
49
+ /** Rechecked after every response; use a remote flag to revoke live execution. */
50
+ isExecutionAllowed?: () => boolean;
51
+ /** Local lifecycle revision. Never sent to the server. */
52
+ getContextRevision?: () => number;
41
53
  handlers?: Record<string, DecisionHandler>;
42
54
  /** Persists terminal outcomes across process death and offline periods. */
43
55
  storage?: ConfigStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../src/decisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../src/decisions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AACjH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1G,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AAExE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oEAAoE;IACpE,6BAA6B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,eAAe,GAAG,CAC5B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,aAAa,KACpB,IAAI,GAAG,qBAAqB,GAAG,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC;AAE1E,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7D,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC7C,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAChF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClH,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,mBAAmB,IAAI,MAAM,CAAC;IAC9B,mBAAmB,IAAI,mBAAmB,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAaD,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CA+JlG;AA+ED,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type DecisionAction, type DecisionContext, type DecisionHandler, type PulseDecisionClient } from './decisions';
2
+ import { type ConfigStorage } from './config';
3
+ export interface PulseExperienceAction {
4
+ /** Exact capability, e.g. ad_pressure_profile:v1 or game_economy:v2. */
5
+ capability: string;
6
+ validate: (action: DecisionAction) => boolean;
7
+ execute: DecisionHandler;
8
+ /** Revoke persistent effects when the remote gate closes, identity changes, or SDK disposes. */
9
+ reset?: () => void;
10
+ }
11
+ export interface PulseExperienceOptions {
12
+ executionEnabledKey: string;
13
+ actions: Record<string, PulseExperienceAction>;
14
+ }
15
+ export interface PulseExperienceClient {
16
+ client: PulseDecisionClient;
17
+ capabilities: string[];
18
+ reset: () => void;
19
+ dispose: () => Promise<void>;
20
+ }
21
+ export declare function createPulseExperiences(options: PulseExperienceOptions & {
22
+ apiUrl: string;
23
+ appSlug: string;
24
+ getContext: () => DecisionContext;
25
+ storage?: ConfigStorage;
26
+ onError?: (error: unknown) => void;
27
+ }): PulseExperienceClient;
28
+ //# sourceMappingURL=experiences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiences.d.ts","sourceRoot":"","sources":["../../src/experiences.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnJ,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC;IAC9C,OAAO,EAAE,eAAe,CAAC;IACzB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,eAAe,CAAC;IAClC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,GAAG,qBAAqB,CAyCxB"}
@@ -6,6 +6,8 @@ export * from './config';
6
6
  export * from './track';
7
7
  export * from './init';
8
8
  export * from './decisions';
9
+ export * from './subject';
10
+ export * from './experiences';
9
11
  export * from './links';
10
12
  export * from './nativeAttribution';
11
13
  export { DeferredLinkPasteButton } from './DeferredLinkPasteButton';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC"}
@@ -24,6 +24,9 @@
24
24
  * installs — a targeting bug that looks like a rollout that "did not work".
25
25
  */
26
26
  import { fetchConfig, type ConfigStorage, type ConfigValue, type ConfigSignature, getConfigInfo, getConfigBoolean, getConfigNumber, getConfigString, getConfigJson, getExposureDeliveryInfo } from './config';
27
+ import { type PulseUserProfile } from './subject';
28
+ import { type PulseExperienceOptions } from './experiences';
29
+ import type { PulseDecisionClient } from './decisions';
27
30
  import { getTrackingInfo, type TrackedEventInput } from './track';
28
31
  export interface InitPulseOptions {
29
32
  /** Where Pulse lives, e.g. https://pulse.example.com — no path. */
@@ -54,6 +57,10 @@ export interface InitPulseOptions {
54
57
  getUserId?: () => string | undefined;
55
58
  /** Attributes a rule can target — a plan, a storefront. Keep them few and stable. */
56
59
  getUserAttributes?: () => Record<string, string> | undefined;
60
+ /** Typed account context. registrationDate maps to the dashboard's registeredAt field. */
61
+ getUserProfile?: () => PulseUserProfile | undefined;
62
+ /** Versioned application actions controlled through a remote execution gate. */
63
+ experiences?: PulseExperienceOptions;
57
64
  /** Initial analytics consent or a live consent reader. Defaults to granted for compatibility. */
58
65
  analyticsConsent?: boolean | (() => boolean);
59
66
  /** Privacy guardrails applied to every track() call. */
@@ -103,6 +110,10 @@ export interface PulseClient {
103
110
  flush: () => Promise<number>;
104
111
  setUser: (userId?: string, attributes?: Record<string, string>) => void;
105
112
  clearUser: () => void;
113
+ identify: (profile: PulseUserProfile) => void;
114
+ /** Call after external profile readers change; clears old config and revokes applied effects. */
115
+ refreshContext: () => Promise<boolean>;
116
+ decisions?: PulseDecisionClient;
106
117
  setAnalyticsConsent: (granted: boolean) => void;
107
118
  resetInstallId: () => string;
108
119
  health: () => PulseHealth;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAEL,WAAW,EAGX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,aAAa,EACb,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAIL,eAAe,EAGf,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IAEf,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAEhB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEvC;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAErC,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAE7D,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAE7C,wDAAwD;IACxD,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE1C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,SAAS,GAAG,wBAAwB,CAAC;IAEzD,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,qBAAqB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7G,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,yEAAyE;IACzE,QAAQ,CAAC,EAAE;QAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK;YAAE,MAAM,EAAE,MAAM,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;IAE9G,qFAAqF;IACrF,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE7C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACzC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAC3C,SAAS,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;IACtD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAChF,eAAe,EAAE,CACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAClC,IAAI,CAAC,EAAE,IAAI,KACR,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACxE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,mBAAmB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,WAAW,CAAC;IAC1B,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,gBAAgB,CAAC;QACjC,MAAM,EAAE,OAAO,eAAe,CAAC;QAC/B,MAAM,EAAE,OAAO,eAAe,CAAC;QAC/B,IAAI,EAAE,OAAO,aAAa,CAAC;QAC3B,OAAO,EAAE,OAAO,WAAW,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAKD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CA8I7D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,GACvE,OAAO,CAAC,WAAW,CAAC,CA2BtB"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Scalar signals supplied by the host app. Never send contact details or credentials. */
2
+ export type PulseAttributeValue = string | number | boolean | Date | null | undefined;
3
+ export interface PulseUserProfile {
4
+ id: string;
5
+ /** Backend account creation time, never installation/update time. */
6
+ registrationDate?: string | Date | null;
7
+ attributes?: Record<string, PulseAttributeValue>;
8
+ }
9
+ /** Normalize the wire format shared by config and decisions. pulse.* belongs to the server. */
10
+ export declare function normalizePulseAttributes(attributes?: Record<string, PulseAttributeValue>): Record<string, string>;
11
+ export declare function pulseProfileAttributes(profile?: PulseUserProfile): Record<string, string>;
12
+ //# sourceMappingURL=subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/subject.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AACtF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAC/C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAazF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulse-updates",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "Pulse app-experience SDK for React Native: updates, config, experiments, events, decisions and first-party links",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/config.ts CHANGED
@@ -245,6 +245,25 @@ export function setConfigDefaults(more: Record<string, ConfigValue>): void {
245
245
  defaults = { ...defaults, ...more };
246
246
  }
247
247
 
248
+ /** Invalidate account-scoped values and pending responses before an identity change refresh. */
249
+ export function invalidateConfigContext(): void {
250
+ configGeneration += 1;
251
+ inFlight = null;
252
+ values = {};
253
+ experiments = [];
254
+ pending = null;
255
+ etag = null;
256
+ fetchedAt = 0;
257
+ verifiedAt = 0;
258
+ source = 'defaults';
259
+ signatureStatus = 'not-configured';
260
+ signatureKeyId = null;
261
+ reportedExposure = null;
262
+ exposureSending = false;
263
+ if (options) writeCache(options.storage, { values: {}, experiments: [], etag: null, fetchedAt: 0 }, options.storageKey);
264
+ notify();
265
+ }
266
+
248
267
  /**
249
268
  * Fetch, and adopt the payload if it changed. Returns true when new values were
250
269
  * applied — false for "nothing changed" (304) and false for a failure, which are