@onramper/onramper-react-native 1.2.2 → 1.3.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.
- package/CHANGELOG.md +249 -0
- package/README.md +64 -4
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftinterface +110 -4
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/OnramperSDK +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +3562 -2684
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +110 -4
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +110 -4
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/OnramperSDK +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +3562 -2684
- package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/OnramperSDK.yml +3525 -2651
- package/ios/HybridOnramperCheckoutButton.swift +77 -3
- package/ios/HybridOnramperNitro.swift +142 -78
- package/ios/OnramperSDKBridge.swift +19 -2
- package/ios/PreparedIntentRegistry.swift +124 -6
- package/ios/SDKLogRelay.swift +41 -0
- package/lib/commonjs/CheckoutButton.js +34 -0
- package/lib/commonjs/CheckoutButton.js.map +1 -0
- package/lib/commonjs/OnramperClient.js +81 -12
- package/lib/commonjs/OnramperClient.js.map +1 -1
- package/lib/commonjs/errors.js +19 -5
- package/lib/commonjs/errors.js.map +1 -1
- package/lib/commonjs/generated/OnramperCheckoutButtonConfig.json +1 -0
- package/lib/module/CheckoutButton.js +30 -0
- package/lib/module/CheckoutButton.js.map +1 -0
- package/lib/module/OnramperClient.js +81 -12
- package/lib/module/OnramperClient.js.map +1 -1
- package/lib/module/errors.js +19 -5
- package/lib/module/errors.js.map +1 -1
- package/lib/module/generated/OnramperCheckoutButtonConfig.json +1 -0
- package/lib/typescript/commonjs/src/CheckoutButton.d.ts +20 -0
- package/lib/typescript/commonjs/src/CheckoutButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/OnramperClient.d.ts +10 -1
- package/lib/typescript/commonjs/src/OnramperClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/errors.d.ts +6 -1
- package/lib/typescript/commonjs/src/errors.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/events.d.ts +10 -0
- package/lib/typescript/commonjs/src/events.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/specs/OnramperCheckoutButton.nitro.d.ts +6 -0
- package/lib/typescript/commonjs/src/specs/OnramperCheckoutButton.nitro.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts +4 -0
- package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types.d.ts +32 -3
- package/lib/typescript/commonjs/src/types.d.ts.map +1 -1
- package/lib/typescript/module/src/CheckoutButton.d.ts +20 -0
- package/lib/typescript/module/src/CheckoutButton.d.ts.map +1 -0
- package/lib/typescript/module/src/OnramperClient.d.ts +10 -1
- package/lib/typescript/module/src/OnramperClient.d.ts.map +1 -1
- package/lib/typescript/module/src/errors.d.ts +6 -1
- package/lib/typescript/module/src/errors.d.ts.map +1 -1
- package/lib/typescript/module/src/events.d.ts +10 -0
- package/lib/typescript/module/src/events.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +1 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/specs/OnramperCheckoutButton.nitro.d.ts +6 -0
- package/lib/typescript/module/src/specs/OnramperCheckoutButton.nitro.d.ts.map +1 -1
- package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts +4 -0
- package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts.map +1 -1
- package/lib/typescript/module/src/types.d.ts +32 -3
- package/lib/typescript/module/src/types.d.ts.map +1 -1
- package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.cpp +11 -3
- package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.hpp +44 -7
- package/nitrogen/generated/ios/c++/HybridOnramperCheckoutButtonSpecSwift.hpp +9 -0
- package/nitrogen/generated/ios/c++/HybridOnramperNitroSpecSwift.hpp +11 -2
- package/nitrogen/generated/ios/c++/views/HybridOnramperCheckoutButtonComponent.mm +5 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +5 -5
- package/nitrogen/generated/ios/swift/HybridOnramperCheckoutButtonSpec.swift +1 -0
- package/nitrogen/generated/ios/swift/HybridOnramperCheckoutButtonSpec_cxx.swift +32 -0
- package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec.swift +2 -1
- package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec_cxx.swift +32 -11
- package/nitrogen/generated/ios/swift/OnramperNitroConfig.swift +16 -6
- package/nitrogen/generated/shared/c++/HybridOnramperCheckoutButtonSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridOnramperCheckoutButtonSpec.hpp +4 -0
- package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.hpp +3 -2
- package/nitrogen/generated/shared/c++/OnramperNitroConfig.hpp +10 -2
- package/nitrogen/generated/shared/c++/views/HybridOnramperCheckoutButtonComponent.cpp +11 -0
- package/nitrogen/generated/shared/c++/views/HybridOnramperCheckoutButtonComponent.hpp +3 -2
- package/nitrogen/generated/shared/json/OnramperCheckoutButtonConfig.json +1 -0
- package/package.json +5 -2
- package/src/CheckoutButton.ts +28 -0
- package/src/OnramperClient.ts +82 -9
- package/src/errors.ts +29 -6
- package/src/events.ts +5 -0
- package/src/generated/OnramperCheckoutButtonConfig.json +1 -0
- package/src/index.ts +3 -0
- package/src/specs/OnramperCheckoutButton.nitro.ts +6 -0
- package/src/specs/OnramperNitro.nitro.ts +5 -0
- package/src/types.ts +36 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { createElement } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { CheckoutButton } from "./CheckoutButton.js";
|
|
5
5
|
import { createOnramperNative } from "./OnramperNative.js";
|
|
6
6
|
import { OnramperError } from "./errors.js";
|
|
7
7
|
/**
|
|
@@ -11,6 +11,18 @@ import { OnramperError } from "./errors.js";
|
|
|
11
11
|
* unions, then fanned out to any number of listeners.
|
|
12
12
|
*/
|
|
13
13
|
export class OnramperClient {
|
|
14
|
+
/**
|
|
15
|
+
* Version of the native Onramper iOS SDK loaded by this app (not the RN
|
|
16
|
+
* package version). No client configuration or session is required. iOS only.
|
|
17
|
+
*/
|
|
18
|
+
static get sdkVersion() {
|
|
19
|
+
const native = createOnramperNative();
|
|
20
|
+
try {
|
|
21
|
+
return native.sdkVersion;
|
|
22
|
+
} finally {
|
|
23
|
+
native.dispose();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
14
26
|
state = {
|
|
15
27
|
kind: 'idle'
|
|
16
28
|
};
|
|
@@ -26,9 +38,23 @@ export class OnramperClient {
|
|
|
26
38
|
// Resolved when the constructor-issued configure() completes. Public methods
|
|
27
39
|
// that need the native client await this first.
|
|
28
40
|
|
|
41
|
+
destroyed = false;
|
|
29
42
|
constructor(config) {
|
|
43
|
+
if (config.logHandler) {
|
|
44
|
+
const handler = config.logHandler;
|
|
45
|
+
this.native.setLogListener(json => {
|
|
46
|
+
if (this.destroyed) return;
|
|
47
|
+
try {
|
|
48
|
+
handler(JSON.parse(json));
|
|
49
|
+
} catch {
|
|
50
|
+
// Diagnostics must never interrupt checkout; do not log callback data.
|
|
51
|
+
console.warn('Onramper logHandler failed.');
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
30
55
|
// Single native state callback → update the mirror + fan out to listeners.
|
|
31
56
|
this.native.setStateListener(json => {
|
|
57
|
+
if (this.destroyed) return;
|
|
32
58
|
const s = JSON.parse(json);
|
|
33
59
|
this.state = s;
|
|
34
60
|
if (s.kind === 'failed') this.lastError = OnramperError.from(s.error);
|
|
@@ -38,6 +64,7 @@ export class OnramperClient {
|
|
|
38
64
|
// Single native checkout-event callback → keep the transaction ID mirror
|
|
39
65
|
// synchronized at finalization, then fan out to checkout listeners.
|
|
40
66
|
this.native.setEventListener(json => {
|
|
67
|
+
if (this.destroyed) return;
|
|
41
68
|
const e = JSON.parse(json);
|
|
42
69
|
if (e.type === 'checkoutFinalized') {
|
|
43
70
|
this.updateCurrentTransactionId(e.response.onramperTransactionId);
|
|
@@ -45,6 +72,7 @@ export class OnramperClient {
|
|
|
45
72
|
for (const fn of this.eventListeners) fn(e);
|
|
46
73
|
});
|
|
47
74
|
this.native.setTransactionIdListener(transactionId => {
|
|
75
|
+
if (this.destroyed) return;
|
|
48
76
|
// The SDK transiently publishes nil while re-preparing after the payment
|
|
49
77
|
// sheet is dismissed. The finalized transaction ID remains durable across
|
|
50
78
|
// that attempt change; only explicit reset()/signOut() clear the JS mirror.
|
|
@@ -55,7 +83,9 @@ export class OnramperClient {
|
|
|
55
83
|
// Nitro stores the async callback natively and awaits it directly — no
|
|
56
84
|
// event round-trip needed.
|
|
57
85
|
this.native.setSessionExpirationHandler(async () => {
|
|
86
|
+
this.assertActive();
|
|
58
87
|
const creds = await config.onSessionExpired();
|
|
88
|
+
this.assertActive();
|
|
59
89
|
return {
|
|
60
90
|
sessionId: creds.sessionId,
|
|
61
91
|
sessionToken: creds.sessionToken
|
|
@@ -66,20 +96,33 @@ export class OnramperClient {
|
|
|
66
96
|
clientId: config.clientId,
|
|
67
97
|
environment: config.environment,
|
|
68
98
|
theme: config.theme ?? 'system',
|
|
69
|
-
logLevel: config.logLevel ?? 'off'
|
|
99
|
+
logLevel: config.logLevel ?? 'off',
|
|
100
|
+
isEventLoggingEnabled: config.isEventLoggingEnabled ?? false,
|
|
101
|
+
isEventConsoleLoggingEnabled: config.isEventConsoleLoggingEnabled ?? false
|
|
70
102
|
}).catch(e => {
|
|
71
103
|
const err = OnramperError.from(e);
|
|
72
|
-
this.lastError = err;
|
|
104
|
+
if (!this.destroyed) this.lastError = err;
|
|
73
105
|
throw err;
|
|
74
106
|
});
|
|
75
107
|
// Swallow the unhandled-rejection warning when no one awaits .configured
|
|
76
108
|
// before calling initialize(). The error still surfaces via initialize().
|
|
77
109
|
this.configured.catch(() => undefined);
|
|
78
110
|
}
|
|
111
|
+
assertActive() {
|
|
112
|
+
if (this.destroyed) {
|
|
113
|
+
throw new OnramperError({
|
|
114
|
+
code: 'clientDestroyed',
|
|
115
|
+
message: 'This OnramperClient has been destroyed. Create a new client before making SDK calls.',
|
|
116
|
+
userMessage: 'This checkout session has ended. Please reopen checkout.'
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
79
120
|
updateCurrentTransactionId(next) {
|
|
121
|
+
if (this.destroyed) return;
|
|
80
122
|
if (next === this.currentTransactionId) return;
|
|
81
123
|
this.currentTransactionId = next;
|
|
82
124
|
for (const fn of [...this.transactionIdListeners]) {
|
|
125
|
+
if (this.destroyed) break;
|
|
83
126
|
try {
|
|
84
127
|
fn(next);
|
|
85
128
|
} catch (error) {
|
|
@@ -89,18 +132,26 @@ export class OnramperClient {
|
|
|
89
132
|
}
|
|
90
133
|
async initialize(creds) {
|
|
91
134
|
try {
|
|
135
|
+
this.assertActive();
|
|
92
136
|
await this.configured;
|
|
137
|
+
this.assertActive();
|
|
93
138
|
await this.native.initialize(creds.sessionId, creds.sessionToken);
|
|
139
|
+
this.assertActive();
|
|
94
140
|
} catch (e) {
|
|
141
|
+
this.assertActive();
|
|
95
142
|
throw OnramperError.from(e);
|
|
96
143
|
}
|
|
97
144
|
}
|
|
98
145
|
async reset() {
|
|
99
146
|
try {
|
|
147
|
+
this.assertActive();
|
|
100
148
|
await this.configured;
|
|
149
|
+
this.assertActive();
|
|
101
150
|
await this.native.reset();
|
|
151
|
+
this.assertActive();
|
|
102
152
|
this.updateCurrentTransactionId(null);
|
|
103
153
|
} catch (e) {
|
|
154
|
+
this.assertActive();
|
|
104
155
|
throw OnramperError.from(e);
|
|
105
156
|
}
|
|
106
157
|
}
|
|
@@ -113,10 +164,14 @@ export class OnramperClient {
|
|
|
113
164
|
*/
|
|
114
165
|
async signOut() {
|
|
115
166
|
try {
|
|
167
|
+
this.assertActive();
|
|
116
168
|
await this.configured;
|
|
169
|
+
this.assertActive();
|
|
117
170
|
await this.native.signOut();
|
|
171
|
+
this.assertActive();
|
|
118
172
|
this.updateCurrentTransactionId(null);
|
|
119
173
|
} catch (e) {
|
|
174
|
+
this.assertActive();
|
|
120
175
|
throw OnramperError.from(e);
|
|
121
176
|
}
|
|
122
177
|
}
|
|
@@ -125,6 +180,8 @@ export class OnramperClient {
|
|
|
125
180
|
* Fetches checkout requirements + quote and returns a native checkout button
|
|
126
181
|
* to render plus the quote. The button handles login / finalize / webview
|
|
127
182
|
* internally; outcomes surface via the event stream (`addEventListener`).
|
|
183
|
+
* A newer preparation, reset, or sign-out invalidates older unmounted buttons
|
|
184
|
+
* and rejects obsolete in-flight preparations with `intentInvalidated`.
|
|
128
185
|
*
|
|
129
186
|
* Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
|
|
130
187
|
* screens with values you already know about the user. It is best-effort and
|
|
@@ -138,32 +195,40 @@ export class OnramperClient {
|
|
|
138
195
|
*/
|
|
139
196
|
async getCheckoutRequirements(request, buttonStyle = {}, prefill = {}) {
|
|
140
197
|
try {
|
|
198
|
+
this.assertActive();
|
|
141
199
|
await this.configured;
|
|
200
|
+
this.assertActive();
|
|
142
201
|
const result = await this.native.getCheckoutRequirements(JSON.stringify(request), JSON.stringify(prefill), JSON.stringify(buttonStyle));
|
|
202
|
+
this.assertActive();
|
|
143
203
|
const quote = JSON.parse(result.quoteJson);
|
|
144
|
-
const button = /*#__PURE__*/createElement(
|
|
145
|
-
intentHandle: result.intentHandle
|
|
146
|
-
style: {
|
|
147
|
-
width: '100%',
|
|
148
|
-
minHeight: 56
|
|
149
|
-
}
|
|
204
|
+
const button = /*#__PURE__*/createElement(CheckoutButton, {
|
|
205
|
+
intentHandle: result.intentHandle
|
|
150
206
|
});
|
|
151
207
|
return {
|
|
152
208
|
button,
|
|
153
209
|
quote
|
|
154
210
|
};
|
|
155
211
|
} catch (e) {
|
|
212
|
+
this.assertActive();
|
|
156
213
|
throw OnramperError.from(e);
|
|
157
214
|
}
|
|
158
215
|
}
|
|
159
216
|
|
|
160
217
|
/** Discards a prepared intent (e.g. if the user navigates away before checkout). */
|
|
161
|
-
cancelPreparedIntent(intentHandle) {
|
|
162
|
-
|
|
218
|
+
async cancelPreparedIntent(intentHandle) {
|
|
219
|
+
try {
|
|
220
|
+
this.assertActive();
|
|
221
|
+
await this.native.cancelPreparedIntent(intentHandle);
|
|
222
|
+
this.assertActive();
|
|
223
|
+
} catch (e) {
|
|
224
|
+
this.assertActive();
|
|
225
|
+
throw OnramperError.from(e);
|
|
226
|
+
}
|
|
163
227
|
}
|
|
164
228
|
|
|
165
229
|
/** Subscribe to state changes. Returns an unsubscribe function. */
|
|
166
230
|
addStateListener(fn) {
|
|
231
|
+
this.assertActive();
|
|
167
232
|
this.stateListeners.add(fn);
|
|
168
233
|
return () => {
|
|
169
234
|
this.stateListeners.delete(fn);
|
|
@@ -172,6 +237,7 @@ export class OnramperClient {
|
|
|
172
237
|
|
|
173
238
|
/** Subscribe to the durable Onramper transaction ID. Successful reset/signOut publish null. */
|
|
174
239
|
addTransactionIdListener(fn) {
|
|
240
|
+
this.assertActive();
|
|
175
241
|
this.transactionIdListeners.add(fn);
|
|
176
242
|
return () => {
|
|
177
243
|
this.transactionIdListeners.delete(fn);
|
|
@@ -180,6 +246,7 @@ export class OnramperClient {
|
|
|
180
246
|
|
|
181
247
|
/** Subscribe to a specific checkout event. Returns an unsubscribe function. */
|
|
182
248
|
addEventListener(name, fn) {
|
|
249
|
+
this.assertActive();
|
|
183
250
|
const wrapper = e => {
|
|
184
251
|
if (e.type === name) fn(e);
|
|
185
252
|
};
|
|
@@ -189,8 +256,10 @@ export class OnramperClient {
|
|
|
189
256
|
};
|
|
190
257
|
}
|
|
191
258
|
|
|
192
|
-
/**
|
|
259
|
+
/** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
|
|
193
260
|
destroy() {
|
|
261
|
+
if (this.destroyed) return;
|
|
262
|
+
this.destroyed = true;
|
|
194
263
|
this.stateListeners.clear();
|
|
195
264
|
this.eventListeners.clear();
|
|
196
265
|
this.transactionIdListeners.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createElement","
|
|
1
|
+
{"version":3,"names":["createElement","CheckoutButton","createOnramperNative","OnramperError","OnramperClient","sdkVersion","native","dispose","state","kind","lastError","currentTransactionId","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"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/errors.js
CHANGED
|
@@ -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({
|
package/lib/module/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","info","from","value","v","String"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;
|
|
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":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const CHECKOUT_BUTTON_FALLBACK_HEIGHT = 56;
|
|
2
|
+
export interface CheckoutButtonProps {
|
|
3
|
+
intentHandle: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Sizes the native checkout button to its SwiftUI content. The content grows when
|
|
7
|
+
* the SDK shows ToS text under the Buy button (which can change after mount), and
|
|
8
|
+
* Yoga can't measure a SwiftUI view — so native reports the height and it is
|
|
9
|
+
* applied here as an explicit `height`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function CheckoutButton({ intentHandle }: CheckoutButtonProps): import("react").CElement<{
|
|
12
|
+
hybridRef?: import("react-native-nitro-modules").NitroViewWrappedCallback<((ref: import("react-native-nitro-modules").HybridView<import("./OnramperCheckoutButtonView").OnramperCheckoutButtonViewProps, import("./specs/OnramperCheckoutButton.nitro").OnramperCheckoutButtonMethods>) => void) | undefined> | undefined;
|
|
13
|
+
intentHandle: string;
|
|
14
|
+
onContentHeightChange?: import("react-native-nitro-modules").NitroViewWrappedCallback<((height: number) => void) | undefined> | undefined;
|
|
15
|
+
} & import("react-native").ViewProps, import("react").Component<{
|
|
16
|
+
hybridRef?: import("react-native-nitro-modules").NitroViewWrappedCallback<((ref: import("react-native-nitro-modules").HybridView<import("./OnramperCheckoutButtonView").OnramperCheckoutButtonViewProps, import("./specs/OnramperCheckoutButton.nitro").OnramperCheckoutButtonMethods>) => void) | undefined> | undefined;
|
|
17
|
+
intentHandle: string;
|
|
18
|
+
onContentHeightChange?: import("react-native-nitro-modules").NitroViewWrappedCallback<((height: number) => void) | undefined> | undefined;
|
|
19
|
+
} & import("react-native").ViewProps, {}, any> & import("react-native").ReactNativeElement>;
|
|
20
|
+
//# sourceMappingURL=CheckoutButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckoutButton.d.ts","sourceRoot":"","sources":["../../../../src/CheckoutButton.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,YAAY,EAAE,EAAE,mBAAmB;;;;;;;;4FAQnE"}
|
|
@@ -15,6 +15,11 @@ export interface GetCheckoutRequirementsResult {
|
|
|
15
15
|
* unions, then fanned out to any number of listeners.
|
|
16
16
|
*/
|
|
17
17
|
export declare class OnramperClient {
|
|
18
|
+
/**
|
|
19
|
+
* Version of the native Onramper iOS SDK loaded by this app (not the RN
|
|
20
|
+
* package version). No client configuration or session is required. iOS only.
|
|
21
|
+
*/
|
|
22
|
+
static get sdkVersion(): string;
|
|
18
23
|
state: OnramperState;
|
|
19
24
|
lastError: OnramperError | null;
|
|
20
25
|
currentTransactionId: string | null;
|
|
@@ -23,7 +28,9 @@ export declare class OnramperClient {
|
|
|
23
28
|
private readonly eventListeners;
|
|
24
29
|
private readonly transactionIdListeners;
|
|
25
30
|
private readonly configured;
|
|
31
|
+
private destroyed;
|
|
26
32
|
constructor(config: OnramperConfiguration);
|
|
33
|
+
private assertActive;
|
|
27
34
|
private updateCurrentTransactionId;
|
|
28
35
|
initialize(creds: SessionCredentials): Promise<void>;
|
|
29
36
|
reset(): Promise<void>;
|
|
@@ -38,6 +45,8 @@ export declare class OnramperClient {
|
|
|
38
45
|
* Fetches checkout requirements + quote and returns a native checkout button
|
|
39
46
|
* to render plus the quote. The button handles login / finalize / webview
|
|
40
47
|
* internally; outcomes surface via the event stream (`addEventListener`).
|
|
48
|
+
* A newer preparation, reset, or sign-out invalidates older unmounted buttons
|
|
49
|
+
* and rejects obsolete in-flight preparations with `intentInvalidated`.
|
|
41
50
|
*
|
|
42
51
|
* Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
|
|
43
52
|
* screens with values you already know about the user. It is best-effort and
|
|
@@ -58,7 +67,7 @@ export declare class OnramperClient {
|
|
|
58
67
|
addTransactionIdListener(fn: (transactionId: string | null) => void): () => void;
|
|
59
68
|
/** Subscribe to a specific checkout event. Returns an unsubscribe function. */
|
|
60
69
|
addEventListener<K extends EventName>(name: K, fn: (e: EventPayload<K>) => void): () => void;
|
|
61
|
-
/**
|
|
70
|
+
/** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
|
|
62
71
|
destroy(): void;
|
|
63
72
|
}
|
|
64
73
|
//# 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,
|
|
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;;;OAGG;IACH,MAAM,KAAK,UAAU,IAAI,MAAM,CAO9B;IAED,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"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
export type OnramperErrorCode = 'notInitialized' | 'initializationFailed' | 'attestationFailed' | 'invalidStateTransition' | 'invalidState' | 'networkError' | 'decodingError' | 'timeout' | 'requirementNotSatisfied' | 'amountOutOfRange' | 'oidcFlowCancelled' | 'oidcTokenExchangeFailed' | 'oidcFlowFailed' | 'userTokenInvalid' | 'userTokenRefreshFailed' | 'webviewLoadFailed' | 'deepLinkFailed' | 'invalidRequest' | 'quoteUnavailable' | 'checkoutForbidden' | 'temporaryFailure' | 'unrecoverable' | 'configurationError' | 'deviceBlocked' | 'securityStorageFailed' | 'securityTrustFailed' | 'platformUnsupported' | 'intentInvalidated' | 'intentAlreadyConsumed' | 'clientAlreadyConfigured' | 'sessionExpirationHandlerFailed';
|
|
1
|
+
export type OnramperErrorCode = 'notInitialized' | 'initializationFailed' | 'attestationFailed' | 'invalidStateTransition' | 'invalidState' | 'networkError' | 'decodingError' | 'timeout' | 'paymentFailed' | 'providerFailed' | 'applePayNotConfigured' | 'requirementNotSatisfied' | 'amountOutOfRange' | 'oidcFlowCancelled' | 'oidcTokenExchangeFailed' | 'oidcFlowFailed' | 'userTokenInvalid' | 'userTokenRefreshFailed' | 'webviewLoadFailed' | 'deepLinkFailed' | 'invalidRequest' | 'quoteUnavailable' | 'checkoutForbidden' | 'temporaryFailure' | 'unrecoverable' | 'configurationError' | 'deviceBlocked' | 'securityStorageFailed' | 'securityTrustFailed' | 'platformUnsupported' | 'intentInvalidated' | 'intentAlreadyConsumed' | 'clientAlreadyConfigured' | 'clientDestroyed' | 'sessionExpirationHandlerFailed';
|
|
2
2
|
export interface OnramperErrorPayload {
|
|
3
3
|
code: OnramperErrorCode;
|
|
4
4
|
message: string;
|
|
5
|
+
/** Customer-facing SDK copy; optional for backwards-compatible payload construction. */
|
|
6
|
+
userMessage?: string;
|
|
7
|
+
supportCode?: string;
|
|
5
8
|
info?: Record<string, unknown>;
|
|
6
9
|
}
|
|
7
10
|
export declare class OnramperError extends Error implements OnramperErrorPayload {
|
|
8
11
|
readonly code: OnramperErrorCode;
|
|
12
|
+
readonly userMessage: string;
|
|
13
|
+
readonly supportCode: string;
|
|
9
14
|
readonly info?: Record<string, unknown>;
|
|
10
15
|
constructor(payload: OnramperErrorPayload);
|
|
11
16
|
static from(value: unknown): OnramperError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAEzB,gBAAgB,GAChB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,eAAe,GACf,SAAS,GACT,yBAAyB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,yBAAyB,GACzB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,uBAAuB,GACvB,qBAAqB,GAErB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,yBAAyB,GACzB,gCAAgC,CAAC;AAErC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,qBAAa,aAAc,SAAQ,KAAM,YAAW,oBAAoB;IACtE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE5B,OAAO,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAEzB,gBAAgB,GAChB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,eAAe,GACf,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,uBAAuB,GACvB,yBAAyB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,yBAAyB,GACzB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,uBAAuB,GACvB,qBAAqB,GAErB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,yBAAyB,GACzB,iBAAiB,GACjB,gCAAgC,CAAC;AAErC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,qBAAa,aAAc,SAAQ,KAAM,YAAW,oBAAoB;IACtE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE5B,OAAO,EAAE,oBAAoB;IASzC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa;CA4B3C"}
|
|
@@ -35,6 +35,16 @@ export type CheckoutEvent = {
|
|
|
35
35
|
type: 'paymentAuthorized';
|
|
36
36
|
} | {
|
|
37
37
|
type: 'paymentProcessing';
|
|
38
|
+
}
|
|
39
|
+
/** Accepted but not settled; use currentTransactionId to track the payment. */
|
|
40
|
+
| {
|
|
41
|
+
type: 'paymentPending';
|
|
42
|
+
} | {
|
|
43
|
+
type: 'challengeStarted';
|
|
44
|
+
} | {
|
|
45
|
+
type: 'challengeCompleted';
|
|
46
|
+
} | {
|
|
47
|
+
type: 'customerOnboardingRequired';
|
|
38
48
|
} | {
|
|
39
49
|
type: 'paymentCancelled';
|
|
40
50
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,YAAY,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAErB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,YAAY,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAErB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE;AAC/B,+EAA+E;GAC7E;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,4BAA4B,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC"}
|
|
@@ -4,6 +4,6 @@ export { OnramperCheckoutButtonView } from './OnramperCheckoutButtonView';
|
|
|
4
4
|
export type { OnramperCheckoutButtonViewProps } from './OnramperCheckoutButtonView';
|
|
5
5
|
export { OnramperError } from './errors';
|
|
6
6
|
export type { OnramperErrorCode, OnramperErrorPayload } from './errors';
|
|
7
|
-
export type { CheckoutButtonStyle, CheckoutFinalizeResponse, CheckoutRequest, CheckoutPaymentType, CheckoutRequirement, HeadlessCheckoutData, OnramperConfiguration, OnramperEnvironment, OnramperLogLevel, OnramperState, OnramperTheme, OnramperUserPrefill, QuoteResponse, RenderType, ReverificationField, SessionCredentials, ToSItem, TransactionType, UserInfoField, UserInfoFieldType, WalletInfo, } from './types';
|
|
7
|
+
export type { CheckoutButtonStyle, CheckoutFinalizeResponse, CheckoutRequest, CheckoutPaymentType, CheckoutRequirement, HeadlessCheckoutData, OnramperConfiguration, OnramperEnvironment, OnramperLogLevel, OnramperLogRecord, ProviderJSONValue, PaymentDisclosure, OnramperState, OnramperTheme, OnramperUserPrefill, QuoteResponse, RenderType, ReverificationField, SessionCredentials, ToSItem, TransactionType, UserInfoField, UserInfoFieldType, WalletInfo, } from './types';
|
|
8
8
|
export type { CheckoutEvent, EventName, EventPayload } from './events';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxE,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,OAAO,EACP,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxE,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,OAAO,EACP,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { HybridView, HybridViewMethods, HybridViewProps } from 'react-native-nitro-modules';
|
|
2
2
|
export interface OnramperCheckoutButtonProps extends HybridViewProps {
|
|
3
3
|
intentHandle: string;
|
|
4
|
+
/**
|
|
5
|
+
* Called with the hosted SwiftUI content's height (points) whenever it changes —
|
|
6
|
+
* e.g. when ToS text appears under the Buy button. React Native can't measure
|
|
7
|
+
* the SwiftUI content itself, so the JS wrapper applies this as `height`.
|
|
8
|
+
*/
|
|
9
|
+
onContentHeightChange?: (height: number) => void;
|
|
4
10
|
}
|
|
5
11
|
export interface OnramperCheckoutButtonMethods extends HybridViewMethods {
|
|
6
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnramperCheckoutButton.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperCheckoutButton.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKjG,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"OnramperCheckoutButton.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperCheckoutButton.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKjG,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;CAAG;AAE3E,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAC7C,2BAA2B,EAC3B,6BAA6B,EAC7B;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CACjB,CAAC"}
|
|
@@ -5,6 +5,8 @@ export interface OnramperNitroConfig {
|
|
|
5
5
|
environment: string;
|
|
6
6
|
theme: string;
|
|
7
7
|
logLevel: string;
|
|
8
|
+
isEventLoggingEnabled: boolean;
|
|
9
|
+
isEventConsoleLoggingEnabled: boolean;
|
|
8
10
|
}
|
|
9
11
|
export interface NitroSessionCredentials {
|
|
10
12
|
sessionId: string;
|
|
@@ -26,12 +28,14 @@ export interface PreparedIntentResult {
|
|
|
26
28
|
export interface OnramperNitro extends HybridObject<{
|
|
27
29
|
ios: 'swift';
|
|
28
30
|
}> {
|
|
31
|
+
readonly sdkVersion: string;
|
|
29
32
|
configure(config: OnramperNitroConfig): Promise<void>;
|
|
30
33
|
initialize(sessionId: string, sessionToken: string): Promise<void>;
|
|
31
34
|
reset(): Promise<void>;
|
|
32
35
|
signOut(): Promise<void>;
|
|
33
36
|
getCheckoutRequirements(requestJson: string, prefillJson: string, styleJson: string): Promise<PreparedIntentResult>;
|
|
34
37
|
cancelPreparedIntent(intentHandle: string): Promise<void>;
|
|
38
|
+
setLogListener(onLog: (recordJson: string) => void): void;
|
|
35
39
|
setStateListener(onState: (stateJson: string) => void): void;
|
|
36
40
|
setEventListener(onEvent: (eventJson: string) => void): void;
|
|
37
41
|
setTransactionIdListener(onTransactionId: (transactionId: string | undefined) => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnramperNitro.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperNitro.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"OnramperNitro.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperNitro.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAID,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAc,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IAEnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IASzB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpH,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG1D,cAAc,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,gBAAgB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,gBAAgB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7D,wBAAwB,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI,CAAC;IAI7F,2BAA2B,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;CAKpF"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { OnramperErrorPayload } from './errors';
|
|
2
2
|
export type OnramperEnvironment = 'development' | 'production';
|
|
3
3
|
export type OnramperLogLevel = 'off' | 'error' | 'info' | 'debug';
|
|
4
|
+
/** A sanitized native SDK diagnostic. Timestamp is Unix milliseconds. */
|
|
5
|
+
export interface OnramperLogRecord {
|
|
6
|
+
timestamp: number;
|
|
7
|
+
level: OnramperLogLevel;
|
|
8
|
+
category: string;
|
|
9
|
+
event: string;
|
|
10
|
+
context: Record<string, string>;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
4
13
|
export type OnramperTheme = 'system' | 'light' | 'dark';
|
|
5
14
|
export type TransactionType = 'buy' | 'sell';
|
|
6
15
|
export interface SessionCredentials {
|
|
@@ -13,12 +22,16 @@ export interface OnramperConfiguration {
|
|
|
13
22
|
environment: OnramperEnvironment;
|
|
14
23
|
theme?: OnramperTheme;
|
|
15
24
|
logLevel?: OnramperLogLevel;
|
|
25
|
+
/** Receives native records in JS; system Console output is preserved. Off unless logLevel enables it. */
|
|
26
|
+
logHandler?: (record: OnramperLogRecord) => void;
|
|
27
|
+
/** Opt-in provider-event telemetry to the BFF. Defaults to false. */
|
|
28
|
+
isEventLoggingEnabled?: boolean;
|
|
29
|
+
/** Emit provider events at info even when logLevel is lower. Defaults to false. */
|
|
30
|
+
isEventConsoleLoggingEnabled?: boolean;
|
|
16
31
|
/**
|
|
17
32
|
* Called by the SDK when the session token expires and needs to be re-issued.
|
|
18
33
|
*
|
|
19
|
-
* May be synchronous or async
|
|
20
|
-
* round-trip (`onSessionExpired` → `provideSessionCredentials`) so Promises
|
|
21
|
-
* are awaited normally. Throw or reject to signal that no fresh credentials
|
|
34
|
+
* May be synchronous or async; the Nitro bridge awaits the callback directly. Throw or reject to signal that no fresh credentials
|
|
22
35
|
* are available; the SDK will surface `userTokenRefreshFailed`.
|
|
23
36
|
*/
|
|
24
37
|
onSessionExpired: () => SessionCredentials | Promise<SessionCredentials>;
|
|
@@ -48,6 +61,17 @@ export interface QuoteResponse {
|
|
|
48
61
|
networkFee: number;
|
|
49
62
|
transactionFee: number;
|
|
50
63
|
recommendations?: string[];
|
|
64
|
+
providerContext?: Record<string, ProviderJSONValue>;
|
|
65
|
+
}
|
|
66
|
+
/** JSON values used in provider-specific quote metadata (including booleans and limits). */
|
|
67
|
+
export type ProviderJSONValue = string | number | boolean | null | ProviderJSONValue[] | {
|
|
68
|
+
[key: string]: ProviderJSONValue;
|
|
69
|
+
};
|
|
70
|
+
export interface PaymentDisclosure {
|
|
71
|
+
code: string;
|
|
72
|
+
version: string;
|
|
73
|
+
contentMarkdown: string;
|
|
74
|
+
contentHtml: string;
|
|
51
75
|
}
|
|
52
76
|
export interface OnramperUserPrefill {
|
|
53
77
|
email?: string;
|
|
@@ -67,6 +91,9 @@ export interface HeadlessCheckoutData {
|
|
|
67
91
|
checkoutPaymentType: CheckoutPaymentType;
|
|
68
92
|
url: string;
|
|
69
93
|
renderType: RenderType;
|
|
94
|
+
providerBootstrap?: {
|
|
95
|
+
framesBaseUrl?: string;
|
|
96
|
+
};
|
|
70
97
|
}
|
|
71
98
|
export interface CheckoutFinalizeResponse {
|
|
72
99
|
headlessCheckoutId: string;
|
|
@@ -131,6 +158,8 @@ export type OnramperState = {
|
|
|
131
158
|
url: string;
|
|
132
159
|
renderType: RenderType;
|
|
133
160
|
paymentType: CheckoutPaymentType;
|
|
161
|
+
} | {
|
|
162
|
+
kind: 'paymentPending';
|
|
134
163
|
} | {
|
|
135
164
|
kind: 'completed';
|
|
136
165
|
} | {
|