@spare-technologies/spare-link 1.0.1 → 1.1.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 (67) hide show
  1. package/README.md +34 -5
  2. package/lib/commonjs/core/services/hosted-flow-controller.js +5 -0
  3. package/lib/commonjs/core/services/hosted-flow-controller.js.map +1 -1
  4. package/lib/commonjs/internal/hosted/bridge-message.js +13 -0
  5. package/lib/commonjs/internal/hosted/bridge-message.js.map +1 -1
  6. package/lib/commonjs/internal/telemetry/native-telemetry-reply.js +59 -0
  7. package/lib/commonjs/internal/telemetry/native-telemetry-reply.js.map +1 -0
  8. package/lib/commonjs/internal/telemetry/risk-telemetry-collector.js +99 -0
  9. package/lib/commonjs/internal/telemetry/risk-telemetry-collector.js.map +1 -0
  10. package/lib/commonjs/internal/telemetry/risk-telemetry-probes.js +134 -0
  11. package/lib/commonjs/internal/telemetry/risk-telemetry-probes.js.map +1 -0
  12. package/lib/commonjs/ui/hosted/hosted-payment-page.js +8 -0
  13. package/lib/commonjs/ui/hosted/hosted-payment-page.js.map +1 -1
  14. package/lib/commonjs/ui/hosted/hosted-payment-webview.js +31 -2
  15. package/lib/commonjs/ui/hosted/hosted-payment-webview.js.map +1 -1
  16. package/lib/commonjs/version.js +1 -1
  17. package/lib/module/core/services/hosted-flow-controller.js +5 -0
  18. package/lib/module/core/services/hosted-flow-controller.js.map +1 -1
  19. package/lib/module/internal/hosted/bridge-message.js +13 -0
  20. package/lib/module/internal/hosted/bridge-message.js.map +1 -1
  21. package/lib/module/internal/telemetry/native-telemetry-reply.js +53 -0
  22. package/lib/module/internal/telemetry/native-telemetry-reply.js.map +1 -0
  23. package/lib/module/internal/telemetry/risk-telemetry-collector.js +94 -0
  24. package/lib/module/internal/telemetry/risk-telemetry-collector.js.map +1 -0
  25. package/lib/module/internal/telemetry/risk-telemetry-probes.js +129 -0
  26. package/lib/module/internal/telemetry/risk-telemetry-probes.js.map +1 -0
  27. package/lib/module/ui/hosted/hosted-payment-page.js +8 -0
  28. package/lib/module/ui/hosted/hosted-payment-page.js.map +1 -1
  29. package/lib/module/ui/hosted/hosted-payment-webview.js +32 -3
  30. package/lib/module/ui/hosted/hosted-payment-webview.js.map +1 -1
  31. package/lib/module/version.js +1 -1
  32. package/lib/typescript/commonjs/core/services/hosted-flow-controller.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/internal/hosted/bridge-message.d.ts +12 -1
  34. package/lib/typescript/commonjs/internal/hosted/bridge-message.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/internal/telemetry/native-telemetry-reply.d.ts +33 -0
  36. package/lib/typescript/commonjs/internal/telemetry/native-telemetry-reply.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/internal/telemetry/risk-telemetry-collector.d.ts +47 -0
  38. package/lib/typescript/commonjs/internal/telemetry/risk-telemetry-collector.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/internal/telemetry/risk-telemetry-probes.d.ts +19 -0
  40. package/lib/typescript/commonjs/internal/telemetry/risk-telemetry-probes.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/ui/hosted/hosted-payment-page.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/ui/hosted/hosted-payment-webview.d.ts +9 -0
  43. package/lib/typescript/commonjs/ui/hosted/hosted-payment-webview.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/version.d.ts +1 -1
  45. package/lib/typescript/module/core/services/hosted-flow-controller.d.ts.map +1 -1
  46. package/lib/typescript/module/internal/hosted/bridge-message.d.ts +12 -1
  47. package/lib/typescript/module/internal/hosted/bridge-message.d.ts.map +1 -1
  48. package/lib/typescript/module/internal/telemetry/native-telemetry-reply.d.ts +33 -0
  49. package/lib/typescript/module/internal/telemetry/native-telemetry-reply.d.ts.map +1 -0
  50. package/lib/typescript/module/internal/telemetry/risk-telemetry-collector.d.ts +47 -0
  51. package/lib/typescript/module/internal/telemetry/risk-telemetry-collector.d.ts.map +1 -0
  52. package/lib/typescript/module/internal/telemetry/risk-telemetry-probes.d.ts +19 -0
  53. package/lib/typescript/module/internal/telemetry/risk-telemetry-probes.d.ts.map +1 -0
  54. package/lib/typescript/module/ui/hosted/hosted-payment-page.d.ts.map +1 -1
  55. package/lib/typescript/module/ui/hosted/hosted-payment-webview.d.ts +9 -0
  56. package/lib/typescript/module/ui/hosted/hosted-payment-webview.d.ts.map +1 -1
  57. package/lib/typescript/module/version.d.ts +1 -1
  58. package/package.json +24 -4
  59. package/plugins/with-spare-link.js +78 -5
  60. package/src/core/services/hosted-flow-controller.ts +5 -0
  61. package/src/internal/hosted/bridge-message.ts +20 -1
  62. package/src/internal/telemetry/native-telemetry-reply.ts +59 -0
  63. package/src/internal/telemetry/risk-telemetry-collector.ts +128 -0
  64. package/src/internal/telemetry/risk-telemetry-probes.ts +159 -0
  65. package/src/ui/hosted/hosted-payment-page.tsx +8 -0
  66. package/src/ui/hosted/hosted-payment-webview.tsx +42 -4
  67. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactNativeWebview","_hostedUrl","_logger","_urlParts","_index","_jsxRuntime","log","createLogger","safeOrigin","url","parts","parseUrlParts","scheme","host","shouldAllowHostedNavigation","args","isHostedOriginUrl","HostedPaymentWebView","props","baseUrl","reference","onBridgeMessage","onLoadFailure","onMounted","uri","buildHostedPaymentUrl","useEffect","handleMessage","useCallback","event","nativeEvent","data","handleShouldStartLoad","jsx","View","style","styles","container","testID","children","WebView","source","onMessage","originWhitelist","ALLOW_ALL_ORIGINS","onShouldStartLoadWithRequest","onError","severe","description","code","onHttpError","statusCode","onContentProcessDidTerminate","onRenderProcessGone","didCrash","webview","javaScriptEnabled","domStorageEnabled","incognito","setSupportMultipleWindows","allowFileAccess","allowUniversalAccessFromFileURLs","allowFileAccessFromFileURLs","StyleSheet","create","flex","backgroundColor","Colors","surfacePage"],"sourceRoot":"../../../../src","sources":["ui/hosted/hosted-payment-webview.tsx"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAAkC,IAAAO,WAAA,GAAAP,OAAA;AAElC,MAAMQ,GAAG,GAAG,IAAAC,oBAAY,EAAC,sBAAsB,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAU;EACvC,MAAMC,KAAK,GAAG,IAAAC,uBAAa,EAACF,GAAG,CAAC;EAChC,OAAOC,KAAK,GAAG,GAAGA,KAAK,CAACE,MAAM,MAAMF,KAAK,CAACG,IAAI,EAAE,GAAG,mBAAmB;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,2BAA2BA,CAACC,IAAsC,EAAW;EAC3F,OAAO,IAAAC,4BAAiB,EAACD,IAAI,CAAC;AAChC;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,oBAAoBA,CAACC,KAAgC,EAAe;EAClF,MAAM;IAAEC,OAAO;IAAEC,SAAS;IAAEC,eAAe;IAAEC,aAAa;IAAEC;EAAU,CAAC,GAAGL,KAAK;EAC/E,MAAMM,GAAG,GAAG,IAAAC,gCAAqB,EAAC;IAAEN,OAAO;IAAEC;EAAU,CAAC,CAAC;;EAEzD;EACA;EACA;EACA;EACA,IAAAM,gBAAS,EAAC,MAAM;IACdH,SAAS,GAAG,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,aAAa,GAAG,IAAAC,kBAAW,EAC9BC,KAA0B,IAAK;IAC9BR,eAAe,CAACQ,KAAK,CAACC,WAAW,CAACC,IAAI,CAAC;EACzC,CAAC,EACD,CAACV,eAAe,CAClB,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMW,qBAAqB,GAAG,IAAAJ,kBAAW,EACvC,CAAC;IAAEnB;EAAqB,CAAC,KAAKK,2BAA2B,CAAC;IAAEK,OAAO;IAAEV;EAAI,CAAC,CAAC,EAC3E,CAACU,OAAO,CACV,CAAC;EAED;IAAA;IACE;IACA;IACA;IACA,IAAAd,WAAA,CAAA4B,GAAA,EAAClC,YAAA,CAAAmC,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;MAACC,MAAM,EAAC,wBAAwB;MAAAC,QAAA,eAC5D,IAAAlC,WAAA,CAAA4B,GAAA,EAACjC,mBAAA,CAAAwC,OAAO;QACNC,MAAM,EAAE;UAAEjB;QAAI,CAAE;QAChBkB,SAAS,EAAEf,aAAc;QACzBgB,eAAe,EAAEC,iBAAkB;QACnCC,4BAA4B,EAAEb;QAC9B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAAA;QACAc,OAAO,EAAEA,CAAC;UAAEhB;QAAY,CAAC,KAAK;UAC5BxB,GAAG,CAACyC,MAAM,CACR,wCAAwCvC,UAAU,CAACgB,GAAG,CAAC,GAAG,GACxD,IAAIM,WAAW,CAACkB,WAAW,IAAI,QAAQlB,WAAW,CAACmB,IAAI,EAAE,GAC7D,CAAC;UACD3B,aAAa,GAAG,CAAC;QACnB,CAAE;QACF4B,WAAW,EAAEA,CAAC;UAAEpB;QAAY,CAAC,KAAK;UAChCxB,GAAG,CAACyC,MAAM,CACR,uBAAuBvC,UAAU,CAACgB,GAAG,CAAC,YAAY,GAAG,QAAQM,WAAW,CAACqB,UAAU,EACrF,CAAC;UACD7B,aAAa,GAAG,CAAC;QACnB;QACA;QACA;QACA;QACA;QAAA;QACA8B,4BAA4B,EAAEA,CAAA,KAAM;UAClC9C,GAAG,CAACyC,MAAM,CAAC,6DAA6D,CAAC;UACzEzB,aAAa,GAAG,CAAC;QACnB,CAAE;QACF+B,mBAAmB,EAAEA,CAAC;UAAEvB;QAAY,CAAC,KAAK;UACxCxB,GAAG,CAACyC,MAAM,CACR,wDAAwDjB,WAAW,CAACwB,QAAQ,GAC9E,CAAC;UACDhC,aAAa,GAAG,CAAC;QACnB,CAAE;QACFa,KAAK,EAAEC,MAAM,CAACmB,OAAQ;QACtBC,iBAAiB;QACjBC,iBAAiB;QACjB;QACA;QAAA;QACAC,SAAS;QACT;QACA;QAAA;QACAC,yBAAyB,EAAE,KAAM;QACjCC,eAAe,EAAE,KAAM;QACvBC,gCAAgC,EAAE,KAAM;QACxCC,2BAA2B,EAAE,KAAM;QACnCxB,MAAM,EAAC;MAAiC,CACzC;IAAC,CACE;EAAC;AAEX;AAEA,MAAMM,iBAAiB,GAAG,CAAC,GAAG,CAAC;AAE/B,MAAMR,MAAM,GAAG2B,uBAAU,CAACC,MAAM,CAAC;EAC/B3B,SAAS,EAAE;IAAE4B,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAEC,aAAM,CAACC;EAAY,CAAC;EAC3Db,OAAO,EAAE;IAAEU,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAEC,aAAM,CAACC;EAAY;AAC1D,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeWebview","_bridgeMessage","_hostedUrl","_logger","_nativeTelemetryReply","_urlParts","_index","_jsxRuntime","log","createLogger","safeOrigin","url","parts","parseUrlParts","scheme","host","shouldAllowHostedNavigation","args","isHostedOriginUrl","HostedPaymentWebView","props","baseUrl","reference","onBridgeMessage","onTelemetryRequest","onLoadFailure","onMounted","uri","buildHostedPaymentUrl","webViewRef","useRef","useEffect","handleMessage","useCallback","event","raw","nativeEvent","data","parseHostedBridgeMessage","type","respond","createTelemetryRequestHandler","collect","inject","script","current","injectJavaScript","handleShouldStartLoad","jsx","View","style","styles","container","testID","children","WebView","ref","source","onMessage","originWhitelist","ALLOW_ALL_ORIGINS","onShouldStartLoadWithRequest","onError","severe","description","code","onHttpError","statusCode","onContentProcessDidTerminate","onRenderProcessGone","didCrash","webview","javaScriptEnabled","domStorageEnabled","geolocationEnabled","incognito","setSupportMultipleWindows","allowFileAccess","allowUniversalAccessFromFileURLs","allowFileAccessFromFileURLs","StyleSheet","create","flex","backgroundColor","Colors","surfacePage"],"sourceRoot":"../../../../src","sources":["ui/hosted/hosted-payment-webview.tsx"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,qBAAA,GAAAN,OAAA;AACA,IAAAO,SAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AAAkC,IAAAS,WAAA,GAAAT,OAAA;AAElC,MAAMU,GAAG,GAAG,IAAAC,oBAAY,EAAC,sBAAsB,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,GAAW,EAAU;EACvC,MAAMC,KAAK,GAAG,IAAAC,uBAAa,EAACF,GAAG,CAAC;EAChC,OAAOC,KAAK,GAAG,GAAGA,KAAK,CAACE,MAAM,MAAMF,KAAK,CAACG,IAAI,EAAE,GAAG,mBAAmB;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,2BAA2BA,CAACC,IAAsC,EAAW;EAC3F,OAAO,IAAAC,4BAAiB,EAACD,IAAI,CAAC;AAChC;AAgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,oBAAoBA,CAACC,KAAgC,EAAe;EAClF,MAAM;IAAEC,OAAO;IAAEC,SAAS;IAAEC,eAAe;IAAEC,kBAAkB;IAAEC,aAAa;IAAEC;EAAU,CAAC,GACzFN,KAAK;EACP,MAAMO,GAAG,GAAG,IAAAC,gCAAqB,EAAC;IAAEP,OAAO;IAAEC;EAAU,CAAC,CAAC;EACzD,MAAMO,UAAU,GAAG,IAAAC,aAAM,EAAU,IAAI,CAAC;;EAExC;EACA;EACA;EACA;EACA,IAAAC,gBAAS,EAAC,MAAM;IACdL,SAAS,GAAG,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,aAAa,GAAG,IAAAC,kBAAW,EAC9BC,KAA0B,IAAK;IAC9B,MAAMC,GAAG,GAAGD,KAAK,CAACE,WAAW,CAACC,IAAI;;IAElC;IACA;IACA;IACA,IAAIb,kBAAkB,IAAI,IAAAc,uCAAwB,EAACH,GAAG,CAAC,EAAEI,IAAI,KAAK,kBAAkB,EAAE;MACpF,MAAMC,OAAO,GAAG,IAAAC,mDAA6B,EAAC;QAC5CC,OAAO,EAAElB,kBAAkB;QAC3BmB,MAAM,EAAGC,MAAM,IAAKf,UAAU,CAACgB,OAAO,EAAEC,gBAAgB,CAACF,MAAM;MACjE,CAAC,CAAC;MACF,KAAKJ,OAAO,CAAC,CAAC;MACd;IACF;IAEAjB,eAAe,CAACY,GAAG,CAAC;EACtB,CAAC,EACD,CAACZ,eAAe,EAAEC,kBAAkB,CACtC,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMuB,qBAAqB,GAAG,IAAAd,kBAAW,EACvC,CAAC;IAAEtB;EAAqB,CAAC,KAAKK,2BAA2B,CAAC;IAAEK,OAAO;IAAEV;EAAI,CAAC,CAAC,EAC3E,CAACU,OAAO,CACV,CAAC;EAED;IAAA;IACE;IACA;IACA;IACA,IAAAd,WAAA,CAAAyC,GAAA,EAACjD,YAAA,CAAAkD,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;MAACC,MAAM,EAAC,wBAAwB;MAAAC,QAAA,eAC5D,IAAA/C,WAAA,CAAAyC,GAAA,EAAChD,mBAAA,CAAAuD,OAAO;QACNC,GAAG,EAAE3B,UAAW;QAChB4B,MAAM,EAAE;UAAE9B;QAAI,CAAE;QAChB+B,SAAS,EAAE1B,aAAc;QACzB2B,eAAe,EAAEC,iBAAkB;QACnCC,4BAA4B,EAAEd;QAC9B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAAA;QACAe,OAAO,EAAEA,CAAC;UAAE1B;QAAY,CAAC,KAAK;UAC5B5B,GAAG,CAACuD,MAAM,CACR,wCAAwCrD,UAAU,CAACiB,GAAG,CAAC,GAAG,GACxD,IAAIS,WAAW,CAAC4B,WAAW,IAAI,QAAQ5B,WAAW,CAAC6B,IAAI,EAAE,GAC7D,CAAC;UACDxC,aAAa,GAAG,CAAC;QACnB,CAAE;QACFyC,WAAW,EAAEA,CAAC;UAAE9B;QAAY,CAAC,KAAK;UAChC5B,GAAG,CAACuD,MAAM,CACR,uBAAuBrD,UAAU,CAACiB,GAAG,CAAC,YAAY,GAAG,QAAQS,WAAW,CAAC+B,UAAU,EACrF,CAAC;UACD1C,aAAa,GAAG,CAAC;QACnB;QACA;QACA;QACA;QACA;QAAA;QACA2C,4BAA4B,EAAEA,CAAA,KAAM;UAClC5D,GAAG,CAACuD,MAAM,CAAC,6DAA6D,CAAC;UACzEtC,aAAa,GAAG,CAAC;QACnB,CAAE;QACF4C,mBAAmB,EAAEA,CAAC;UAAEjC;QAAY,CAAC,KAAK;UACxC5B,GAAG,CAACuD,MAAM,CACR,wDAAwD3B,WAAW,CAACkC,QAAQ,GAC9E,CAAC;UACD7C,aAAa,GAAG,CAAC;QACnB,CAAE;QACFyB,KAAK,EAAEC,MAAM,CAACoB,OAAQ;QACtBC,iBAAiB;QACjBC,iBAAiB;QACjB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAAA;QACAC,kBAAkB;QAClB;QACA;QAAA;QACAC,SAAS;QACT;QACA;QAAA;QACAC,yBAAyB,EAAE,KAAM;QACjCC,eAAe,EAAE,KAAM;QACvBC,gCAAgC,EAAE,KAAM;QACxCC,2BAA2B,EAAE,KAAM;QACnC1B,MAAM,EAAC;MAAiC,CACzC;IAAC,CACE;EAAC;AAEX;AAEA,MAAMO,iBAAiB,GAAG,CAAC,GAAG,CAAC;AAE/B,MAAMT,MAAM,GAAG6B,uBAAU,CAACC,MAAM,CAAC;EAC/B7B,SAAS,EAAE;IAAE8B,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAEC,aAAM,CAACC;EAAY,CAAC;EAC3Dd,OAAO,EAAE;IAAEW,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAEC,aAAM,CAACC;EAAY;AAC1D,CAAC,CAAC","ignoreList":[]}
@@ -12,5 +12,5 @@ exports.SDK_VERSION = void 0;
12
12
  * `changeset version`). The src/index.ts smoke test asserts this matches
13
13
  * package.json's version.
14
14
  */
15
- const SDK_VERSION = exports.SDK_VERSION = '1.0.1';
15
+ const SDK_VERSION = exports.SDK_VERSION = '1.1.1';
16
16
  //# sourceMappingURL=version.js.map
@@ -109,6 +109,11 @@ export class HostedFlowController {
109
109
  attempt: this.currentState.attempt
110
110
  }));
111
111
  break;
112
+ case 'telemetryRequest':
113
+ // Answered by the webview layer, which owns the injection channel the
114
+ // reply travels back on. Reaching here means no telemetry handler was
115
+ // wired, and the page's own timeout settles the request.
116
+ break;
112
117
  }
113
118
  return true;
114
119
  }
@@ -1 +1 @@
1
- {"version":3,"names":["launchBankRedirect","defaultLaunchBankRedirect","parseHostedBridgeMessage","createLogger","readPaymentReturn","HostedFlowStates","isTerminalPhase","log","DEFAULT_READY_TIMEOUT_MS","HostedFlowController","listeners","Set","constructor","options","reference","bankLauncher","url","authorizationUrl","readyTimeoutMs","currentState","loading","reportPageMounted","phase","watchForReadiness","state","subscribe","listener","add","delete","handleBridgeMessage","raw","message","info","isPagePresented","type","stopWatchingForReadiness","moveTo","hosted","attempt","openBank","cancelled","failed","errorCode","code","handleReturn","uri","outcome","report","undefined","warning","succeeded","abandoned","failToLoad","severe","unreachable","retry","giveUp","abandon","dispose","clear","readyTimer","setTimeout","clearTimeout","redirecting","awaitingCallback","next"],"sourceRoot":"../../../../src","sources":["core/services/hosted-flow-controller.ts"],"mappings":";;AAAA,SAASA,kBAAkB,IAAIC,yBAAyB,QAAQ,iCAA8B;AAC9F,SAEEC,wBAAwB,QACnB,yCAAsC;AAC7C,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SAASC,iBAAiB,QAAQ,oCAAiC;AACnE,SAA+BC,gBAAgB,EAAEC,eAAe,QAAQ,wBAAqB;AAE7F,MAAMC,GAAG,GAAGJ,YAAY,CAAC,sBAAsB,CAAC;;AAEhD;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,wBAAwB,GAAG,MAAM;AAS9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,CAAC;EAIfC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EAKlDC,WAAWA,CAACC,OAAoC,EAAE;IAChD,IAAI,CAACC,SAAS,GAAGD,OAAO,CAACC,SAAS;IAClC,IAAI,CAACC,YAAY,GACfF,OAAO,CAACE,YAAY,KAAMC,GAAG,IAAKf,yBAAyB,CAAC;MAAEgB,gBAAgB,EAAED;IAAI,CAAC,CAAC,CAAC;IACzF,IAAI,CAACE,cAAc,GAAGL,OAAO,CAACK,cAAc,IAAIV,wBAAwB;IACxE,IAAI,CAACW,YAAY,GAAGd,gBAAgB,CAACe,OAAO,CAACP,OAAO,CAACC,SAAS,CAAC;EACjE;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEO,iBAAiBA,CAAA,EAAS;IACxB,IAAI,IAAI,CAACF,YAAY,CAACG,KAAK,KAAK,SAAS,EAAE;IAC3C,IAAI,CAACC,iBAAiB,CAAC,CAAC;EAC1B;EAEA,IAAIC,KAAKA,CAAA,EAAoB;IAC3B,OAAO,IAAI,CAACL,YAAY;EAC1B;;EAEA;EACAM,SAASA,CAACC,QAAoB,EAAc;IAC1C,IAAI,CAAChB,SAAS,CAACiB,GAAG,CAACD,QAAQ,CAAC;IAC5B,OAAO,MAAM;MACX,IAAI,CAAChB,SAAS,CAACkB,MAAM,CAACF,QAAQ,CAAC;IACjC,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMG,mBAAmBA,CAACC,GAAY,EAAoB;IACxD,MAAMC,OAAmC,GAAG7B,wBAAwB,CAAC4B,GAAG,CAAC;IACzE,IAAI,CAACC,OAAO,EAAE;MACZxB,GAAG,CAACyB,IAAI,CAAC,sDAAsD,CAAC;MAChE,OAAO,KAAK;IACd;;IAEA;IACA;IACA;IACA;IACA;IACA,IAAI,CAAC,IAAI,CAACC,eAAe,CAAC,CAAC,EAAE;MAC3B1B,GAAG,CAACyB,IAAI,CAAC,eAAeD,OAAO,CAACG,IAAI,2CAA2C,CAAC;MAChF,OAAO,KAAK;IACd;IAEA,QAAQH,OAAO,CAACG,IAAI;MAClB,KAAK,OAAO;QACV,IAAI,CAACC,wBAAwB,CAAC,CAAC;QAC/B,IAAI,CAACC,MAAM,CAAC/B,gBAAgB,CAACgC,MAAM,CAAC,IAAI,CAACvB,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;QAC/E;MACF,KAAK,SAAS;QACZ,MAAM,IAAI,CAACC,QAAQ,CAACR,OAAO,CAACf,GAAG,CAAC;QAChC;MACF,KAAK,QAAQ;QACX;QACA,IAAI,CAACmB,wBAAwB,CAAC,CAAC;QAC/B,IAAI,CAACC,MAAM,CAAC/B,gBAAgB,CAACmC,SAAS,CAAC,IAAI,CAAC1B,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;QAClF;MACF,KAAK,OAAO;QACV,IAAI,CAACH,wBAAwB,CAAC,CAAC;QAC/B,IAAI,CAACC,MAAM,CACT/B,gBAAgB,CAACoC,MAAM,CAAC;UACtB3B,SAAS,EAAE,IAAI,CAACA,SAAS;UACzB4B,SAAS,EAAEX,OAAO,CAACY,IAAI;UACvBL,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB;QAC7B,CAAC,CACH,CAAC;QACD;IACJ;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE;EACQL,eAAeA,CAAA,EAAY;IACjC,MAAMX,KAAK,GAAG,IAAI,CAACH,YAAY,CAACG,KAAK;IACrC,OAAOA,KAAK,KAAK,SAAS,IAAIA,KAAK,KAAK,QAAQ;EAClD;EAEAsB,YAAYA,CAACC,GAAiB,EAAQ;IACpC,MAAM;MAAEC,OAAO;MAAEC;IAAO,CAAC,GAAG3C,iBAAiB,CAACyC,GAAG,CAAC;;IAElD;IACA;IACA;IACA;IACA,IAAIE,MAAM,CAACjC,SAAS,KAAKkC,SAAS,IAAID,MAAM,CAACjC,SAAS,KAAK,IAAI,CAACA,SAAS,EAAE;MACzEP,GAAG,CAAC0C,OAAO,CAAC,kDAAkD,CAAC;MAC/D;IACF;IAEA,IAAI,CAACd,wBAAwB,CAAC,CAAC;IAE/B,IAAIW,OAAO,KAAK,WAAW,EAAE;MAC3B,IAAI,CAACV,MAAM,CACT/B,gBAAgB,CAAC6C,SAAS,CAAC;QACzBpC,SAAS,EAAE,IAAI,CAACA,SAAS;QACzBwB,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB,OAAO;QAClCS;MACF,CAAC,CACH,CAAC;MACD;IACF;;IAEA;IACA;IACA;IACA,IAAID,OAAO,KAAK,SAAS,EAAE;MACzBvC,GAAG,CAACyB,IAAI,CAAC,mEAAmE,CAAC;MAC7E,IAAI,CAACI,MAAM,CAAC/B,gBAAgB,CAAC8C,SAAS,CAAC,IAAI,CAACrC,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;MAClF;IACF;IAEA,IAAI,CAACF,MAAM,CACT/B,gBAAgB,CAACoC,MAAM,CAAC;MACtB3B,SAAS,EAAE,IAAI,CAACA,SAAS;MACzB4B,SAAS,EAAEK,MAAM,CAACL,SAAS,IAAI,kBAAkB;MACjDJ,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB,OAAO;MAClCS;IACF,CAAC,CACH,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEK,UAAUA,CAAA,EAAS;IACjB,MAAM9B,KAAK,GAAG,IAAI,CAACH,YAAY,CAACG,KAAK;IACrC,IAAIA,KAAK,KAAK,SAAS,IAAIA,KAAK,KAAK,QAAQ,EAAE;MAC7Cf,GAAG,CAACyB,IAAI,CAAC,oDAAoD,CAAC;MAC9D;IACF;IACA,IAAI,CAACG,wBAAwB,CAAC,CAAC;IAE/B,IAAIb,KAAK,KAAK,QAAQ,EAAE;MACtBf,GAAG,CAAC8C,MAAM,CAAC,sEAAsE,CAAC;MAClF,IAAI,CAACjB,MAAM,CACT/B,gBAAgB,CAACoC,MAAM,CAAC;QACtB3B,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB;QACA;QACA;QACA;QACA4B,SAAS,EAAE,WAAW;QACtBJ,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB;MAC7B,CAAC,CACH,CAAC;MACD;IACF;IAEA,IAAI,CAACF,MAAM,CAAC/B,gBAAgB,CAACiD,WAAW,CAAC,IAAI,CAACxC,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;EACtF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEiB,KAAKA,CAAA,EAAS;IACZ,IAAI,IAAI,CAACpC,YAAY,CAACG,KAAK,KAAK,aAAa,EAAE;MAC7Cf,GAAG,CAACyB,IAAI,CAAC,gEAAgE,CAAC;MAC1E;IACF;IACA,MAAMM,OAAO,GAAG,IAAI,CAACnB,YAAY,CAACmB,OAAO,GAAG,CAAC;IAC7C/B,GAAG,CAACyB,IAAI,CAAC,8CAA8CM,OAAO,GAAG,CAAC;IAClE;IACA,IAAI,CAACF,MAAM,CAAC/B,gBAAgB,CAACe,OAAO,CAAC,IAAI,CAACN,SAAS,EAAEwB,OAAO,CAAC,CAAC;EAChE;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEkB,MAAMA,CAAA,EAAS;IACb,IAAI,IAAI,CAACrC,YAAY,CAACG,KAAK,KAAK,aAAa,EAAE;MAC7Cf,GAAG,CAACyB,IAAI,CAAC,kEAAkE,CAAC;MAC5E;IACF;IACA,IAAI,CAACG,wBAAwB,CAAC,CAAC;IAC/B,IAAI,CAACC,MAAM,CACT/B,gBAAgB,CAACoC,MAAM,CAAC;MACtB3B,SAAS,EAAE,IAAI,CAACA,SAAS;MACzB4B,SAAS,EAAE,kBAAkB;MAC7BJ,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB;IAC7B,CAAC,CACH,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEmB,OAAOA,CAAA,EAAS;IACd,IAAI,CAACtB,wBAAwB,CAAC,CAAC;IAE/B,IAAI,IAAI,CAAChB,YAAY,CAACG,KAAK,KAAK,aAAa,EAAE;MAC7C;MACA;MACA,IAAI,CAACc,MAAM,CACT/B,gBAAgB,CAACoC,MAAM,CAAC;QACtB3B,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB4B,SAAS,EAAE,kBAAkB;QAC7BJ,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB;MAC7B,CAAC,CACH,CAAC;MACD;IACF;IAEA,IAAI,CAACF,MAAM,CAAC/B,gBAAgB,CAAC8C,SAAS,CAAC,IAAI,CAACrC,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;EACpF;EAEAoB,OAAOA,CAAA,EAAS;IACd,IAAI,CAACvB,wBAAwB,CAAC,CAAC;IAC/B,IAAI,CAACzB,SAAS,CAACiD,KAAK,CAAC,CAAC;EACxB;EAEQpC,iBAAiBA,CAAA,EAAS;IAChC,IAAI,CAACY,wBAAwB,CAAC,CAAC;IAC/B,IAAI,CAACyB,UAAU,GAAGC,UAAU,CAAC,MAAM;MACjC,IAAI,CAACD,UAAU,GAAGZ,SAAS;MAC3B,IAAI,IAAI,CAAC7B,YAAY,CAACG,KAAK,KAAK,SAAS,EAAE;MAC3Cf,GAAG,CAAC8C,MAAM,CAAC,wEAAwE,CAAC;MACpF,IAAI,CAACjB,MAAM,CAAC/B,gBAAgB,CAACiD,WAAW,CAAC,IAAI,CAACxC,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;IACtF,CAAC,EAAE,IAAI,CAACpB,cAAc,CAAC;EACzB;EAEQiB,wBAAwBA,CAAA,EAAS;IACvC,IAAI,IAAI,CAACyB,UAAU,KAAKZ,SAAS,EAAE;IACnCc,YAAY,CAAC,IAAI,CAACF,UAAU,CAAC;IAC7B,IAAI,CAACA,UAAU,GAAGZ,SAAS;EAC7B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAcT,QAAQA,CAACvB,GAAW,EAAiB;IACjD,IAAIV,eAAe,CAAC,IAAI,CAACa,YAAY,CAACG,KAAK,CAAC,EAAE;MAC5Cf,GAAG,CAACyB,IAAI,CAAC,0DAA0D,CAAC;MACpE;IACF;IACA,IACE,IAAI,CAACb,YAAY,CAACG,KAAK,KAAK,aAAa,IACzC,IAAI,CAACH,YAAY,CAACG,KAAK,KAAK,kBAAkB,EAC9C;MACAf,GAAG,CAACyB,IAAI,CAAC,iDAAiD,CAAC;MAC3D;IACF;IAEA,IAAI,CAACG,wBAAwB,CAAC,CAAC;IAC/B,IAAI,CAACC,MAAM,CAAC/B,gBAAgB,CAAC0D,WAAW,CAAC,IAAI,CAACjD,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;IAEpF,IAAI;MACF,MAAM,IAAI,CAACvB,YAAY,CAACC,GAAG,CAAC;MAC5B,IAAI,CAACoB,MAAM,CAAC/B,gBAAgB,CAAC2D,gBAAgB,CAAC,IAAI,CAAClD,SAAS,EAAE,IAAI,CAACK,YAAY,CAACmB,OAAO,CAAC,CAAC;IAC3F,CAAC,CAAC,MAAM;MACN;MACA;MACA/B,GAAG,CAAC8C,MAAM,CAAC,yBAAyB,CAAC;MACrC,IAAI,CAACjB,MAAM,CACT/B,gBAAgB,CAACoC,MAAM,CAAC;QACtB3B,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB4B,SAAS,EAAE,iBAAiB;QAC5BJ,OAAO,EAAE,IAAI,CAACnB,YAAY,CAACmB;MAC7B,CAAC,CACH,CAAC;IACH;EACF;EAEQF,MAAMA,CAAC6B,IAAqB,EAAQ;IAC1C,IAAI3D,eAAe,CAAC,IAAI,CAACa,YAAY,CAACG,KAAK,CAAC,EAAE;MAC5Cf,GAAG,CAACyB,IAAI,CAAC,qDAAqD,CAAC;MAC/D;IACF;IACA,IAAI,CAACb,YAAY,GAAG8C,IAAI;IACxB,KAAK,MAAMvC,QAAQ,IAAI,IAAI,CAAChB,SAAS,EAAE;MACrC,IAAI;QACFgB,QAAQ,CAAC,CAAC;MACZ,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["launchBankRedirect","defaultLaunchBankRedirect","parseHostedBridgeMessage","createLogger","readPaymentReturn","HostedFlowStates","isTerminalPhase","log","DEFAULT_READY_TIMEOUT_MS","HostedFlowController","listeners","Set","constructor","options","reference","bankLauncher","url","authorizationUrl","readyTimeoutMs","currentState","loading","reportPageMounted","phase","watchForReadiness","state","subscribe","listener","add","delete","handleBridgeMessage","raw","message","info","isPagePresented","type","stopWatchingForReadiness","moveTo","hosted","attempt","openBank","cancelled","failed","errorCode","code","handleReturn","uri","outcome","report","undefined","warning","succeeded","abandoned","failToLoad","severe","unreachable","retry","giveUp","abandon","dispose","clear","readyTimer","setTimeout","clearTimeout","redirecting","awaitingCallback","next"],"sourceRoot":"../../../../src","sources":["core/services/hosted-flow-controller.ts"],"mappings":"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","ignoreList":[]}
@@ -27,6 +27,15 @@ import { parseUrlParts } from "../url-parts.js";
27
27
 
28
28
  /** The flow cannot continue. [code] is the key the page itself renders. */
29
29
 
30
+ /**
31
+ * The page is asking for this device's native risk facts.
32
+ *
33
+ * The one message that expects an answer — not over this channel, which cannot
34
+ * reply, but through the `window.__spareLinkNativeTelemetry` callback the page
35
+ * exposes and the shell invokes by injecting script. A shell that stays silent
36
+ * costs the page one bounded timeout and nothing else.
37
+ */
38
+
30
39
  /**
31
40
  * Parses a message posted by the hosted page.
32
41
  *
@@ -57,6 +66,10 @@ export function parseHostedBridgeMessage(raw) {
57
66
  return {
58
67
  type: 'cancel'
59
68
  };
69
+ case 'spare.telemetry_request':
70
+ return {
71
+ type: 'telemetryRequest'
72
+ };
60
73
  case 'spare.error':
61
74
  {
62
75
  const code = message.code;
@@ -1 +1 @@
1
- {"version":3,"names":["parseUrlParts","parseHostedBridgeMessage","raw","message","asRecord","type","url","isHttpsUrl","code","trim","length","JSON","parse","Array","isArray","parts","scheme","host"],"sourceRoot":"../../../../src","sources":["internal/hosted/bridge-message.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iBAAc;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;;AAKA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,GAAY,EAA8B;EACjF,MAAMC,OAAO,GAAGC,QAAQ,CAACF,GAAG,CAAC;EAC7B,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,IAAI,GAAGF,OAAO,CAACE,IAAI;EACzB,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE,OAAO,IAAI;EAEzC,QAAQA,IAAI;IACV,KAAK,aAAa;MAChB,OAAO;QAAEA,IAAI,EAAE;MAAQ,CAAC;IAC1B,KAAK,gBAAgB;MAAE;QACrB,MAAMC,GAAG,GAAGH,OAAO,CAACG,GAAG;QACvB,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAACC,UAAU,CAACD,GAAG,CAAC,EAAE,OAAO,IAAI;QAC5D,OAAO;UAAED,IAAI,EAAE,SAAS;UAAEC;QAAI,CAAC;MACjC;IACA,KAAK,cAAc;MACjB,OAAO;QAAED,IAAI,EAAE;MAAS,CAAC;IAC3B,KAAK,aAAa;MAAE;QAClB,MAAMG,IAAI,GAAGL,OAAO,CAACK,IAAI;QACzB,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACC,IAAI,CAAC,CAAC,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;QACrE,OAAO;UAAEL,IAAI,EAAE,OAAO;UAAEG;QAAK,CAAC;MAChC;IACA;MACE,OAAO,IAAI;EACf;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASJ,QAAQA,CAACF,GAAY,EAAkC;EAC9D,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI;MACF,OAAOE,QAAQ,CAACO,IAAI,CAACC,KAAK,CAACV,GAAG,CAAY,CAAC;IAC7C,CAAC,CAAC,MAAM;MACN,OAAO,IAAI;IACb;EACF;EACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIW,KAAK,CAACC,OAAO,CAACZ,GAAG,CAAC,EAAE,OAAO,IAAI;EAC9E,OAAOA,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,UAAUA,CAACD,GAAW,EAAW;EACxC,MAAMS,KAAK,GAAGf,aAAa,CAACM,GAAG,CAAC;EAChC,OAAOS,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACC,MAAM,KAAK,OAAO,IAAID,KAAK,CAACE,IAAI,CAACP,MAAM,GAAG,CAAC;AAC5E","ignoreList":[]}
1
+ {"version":3,"names":["parseUrlParts","parseHostedBridgeMessage","raw","message","asRecord","type","url","isHttpsUrl","code","trim","length","JSON","parse","Array","isArray","parts","scheme","host"],"sourceRoot":"../../../../src","sources":["internal/hosted/bridge-message.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iBAAc;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;;AAKA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,GAAY,EAA8B;EACjF,MAAMC,OAAO,GAAGC,QAAQ,CAACF,GAAG,CAAC;EAC7B,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,IAAI,GAAGF,OAAO,CAACE,IAAI;EACzB,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE,OAAO,IAAI;EAEzC,QAAQA,IAAI;IACV,KAAK,aAAa;MAChB,OAAO;QAAEA,IAAI,EAAE;MAAQ,CAAC;IAC1B,KAAK,gBAAgB;MAAE;QACrB,MAAMC,GAAG,GAAGH,OAAO,CAACG,GAAG;QACvB,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAACC,UAAU,CAACD,GAAG,CAAC,EAAE,OAAO,IAAI;QAC5D,OAAO;UAAED,IAAI,EAAE,SAAS;UAAEC;QAAI,CAAC;MACjC;IACA,KAAK,cAAc;MACjB,OAAO;QAAED,IAAI,EAAE;MAAS,CAAC;IAC3B,KAAK,yBAAyB;MAC5B,OAAO;QAAEA,IAAI,EAAE;MAAmB,CAAC;IACrC,KAAK,aAAa;MAAE;QAClB,MAAMG,IAAI,GAAGL,OAAO,CAACK,IAAI;QACzB,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACC,IAAI,CAAC,CAAC,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;QACrE,OAAO;UAAEL,IAAI,EAAE,OAAO;UAAEG;QAAK,CAAC;MAChC;IACA;MACE,OAAO,IAAI;EACf;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASJ,QAAQA,CAACF,GAAY,EAAkC;EAC9D,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI;MACF,OAAOE,QAAQ,CAACO,IAAI,CAACC,KAAK,CAACV,GAAG,CAAY,CAAC;IAC7C,CAAC,CAAC,MAAM;MACN,OAAO,IAAI;IACb;EACF;EACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIW,KAAK,CAACC,OAAO,CAACZ,GAAG,CAAC,EAAE,OAAO,IAAI;EAC9E,OAAOA,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,UAAUA,CAACD,GAAW,EAAW;EACxC,MAAMS,KAAK,GAAGf,aAAa,CAACM,GAAG,CAAC;EAChC,OAAOS,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACC,MAAM,KAAK,OAAO,IAAID,KAAK,CAACE,IAAI,CAACP,MAAM,GAAG,CAAC;AAC5E","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Delivers a telemetry reply into the hosted page.
5
+ *
6
+ * The WebView message channel is one-way, so the reply travels the other way:
7
+ * the page exposes `window.__spareLinkNativeTelemetry` before it asks, and the
8
+ * shell answers by injecting a call to it. A page without the callback — an
9
+ * older page, or one that already gave up waiting — receives nothing and the
10
+ * injected chunk evaluates to a harmless literal.
11
+ */
12
+
13
+ /** Page-exposed global the shell invokes with its telemetry reply. */
14
+ export const NATIVE_TELEMETRY_CALLBACK_NAME = '__spareLinkNativeTelemetry';
15
+
16
+ /**
17
+ * Builds the script that hands [payload] to the page's telemetry callback.
18
+ *
19
+ * The payload is embedded as a JSON literal. U+2028 and U+2029 are legal inside
20
+ * a JSON string but terminate a statement when evaluated as script, so they are
21
+ * escaped; the result is a single expression that is inert on a page without
22
+ * the callback.
23
+ */
24
+ export function buildNativeTelemetryReplyScript(payload) {
25
+ const literal = JSON.stringify(payload).replaceAll('\u2028', '\\u2028').replaceAll('\u2029', '\\u2029');
26
+ return `window.${NATIVE_TELEMETRY_CALLBACK_NAME} && ` + `window.${NATIVE_TELEMETRY_CALLBACK_NAME}(${literal}); true;`;
27
+ }
28
+
29
+ /**
30
+ * Builds the handler the webview runs when the page asks for telemetry.
31
+ *
32
+ * Collection and injection are injected so the handler is a pure seam: the
33
+ * component wires the real collector and the WebView reference into it. A
34
+ * collector that answers nothing, or throws, injects nothing — the page's own
35
+ * timeout settles the request.
36
+ */
37
+ export function createTelemetryRequestHandler(deps) {
38
+ return async () => {
39
+ let payload;
40
+ try {
41
+ payload = await deps.collect();
42
+ } catch {
43
+ payload = null;
44
+ }
45
+ if (payload == null) return;
46
+ try {
47
+ deps.inject(buildNativeTelemetryReplyScript(payload));
48
+ } catch {
49
+ // A torn-down webview cannot be injected into; the page's timeout answers.
50
+ }
51
+ };
52
+ }
53
+ //# sourceMappingURL=native-telemetry-reply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NATIVE_TELEMETRY_CALLBACK_NAME","buildNativeTelemetryReplyScript","payload","literal","JSON","stringify","replaceAll","createTelemetryRequestHandler","deps","collect","inject"],"sourceRoot":"../../../../src","sources":["internal/telemetry/native-telemetry-reply.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMA,8BAA8B,GAAG,4BAA4B;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,+BAA+BA,CAACC,OAAgC,EAAU;EACxF,MAAMC,OAAO,GAAGC,IAAI,CAACC,SAAS,CAACH,OAAO,CAAC,CACpCI,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAC/BA,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;EAClC,OACE,UAAUN,8BAA8B,MAAM,GAC9C,UAAUA,8BAA8B,IAAIG,OAAO,UAAU;AAEjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,6BAA6BA,CAACC,IAG7C,EAAuB;EACtB,OAAO,YAAY;IACjB,IAAIN,OAAuC;IAC3C,IAAI;MACFA,OAAO,GAAG,MAAMM,IAAI,CAACC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,MAAM;MACNP,OAAO,GAAG,IAAI;IAChB;IACA,IAAIA,OAAO,IAAI,IAAI,EAAE;IAErB,IAAI;MACFM,IAAI,CAACE,MAAM,CAACT,+BAA+B,CAACC,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Collects this device's native risk facts for the hosted payment page.
5
+ *
6
+ * Every probe is injected, so the collector runs under Jest with fakes and the
7
+ * module wiring lives in `risk-telemetry-probes`. Every probe is also allowed to
8
+ * fail or hang: a throwing or slow reading leaves its fact absent, because a risk
9
+ * reading must never delay or break a payment.
10
+ *
11
+ * The payload mirrors the page's own risk contract: camelCase keys under a
12
+ * `deviceInformation` block, facts only, nothing fabricated.
13
+ */
14
+
15
+ /** How long any single probe may take before its fact is given up on. */
16
+ export const TELEMETRY_PROBE_BUDGET_MS = 800;
17
+
18
+ /** Identity and build facts read from the platform. */
19
+
20
+ /** A battery reading, with the level as a 0 to 1 fraction. */
21
+
22
+ /** The network medium classes the risk payload distinguishes. */
23
+
24
+ /** The probes the collector runs. Each may answer null, throw, or hang. */
25
+
26
+ const CONNECTION_LABELS = {
27
+ wifi: 'WiFi',
28
+ cellular: 'Cellular',
29
+ other: 'Other'
30
+ };
31
+
32
+ /** Runs a probe under the budget, yielding null on failure or timeout. */
33
+ async function guarded(probe) {
34
+ try {
35
+ return await Promise.race([probe(), new Promise(resolve => setTimeout(() => resolve(null), TELEMETRY_PROBE_BUDGET_MS))]);
36
+ } catch {
37
+ return null;
38
+ }
39
+ }
40
+ function read(reader) {
41
+ try {
42
+ return reader();
43
+ } catch {
44
+ return null;
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Collects whatever the device answered within the per-probe budget.
50
+ *
51
+ * Returns null when nothing answered, so a caller hands the page nothing rather
52
+ * than an empty block.
53
+ */
54
+ export async function collectRiskTelemetry(probes) {
55
+ const [snapshot, battery, connection] = await Promise.all([guarded(probes.loadDeviceSnapshot), guarded(probes.loadBattery), guarded(probes.loadConnection)]);
56
+ const localeTag = read(probes.localeTag);
57
+ const localDateTime = read(probes.localDateTime);
58
+ const deviceInformation = {};
59
+ if (snapshot?.operatingSystem != null) {
60
+ deviceInformation.deviceOperatingSystem = snapshot.operatingSystem;
61
+ }
62
+ if (snapshot?.operatingSystemVersion != null) {
63
+ deviceInformation.deviceOperatingSystemVersion = snapshot.operatingSystemVersion;
64
+ }
65
+ const manufacturer = {};
66
+ if (snapshot?.model != null) manufacturer.model = snapshot.model;
67
+ if (snapshot?.manufacturer != null) manufacturer.manufacturer = snapshot.manufacturer;
68
+ if (Object.keys(manufacturer).length > 0) {
69
+ deviceInformation.deviceManufacturer = manufacturer;
70
+ }
71
+ if (snapshot?.vendorIdentifier != null) {
72
+ deviceInformation.alternativeDeviceId = snapshot.vendorIdentifier;
73
+ }
74
+ if (localeTag != null) deviceInformation.deviceLanguage = localeTag;
75
+ if (localDateTime != null) deviceInformation.deviceLocalDateTime = localDateTime;
76
+ if (connection != null) deviceInformation.connectionType = CONNECTION_LABELS[connection];
77
+ const batteryStatus = {};
78
+ const level = battery?.levelFraction;
79
+ if (level != null && level >= 0 && level <= 1) batteryStatus.level = level;
80
+ if (battery?.isCharging != null) batteryStatus.isCharging = battery.isCharging;
81
+ if (Object.keys(batteryStatus).length > 0) {
82
+ deviceInformation.batteryStatus = batteryStatus;
83
+ }
84
+ const environmentContext = [];
85
+ if (snapshot?.isPhysicalDevice === false) environmentContext.push('EmulatorDetected');
86
+ if (environmentContext.length > 0) {
87
+ deviceInformation.deviceEnvironmentContext = environmentContext;
88
+ }
89
+ if (Object.keys(deviceInformation).length === 0) return null;
90
+ return {
91
+ deviceInformation
92
+ };
93
+ }
94
+ //# sourceMappingURL=risk-telemetry-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TELEMETRY_PROBE_BUDGET_MS","CONNECTION_LABELS","wifi","cellular","other","guarded","probe","Promise","race","resolve","setTimeout","read","reader","collectRiskTelemetry","probes","snapshot","battery","connection","all","loadDeviceSnapshot","loadBattery","loadConnection","localeTag","localDateTime","deviceInformation","operatingSystem","deviceOperatingSystem","operatingSystemVersion","deviceOperatingSystemVersion","manufacturer","model","Object","keys","length","deviceManufacturer","vendorIdentifier","alternativeDeviceId","deviceLanguage","deviceLocalDateTime","connectionType","batteryStatus","level","levelFraction","isCharging","environmentContext","isPhysicalDevice","push","deviceEnvironmentContext"],"sourceRoot":"../../../../src","sources":["internal/telemetry/risk-telemetry-collector.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The real device probes behind `collectRiskTelemetry`.
5
+ *
6
+ * Every expo module here is an optional peer, loaded lazily inside a try/catch:
7
+ * a host app that ships without one simply reports that fact as absent, and no
8
+ * import of this file can throw for want of a native module. Structural `*Like`
9
+ * types keep this file honest about how little of each module it relies on.
10
+ */
11
+
12
+ import { Platform } from 'react-native';
13
+ function load(moduleName) {
14
+ try {
15
+ // Resolved at call time so a host app without the optional peer never pays
16
+ // for it — bundlers keep the require because the name is static.
17
+ switch (moduleName) {
18
+ case 'expo-device':
19
+ return require('expo-device');
20
+ case 'expo-battery':
21
+ return require('expo-battery');
22
+ case 'expo-network':
23
+ return require('expo-network');
24
+ case 'expo-application':
25
+ return require('expo-application');
26
+ default:
27
+ return null;
28
+ }
29
+ } catch {
30
+ return null;
31
+ }
32
+ }
33
+ async function loadDeviceSnapshot() {
34
+ const device = load('expo-device');
35
+ if (device == null) return null;
36
+
37
+ // The vendor identifier is iOS-only by design: Android offers no equivalent
38
+ // scoped identifier worth persisting against a payment.
39
+ let vendorIdentifier = null;
40
+ if (Platform.OS === 'ios') {
41
+ const application = load('expo-application');
42
+ if (application != null) {
43
+ try {
44
+ vendorIdentifier = await application.getIosIdForVendorAsync();
45
+ } catch {
46
+ vendorIdentifier = null;
47
+ }
48
+ }
49
+ }
50
+ return {
51
+ operatingSystem: Platform.OS === 'ios' ? 'iOS' : 'Android',
52
+ operatingSystemVersion: device.osVersion ?? null,
53
+ model: device.modelName ?? null,
54
+ manufacturer: device.manufacturer ?? null,
55
+ vendorIdentifier,
56
+ isPhysicalDevice: typeof device.isDevice === 'boolean' ? device.isDevice : null
57
+ };
58
+ }
59
+ async function loadBattery() {
60
+ const battery = load('expo-battery');
61
+ if (battery == null) return null;
62
+ const level = await battery.getBatteryLevelAsync();
63
+ const state = await battery.getBatteryStateAsync();
64
+ const charging = battery.BatteryState?.CHARGING;
65
+ const full = battery.BatteryState?.FULL;
66
+ return {
67
+ // The module reports -1 when the level cannot be read; the collector's 0..1
68
+ // bound would drop it anyway, made explicit here.
69
+ levelFraction: level >= 0 && level <= 1 ? level : null,
70
+ isCharging: charging != null ? state === charging || state === full : null
71
+ };
72
+ }
73
+ async function loadConnection() {
74
+ const network = load('expo-network');
75
+ if (network == null) return null;
76
+ const state = await network.getNetworkStateAsync();
77
+ const type = state.type?.toUpperCase() ?? null;
78
+ if (type == null || type === 'NONE' || type === 'UNKNOWN') return null;
79
+ if (type === 'WIFI') return 'wifi';
80
+ if (type === 'CELLULAR') return 'cellular';
81
+ return 'other';
82
+ }
83
+ function localeTag() {
84
+ try {
85
+ const tag = Intl.DateTimeFormat().resolvedOptions().locale;
86
+ return typeof tag === 'string' && tag.length > 0 ? tag : null;
87
+ } catch {
88
+ return null;
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Formats a date as local-time ISO 8601 with a numeric UTC offset, e.g.
94
+ * `2026-08-25T10:45:46.319+05:30` — never the UTC `Z` form. This keeps the
95
+ * timestamp on the payer's own clock so it reads the same as the device shows,
96
+ * and matches the Flutter SDK's `deviceLocalDateTime`.
97
+ */
98
+ export function formatLocalIsoWithOffset(date) {
99
+ const pad = (value, width = 2) => String(value).padStart(width, '0');
100
+
101
+ // getTimezoneOffset is minutes behind UTC, so east-of-UTC zones are negative;
102
+ // flip the sign to render the conventional offset.
103
+ const offsetMinutes = -date.getTimezoneOffset();
104
+ const sign = offsetMinutes >= 0 ? '+' : '-';
105
+ const absOffset = Math.abs(offsetMinutes);
106
+ const localDate = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
107
+ const localTime = `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${pad(date.getMilliseconds(), 3)}`;
108
+ const offset = `${sign}${pad(Math.floor(absOffset / 60))}:${pad(absOffset % 60)}`;
109
+ return `${localDate}T${localTime}${offset}`;
110
+ }
111
+ function localDateTime() {
112
+ try {
113
+ return formatLocalIsoWithOffset(new Date());
114
+ } catch {
115
+ return null;
116
+ }
117
+ }
118
+
119
+ /** The production probe set, ready for `collectRiskTelemetry`. */
120
+ export function createRiskTelemetryProbes() {
121
+ return {
122
+ loadDeviceSnapshot,
123
+ loadBattery,
124
+ loadConnection,
125
+ localeTag,
126
+ localDateTime
127
+ };
128
+ }
129
+ //# sourceMappingURL=risk-telemetry-probes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","load","moduleName","require","loadDeviceSnapshot","device","vendorIdentifier","OS","application","getIosIdForVendorAsync","operatingSystem","operatingSystemVersion","osVersion","model","modelName","manufacturer","isPhysicalDevice","isDevice","loadBattery","battery","level","getBatteryLevelAsync","state","getBatteryStateAsync","charging","BatteryState","CHARGING","full","FULL","levelFraction","isCharging","loadConnection","network","getNetworkStateAsync","type","toUpperCase","localeTag","tag","Intl","DateTimeFormat","resolvedOptions","locale","length","formatLocalIsoWithOffset","date","pad","value","width","String","padStart","offsetMinutes","getTimezoneOffset","sign","absOffset","Math","abs","localDate","getFullYear","getMonth","getDate","localTime","getHours","getMinutes","getSeconds","getMilliseconds","offset","floor","localDateTime","Date","createRiskTelemetryProbes"],"sourceRoot":"../../../../src","sources":["internal/telemetry/risk-telemetry-probes.ts"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,8 @@
3
3
  import { useCallback, useEffect, useRef } from 'react';
4
4
  import { ActivityIndicator, StyleSheet, Text, View } from 'react-native';
5
5
  import { isTerminalPhase } from "../../core/services/hosted-flow-state.js";
6
+ import { collectRiskTelemetry } from "../../internal/telemetry/risk-telemetry-collector.js";
7
+ import { createRiskTelemetryProbes } from "../../internal/telemetry/risk-telemetry-probes.js";
6
8
  import { useHostedFlowState } from "../hooks/use-hosted-flow-state.js";
7
9
  import { PageUnavailableScreen } from "../screens/page-unavailable-screen.js";
8
10
  import { RedirectHandoffScreen } from "../screens/redirect-handoff-screen.js";
@@ -62,6 +64,11 @@ export function HostedPaymentPage(props) {
62
64
  const handleBridgeMessage = useCallback(message => {
63
65
  void controller.handleBridgeMessage(message);
64
66
  }, [controller]);
67
+
68
+ // One probe set for the page's lifetime; collection itself runs per request.
69
+ const handleTelemetryRequest = useCallback(() => {
70
+ return collectRiskTelemetry(createRiskTelemetryProbes());
71
+ }, []);
65
72
  const handleLoadFailure = useCallback(() => {
66
73
  controller.failToLoad();
67
74
  }, [controller]);
@@ -93,6 +100,7 @@ export function HostedPaymentPage(props) {
93
100
  baseUrl: baseUrl,
94
101
  reference: controller.reference,
95
102
  onBridgeMessage: handleBridgeMessage,
103
+ onTelemetryRequest: handleTelemetryRequest,
96
104
  onLoadFailure: handleLoadFailure,
97
105
  onMounted: handlePageMounted
98
106
  }, state.attempt)
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","ActivityIndicator","StyleSheet","Text","View","isTerminalPhase","useHostedFlowState","PageUnavailableScreen","RedirectHandoffScreen","ResultScreen","ResumeProcessingScreen","Colors","Spacing","Typography","HostedPaymentWebView","jsx","_jsx","jsxs","_jsxs","RESULT_DWELL_MS","HostedPaymentPage","props","controller","baseUrl","onResolved","state","awaitingSinceMs","undefined","phase","current","Date","now","wasNeverReached","errorCode","resolved","timer","setTimeout","clearTimeout","handleBridgeMessage","message","handleLoadFailure","failToLoad","handlePageMounted","reportPageMounted","handleRetry","retry","handleGiveUp","giveUp","style","styles","fill","children","accessibilityElementsHidden","importantForAccessibility","reference","onBridgeMessage","onLoadFailure","onMounted","attempt","loadingCover","testID","size","color","spareBlue","bodyMuted","loadingLabel","onRetry","onCancel","awaitingCallbackStartedAtMs","abandon","title","isSuccess","onDone","create","flex","backgroundColor","surfacePage","absoluteFillObject","alignItems","justifyContent","gap","lg","textAlign"],"sourceRoot":"../../../../src","sources":["ui/hosted/hosted-payment-page.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","ActivityIndicator","StyleSheet","Text","View","isTerminalPhase","collectRiskTelemetry","createRiskTelemetryProbes","useHostedFlowState","PageUnavailableScreen","RedirectHandoffScreen","ResultScreen","ResumeProcessingScreen","Colors","Spacing","Typography","HostedPaymentWebView","jsx","_jsx","jsxs","_jsxs","RESULT_DWELL_MS","HostedPaymentPage","props","controller","baseUrl","onResolved","state","awaitingSinceMs","undefined","phase","current","Date","now","wasNeverReached","errorCode","resolved","timer","setTimeout","clearTimeout","handleBridgeMessage","message","handleTelemetryRequest","handleLoadFailure","failToLoad","handlePageMounted","reportPageMounted","handleRetry","retry","handleGiveUp","giveUp","style","styles","fill","children","accessibilityElementsHidden","importantForAccessibility","reference","onBridgeMessage","onTelemetryRequest","onLoadFailure","onMounted","attempt","loadingCover","testID","size","color","spareBlue","bodyMuted","loadingLabel","onRetry","onCancel","awaitingCallbackStartedAtMs","abandon","title","isSuccess","onDone","create","flex","backgroundColor","surfacePage","absoluteFillObject","alignItems","justifyContent","gap","lg","textAlign"],"sourceRoot":"../../../../src","sources":["ui/hosted/hosted-payment-page.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import { useCallback, useEffect } from 'react';
3
+ import { useCallback, useEffect, useRef } from 'react';
4
4
  import { StyleSheet, View } from 'react-native';
5
5
  import { WebView } from 'react-native-webview';
6
+ import { parseHostedBridgeMessage } from "../../internal/hosted/bridge-message.js";
6
7
  import { buildHostedPaymentUrl, isHostedOriginUrl } from "../../internal/hosted/hosted-url.js";
7
8
  import { createLogger } from "../../internal/logger.js";
9
+ import { createTelemetryRequestHandler } from "../../internal/telemetry/native-telemetry-reply.js";
8
10
  import { parseUrlParts } from "../../internal/url-parts.js";
9
11
  import { Colors } from "../theme/index.js";
10
12
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -47,6 +49,7 @@ export function HostedPaymentWebView(props) {
47
49
  baseUrl,
48
50
  reference,
49
51
  onBridgeMessage,
52
+ onTelemetryRequest,
50
53
  onLoadFailure,
51
54
  onMounted
52
55
  } = props;
@@ -54,6 +57,7 @@ export function HostedPaymentWebView(props) {
54
57
  baseUrl,
55
58
  reference
56
59
  });
60
+ const webViewRef = useRef(null);
57
61
 
58
62
  // This reports that *this* webview exists, and a retry mounts a fresh instance
59
63
  // which reports itself anew. Re-running on a new callback identity would
@@ -63,8 +67,21 @@ export function HostedPaymentWebView(props) {
63
67
  onMounted?.();
64
68
  }, []);
65
69
  const handleMessage = useCallback(event => {
66
- onBridgeMessage(event.nativeEvent.data);
67
- }, [onBridgeMessage]);
70
+ const raw = event.nativeEvent.data;
71
+
72
+ // The telemetry request is answered here, where the webview reference
73
+ // lives, because the reply is delivered by injecting script — a channel
74
+ // only this component holds. Everything else stays the caller's.
75
+ if (onTelemetryRequest && parseHostedBridgeMessage(raw)?.type === 'telemetryRequest') {
76
+ const respond = createTelemetryRequestHandler({
77
+ collect: onTelemetryRequest,
78
+ inject: script => webViewRef.current?.injectJavaScript(script)
79
+ });
80
+ void respond();
81
+ return;
82
+ }
83
+ onBridgeMessage(raw);
84
+ }, [onBridgeMessage, onTelemetryRequest]);
68
85
 
69
86
  // Every navigation is routed through here rather than through `originWhitelist`.
70
87
  // A URL that fails the whitelist is handed to `Linking.openURL` by
@@ -88,6 +105,7 @@ export function HostedPaymentWebView(props) {
88
105
  style: styles.container,
89
106
  testID: "hosted-payment-webview",
90
107
  children: /*#__PURE__*/_jsx(WebView, {
108
+ ref: webViewRef,
91
109
  source: {
92
110
  uri
93
111
  },
@@ -133,6 +151,17 @@ export function HostedPaymentWebView(props) {
133
151
  style: styles.webview,
134
152
  javaScriptEnabled: true,
135
153
  domStorageEnabled: true
154
+ // Lets the page's consent screen ask for a coarse location fix, which it
155
+ // attaches to the payment as a risk signal. Android only; iOS raises its
156
+ // own per-origin system prompt, gated by the host app's usage-description
157
+ // entry. This toggle is frame-wide — the platform offers no per-origin
158
+ // answer here — so the scope rests on `handleShouldStartLoad` above
159
+ // refusing every off-origin document in this frame. The toggle alone also
160
+ // reveals nothing: the host application must hold the user-facing location
161
+ // permission, and without it the page's request fails and the payment
162
+ // proceeds without the signal.
163
+ ,
164
+ geolocationEnabled: true
136
165
  // The page holds a payment in progress and nothing else should share its
137
166
  // storage, on this device or between payers on it.
138
167
  ,
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","StyleSheet","View","WebView","buildHostedPaymentUrl","isHostedOriginUrl","createLogger","parseUrlParts","Colors","jsx","_jsx","log","safeOrigin","url","parts","scheme","host","shouldAllowHostedNavigation","args","HostedPaymentWebView","props","baseUrl","reference","onBridgeMessage","onLoadFailure","onMounted","uri","handleMessage","event","nativeEvent","data","handleShouldStartLoad","style","styles","container","testID","children","source","onMessage","originWhitelist","ALLOW_ALL_ORIGINS","onShouldStartLoadWithRequest","onError","severe","description","code","onHttpError","statusCode","onContentProcessDidTerminate","onRenderProcessGone","didCrash","webview","javaScriptEnabled","domStorageEnabled","incognito","setSupportMultipleWindows","allowFileAccess","allowUniversalAccessFromFileURLs","allowFileAccessFromFileURLs","create","flex","backgroundColor","surfacePage"],"sourceRoot":"../../../../src","sources":["ui/hosted/hosted-payment-webview.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","StyleSheet","View","WebView","parseHostedBridgeMessage","buildHostedPaymentUrl","isHostedOriginUrl","createLogger","createTelemetryRequestHandler","parseUrlParts","Colors","jsx","_jsx","log","safeOrigin","url","parts","scheme","host","shouldAllowHostedNavigation","args","HostedPaymentWebView","props","baseUrl","reference","onBridgeMessage","onTelemetryRequest","onLoadFailure","onMounted","uri","webViewRef","handleMessage","event","raw","nativeEvent","data","type","respond","collect","inject","script","current","injectJavaScript","handleShouldStartLoad","style","styles","container","testID","children","ref","source","onMessage","originWhitelist","ALLOW_ALL_ORIGINS","onShouldStartLoadWithRequest","onError","severe","description","code","onHttpError","statusCode","onContentProcessDidTerminate","onRenderProcessGone","didCrash","webview","javaScriptEnabled","domStorageEnabled","geolocationEnabled","incognito","setSupportMultipleWindows","allowFileAccess","allowUniversalAccessFromFileURLs","allowFileAccessFromFileURLs","create","flex","backgroundColor","surfacePage"],"sourceRoot":"../../../../src","sources":["ui/hosted/hosted-payment-webview.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,5 +8,5 @@
8
8
  * `changeset version`). The src/index.ts smoke test asserts this matches
9
9
  * package.json's version.
10
10
  */
11
- export const SDK_VERSION = '1.0.1';
11
+ export const SDK_VERSION = '1.1.1';
12
12
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-flow-controller.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/hosted-flow-controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAqC,MAAM,qBAAqB,CAAC;AAI9F,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,UAAU,CAA4C;gBAElD,OAAO,EAAE,2BAA2B;IAQhD;;;;;OAKG;IACH,iBAAiB,IAAI,IAAI;IAKzB,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;;;;;OAMG;IACG,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CzD;;;;;OAKG;IACH,+EAA+E;IAC/E,OAAO,CAAC,eAAe;IAKvB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IA4CrC;;;;;;;;;;;;;OAaG;IACH,UAAU,IAAI,IAAI;IA2BlB;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAWb;;;;;OAKG;IACH,MAAM,IAAI,IAAI;IAed;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAmBf,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,wBAAwB;IAMhC;;;;;;;OAOG;YACW,QAAQ;IAiCtB,OAAO,CAAC,MAAM;CAcf"}
1
+ {"version":3,"file":"hosted-flow-controller.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/hosted-flow-controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAqC,MAAM,qBAAqB,CAAC;AAI9F,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,UAAU,CAA4C;gBAElD,OAAO,EAAE,2BAA2B;IAQhD;;;;;OAKG;IACH,iBAAiB,IAAI,IAAI;IAKzB,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;;;;;OAMG;IACG,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAiDzD;;;;;OAKG;IACH,+EAA+E;IAC/E,OAAO,CAAC,eAAe;IAKvB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IA4CrC;;;;;;;;;;;;;OAaG;IACH,UAAU,IAAI,IAAI;IA2BlB;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAWb;;;;;OAKG;IACH,MAAM,IAAI,IAAI;IAed;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAmBf,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,wBAAwB;IAMhC;;;;;;;OAOG;YACW,QAAQ;IAiCtB,OAAO,CAAC,MAAM;CAcf"}