pulse-updates 1.2.5 → 1.3.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 (58) hide show
  1. package/README.md +55 -4
  2. package/android/build.gradle +1 -0
  3. package/android/consumer-rules.pro +21 -0
  4. package/android/src/main/java/app/pulse/updates/PulseUpdatesPackage.kt +5 -1
  5. package/android/src/main/java/app/pulse/updates/attribution/DeferredHandoffReferrerParser.kt +47 -0
  6. package/android/src/main/java/app/pulse/updates/attribution/InstallReferrerReflection.kt +155 -0
  7. package/android/src/main/java/app/pulse/updates/attribution/PulseAttributionModule.kt +229 -0
  8. package/ios/PulseAttribution/PulseAttribution.m +29 -0
  9. package/ios/PulseAttribution/PulseDeferredLinkPasteButtonComponentView.h +13 -0
  10. package/ios/PulseAttribution/PulseDeferredLinkPasteButtonComponentView.mm +81 -0
  11. package/ios/PulseAttribution/PulseDeferredLinkPasteButtonManager.m +28 -0
  12. package/ios/PulseAttribution/PulseDeferredLinkPasteView.h +21 -0
  13. package/ios/PulseAttribution/PulseDeferredLinkPasteView.m +231 -0
  14. package/lib/commonjs/DeferredLinkPasteButton.js +64 -0
  15. package/lib/commonjs/DeferredLinkPasteButton.js.map +1 -0
  16. package/lib/commonjs/NativePulseAttribution.js +13 -0
  17. package/lib/commonjs/NativePulseAttribution.js.map +1 -0
  18. package/lib/commonjs/PulseDeferredLinkPasteButtonNativeComponent.js +13 -0
  19. package/lib/commonjs/PulseDeferredLinkPasteButtonNativeComponent.js.map +1 -0
  20. package/lib/commonjs/index.js +33 -1
  21. package/lib/commonjs/index.js.map +1 -1
  22. package/lib/commonjs/links.js +944 -0
  23. package/lib/commonjs/links.js.map +1 -0
  24. package/lib/commonjs/nativeAttribution.js +29 -0
  25. package/lib/commonjs/nativeAttribution.js.map +1 -0
  26. package/lib/module/DeferredLinkPasteButton.js +56 -0
  27. package/lib/module/DeferredLinkPasteButton.js.map +1 -0
  28. package/lib/module/NativePulseAttribution.js +9 -0
  29. package/lib/module/NativePulseAttribution.js.map +1 -0
  30. package/lib/module/PulseDeferredLinkPasteButtonNativeComponent.js +7 -0
  31. package/lib/module/PulseDeferredLinkPasteButtonNativeComponent.js.map +1 -0
  32. package/lib/module/index.js +3 -0
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/module/links.js +933 -0
  35. package/lib/module/links.js.map +1 -0
  36. package/lib/module/nativeAttribution.js +21 -0
  37. package/lib/module/nativeAttribution.js.map +1 -0
  38. package/lib/typescript/DeferredLinkPasteButton.d.ts +22 -0
  39. package/lib/typescript/DeferredLinkPasteButton.d.ts.map +1 -0
  40. package/lib/typescript/NativePulseAttribution.d.ts +11 -0
  41. package/lib/typescript/NativePulseAttribution.d.ts.map +1 -0
  42. package/lib/typescript/PulseDeferredLinkPasteButtonNativeComponent.d.ts +16 -0
  43. package/lib/typescript/PulseDeferredLinkPasteButtonNativeComponent.d.ts.map +1 -0
  44. package/lib/typescript/index.d.ts +4 -0
  45. package/lib/typescript/index.d.ts.map +1 -1
  46. package/lib/typescript/links.d.ts +142 -0
  47. package/lib/typescript/links.d.ts.map +1 -0
  48. package/lib/typescript/nativeAttribution.d.ts +9 -0
  49. package/lib/typescript/nativeAttribution.d.ts.map +1 -0
  50. package/package.json +17 -2
  51. package/pulse-updates.podspec +8 -2
  52. package/scripts/publish.mjs +5 -0
  53. package/src/DeferredLinkPasteButton.tsx +98 -0
  54. package/src/NativePulseAttribution.ts +12 -0
  55. package/src/PulseDeferredLinkPasteButtonNativeComponent.ts +18 -0
  56. package/src/index.ts +4 -0
  57. package/src/links.ts +1232 -0
  58. package/src/nativeAttribution.ts +25 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OPAQUE_TOKEN","PUBLIC_EXPOSURE","INSTALL_ATTEMPT_ID","APP_IDENTITY","LOCALE","DEFAULT_PREFIXES","DEFAULT_QUERY_KEYS","Set","MATCH_BASES","CAPTURE_BASES","STATUSES","INSTALL_REFERRER_STATUSES","DEFAULT_ACTIONS","DEFAULT_SENSITIVE_ACTIONS","DEFAULT_STORAGE_KEY","DEFAULT_REQUEST_TIMEOUT_MS","DEFAULT_RETRY_BASE_MS","DEFAULT_RETRY_MAX_MS","DEFAULT_TOKEN_MAX_AGE_MS","DEFAULT_RECENT_INSTALL_MAX_AGE_MS","MAX_APPLIED_IDS","MAX_NOTIFIED_OUTCOMES","MAX_PERSISTED_BYTES","emptyState","version","status","pending","lastAppliedId","appliedIds","notifiedOutcomes","firstOpen","installAttemptId","completed","attemptedAt","attempts","nextRetryAt","isOpaqueDeferredLinkToken","value","test","normalizeDeferredHandoffToken","raw","acceptedPrefixes","candidate","trim","lower","toLowerCase","prefix","find","normalized","length","startsWith","slice","extractDeferredHandoffToken","url","parsed","URL","protocol","queryCandidates","key","searchParams","entries","has","push","segments","hostname","pathname","split","filter","Boolean","index","marker","decodeURIComponent","normalizeAndroidInstallReferrerResult","retryable","Number","isFinite","Math","max","min","trunc","expectedRetryable","token","createPulseLinkClient","options","resolverBaseUrl","normalizeBaseUrl","Error","allowedDeepLinkPrefixes","map","allowedActions","sensitiveActions","now","Date","fetcher","fetch","globalThis","appSlug","normalizeAppSlug","explicitStorageKey","storageKey","storage","requestTimeoutMs","boundedDuration","retryBaseMs","retryMaxMs","tokenMaxAgeMs","recentInstallMaxAgeMs","isPublicToken","state","readState","disposed","processing","processRequested","retryTimer","accountRetryAt","accountAttempts","lastFirstOpenContext","unsubscribeAccount","listeners","reportError","error","onError","snapshot","persistAndNotify","writeState","listener","onStateChange","scheduleWake","patchState","patch","patchFirstOpen","isAccountReady","schedulePendingRetry","delay","scheduleFirstOpenRetry","scheduleAccountRetry","clearPendingAsTerminal","emitOutcome","link","name","transitionKey","stableOutcomeKey","id","includes","event","matchBasis","confidence","campaignId","undefined","experimentId","variantId","occurredAt","toISOString","result","onOutcome","catch","reportResolverOutcomes","postResolverOutcome","applyResolved","sourceToken","action","matchGuaranteed","deepLink","isAllowedDeepLink","onAction","applied","onDeepLink","newlyApplied","newlyAppliedSet","stillPending","process","resolvePublic","basis","kind","response","withTimeout","encodeURIComponent","method","headers","Accept","ok","normalizeResolved","json","processOnce","receivedAt","publicResult","accountBridge","claim","normalizedClaim","claimed","fallbackId","normalizedPending","pendingLink","run","ownedPromise","then","capture","rawToken","matchFirstOpen","context","isEligibleFirstOpen","makeInstallAttemptId","randomUUID","body","appBundleId","platform","locale","normalizeLocale","matchUrlOf","JSON","stringify","replace","captureAndroidInstallReferrer","bridge","getDeferredHandoff","clearTimeout","autoRetry","candidates","next","setTimeout","maybeTimer","unref","subscribeAccountState","captureUrl","getState","subscribe","add","delete","dispose","clear","reset","createDeferredLinkClient","base","slug","fallback","prefixes","some","clampConfidence","number","linkId","first","second","code","charCodeAt","imul","toString","padStart","boundedMetadata","String","fallbackBasis","rawBasis","guaranteedDefault","rawId","expiresAt","expiry","getTime","source","maxAgeMs","installedAt","custom","crypto","hex","floor","random","input","init","timeoutMs","controller","AbortController","timer","abort","signal","getString","parse","pendingValue","pendingToken","pendingBasis","safeTimestamp","safeInteger","Array","isArray","lastApplied","firstValue","attemptId","set"],"sourceRoot":"../../src","sources":["links.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ import NativePulseAttribution from './NativePulseAttribution';
2
+ /** Returns null when the installed binary predates Pulse Links. Never use getEnforcing here. */
3
+ export function getPulseAttributionBridge() {
4
+ return NativePulseAttribution;
5
+ }
6
+
7
+ /**
8
+ * Reads Play Install Referrer through the optional native bridge and captures a valid handoff.
9
+ * The native module returns FEATURE_NOT_SUPPORTED when the store-specific Google library is absent.
10
+ */
11
+ export async function recoverAndroidInstallReferrer(client, bridge = getPulseAttributionBridge()) {
12
+ if (!bridge) {
13
+ return {
14
+ status: 'FEATURE_NOT_SUPPORTED',
15
+ retryable: false,
16
+ attempts: 0
17
+ };
18
+ }
19
+ return client.captureAndroidInstallReferrer(bridge);
20
+ }
21
+ //# sourceMappingURL=nativeAttribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativePulseAttribution","getPulseAttributionBridge","recoverAndroidInstallReferrer","client","bridge","status","retryable","attempts","captureAndroidInstallReferrer"],"sourceRoot":"../../src","sources":["nativeAttribution.ts"],"mappings":"AAAA,OAAOA,sBAAsB,MAAM,0BAA0B;AAO7D;AACA,OAAO,SAASC,yBAAyBA,CAAA,EAAwC;EAC/E,OAAOD,sBAAsB;AAC/B;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeE,6BAA6BA,CACjDC,MAA0B,EAC1BC,MAA2C,GAAGH,yBAAyB,CAAC,CAAC,EAClC;EACvC,IAAI,CAACG,MAAM,EAAE;IACX,OAAO;MAAEC,MAAM,EAAE,uBAAuB;MAAEC,SAAS,EAAE,KAAK;MAAEC,QAAQ,EAAE;IAAE,CAAC;EAC3E;EACA,OAAOJ,MAAM,CAACK,6BAA6B,CAACJ,MAAM,CAAC;AACrD","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { type ColorValue, type StyleProp, type ViewStyle } from 'react-native';
3
+ export interface DeferredLinkPasteButtonProps {
4
+ /** Called only after an explicit UIKit paste action and native+JS token validation. */
5
+ onHandoff: (token: string) => void;
6
+ label?: string;
7
+ foregroundColor?: ColorValue;
8
+ /** Closed protocol prefix including the trailing colon. Defaults to `encore_handoff:`. */
9
+ handoffPrefix?: string;
10
+ style?: StyleProp<ViewStyle>;
11
+ accessibilityLabel?: string;
12
+ accessibilityHint?: string;
13
+ /** Inert content for Android, web or SSR. Android attribution uses Install Referrer. */
14
+ fallback?: React.ReactNode;
15
+ }
16
+ /**
17
+ * Explicit one-tap iOS recovery. iOS 16+ is backed by UIPasteControl; iOS 13-15 reads the
18
+ * pasteboard only inside the fallback button's user tap handler. It never reads on mount,
19
+ * foreground, lifecycle callbacks or timers, and native emits only a validated opaque token.
20
+ */
21
+ export declare const DeferredLinkPasteButton: React.FC<DeferredLinkPasteButtonProps>;
22
+ //# sourceMappingURL=DeferredLinkPasteButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeferredLinkPasteButton.d.ts","sourceRoot":"","sources":["../../src/DeferredLinkPasteButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAgCtB,MAAM,WAAW,4BAA4B;IAC3C,uFAAuF;IACvF,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CA6B1E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { TurboModule } from 'react-native';
2
+ /**
3
+ * Separate from PulseUpdates on purpose: adding install-attribution native code must be visible to
4
+ * Pulse's OTA native-capability preflight and therefore requires a new store binary.
5
+ */
6
+ export interface Spec extends TurboModule {
7
+ getDeferredHandoff(): Promise<unknown>;
8
+ }
9
+ declare const _default: Spec | null;
10
+ export default _default;
11
+ //# sourceMappingURL=NativePulseAttribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativePulseAttribution.d.ts","sourceRoot":"","sources":["../../src/NativePulseAttribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;;AAED,wBAAiE"}
@@ -0,0 +1,16 @@
1
+ /** iOS-only Fabric spec for explicit, privacy-safe install handoff recovery. */
2
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
3
+ import type { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';
4
+ export interface NativeProps extends ViewProps {
5
+ label?: string;
6
+ foregroundColor?: ColorValue;
7
+ /** Defaults to the phase-one Encore contract. The native view validates this closed grammar. */
8
+ handoffPrefix?: string;
9
+ /** Emits only the validated opaque token, never the clipboard text or prefix. */
10
+ onHandoff: DirectEventHandler<Readonly<{
11
+ token: string;
12
+ }>>;
13
+ }
14
+ declare const _default: HostComponent<NativeProps>;
15
+ export default _default;
16
+ //# sourceMappingURL=PulseDeferredLinkPasteButtonNativeComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PulseDeferredLinkPasteButtonNativeComponent.d.ts","sourceRoot":"","sources":["../../src/PulseDeferredLinkPasteButtonNativeComponent.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,gGAAgG;IAChG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC5D;wBAKI,aAAa,CAAC,WAAW,CAAC;AAH/B,wBAGgC"}
@@ -6,4 +6,8 @@ export * from './config';
6
6
  export * from './track';
7
7
  export * from './init';
8
8
  export * from './decisions';
9
+ export * from './links';
10
+ export * from './nativeAttribution';
11
+ export { DeferredLinkPasteButton } from './DeferredLinkPasteButton';
12
+ export type { DeferredLinkPasteButtonProps } from './DeferredLinkPasteButton';
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Pulse Links - a headless, app-neutral deferred-link client.
3
+ *
4
+ * Encore owns the phase-one HTTP resolver and attribution ledger. Pulse owns the reusable
5
+ * client boundary: capture, durable pending state, retry/idempotence, safe application and the
6
+ * privacy-preserving first-open request. Billing/account SDKs integrate only through the narrow
7
+ * optional account bridge below.
8
+ */
9
+ import type { ConfigStorage } from './config';
10
+ export type DeferredLinkAction = 'open_home' | 'open_premium' | 'manage_subscription' | 'refresh_entitlement';
11
+ export type DeferredLinkMatchBasis = 'direct_token' | 'android_install_referrer' | 'ios_user_paste' | 'account_bound' | 'unique_probabilistic' | 'unmatched';
12
+ export type DeferredLinkCaptureBasis = Extract<DeferredLinkMatchBasis, 'direct_token' | 'android_install_referrer' | 'ios_user_paste'>;
13
+ export type DeferredLinkStatus = 'idle' | 'pending' | 'resolving' | 'waiting_for_account' | 'retryable_error' | 'applied' | 'terminal_error';
14
+ export type DeferredLinkOutcomeName = 'app_open_confirmed' | 'deferred_link_resolved' | 'action_applied';
15
+ export interface ResolvedDeferredLink<Action extends string = DeferredLinkAction> {
16
+ id: string;
17
+ action?: Action;
18
+ deepLink?: string;
19
+ expiresAt?: string;
20
+ source?: string | null;
21
+ campaignId?: string | null;
22
+ experimentId?: string | null;
23
+ variantId?: string | null;
24
+ matchBasis: DeferredLinkMatchBasis;
25
+ matchGuaranteed: boolean;
26
+ confidence: number;
27
+ }
28
+ export interface DeferredLinkPendingState {
29
+ /** Opaque bearer-by-entropy handoff. It is never logged or sent to Pulse event properties. */
30
+ token: string;
31
+ receivedAt: number;
32
+ matchBasis: DeferredLinkCaptureBasis;
33
+ attempts: number;
34
+ nextRetryAt: number;
35
+ }
36
+ export interface DeferredLinkFirstOpenState {
37
+ /** Random retry nonce scoped to one install attempt; it is not a device or account identity. */
38
+ installAttemptId: string | null;
39
+ completed: boolean;
40
+ attemptedAt: number;
41
+ attempts: number;
42
+ nextRetryAt: number;
43
+ }
44
+ export interface DeferredLinkState {
45
+ status: DeferredLinkStatus;
46
+ pending: DeferredLinkPendingState | null;
47
+ lastAppliedId: string | null;
48
+ /** Bounded persisted idempotence window. */
49
+ appliedIds: readonly string[];
50
+ firstOpen: DeferredLinkFirstOpenState;
51
+ }
52
+ export interface DeferredLinkAccountBridge<Action extends string = DeferredLinkAction> {
53
+ claim(token?: string): Promise<ResolvedDeferredLink<Action> | null>;
54
+ pending(): Promise<ResolvedDeferredLink<Action> | null>;
55
+ }
56
+ export interface DeferredLinkOutcomeEvent {
57
+ name: DeferredLinkOutcomeName;
58
+ matchBasis: DeferredLinkMatchBasis;
59
+ confidence: number;
60
+ campaignId?: string | null;
61
+ experimentId?: string | null;
62
+ variantId?: string | null;
63
+ occurredAt: string;
64
+ }
65
+ export interface AnonymousFirstOpenContext {
66
+ appBundleId: string;
67
+ locale: string;
68
+ platform: 'ios';
69
+ /** Native first-install timestamp. Matching is refused when recency cannot be proven. */
70
+ installedAt: number;
71
+ }
72
+ export type AnonymousFirstOpenResult = 'matched' | 'no_match' | 'ineligible' | 'deterministic_pending' | 'already_completed' | 'backoff' | 'retry_scheduled' | 'terminal_error';
73
+ export type AndroidInstallReferrerStatus = 'OK' | 'NO_TOKEN' | 'FEATURE_NOT_SUPPORTED' | 'SERVICE_UNAVAILABLE' | 'DEVELOPER_ERROR' | 'SERVICE_DISCONNECTED';
74
+ export interface AndroidInstallReferrerResult {
75
+ status: AndroidInstallReferrerStatus;
76
+ retryable: boolean;
77
+ attempts: number;
78
+ token?: string;
79
+ }
80
+ /** Implemented by the separate native `PulseAttribution` module. */
81
+ export interface AndroidInstallReferrerBridge {
82
+ getDeferredHandoff(): Promise<unknown>;
83
+ }
84
+ export interface DeferredLinkClientOptions<Action extends string = DeferredLinkAction> {
85
+ /** Public Encore resolver prefix for phase one, e.g. https://encore.example/t/d/. */
86
+ resolverBaseUrl: string;
87
+ /** App-owned schemes/universal-link prefixes accepted from the resolver. */
88
+ allowedDeepLinkPrefixes: readonly string[];
89
+ /** Closed action vocabulary. Unknown server actions are ignored. */
90
+ allowedActions?: readonly Action[];
91
+ /** Actions that require both a deterministic match and a stable signed-in account. */
92
+ sensitiveActions?: readonly Action[];
93
+ onDeepLink: (deepLink: string, link: ResolvedDeferredLink<Action>) => boolean | void | Promise<boolean | void>;
94
+ onAction?: (link: ResolvedDeferredLink<Action>) => boolean | void | Promise<boolean | void>;
95
+ accountBridge?: DeferredLinkAccountBridge<Action>;
96
+ isAccountReady?: () => boolean;
97
+ /** Lets the client retry an account-bound handoff immediately after login/logout changes. */
98
+ subscribeAccountState?: (listener: () => void) => (() => void);
99
+ /** Same synchronous storage adapter used by initPulse/MMKV. */
100
+ storage?: ConfigStorage;
101
+ /** Used to derive `pulse.{appSlug}.links.v1`; required with storage unless storageKey is explicit. */
102
+ appSlug?: string;
103
+ /** Must be app-scoped when storage is shared by more than one app. */
104
+ storageKey?: string;
105
+ fetch?: typeof fetch;
106
+ requestTimeoutMs?: number;
107
+ retryBaseMs?: number;
108
+ retryMaxMs?: number;
109
+ tokenMaxAgeMs?: number;
110
+ recentInstallMaxAgeMs?: number;
111
+ autoRetry?: boolean;
112
+ reportResolverOutcomes?: boolean;
113
+ onOutcome?: (event: DeferredLinkOutcomeEvent) => void | Promise<void>;
114
+ onStateChange?: (state: DeferredLinkState) => void;
115
+ onError?: (error: unknown) => void;
116
+ now?: () => number;
117
+ randomUUID?: () => string;
118
+ /** Phase-one public campaign exposures are 128-bit hex; account tokens use the wider grammar. */
119
+ isPublicToken?: (token: string) => boolean;
120
+ }
121
+ export interface DeferredLinkClient {
122
+ capture(token: string, basis: DeferredLinkCaptureBasis): boolean;
123
+ captureUrl(url: string): boolean;
124
+ process(): Promise<void>;
125
+ matchFirstOpen(context: AnonymousFirstOpenContext): Promise<AnonymousFirstOpenResult>;
126
+ captureAndroidInstallReferrer(bridge: AndroidInstallReferrerBridge): Promise<AndroidInstallReferrerResult>;
127
+ getState(): DeferredLinkState;
128
+ subscribe(listener: (state: DeferredLinkState) => void): () => void;
129
+ dispose(): void;
130
+ /** Clears only install-attribution state. It never touches Pulse config/events or account data. */
131
+ reset(): void;
132
+ }
133
+ export declare function isOpaqueDeferredLinkToken(value: unknown): value is string;
134
+ export declare function normalizeDeferredHandoffToken(raw: string | null | undefined, acceptedPrefixes?: readonly string[]): string | null;
135
+ /** Extracts only explicit handoff query keys or /handoff|d/{token} path segments. */
136
+ export declare function extractDeferredHandoffToken(url: string): string | null;
137
+ /** Runtime-validates the native result so raw bridge data can never leak into app state. */
138
+ export declare function normalizeAndroidInstallReferrerResult(raw: unknown): AndroidInstallReferrerResult;
139
+ export declare function createPulseLinkClient<Action extends string = DeferredLinkAction>(options: DeferredLinkClientOptions<Action>): DeferredLinkClient;
140
+ /** @deprecated Prefer the product-facing `createPulseLinkClient` name. */
141
+ export declare const createDeferredLinkClient: typeof createPulseLinkClient;
142
+ //# sourceMappingURL=links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/links.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AndroidInstallReferrerBridge, AndroidInstallReferrerResult, DeferredLinkClient } from './links';
2
+ /** Returns null when the installed binary predates Pulse Links. Never use getEnforcing here. */
3
+ export declare function getPulseAttributionBridge(): AndroidInstallReferrerBridge | null;
4
+ /**
5
+ * Reads Play Install Referrer through the optional native bridge and captures a valid handoff.
6
+ * The native module returns FEATURE_NOT_SUPPORTED when the store-specific Google library is absent.
7
+ */
8
+ export declare function recoverAndroidInstallReferrer(client: DeferredLinkClient, bridge?: AndroidInstallReferrerBridge | null): Promise<AndroidInstallReferrerResult>;
9
+ //# sourceMappingURL=nativeAttribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeAttribution.d.ts","sourceRoot":"","sources":["../../src/nativeAttribution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,gGAAgG;AAChG,wBAAgB,yBAAyB,IAAI,4BAA4B,GAAG,IAAI,CAE/E;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,4BAA4B,GAAG,IAAkC,GACxE,OAAO,CAAC,4BAA4B,CAAC,CAKvC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pulse-updates",
3
- "version": "1.2.5",
4
- "description": "OTA updates for React Native - lightweight alternative to expo-updates",
3
+ "version": "1.3.0",
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",
7
7
  "types": "lib/typescript/index.d.ts",
@@ -16,6 +16,7 @@
16
16
  "ios",
17
17
  "android/src",
18
18
  "android/build.gradle",
19
+ "android/consumer-rules.pro",
19
20
  "scripts",
20
21
  "app.plugin.js",
21
22
  "SECURITY.md",
@@ -28,6 +29,7 @@
28
29
  "typescript": "tsc --noEmit",
29
30
  "build": "bob build",
30
31
  "prepare": "bob build",
32
+ "pretest": "bob build",
31
33
  "test": "node --test tests/*.test.js",
32
34
  "publish-update": "node scripts/publish.mjs publish"
33
35
  },
@@ -78,5 +80,18 @@
78
80
  }
79
81
  ]
80
82
  ]
83
+ },
84
+ "codegenConfig": {
85
+ "name": "PulseAttributionSpec",
86
+ "type": "components",
87
+ "jsSrcsDir": "src",
88
+ "ios": {
89
+ "componentProvider": {
90
+ "PulseDeferredLinkPasteButton": "PulseDeferredLinkPasteButtonComponentView"
91
+ }
92
+ },
93
+ "android": {
94
+ "javaPackageName": "app.pulse.updates"
95
+ }
81
96
  }
82
97
  }
@@ -12,12 +12,18 @@ Pod::Spec.new do |s|
12
12
  s.platforms = { :ios => '13.0' }
13
13
  s.source = { :git => package['repository']['url'], :tag => "v#{s.version}" }
14
14
  s.source_files = "ios/**/*.{h,m,mm,swift}"
15
+ s.exclude_files = "ios/**/Tests/**/*"
15
16
  s.requires_arc = true
16
17
 
17
- s.dependency "React-Core"
18
-
19
18
  # SQLite for metadata storage
20
19
  s.libraries = 'sqlite3'
21
20
 
21
+ # Adds the legacy React bridge dependencies and, under the New Architecture, runs the component
22
+ # codegen declared in package.json for PulseDeferredLinkPasteButton. Keep this merged helper as
23
+ # the single React dependency source so old-architecture and Fabric hosts ship the same surface.
22
24
  install_modules_dependencies(s)
25
+
26
+ s.pod_target_xcconfig = (s.attributes_hash["pod_target_xcconfig"] || {}).merge({
27
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
28
+ })
23
29
  end
@@ -27,6 +27,11 @@ export function extractNativeModulesFromSource(source) {
27
27
  /TurboModuleRegistry\.(?:getEnforcing|get)\(\s*['"]([\w.$-]+)['"]/g,
28
28
  /\brequireNativeComponent\(\s*['"]([\w.$-]+)['"]/g,
29
29
  /\bcodegenNativeComponent(?:<[^>]*>)?\(\s*['"]([\w.$-]+)['"]/g,
30
+ // Babel CommonJS output for a default import:
31
+ // (0, _codegenNativeComponent.default)('ComponentName', ...)
32
+ // Keep this tied to the helper name so arbitrary `.default(...)` calls are not capabilities.
33
+ /\(\s*0\s*,\s*[\w$]*codegenNativeComponent[\w$]*\.default\s*\)\(\s*['"]([\w.$-]+)['"]/g,
34
+ /[\w$]*codegenNativeComponent[\w$]*\.default\(\s*['"]([\w.$-]+)['"]/g,
30
35
  ];
31
36
  for (const re of patterns) {
32
37
  let m;
@@ -0,0 +1,98 @@
1
+ import * as React from 'react';
2
+ import {
3
+ Platform,
4
+ StyleSheet,
5
+ type ColorValue,
6
+ type StyleProp,
7
+ type ViewStyle,
8
+ } from 'react-native';
9
+ import { isOpaqueDeferredLinkToken } from './links';
10
+
11
+ const PREFIX = /^[A-Za-z][A-Za-z0-9_.-]{1,63}:$/;
12
+
13
+ interface NativeHandoffEvent {
14
+ nativeEvent: { token?: unknown };
15
+ }
16
+
17
+ interface NativePasteButtonProps {
18
+ label?: string;
19
+ foregroundColor?: ColorValue;
20
+ handoffPrefix?: string;
21
+ accessibilityLabel?: string;
22
+ accessibilityHint?: string;
23
+ accessibilityRole?: 'button';
24
+ style?: StyleProp<ViewStyle>;
25
+ onHandoff?: (event: NativeHandoffEvent) => void;
26
+ }
27
+
28
+ let NativePasteButton: React.ComponentType<NativePasteButtonProps> | null = null;
29
+
30
+ function getNativePasteButton(): React.ComponentType<NativePasteButtonProps> {
31
+ if (NativePasteButton == null) {
32
+ // Android/web/SSR never evaluate the iOS-only codegen component.
33
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
34
+ const module = require('./PulseDeferredLinkPasteButtonNativeComponent');
35
+ NativePasteButton = (module.default ?? module) as React.ComponentType<NativePasteButtonProps>;
36
+ }
37
+ return NativePasteButton;
38
+ }
39
+
40
+ export interface DeferredLinkPasteButtonProps {
41
+ /** Called only after an explicit UIKit paste action and native+JS token validation. */
42
+ onHandoff: (token: string) => void;
43
+ label?: string;
44
+ foregroundColor?: ColorValue;
45
+ /** Closed protocol prefix including the trailing colon. Defaults to `encore_handoff:`. */
46
+ handoffPrefix?: string;
47
+ style?: StyleProp<ViewStyle>;
48
+ accessibilityLabel?: string;
49
+ accessibilityHint?: string;
50
+ /** Inert content for Android, web or SSR. Android attribution uses Install Referrer. */
51
+ fallback?: React.ReactNode;
52
+ }
53
+
54
+ /**
55
+ * Explicit one-tap iOS recovery. iOS 16+ is backed by UIPasteControl; iOS 13-15 reads the
56
+ * pasteboard only inside the fallback button's user tap handler. It never reads on mount,
57
+ * foreground, lifecycle callbacks or timers, and native emits only a validated opaque token.
58
+ */
59
+ export const DeferredLinkPasteButton: React.FC<DeferredLinkPasteButtonProps> = ({
60
+ onHandoff,
61
+ label = 'Continue',
62
+ foregroundColor = '#FFFFFF',
63
+ handoffPrefix = 'encore_handoff:',
64
+ style,
65
+ accessibilityLabel,
66
+ accessibilityHint = 'Pastes the secure install handoff',
67
+ fallback = null,
68
+ }) => {
69
+ const handleNativeHandoff = React.useCallback((event: NativeHandoffEvent) => {
70
+ const token = event?.nativeEvent?.token;
71
+ if (isOpaqueDeferredLinkToken(token)) onHandoff(token);
72
+ }, [onHandoff]);
73
+
74
+ if (Platform.OS !== 'ios') return fallback as React.ReactElement | null;
75
+ const NativeComponent = getNativePasteButton();
76
+ return (
77
+ <NativeComponent
78
+ label={label}
79
+ foregroundColor={foregroundColor}
80
+ handoffPrefix={PREFIX.test(handoffPrefix) ? handoffPrefix : 'encore_handoff:'}
81
+ accessibilityRole="button"
82
+ accessibilityLabel={accessibilityLabel ?? label}
83
+ accessibilityHint={accessibilityHint}
84
+ style={[styles.control, style]}
85
+ onHandoff={handleNativeHandoff}
86
+ />
87
+ );
88
+ };
89
+
90
+ const styles = StyleSheet.create({
91
+ control: {
92
+ minWidth: 120,
93
+ height: 48,
94
+ borderRadius: 12,
95
+ overflow: 'hidden',
96
+ backgroundColor: '#111827',
97
+ },
98
+ });
@@ -0,0 +1,12 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ /**
5
+ * Separate from PulseUpdates on purpose: adding install-attribution native code must be visible to
6
+ * Pulse's OTA native-capability preflight and therefore requires a new store binary.
7
+ */
8
+ export interface Spec extends TurboModule {
9
+ getDeferredHandoff(): Promise<unknown>;
10
+ }
11
+
12
+ export default TurboModuleRegistry.get<Spec>('PulseAttribution');
@@ -0,0 +1,18 @@
1
+ /** iOS-only Fabric spec for explicit, privacy-safe install handoff recovery. */
2
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
3
+ import type { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';
4
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
5
+
6
+ export interface NativeProps extends ViewProps {
7
+ label?: string;
8
+ foregroundColor?: ColorValue;
9
+ /** Defaults to the phase-one Encore contract. The native view validates this closed grammar. */
10
+ handoffPrefix?: string;
11
+ /** Emits only the validated opaque token, never the clipboard text or prefix. */
12
+ onHandoff: DirectEventHandler<Readonly<{ token: string }>>;
13
+ }
14
+
15
+ export default codegenNativeComponent<NativeProps>(
16
+ 'PulseDeferredLinkPasteButton',
17
+ { excludedPlatforms: ['android'] },
18
+ ) as HostComponent<NativeProps>;
package/src/index.ts CHANGED
@@ -6,3 +6,7 @@ export * from './config';
6
6
  export * from './track';
7
7
  export * from './init';
8
8
  export * from './decisions';
9
+ export * from './links';
10
+ export * from './nativeAttribution';
11
+ export { DeferredLinkPasteButton } from './DeferredLinkPasteButton';
12
+ export type { DeferredLinkPasteButtonProps } from './DeferredLinkPasteButton';