@onramper/onramper-react-native 1.2.2-1 → 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 (69) hide show
  1. package/CHANGELOG.md +193 -0
  2. package/README.md +45 -3
  3. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  4. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftinterface +107 -4
  5. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/OnramperSDK +0 -0
  6. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
  7. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +3560 -2684
  8. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  9. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +107 -4
  10. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  11. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +107 -4
  12. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/OnramperSDK +0 -0
  13. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
  14. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +3560 -2684
  15. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/OnramperSDK.yml +3523 -2651
  16. package/ios/HybridOnramperCheckoutButton.swift +1 -1
  17. package/ios/HybridOnramperNitro.swift +140 -78
  18. package/ios/OnramperSDKBridge.swift +19 -2
  19. package/ios/PreparedIntentRegistry.swift +124 -6
  20. package/ios/SDKLogRelay.swift +41 -0
  21. package/lib/commonjs/OnramperClient.js +66 -5
  22. package/lib/commonjs/OnramperClient.js.map +1 -1
  23. package/lib/commonjs/errors.js +19 -5
  24. package/lib/commonjs/errors.js.map +1 -1
  25. package/lib/module/OnramperClient.js +66 -5
  26. package/lib/module/OnramperClient.js.map +1 -1
  27. package/lib/module/errors.js +19 -5
  28. package/lib/module/errors.js.map +1 -1
  29. package/lib/typescript/commonjs/src/OnramperClient.d.ts +5 -1
  30. package/lib/typescript/commonjs/src/OnramperClient.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/src/errors.d.ts +6 -1
  32. package/lib/typescript/commonjs/src/errors.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/src/events.d.ts +10 -0
  34. package/lib/typescript/commonjs/src/events.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/src/index.d.ts +1 -1
  36. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts +3 -0
  38. package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/src/types.d.ts +32 -3
  40. package/lib/typescript/commonjs/src/types.d.ts.map +1 -1
  41. package/lib/typescript/module/src/OnramperClient.d.ts +5 -1
  42. package/lib/typescript/module/src/OnramperClient.d.ts.map +1 -1
  43. package/lib/typescript/module/src/errors.d.ts +6 -1
  44. package/lib/typescript/module/src/errors.d.ts.map +1 -1
  45. package/lib/typescript/module/src/events.d.ts +10 -0
  46. package/lib/typescript/module/src/events.d.ts.map +1 -1
  47. package/lib/typescript/module/src/index.d.ts +1 -1
  48. package/lib/typescript/module/src/index.d.ts.map +1 -1
  49. package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts +3 -0
  50. package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts.map +1 -1
  51. package/lib/typescript/module/src/types.d.ts +32 -3
  52. package/lib/typescript/module/src/types.d.ts.map +1 -1
  53. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.cpp +3 -3
  54. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.hpp +7 -7
  55. package/nitrogen/generated/ios/c++/HybridOnramperNitroSpecSwift.hpp +6 -0
  56. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +5 -5
  57. package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec.swift +1 -0
  58. package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec_cxx.swift +27 -11
  59. package/nitrogen/generated/ios/swift/OnramperNitroConfig.swift +16 -6
  60. package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.cpp +1 -0
  61. package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.hpp +1 -0
  62. package/nitrogen/generated/shared/c++/OnramperNitroConfig.hpp +10 -2
  63. package/package.json +3 -2
  64. package/src/OnramperClient.ts +67 -4
  65. package/src/errors.ts +29 -6
  66. package/src/events.ts +5 -0
  67. package/src/index.ts +3 -0
  68. package/src/specs/OnramperNitro.nitro.ts +3 -0
  69. package/src/types.ts +36 -3
@@ -30,9 +30,23 @@ class OnramperClient {
30
30
  // Resolved when the constructor-issued configure() completes. Public methods
31
31
  // that need the native client await this first.
32
32
 
33
+ destroyed = false;
33
34
  constructor(config) {
35
+ if (config.logHandler) {
36
+ const handler = config.logHandler;
37
+ this.native.setLogListener(json => {
38
+ if (this.destroyed) return;
39
+ try {
40
+ handler(JSON.parse(json));
41
+ } catch {
42
+ // Diagnostics must never interrupt checkout; do not log callback data.
43
+ console.warn('Onramper logHandler failed.');
44
+ }
45
+ });
46
+ }
34
47
  // Single native state callback → update the mirror + fan out to listeners.
35
48
  this.native.setStateListener(json => {
49
+ if (this.destroyed) return;
36
50
  const s = JSON.parse(json);
37
51
  this.state = s;
38
52
  if (s.kind === 'failed') this.lastError = _errors.OnramperError.from(s.error);
@@ -42,6 +56,7 @@ class OnramperClient {
42
56
  // Single native checkout-event callback → keep the transaction ID mirror
43
57
  // synchronized at finalization, then fan out to checkout listeners.
44
58
  this.native.setEventListener(json => {
59
+ if (this.destroyed) return;
45
60
  const e = JSON.parse(json);
46
61
  if (e.type === 'checkoutFinalized') {
47
62
  this.updateCurrentTransactionId(e.response.onramperTransactionId);
@@ -49,6 +64,7 @@ class OnramperClient {
49
64
  for (const fn of this.eventListeners) fn(e);
50
65
  });
51
66
  this.native.setTransactionIdListener(transactionId => {
67
+ if (this.destroyed) return;
52
68
  // The SDK transiently publishes nil while re-preparing after the payment
53
69
  // sheet is dismissed. The finalized transaction ID remains durable across
54
70
  // that attempt change; only explicit reset()/signOut() clear the JS mirror.
@@ -59,7 +75,9 @@ class OnramperClient {
59
75
  // Nitro stores the async callback natively and awaits it directly — no
60
76
  // event round-trip needed.
61
77
  this.native.setSessionExpirationHandler(async () => {
78
+ this.assertActive();
62
79
  const creds = await config.onSessionExpired();
80
+ this.assertActive();
63
81
  return {
64
82
  sessionId: creds.sessionId,
65
83
  sessionToken: creds.sessionToken
@@ -70,20 +88,33 @@ class OnramperClient {
70
88
  clientId: config.clientId,
71
89
  environment: config.environment,
72
90
  theme: config.theme ?? 'system',
73
- logLevel: config.logLevel ?? 'off'
91
+ logLevel: config.logLevel ?? 'off',
92
+ isEventLoggingEnabled: config.isEventLoggingEnabled ?? false,
93
+ isEventConsoleLoggingEnabled: config.isEventConsoleLoggingEnabled ?? false
74
94
  }).catch(e => {
75
95
  const err = _errors.OnramperError.from(e);
76
- this.lastError = err;
96
+ if (!this.destroyed) this.lastError = err;
77
97
  throw err;
78
98
  });
79
99
  // Swallow the unhandled-rejection warning when no one awaits .configured
80
100
  // before calling initialize(). The error still surfaces via initialize().
81
101
  this.configured.catch(() => undefined);
82
102
  }
103
+ assertActive() {
104
+ if (this.destroyed) {
105
+ throw new _errors.OnramperError({
106
+ code: 'clientDestroyed',
107
+ message: 'This OnramperClient has been destroyed. Create a new client before making SDK calls.',
108
+ userMessage: 'This checkout session has ended. Please reopen checkout.'
109
+ });
110
+ }
111
+ }
83
112
  updateCurrentTransactionId(next) {
113
+ if (this.destroyed) return;
84
114
  if (next === this.currentTransactionId) return;
85
115
  this.currentTransactionId = next;
86
116
  for (const fn of [...this.transactionIdListeners]) {
117
+ if (this.destroyed) break;
87
118
  try {
88
119
  fn(next);
89
120
  } catch (error) {
@@ -93,18 +124,26 @@ class OnramperClient {
93
124
  }
94
125
  async initialize(creds) {
95
126
  try {
127
+ this.assertActive();
96
128
  await this.configured;
129
+ this.assertActive();
97
130
  await this.native.initialize(creds.sessionId, creds.sessionToken);
131
+ this.assertActive();
98
132
  } catch (e) {
133
+ this.assertActive();
99
134
  throw _errors.OnramperError.from(e);
100
135
  }
101
136
  }
102
137
  async reset() {
103
138
  try {
139
+ this.assertActive();
104
140
  await this.configured;
141
+ this.assertActive();
105
142
  await this.native.reset();
143
+ this.assertActive();
106
144
  this.updateCurrentTransactionId(null);
107
145
  } catch (e) {
146
+ this.assertActive();
108
147
  throw _errors.OnramperError.from(e);
109
148
  }
110
149
  }
@@ -117,10 +156,14 @@ class OnramperClient {
117
156
  */
118
157
  async signOut() {
119
158
  try {
159
+ this.assertActive();
120
160
  await this.configured;
161
+ this.assertActive();
121
162
  await this.native.signOut();
163
+ this.assertActive();
122
164
  this.updateCurrentTransactionId(null);
123
165
  } catch (e) {
166
+ this.assertActive();
124
167
  throw _errors.OnramperError.from(e);
125
168
  }
126
169
  }
@@ -129,6 +172,8 @@ class OnramperClient {
129
172
  * Fetches checkout requirements + quote and returns a native checkout button
130
173
  * to render plus the quote. The button handles login / finalize / webview
131
174
  * internally; outcomes surface via the event stream (`addEventListener`).
175
+ * A newer preparation, reset, or sign-out invalidates older unmounted buttons
176
+ * and rejects obsolete in-flight preparations with `intentInvalidated`.
132
177
  *
133
178
  * Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
134
179
  * screens with values you already know about the user. It is best-effort and
@@ -142,8 +187,11 @@ class OnramperClient {
142
187
  */
143
188
  async getCheckoutRequirements(request, buttonStyle = {}, prefill = {}) {
144
189
  try {
190
+ this.assertActive();
145
191
  await this.configured;
192
+ this.assertActive();
146
193
  const result = await this.native.getCheckoutRequirements(JSON.stringify(request), JSON.stringify(prefill), JSON.stringify(buttonStyle));
194
+ this.assertActive();
147
195
  const quote = JSON.parse(result.quoteJson);
148
196
  const button = /*#__PURE__*/(0, _react.createElement)(_CheckoutButton.CheckoutButton, {
149
197
  intentHandle: result.intentHandle
@@ -153,17 +201,26 @@ class OnramperClient {
153
201
  quote
154
202
  };
155
203
  } catch (e) {
204
+ this.assertActive();
156
205
  throw _errors.OnramperError.from(e);
157
206
  }
158
207
  }
159
208
 
160
209
  /** Discards a prepared intent (e.g. if the user navigates away before checkout). */
161
- cancelPreparedIntent(intentHandle) {
162
- return this.native.cancelPreparedIntent(intentHandle);
210
+ async cancelPreparedIntent(intentHandle) {
211
+ try {
212
+ this.assertActive();
213
+ await this.native.cancelPreparedIntent(intentHandle);
214
+ this.assertActive();
215
+ } catch (e) {
216
+ this.assertActive();
217
+ throw _errors.OnramperError.from(e);
218
+ }
163
219
  }
164
220
 
165
221
  /** Subscribe to state changes. Returns an unsubscribe function. */
166
222
  addStateListener(fn) {
223
+ this.assertActive();
167
224
  this.stateListeners.add(fn);
168
225
  return () => {
169
226
  this.stateListeners.delete(fn);
@@ -172,6 +229,7 @@ class OnramperClient {
172
229
 
173
230
  /** Subscribe to the durable Onramper transaction ID. Successful reset/signOut publish null. */
174
231
  addTransactionIdListener(fn) {
232
+ this.assertActive();
175
233
  this.transactionIdListeners.add(fn);
176
234
  return () => {
177
235
  this.transactionIdListeners.delete(fn);
@@ -180,6 +238,7 @@ class OnramperClient {
180
238
 
181
239
  /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
182
240
  addEventListener(name, fn) {
241
+ this.assertActive();
183
242
  const wrapper = e => {
184
243
  if (e.type === name) fn(e);
185
244
  };
@@ -189,8 +248,10 @@ class OnramperClient {
189
248
  };
190
249
  }
191
250
 
192
- /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
251
+ /** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
193
252
  destroy() {
253
+ if (this.destroyed) return;
254
+ this.destroyed = true;
194
255
  this.stateListeners.clear();
195
256
  this.eventListeners.clear();
196
257
  this.transactionIdListeners.clear();
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_CheckoutButton","_OnramperNative","_errors","OnramperClient","state","kind","lastError","currentTransactionId","native","createOnramperNative","stateListeners","Set","eventListeners","transactionIdListeners","constructor","config","setStateListener","json","s","JSON","parse","OnramperError","from","error","fn","setEventListener","e","type","updateCurrentTransactionId","response","onramperTransactionId","setTransactionIdListener","transactionId","undefined","setSessionExpirationHandler","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","catch","err","next","console","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","prefill","result","stringify","quote","quoteJson","button","createElement","CheckoutButton","intentHandle","cancelPreparedIntent","addStateListener","add","delete","addTransactionIdListener","addEventListener","name","wrapper","destroy","clear","dispose","exports"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_CheckoutButton","_OnramperNative","_errors","OnramperClient","state","kind","lastError","currentTransactionId","native","createOnramperNative","stateListeners","Set","eventListeners","transactionIdListeners","destroyed","constructor","config","logHandler","handler","setLogListener","json","JSON","parse","console","warn","setStateListener","s","OnramperError","from","error","fn","setEventListener","e","type","updateCurrentTransactionId","response","onramperTransactionId","setTransactionIdListener","transactionId","undefined","setSessionExpirationHandler","assertActive","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","isEventLoggingEnabled","isEventConsoleLoggingEnabled","catch","err","code","message","userMessage","next","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","prefill","result","stringify","quote","quoteJson","button","createElement","CheckoutButton","intentHandle","cancelPreparedIntent","addStateListener","add","delete","addTransactionIdListener","addEventListener","name","wrapper","destroy","clear","dispose","exports"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
@@ -9,20 +9,34 @@ class OnramperError extends Error {
9
9
  super(payload.message);
10
10
  this.name = 'OnramperError';
11
11
  this.code = payload.code;
12
+ this.userMessage = payload.userMessage ?? 'Something went wrong. Please try again.';
13
+ this.supportCode = payload.supportCode ?? payload.code;
12
14
  this.info = payload.info;
13
15
  }
14
16
  static from(value) {
15
17
  if (value instanceof OnramperError) return value;
18
+ // Nitro transports Swift exceptions as message-only JS Errors. Our native
19
+ // bridge encodes SDK errors explicitly so Promise rejections retain the
20
+ // same fields as failed events, without consulting unrelated client state.
21
+ const message = value instanceof Error ? value.message : typeof value === 'string' ? value : undefined;
22
+ if (message?.startsWith('ONRAMPER_ERROR:')) {
23
+ try {
24
+ const payload = JSON.parse(message.slice('ONRAMPER_ERROR:'.length));
25
+ if (payload && typeof payload.code === 'string' && typeof payload.message === 'string') {
26
+ return OnramperError.from(payload);
27
+ }
28
+ } catch {
29
+ // A malformed/non-SDK error falls back to the ordinary error path.
30
+ }
31
+ }
16
32
  if (value && typeof value === 'object') {
17
- // Structured errors (from the `.failed` state) arrive as a plain
18
- // `{ code, message, info? }` object. Thrown promise rejections surface
19
- // as a JS Error with just a message; we default the code in that case
20
- // (the structured error is also available on `client.state` / lastError).
21
33
  const v = value;
22
34
  return new OnramperError({
23
35
  code: v.code ?? 'unrecoverable',
24
36
  message: v.message ?? 'Unknown error',
25
- info: v.info
37
+ info: v.info,
38
+ userMessage: typeof v.userMessage === 'string' ? v.userMessage : undefined,
39
+ supportCode: typeof v.supportCode === 'string' ? v.supportCode : undefined
26
40
  });
27
41
  }
28
42
  return new OnramperError({
@@ -1 +1 @@
1
- {"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","info","from","value","v","String","exports"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;;;;;AAyCO,MAAMA,aAAa,SAASC,KAAK,CAAiC;EAIvEC,WAAWA,CAACC,OAA6B,EAAE;IACzC,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,eAAe;IAC3B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,IAAI,GAAGJ,OAAO,CAACI,IAAI;EAC1B;EAEA,OAAOC,IAAIA,CAACC,KAAc,EAAiB;IACzC,IAAIA,KAAK,YAAYT,aAAa,EAAE,OAAOS,KAAK;IAChD,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC;MACA;MACA;MACA;MACA,MAAMC,CAAC,GAAGD,KAA4E;MACtF,OAAO,IAAIT,aAAa,CAAC;QACvBM,IAAI,EAAGI,CAAC,CAACJ,IAAI,IAAI,eAAqC;QACtDF,OAAO,EAAEM,CAAC,CAACN,OAAO,IAAI,eAAe;QACrCG,IAAI,EAAEG,CAAC,CAACH;MACV,CAAC,CAAC;IACJ;IACA,OAAO,IAAIP,aAAa,CAAC;MAAEM,IAAI,EAAE,eAAe;MAAEF,OAAO,EAAEO,MAAM,CAACF,KAAK;IAAE,CAAC,CAAC;EAC7E;AACF;AAACG,OAAA,CAAAZ,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","userMessage","supportCode","info","from","value","undefined","startsWith","JSON","parse","slice","length","v","String","exports"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;;;;;AAgDO,MAAMA,aAAa,SAASC,KAAK,CAAiC;EAMvEC,WAAWA,CAACC,OAA6B,EAAE;IACzC,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,eAAe;IAC3B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,WAAW,GAAGJ,OAAO,CAACI,WAAW,IAAI,yCAAyC;IACnF,IAAI,CAACC,WAAW,GAAGL,OAAO,CAACK,WAAW,IAAIL,OAAO,CAACG,IAAI;IACtD,IAAI,CAACG,IAAI,GAAGN,OAAO,CAACM,IAAI;EAC1B;EAEA,OAAOC,IAAIA,CAACC,KAAc,EAAiB;IACzC,IAAIA,KAAK,YAAYX,aAAa,EAAE,OAAOW,KAAK;IAChD;IACA;IACA;IACA,MAAMP,OAAO,GAAGO,KAAK,YAAYV,KAAK,GAAGU,KAAK,CAACP,OAAO,GAAG,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGC,SAAS;IACtG,IAAIR,OAAO,EAAES,UAAU,CAAC,iBAAiB,CAAC,EAAE;MAC1C,IAAI;QACF,MAAMV,OAAO,GAAGW,IAAI,CAACC,KAAK,CAACX,OAAO,CAACY,KAAK,CAAC,iBAAiB,CAACC,MAAM,CAAC,CAAC;QACnE,IAAId,OAAO,IAAI,OAAOA,OAAO,CAACG,IAAI,KAAK,QAAQ,IAAI,OAAOH,OAAO,CAACC,OAAO,KAAK,QAAQ,EAAE;UACtF,OAAOJ,aAAa,CAACU,IAAI,CAACP,OAAO,CAAC;QACpC;MACF,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;IACA,IAAIQ,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC,MAAMO,CAAC,GAAGP,KAAsC;MAChD,OAAO,IAAIX,aAAa,CAAC;QACvBM,IAAI,EAAGY,CAAC,CAACZ,IAAI,IAAI,eAAqC;QACtDF,OAAO,EAAEc,CAAC,CAACd,OAAO,IAAI,eAAe;QACrCK,IAAI,EAAES,CAAC,CAACT,IAAI;QACZF,WAAW,EAAE,OAAOW,CAAC,CAACX,WAAW,KAAK,QAAQ,GAAGW,CAAC,CAACX,WAAW,GAAGK,SAAS;QAC1EJ,WAAW,EAAE,OAAOU,CAAC,CAACV,WAAW,KAAK,QAAQ,GAAGU,CAAC,CAACV,WAAW,GAAGI;MACnE,CAAC,CAAC;IACJ;IACA,OAAO,IAAIZ,aAAa,CAAC;MAAEM,IAAI,EAAE,eAAe;MAAEF,OAAO,EAAEe,MAAM,CAACR,KAAK;IAAE,CAAC,CAAC;EAC7E;AACF;AAACS,OAAA,CAAApB,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -26,9 +26,23 @@ export class OnramperClient {
26
26
  // Resolved when the constructor-issued configure() completes. Public methods
27
27
  // that need the native client await this first.
28
28
 
29
+ destroyed = false;
29
30
  constructor(config) {
31
+ if (config.logHandler) {
32
+ const handler = config.logHandler;
33
+ this.native.setLogListener(json => {
34
+ if (this.destroyed) return;
35
+ try {
36
+ handler(JSON.parse(json));
37
+ } catch {
38
+ // Diagnostics must never interrupt checkout; do not log callback data.
39
+ console.warn('Onramper logHandler failed.');
40
+ }
41
+ });
42
+ }
30
43
  // Single native state callback → update the mirror + fan out to listeners.
31
44
  this.native.setStateListener(json => {
45
+ if (this.destroyed) return;
32
46
  const s = JSON.parse(json);
33
47
  this.state = s;
34
48
  if (s.kind === 'failed') this.lastError = OnramperError.from(s.error);
@@ -38,6 +52,7 @@ export class OnramperClient {
38
52
  // Single native checkout-event callback → keep the transaction ID mirror
39
53
  // synchronized at finalization, then fan out to checkout listeners.
40
54
  this.native.setEventListener(json => {
55
+ if (this.destroyed) return;
41
56
  const e = JSON.parse(json);
42
57
  if (e.type === 'checkoutFinalized') {
43
58
  this.updateCurrentTransactionId(e.response.onramperTransactionId);
@@ -45,6 +60,7 @@ export class OnramperClient {
45
60
  for (const fn of this.eventListeners) fn(e);
46
61
  });
47
62
  this.native.setTransactionIdListener(transactionId => {
63
+ if (this.destroyed) return;
48
64
  // The SDK transiently publishes nil while re-preparing after the payment
49
65
  // sheet is dismissed. The finalized transaction ID remains durable across
50
66
  // that attempt change; only explicit reset()/signOut() clear the JS mirror.
@@ -55,7 +71,9 @@ export class OnramperClient {
55
71
  // Nitro stores the async callback natively and awaits it directly — no
56
72
  // event round-trip needed.
57
73
  this.native.setSessionExpirationHandler(async () => {
74
+ this.assertActive();
58
75
  const creds = await config.onSessionExpired();
76
+ this.assertActive();
59
77
  return {
60
78
  sessionId: creds.sessionId,
61
79
  sessionToken: creds.sessionToken
@@ -66,20 +84,33 @@ export class OnramperClient {
66
84
  clientId: config.clientId,
67
85
  environment: config.environment,
68
86
  theme: config.theme ?? 'system',
69
- logLevel: config.logLevel ?? 'off'
87
+ logLevel: config.logLevel ?? 'off',
88
+ isEventLoggingEnabled: config.isEventLoggingEnabled ?? false,
89
+ isEventConsoleLoggingEnabled: config.isEventConsoleLoggingEnabled ?? false
70
90
  }).catch(e => {
71
91
  const err = OnramperError.from(e);
72
- this.lastError = err;
92
+ if (!this.destroyed) this.lastError = err;
73
93
  throw err;
74
94
  });
75
95
  // Swallow the unhandled-rejection warning when no one awaits .configured
76
96
  // before calling initialize(). The error still surfaces via initialize().
77
97
  this.configured.catch(() => undefined);
78
98
  }
99
+ assertActive() {
100
+ if (this.destroyed) {
101
+ throw new OnramperError({
102
+ code: 'clientDestroyed',
103
+ message: 'This OnramperClient has been destroyed. Create a new client before making SDK calls.',
104
+ userMessage: 'This checkout session has ended. Please reopen checkout.'
105
+ });
106
+ }
107
+ }
79
108
  updateCurrentTransactionId(next) {
109
+ if (this.destroyed) return;
80
110
  if (next === this.currentTransactionId) return;
81
111
  this.currentTransactionId = next;
82
112
  for (const fn of [...this.transactionIdListeners]) {
113
+ if (this.destroyed) break;
83
114
  try {
84
115
  fn(next);
85
116
  } catch (error) {
@@ -89,18 +120,26 @@ export class OnramperClient {
89
120
  }
90
121
  async initialize(creds) {
91
122
  try {
123
+ this.assertActive();
92
124
  await this.configured;
125
+ this.assertActive();
93
126
  await this.native.initialize(creds.sessionId, creds.sessionToken);
127
+ this.assertActive();
94
128
  } catch (e) {
129
+ this.assertActive();
95
130
  throw OnramperError.from(e);
96
131
  }
97
132
  }
98
133
  async reset() {
99
134
  try {
135
+ this.assertActive();
100
136
  await this.configured;
137
+ this.assertActive();
101
138
  await this.native.reset();
139
+ this.assertActive();
102
140
  this.updateCurrentTransactionId(null);
103
141
  } catch (e) {
142
+ this.assertActive();
104
143
  throw OnramperError.from(e);
105
144
  }
106
145
  }
@@ -113,10 +152,14 @@ export class OnramperClient {
113
152
  */
114
153
  async signOut() {
115
154
  try {
155
+ this.assertActive();
116
156
  await this.configured;
157
+ this.assertActive();
117
158
  await this.native.signOut();
159
+ this.assertActive();
118
160
  this.updateCurrentTransactionId(null);
119
161
  } catch (e) {
162
+ this.assertActive();
120
163
  throw OnramperError.from(e);
121
164
  }
122
165
  }
@@ -125,6 +168,8 @@ export class OnramperClient {
125
168
  * Fetches checkout requirements + quote and returns a native checkout button
126
169
  * to render plus the quote. The button handles login / finalize / webview
127
170
  * internally; outcomes surface via the event stream (`addEventListener`).
171
+ * A newer preparation, reset, or sign-out invalidates older unmounted buttons
172
+ * and rejects obsolete in-flight preparations with `intentInvalidated`.
128
173
  *
129
174
  * Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
130
175
  * screens with values you already know about the user. It is best-effort and
@@ -138,8 +183,11 @@ export class OnramperClient {
138
183
  */
139
184
  async getCheckoutRequirements(request, buttonStyle = {}, prefill = {}) {
140
185
  try {
186
+ this.assertActive();
141
187
  await this.configured;
188
+ this.assertActive();
142
189
  const result = await this.native.getCheckoutRequirements(JSON.stringify(request), JSON.stringify(prefill), JSON.stringify(buttonStyle));
190
+ this.assertActive();
143
191
  const quote = JSON.parse(result.quoteJson);
144
192
  const button = /*#__PURE__*/createElement(CheckoutButton, {
145
193
  intentHandle: result.intentHandle
@@ -149,17 +197,26 @@ export class OnramperClient {
149
197
  quote
150
198
  };
151
199
  } catch (e) {
200
+ this.assertActive();
152
201
  throw OnramperError.from(e);
153
202
  }
154
203
  }
155
204
 
156
205
  /** Discards a prepared intent (e.g. if the user navigates away before checkout). */
157
- cancelPreparedIntent(intentHandle) {
158
- return this.native.cancelPreparedIntent(intentHandle);
206
+ async cancelPreparedIntent(intentHandle) {
207
+ try {
208
+ this.assertActive();
209
+ await this.native.cancelPreparedIntent(intentHandle);
210
+ this.assertActive();
211
+ } catch (e) {
212
+ this.assertActive();
213
+ throw OnramperError.from(e);
214
+ }
159
215
  }
160
216
 
161
217
  /** Subscribe to state changes. Returns an unsubscribe function. */
162
218
  addStateListener(fn) {
219
+ this.assertActive();
163
220
  this.stateListeners.add(fn);
164
221
  return () => {
165
222
  this.stateListeners.delete(fn);
@@ -168,6 +225,7 @@ export class OnramperClient {
168
225
 
169
226
  /** Subscribe to the durable Onramper transaction ID. Successful reset/signOut publish null. */
170
227
  addTransactionIdListener(fn) {
228
+ this.assertActive();
171
229
  this.transactionIdListeners.add(fn);
172
230
  return () => {
173
231
  this.transactionIdListeners.delete(fn);
@@ -176,6 +234,7 @@ export class OnramperClient {
176
234
 
177
235
  /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
178
236
  addEventListener(name, fn) {
237
+ this.assertActive();
179
238
  const wrapper = e => {
180
239
  if (e.type === name) fn(e);
181
240
  };
@@ -185,8 +244,10 @@ export class OnramperClient {
185
244
  };
186
245
  }
187
246
 
188
- /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
247
+ /** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
189
248
  destroy() {
249
+ if (this.destroyed) return;
250
+ this.destroyed = true;
190
251
  this.stateListeners.clear();
191
252
  this.eventListeners.clear();
192
253
  this.transactionIdListeners.clear();
@@ -1 +1 @@
1
- {"version":3,"names":["createElement","CheckoutButton","createOnramperNative","OnramperError","OnramperClient","state","kind","lastError","currentTransactionId","native","stateListeners","Set","eventListeners","transactionIdListeners","constructor","config","setStateListener","json","s","JSON","parse","from","error","fn","setEventListener","e","type","updateCurrentTransactionId","response","onramperTransactionId","setTransactionIdListener","transactionId","undefined","setSessionExpirationHandler","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","catch","err","next","console","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","prefill","result","stringify","quote","quoteJson","button","intentHandle","cancelPreparedIntent","addStateListener","add","delete","addTransactionIdListener","addEventListener","name","wrapper","destroy","clear","dispose"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createElement","CheckoutButton","createOnramperNative","OnramperError","OnramperClient","state","kind","lastError","currentTransactionId","native","stateListeners","Set","eventListeners","transactionIdListeners","destroyed","constructor","config","logHandler","handler","setLogListener","json","JSON","parse","console","warn","setStateListener","s","from","error","fn","setEventListener","e","type","updateCurrentTransactionId","response","onramperTransactionId","setTransactionIdListener","transactionId","undefined","setSessionExpirationHandler","assertActive","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","isEventLoggingEnabled","isEventConsoleLoggingEnabled","catch","err","code","message","userMessage","next","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","prefill","result","stringify","quote","quoteJson","button","intentHandle","cancelPreparedIntent","addStateListener","add","delete","addTransactionIdListener","addEventListener","name","wrapper","destroy","clear","dispose"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
@@ -5,20 +5,34 @@ export class OnramperError extends Error {
5
5
  super(payload.message);
6
6
  this.name = 'OnramperError';
7
7
  this.code = payload.code;
8
+ this.userMessage = payload.userMessage ?? 'Something went wrong. Please try again.';
9
+ this.supportCode = payload.supportCode ?? payload.code;
8
10
  this.info = payload.info;
9
11
  }
10
12
  static from(value) {
11
13
  if (value instanceof OnramperError) return value;
14
+ // Nitro transports Swift exceptions as message-only JS Errors. Our native
15
+ // bridge encodes SDK errors explicitly so Promise rejections retain the
16
+ // same fields as failed events, without consulting unrelated client state.
17
+ const message = value instanceof Error ? value.message : typeof value === 'string' ? value : undefined;
18
+ if (message?.startsWith('ONRAMPER_ERROR:')) {
19
+ try {
20
+ const payload = JSON.parse(message.slice('ONRAMPER_ERROR:'.length));
21
+ if (payload && typeof payload.code === 'string' && typeof payload.message === 'string') {
22
+ return OnramperError.from(payload);
23
+ }
24
+ } catch {
25
+ // A malformed/non-SDK error falls back to the ordinary error path.
26
+ }
27
+ }
12
28
  if (value && typeof value === 'object') {
13
- // Structured errors (from the `.failed` state) arrive as a plain
14
- // `{ code, message, info? }` object. Thrown promise rejections surface
15
- // as a JS Error with just a message; we default the code in that case
16
- // (the structured error is also available on `client.state` / lastError).
17
29
  const v = value;
18
30
  return new OnramperError({
19
31
  code: v.code ?? 'unrecoverable',
20
32
  message: v.message ?? 'Unknown error',
21
- info: v.info
33
+ info: v.info,
34
+ userMessage: typeof v.userMessage === 'string' ? v.userMessage : undefined,
35
+ supportCode: typeof v.supportCode === 'string' ? v.supportCode : undefined
22
36
  });
23
37
  }
24
38
  return new OnramperError({
@@ -1 +1 @@
1
- {"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","info","from","value","v","String"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;AAyCA,OAAO,MAAMA,aAAa,SAASC,KAAK,CAAiC;EAIvEC,WAAWA,CAACC,OAA6B,EAAE;IACzC,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,eAAe;IAC3B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,IAAI,GAAGJ,OAAO,CAACI,IAAI;EAC1B;EAEA,OAAOC,IAAIA,CAACC,KAAc,EAAiB;IACzC,IAAIA,KAAK,YAAYT,aAAa,EAAE,OAAOS,KAAK;IAChD,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC;MACA;MACA;MACA;MACA,MAAMC,CAAC,GAAGD,KAA4E;MACtF,OAAO,IAAIT,aAAa,CAAC;QACvBM,IAAI,EAAGI,CAAC,CAACJ,IAAI,IAAI,eAAqC;QACtDF,OAAO,EAAEM,CAAC,CAACN,OAAO,IAAI,eAAe;QACrCG,IAAI,EAAEG,CAAC,CAACH;MACV,CAAC,CAAC;IACJ;IACA,OAAO,IAAIP,aAAa,CAAC;MAAEM,IAAI,EAAE,eAAe;MAAEF,OAAO,EAAEO,MAAM,CAACF,KAAK;IAAE,CAAC,CAAC;EAC7E;AACF","ignoreList":[]}
1
+ {"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","userMessage","supportCode","info","from","value","undefined","startsWith","JSON","parse","slice","length","v","String"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;AAgDA,OAAO,MAAMA,aAAa,SAASC,KAAK,CAAiC;EAMvEC,WAAWA,CAACC,OAA6B,EAAE;IACzC,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,eAAe;IAC3B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,WAAW,GAAGJ,OAAO,CAACI,WAAW,IAAI,yCAAyC;IACnF,IAAI,CAACC,WAAW,GAAGL,OAAO,CAACK,WAAW,IAAIL,OAAO,CAACG,IAAI;IACtD,IAAI,CAACG,IAAI,GAAGN,OAAO,CAACM,IAAI;EAC1B;EAEA,OAAOC,IAAIA,CAACC,KAAc,EAAiB;IACzC,IAAIA,KAAK,YAAYX,aAAa,EAAE,OAAOW,KAAK;IAChD;IACA;IACA;IACA,MAAMP,OAAO,GAAGO,KAAK,YAAYV,KAAK,GAAGU,KAAK,CAACP,OAAO,GAAG,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGC,SAAS;IACtG,IAAIR,OAAO,EAAES,UAAU,CAAC,iBAAiB,CAAC,EAAE;MAC1C,IAAI;QACF,MAAMV,OAAO,GAAGW,IAAI,CAACC,KAAK,CAACX,OAAO,CAACY,KAAK,CAAC,iBAAiB,CAACC,MAAM,CAAC,CAAC;QACnE,IAAId,OAAO,IAAI,OAAOA,OAAO,CAACG,IAAI,KAAK,QAAQ,IAAI,OAAOH,OAAO,CAACC,OAAO,KAAK,QAAQ,EAAE;UACtF,OAAOJ,aAAa,CAACU,IAAI,CAACP,OAAO,CAAC;QACpC;MACF,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;IACA,IAAIQ,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC,MAAMO,CAAC,GAAGP,KAAsC;MAChD,OAAO,IAAIX,aAAa,CAAC;QACvBM,IAAI,EAAGY,CAAC,CAACZ,IAAI,IAAI,eAAqC;QACtDF,OAAO,EAAEc,CAAC,CAACd,OAAO,IAAI,eAAe;QACrCK,IAAI,EAAES,CAAC,CAACT,IAAI;QACZF,WAAW,EAAE,OAAOW,CAAC,CAACX,WAAW,KAAK,QAAQ,GAAGW,CAAC,CAACX,WAAW,GAAGK,SAAS;QAC1EJ,WAAW,EAAE,OAAOU,CAAC,CAACV,WAAW,KAAK,QAAQ,GAAGU,CAAC,CAACV,WAAW,GAAGI;MACnE,CAAC,CAAC;IACJ;IACA,OAAO,IAAIZ,aAAa,CAAC;MAAEM,IAAI,EAAE,eAAe;MAAEF,OAAO,EAAEe,MAAM,CAACR,KAAK;IAAE,CAAC,CAAC;EAC7E;AACF","ignoreList":[]}
@@ -23,7 +23,9 @@ export declare class OnramperClient {
23
23
  private readonly eventListeners;
24
24
  private readonly transactionIdListeners;
25
25
  private readonly configured;
26
+ private destroyed;
26
27
  constructor(config: OnramperConfiguration);
28
+ private assertActive;
27
29
  private updateCurrentTransactionId;
28
30
  initialize(creds: SessionCredentials): Promise<void>;
29
31
  reset(): Promise<void>;
@@ -38,6 +40,8 @@ export declare class OnramperClient {
38
40
  * Fetches checkout requirements + quote and returns a native checkout button
39
41
  * to render plus the quote. The button handles login / finalize / webview
40
42
  * internally; outcomes surface via the event stream (`addEventListener`).
43
+ * A newer preparation, reset, or sign-out invalidates older unmounted buttons
44
+ * and rejects obsolete in-flight preparations with `intentInvalidated`.
41
45
  *
42
46
  * Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
43
47
  * screens with values you already know about the user. It is best-effort and
@@ -58,7 +62,7 @@ export declare class OnramperClient {
58
62
  addTransactionIdListener(fn: (transactionId: string | null) => void): () => void;
59
63
  /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
60
64
  addEventListener<K extends EventName>(name: K, fn: (e: EventPayload<K>) => void): () => void;
61
- /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
65
+ /** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
62
66
  destroy(): void;
63
67
  }
64
68
  //# sourceMappingURL=OnramperClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnramperClient.d.ts","sourceRoot":"","sources":["../../../../src/OnramperClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,OAAO,CAAC;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAiB,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,6BAA6B;IAC5C,yHAAyH;IACzH,MAAM,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,KAAK,EAAE,aAAa,CAAoB;IACxC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqD;IAI5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;gBAE/B,MAAM,EAAE,qBAAqB;IAoDzC,OAAO,CAAC,0BAA0B;IAa5B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;;;;;;;;;;;;;OAcG;IACG,uBAAuB,CAC3B,OAAO,EAAE,eAAe,EACxB,WAAW,GAAE,mBAAwB,EACrC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IAgBzC,oFAAoF;IACpF,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAOhE,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAOhF,+EAA+E;IAC/E,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAU5F,qFAAqF;IACrF,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"OnramperClient.d.ts","sourceRoot":"","sources":["../../../../src/OnramperClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,OAAO,CAAC;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAiB,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EAErB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,6BAA6B;IAC5C,yHAAyH;IACzH,MAAM,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,KAAK,EAAE,aAAa,CAAoB;IACxC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqD;IAI5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,qBAAqB;IAuEzC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,0BAA0B;IAe5B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;;;;;;;;;;;;;;;OAgBG;IACG,uBAAuB,CAC3B,OAAO,EAAE,eAAe,EACxB,WAAW,GAAE,mBAAwB,EACrC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IAoBzC,oFAAoF;IAC9E,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAQhE,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAQhF,+EAA+E;IAC/E,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAW5F,6GAA6G;IAC7G,OAAO,IAAI,IAAI;CAQhB"}