@onramper/onramper-react-native 1.0.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 (163) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +5 -0
  4. package/OnramperReactNative.podspec +36 -0
  5. package/README.md +114 -0
  6. package/app.plugin.js +51 -0
  7. package/ios/Frameworks/LICENSE +202 -0
  8. package/ios/Frameworks/NOTICE +5 -0
  9. package/ios/Frameworks/OnramperSDK.xcframework/Info.plist +48 -0
  10. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Info.plist +0 -0
  11. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  12. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftinterface +548 -0
  13. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/OnramperSDK +0 -0
  14. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/OnramperSDK_OnramperSDK.bundle/Info.plist +0 -0
  15. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/OnramperSDK_OnramperSDK.bundle/PrivacyInfo.xcprivacy +27 -0
  16. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/PrivacyInfo.xcprivacy +27 -0
  17. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Info.plist +20 -0
  18. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
  19. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +2518 -0
  20. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Info.plist +0 -0
  21. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  22. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +548 -0
  23. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  24. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +548 -0
  25. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/OnramperSDK +0 -0
  26. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/OnramperSDK_OnramperSDK.bundle/Info.plist +0 -0
  27. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/OnramperSDK_OnramperSDK.bundle/PrivacyInfo.xcprivacy +27 -0
  28. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/PrivacyInfo.xcprivacy +27 -0
  29. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Info.plist +20 -0
  30. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
  31. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +2518 -0
  32. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/OnramperSDK.yml +2487 -0
  33. package/ios/HybridOnramperCheckoutButton.swift +112 -0
  34. package/ios/HybridOnramperNitro.swift +194 -0
  35. package/ios/OnramperCheckoutBridge.swift +88 -0
  36. package/ios/OnramperSDKBridge.swift +185 -0
  37. package/ios/PreparedIntentRegistry.swift +78 -0
  38. package/lib/commonjs/OnramperCheckoutButtonView.js +16 -0
  39. package/lib/commonjs/OnramperCheckoutButtonView.js.map +1 -0
  40. package/lib/commonjs/OnramperClient.js +161 -0
  41. package/lib/commonjs/OnramperClient.js.map +1 -0
  42. package/lib/commonjs/OnramperNative.js +22 -0
  43. package/lib/commonjs/OnramperNative.js.map +1 -0
  44. package/lib/commonjs/errors.js +35 -0
  45. package/lib/commonjs/errors.js.map +1 -0
  46. package/lib/commonjs/events.js +6 -0
  47. package/lib/commonjs/events.js.map +1 -0
  48. package/lib/commonjs/generated/OnramperCheckoutButtonConfig.json +10 -0
  49. package/lib/commonjs/index.js +27 -0
  50. package/lib/commonjs/index.js.map +1 -0
  51. package/lib/commonjs/package.json +1 -0
  52. package/lib/commonjs/specs/OnramperCheckoutButton.nitro.js +6 -0
  53. package/lib/commonjs/specs/OnramperCheckoutButton.nitro.js.map +1 -0
  54. package/lib/commonjs/specs/OnramperNitro.nitro.js +6 -0
  55. package/lib/commonjs/specs/OnramperNitro.nitro.js.map +1 -0
  56. package/lib/commonjs/types.js +6 -0
  57. package/lib/commonjs/types.js.map +1 -0
  58. package/lib/module/OnramperCheckoutButtonView.js +11 -0
  59. package/lib/module/OnramperCheckoutButtonView.js.map +1 -0
  60. package/lib/module/OnramperClient.js +156 -0
  61. package/lib/module/OnramperClient.js.map +1 -0
  62. package/lib/module/OnramperNative.js +18 -0
  63. package/lib/module/OnramperNative.js.map +1 -0
  64. package/lib/module/errors.js +30 -0
  65. package/lib/module/errors.js.map +1 -0
  66. package/lib/module/events.js +4 -0
  67. package/lib/module/events.js.map +1 -0
  68. package/lib/module/generated/OnramperCheckoutButtonConfig.json +10 -0
  69. package/lib/module/index.js +8 -0
  70. package/lib/module/index.js.map +1 -0
  71. package/lib/module/package.json +1 -0
  72. package/lib/module/specs/OnramperCheckoutButton.nitro.js +4 -0
  73. package/lib/module/specs/OnramperCheckoutButton.nitro.js.map +1 -0
  74. package/lib/module/specs/OnramperNitro.nitro.js +4 -0
  75. package/lib/module/specs/OnramperNitro.nitro.js.map +1 -0
  76. package/lib/module/types.js +4 -0
  77. package/lib/module/types.js.map +1 -0
  78. package/lib/typescript/commonjs/package.json +1 -0
  79. package/lib/typescript/commonjs/src/OnramperCheckoutButtonView.d.ts +9 -0
  80. package/lib/typescript/commonjs/src/OnramperCheckoutButtonView.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/src/OnramperClient.d.ts +49 -0
  82. package/lib/typescript/commonjs/src/OnramperClient.d.ts.map +1 -0
  83. package/lib/typescript/commonjs/src/OnramperNative.d.ts +9 -0
  84. package/lib/typescript/commonjs/src/OnramperNative.d.ts.map +1 -0
  85. package/lib/typescript/commonjs/src/errors.d.ts +13 -0
  86. package/lib/typescript/commonjs/src/errors.d.ts.map +1 -0
  87. package/lib/typescript/commonjs/src/events.d.ts +48 -0
  88. package/lib/typescript/commonjs/src/events.d.ts.map +1 -0
  89. package/lib/typescript/commonjs/src/index.d.ts +9 -0
  90. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/src/specs/OnramperCheckoutButton.nitro.d.ts +10 -0
  92. package/lib/typescript/commonjs/src/specs/OnramperCheckoutButton.nitro.d.ts.map +1 -0
  93. package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts +39 -0
  94. package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts.map +1 -0
  95. package/lib/typescript/commonjs/src/types.d.ts +127 -0
  96. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  97. package/lib/typescript/module/package.json +1 -0
  98. package/lib/typescript/module/src/OnramperCheckoutButtonView.d.ts +9 -0
  99. package/lib/typescript/module/src/OnramperCheckoutButtonView.d.ts.map +1 -0
  100. package/lib/typescript/module/src/OnramperClient.d.ts +49 -0
  101. package/lib/typescript/module/src/OnramperClient.d.ts.map +1 -0
  102. package/lib/typescript/module/src/OnramperNative.d.ts +9 -0
  103. package/lib/typescript/module/src/OnramperNative.d.ts.map +1 -0
  104. package/lib/typescript/module/src/errors.d.ts +13 -0
  105. package/lib/typescript/module/src/errors.d.ts.map +1 -0
  106. package/lib/typescript/module/src/events.d.ts +48 -0
  107. package/lib/typescript/module/src/events.d.ts.map +1 -0
  108. package/lib/typescript/module/src/index.d.ts +9 -0
  109. package/lib/typescript/module/src/index.d.ts.map +1 -0
  110. package/lib/typescript/module/src/specs/OnramperCheckoutButton.nitro.d.ts +10 -0
  111. package/lib/typescript/module/src/specs/OnramperCheckoutButton.nitro.d.ts.map +1 -0
  112. package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts +39 -0
  113. package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts.map +1 -0
  114. package/lib/typescript/module/src/types.d.ts +127 -0
  115. package/lib/typescript/module/src/types.d.ts.map +1 -0
  116. package/nitro.json +19 -0
  117. package/nitrogen/generated/.gitattributes +1 -0
  118. package/nitrogen/generated/ios/OnramperReactNative+autolinking.rb +62 -0
  119. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.cpp +107 -0
  120. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.hpp +299 -0
  121. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Umbrella.hpp +60 -0
  122. package/nitrogen/generated/ios/OnramperReactNativeAutolinking.mm +41 -0
  123. package/nitrogen/generated/ios/OnramperReactNativeAutolinking.swift +38 -0
  124. package/nitrogen/generated/ios/c++/HybridOnramperCheckoutButtonSpecSwift.cpp +11 -0
  125. package/nitrogen/generated/ios/c++/HybridOnramperCheckoutButtonSpecSwift.hpp +81 -0
  126. package/nitrogen/generated/ios/c++/HybridOnramperNitroSpecSwift.cpp +11 -0
  127. package/nitrogen/generated/ios/c++/HybridOnramperNitroSpecSwift.hpp +150 -0
  128. package/nitrogen/generated/ios/c++/views/HybridOnramperCheckoutButtonComponent.mm +122 -0
  129. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__shared_ptr_Promise_NitroSessionCredentials____.swift +61 -0
  130. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  131. package/nitrogen/generated/ios/swift/Func_void_NitroSessionCredentials.swift +46 -0
  132. package/nitrogen/generated/ios/swift/Func_void_PreparedIntentResult.swift +46 -0
  133. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  134. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_Promise_NitroSessionCredentials__.swift +66 -0
  135. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  136. package/nitrogen/generated/ios/swift/HybridOnramperCheckoutButtonSpec.swift +55 -0
  137. package/nitrogen/generated/ios/swift/HybridOnramperCheckoutButtonSpec_cxx.swift +156 -0
  138. package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec.swift +63 -0
  139. package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec_cxx.swift +309 -0
  140. package/nitrogen/generated/ios/swift/NitroSessionCredentials.swift +34 -0
  141. package/nitrogen/generated/ios/swift/OnramperNitroConfig.swift +49 -0
  142. package/nitrogen/generated/ios/swift/PreparedIntentResult.swift +34 -0
  143. package/nitrogen/generated/shared/c++/HybridOnramperCheckoutButtonSpec.cpp +22 -0
  144. package/nitrogen/generated/shared/c++/HybridOnramperCheckoutButtonSpec.hpp +63 -0
  145. package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.cpp +29 -0
  146. package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.hpp +80 -0
  147. package/nitrogen/generated/shared/c++/NitroSessionCredentials.hpp +87 -0
  148. package/nitrogen/generated/shared/c++/OnramperNitroConfig.hpp +99 -0
  149. package/nitrogen/generated/shared/c++/PreparedIntentResult.hpp +87 -0
  150. package/nitrogen/generated/shared/c++/views/HybridOnramperCheckoutButtonComponent.cpp +83 -0
  151. package/nitrogen/generated/shared/c++/views/HybridOnramperCheckoutButtonComponent.hpp +111 -0
  152. package/nitrogen/generated/shared/json/OnramperCheckoutButtonConfig.json +10 -0
  153. package/package.json +107 -0
  154. package/src/OnramperCheckoutButtonView.tsx +15 -0
  155. package/src/OnramperClient.ts +170 -0
  156. package/src/OnramperNative.ts +19 -0
  157. package/src/errors.ts +69 -0
  158. package/src/events.ts +23 -0
  159. package/src/generated/OnramperCheckoutButtonConfig.json +10 -0
  160. package/src/index.ts +30 -0
  161. package/src/specs/OnramperCheckoutButton.nitro.ts +16 -0
  162. package/src/specs/OnramperNitro.nitro.ts +60 -0
  163. package/src/types.ts +133 -0
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OnramperClient = void 0;
7
+ var _react = require("react");
8
+ var _OnramperCheckoutButtonView = require("./OnramperCheckoutButtonView.js");
9
+ var _OnramperNative = require("./OnramperNative.js");
10
+ var _errors = require("./errors.js");
11
+ /**
12
+ * Typed, public entry point to the Onramper SDK. Wraps the native Nitro hybrid
13
+ * object: state and checkout events arrive as JSON strings over single native
14
+ * callbacks and are parsed here into the typed `OnramperState` / `CheckoutEvent`
15
+ * unions, then fanned out to any number of listeners.
16
+ */
17
+ class OnramperClient {
18
+ state = {
19
+ kind: 'idle'
20
+ };
21
+ lastError = null;
22
+
23
+ // Each client owns its own native instance (and thus its own SDK client).
24
+ native = (0, _OnramperNative.createOnramperNative)();
25
+ stateListeners = new Set();
26
+ eventListeners = new Set();
27
+
28
+ // Resolved when the constructor-issued configure() completes. Public methods
29
+ // that need the native client await this first.
30
+
31
+ constructor(config) {
32
+ // Single native state callback → update the mirror + fan out to listeners.
33
+ this.native.setStateListener(json => {
34
+ const s = JSON.parse(json);
35
+ this.state = s;
36
+ if (s.kind === 'failed') this.lastError = _errors.OnramperError.from(s.error);
37
+ for (const fn of this.stateListeners) fn(s);
38
+ });
39
+
40
+ // Single native checkout-event callback → fan out to listeners.
41
+ this.native.setEventListener(json => {
42
+ const e = JSON.parse(json);
43
+ for (const fn of this.eventListeners) fn(e);
44
+ });
45
+
46
+ // The SDK calls this when its session expires; return fresh credentials.
47
+ // Nitro stores the async callback natively and awaits it directly — no
48
+ // event round-trip needed.
49
+ this.native.setSessionExpirationHandler(async () => {
50
+ const creds = await config.onSessionExpired();
51
+ return {
52
+ sessionId: creds.sessionId,
53
+ sessionToken: creds.sessionToken
54
+ };
55
+ });
56
+ this.configured = this.native.configure({
57
+ apiKey: config.apiKey,
58
+ clientId: config.clientId,
59
+ environment: config.environment,
60
+ theme: config.theme ?? 'system',
61
+ logLevel: config.logLevel ?? 'off'
62
+ }).catch(e => {
63
+ const err = _errors.OnramperError.from(e);
64
+ this.lastError = err;
65
+ throw err;
66
+ });
67
+ // Swallow the unhandled-rejection warning when no one awaits .configured
68
+ // before calling initialize(). The error still surfaces via initialize().
69
+ this.configured.catch(() => undefined);
70
+ }
71
+ async initialize(creds) {
72
+ try {
73
+ await this.configured;
74
+ await this.native.initialize(creds.sessionId, creds.sessionToken);
75
+ } catch (e) {
76
+ throw _errors.OnramperError.from(e);
77
+ }
78
+ }
79
+ async reset() {
80
+ try {
81
+ await this.configured;
82
+ await this.native.reset();
83
+ } catch (e) {
84
+ throw _errors.OnramperError.from(e);
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Signs the OnramperID user out by clearing stored OIDC tokens. The next
90
+ * checkout that requires user_info will re-trigger the login flow. Also
91
+ * resets in-flight checkout state. Does NOT clear the partner-scoped SDK
92
+ * session — re-calling `initialize` is only needed if that session expired.
93
+ */
94
+ async signOut() {
95
+ try {
96
+ await this.configured;
97
+ await this.native.signOut();
98
+ } catch (e) {
99
+ throw _errors.OnramperError.from(e);
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Fetches checkout requirements + quote and returns a native checkout button
105
+ * to render plus the quote. The button handles login / finalize / webview
106
+ * internally; outcomes surface via the event stream (`addEventListener`).
107
+ */
108
+ async getCheckoutRequirements(request, buttonStyle = {}) {
109
+ try {
110
+ await this.configured;
111
+ const result = await this.native.getCheckoutRequirements(JSON.stringify(request), JSON.stringify(buttonStyle));
112
+ const quote = JSON.parse(result.quoteJson);
113
+ const button = /*#__PURE__*/(0, _react.createElement)(_OnramperCheckoutButtonView.OnramperCheckoutButtonView, {
114
+ intentHandle: result.intentHandle,
115
+ style: {
116
+ width: '100%',
117
+ minHeight: 56
118
+ }
119
+ });
120
+ return {
121
+ button,
122
+ quote
123
+ };
124
+ } catch (e) {
125
+ throw _errors.OnramperError.from(e);
126
+ }
127
+ }
128
+
129
+ /** Discards a prepared intent (e.g. if the user navigates away before checkout). */
130
+ cancelPreparedIntent(intentHandle) {
131
+ return this.native.cancelPreparedIntent(intentHandle);
132
+ }
133
+
134
+ /** Subscribe to state changes. Returns an unsubscribe function. */
135
+ addStateListener(fn) {
136
+ this.stateListeners.add(fn);
137
+ return () => {
138
+ this.stateListeners.delete(fn);
139
+ };
140
+ }
141
+
142
+ /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
143
+ addEventListener(name, fn) {
144
+ const wrapper = e => {
145
+ if (e.type === name) fn(e);
146
+ };
147
+ this.eventListeners.add(wrapper);
148
+ return () => {
149
+ this.eventListeners.delete(wrapper);
150
+ };
151
+ }
152
+
153
+ /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
154
+ destroy() {
155
+ this.stateListeners.clear();
156
+ this.eventListeners.clear();
157
+ this.native.dispose();
158
+ }
159
+ }
160
+ exports.OnramperClient = OnramperClient;
161
+ //# sourceMappingURL=OnramperClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_OnramperCheckoutButtonView","_OnramperNative","_errors","OnramperClient","state","kind","lastError","native","createOnramperNative","stateListeners","Set","eventListeners","constructor","config","setStateListener","json","s","JSON","parse","OnramperError","from","error","fn","setEventListener","e","setSessionExpirationHandler","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","catch","err","undefined","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","result","stringify","quote","quoteJson","button","createElement","OnramperCheckoutButtonView","intentHandle","style","width","minHeight","cancelPreparedIntent","addStateListener","add","delete","addEventListener","name","wrapper","type","destroy","clear","dispose","exports"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createOnramperNative = createOnramperNative;
7
+ var _reactNative = require("react-native");
8
+ var _reactNativeNitroModules = require("react-native-nitro-modules");
9
+ /**
10
+ * Creates a fresh native Onramper Nitro hybrid object. Each `OnramperClient`
11
+ * owns its own instance, so its listeners and the underlying SDK client are
12
+ * isolated per client and torn down by `destroy()` → `dispose()`.
13
+ */
14
+ function createOnramperNative() {
15
+ // iOS-only in this release. Fail with a clear message rather than the opaque
16
+ // "hybrid object not found" Nitro would throw on platforms without a native impl.
17
+ if (_reactNative.Platform.OS !== 'ios') {
18
+ throw new Error(`Onramper React Native is iOS-only in this release; it is not supported on ${_reactNative.Platform.OS}.`);
19
+ }
20
+ return _reactNativeNitroModules.NitroModules.createHybridObject('OnramperNitro');
21
+ }
22
+ //# sourceMappingURL=OnramperNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_reactNativeNitroModules","createOnramperNative","Platform","OS","Error","NitroModules","createHybridObject"],"sourceRoot":"../../src","sources":["OnramperNative.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAGA;AACA;AACA;AACA;AACA;AACO,SAASE,oBAAoBA,CAAA,EAAkB;EACpD;EACA;EACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,MAAM,IAAIC,KAAK,CAAC,6EAA6EF,qBAAQ,CAACC,EAAE,GAAG,CAAC;EAC9G;EACA,OAAOE,qCAAY,CAACC,kBAAkB,CAAgB,eAAe,CAAC;AACxE","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OnramperError = void 0;
7
+ class OnramperError extends Error {
8
+ constructor(payload) {
9
+ super(payload.message);
10
+ this.name = 'OnramperError';
11
+ this.code = payload.code;
12
+ this.info = payload.info;
13
+ }
14
+ static from(value) {
15
+ if (value instanceof OnramperError) return value;
16
+ 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
+ const v = value;
22
+ return new OnramperError({
23
+ code: v.code ?? 'unrecoverable',
24
+ message: v.message ?? 'Unknown error',
25
+ info: v.info
26
+ });
27
+ }
28
+ return new OnramperError({
29
+ code: 'unrecoverable',
30
+ message: String(value)
31
+ });
32
+ }
33
+ }
34
+ exports.OnramperError = OnramperError;
35
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["events.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ {
2
+ "uiViewClassName": "OnramperCheckoutButton",
3
+ "supportsRawText": false,
4
+ "bubblingEventTypes": {},
5
+ "directEventTypes": {},
6
+ "validAttributes": {
7
+ "intentHandle": true,
8
+ "hybridRef": true
9
+ }
10
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "OnramperCheckoutButtonView", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _OnramperCheckoutButtonView.OnramperCheckoutButtonView;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "OnramperClient", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _OnramperClient.OnramperClient;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "OnramperError", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _errors.OnramperError;
22
+ }
23
+ });
24
+ var _OnramperClient = require("./OnramperClient.js");
25
+ var _OnramperCheckoutButtonView = require("./OnramperCheckoutButtonView.js");
26
+ var _errors = require("./errors.js");
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_OnramperClient","require","_OnramperCheckoutButtonView","_errors"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,2BAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=OnramperCheckoutButton.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/OnramperCheckoutButton.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=OnramperNitro.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/OnramperNitro.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { getHostComponent } from 'react-native-nitro-modules';
4
+ import OnramperCheckoutButtonConfig from './generated/OnramperCheckoutButtonConfig.json';
5
+ /**
6
+ * Native checkout button. Renders the SwiftUI `OnramperCheckoutButton` that
7
+ * `OnramperClient.getCheckoutRequirements()` prepared, addressed by `intentHandle`.
8
+ * Standard view props (e.g. `style`) are supported via `HybridViewProps`.
9
+ */
10
+ export const OnramperCheckoutButtonView = getHostComponent('OnramperCheckoutButton', () => OnramperCheckoutButtonConfig);
11
+ //# sourceMappingURL=OnramperCheckoutButtonView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getHostComponent","OnramperCheckoutButtonConfig","OnramperCheckoutButtonView"],"sourceRoot":"../../src","sources":["OnramperCheckoutButtonView.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,4BAA4B;AAC7D,OAAOC,4BAA4B,MAAM,+CAA+C;AAKxF;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGF,gBAAgB,CACxD,wBAAwB,EACxB,MAAMC,4BACR,CAAC","ignoreList":[]}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ import { createElement } from 'react';
4
+ import { OnramperCheckoutButtonView } from "./OnramperCheckoutButtonView.js";
5
+ import { createOnramperNative } from "./OnramperNative.js";
6
+ import { OnramperError } from "./errors.js";
7
+ /**
8
+ * Typed, public entry point to the Onramper SDK. Wraps the native Nitro hybrid
9
+ * object: state and checkout events arrive as JSON strings over single native
10
+ * callbacks and are parsed here into the typed `OnramperState` / `CheckoutEvent`
11
+ * unions, then fanned out to any number of listeners.
12
+ */
13
+ export class OnramperClient {
14
+ state = {
15
+ kind: 'idle'
16
+ };
17
+ lastError = null;
18
+
19
+ // Each client owns its own native instance (and thus its own SDK client).
20
+ native = createOnramperNative();
21
+ stateListeners = new Set();
22
+ eventListeners = new Set();
23
+
24
+ // Resolved when the constructor-issued configure() completes. Public methods
25
+ // that need the native client await this first.
26
+
27
+ constructor(config) {
28
+ // Single native state callback → update the mirror + fan out to listeners.
29
+ this.native.setStateListener(json => {
30
+ const s = JSON.parse(json);
31
+ this.state = s;
32
+ if (s.kind === 'failed') this.lastError = OnramperError.from(s.error);
33
+ for (const fn of this.stateListeners) fn(s);
34
+ });
35
+
36
+ // Single native checkout-event callback → fan out to listeners.
37
+ this.native.setEventListener(json => {
38
+ const e = JSON.parse(json);
39
+ for (const fn of this.eventListeners) fn(e);
40
+ });
41
+
42
+ // The SDK calls this when its session expires; return fresh credentials.
43
+ // Nitro stores the async callback natively and awaits it directly — no
44
+ // event round-trip needed.
45
+ this.native.setSessionExpirationHandler(async () => {
46
+ const creds = await config.onSessionExpired();
47
+ return {
48
+ sessionId: creds.sessionId,
49
+ sessionToken: creds.sessionToken
50
+ };
51
+ });
52
+ this.configured = this.native.configure({
53
+ apiKey: config.apiKey,
54
+ clientId: config.clientId,
55
+ environment: config.environment,
56
+ theme: config.theme ?? 'system',
57
+ logLevel: config.logLevel ?? 'off'
58
+ }).catch(e => {
59
+ const err = OnramperError.from(e);
60
+ this.lastError = err;
61
+ throw err;
62
+ });
63
+ // Swallow the unhandled-rejection warning when no one awaits .configured
64
+ // before calling initialize(). The error still surfaces via initialize().
65
+ this.configured.catch(() => undefined);
66
+ }
67
+ async initialize(creds) {
68
+ try {
69
+ await this.configured;
70
+ await this.native.initialize(creds.sessionId, creds.sessionToken);
71
+ } catch (e) {
72
+ throw OnramperError.from(e);
73
+ }
74
+ }
75
+ async reset() {
76
+ try {
77
+ await this.configured;
78
+ await this.native.reset();
79
+ } catch (e) {
80
+ throw OnramperError.from(e);
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Signs the OnramperID user out by clearing stored OIDC tokens. The next
86
+ * checkout that requires user_info will re-trigger the login flow. Also
87
+ * resets in-flight checkout state. Does NOT clear the partner-scoped SDK
88
+ * session — re-calling `initialize` is only needed if that session expired.
89
+ */
90
+ async signOut() {
91
+ try {
92
+ await this.configured;
93
+ await this.native.signOut();
94
+ } catch (e) {
95
+ throw OnramperError.from(e);
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Fetches checkout requirements + quote and returns a native checkout button
101
+ * to render plus the quote. The button handles login / finalize / webview
102
+ * internally; outcomes surface via the event stream (`addEventListener`).
103
+ */
104
+ async getCheckoutRequirements(request, buttonStyle = {}) {
105
+ try {
106
+ await this.configured;
107
+ const result = await this.native.getCheckoutRequirements(JSON.stringify(request), JSON.stringify(buttonStyle));
108
+ const quote = JSON.parse(result.quoteJson);
109
+ const button = /*#__PURE__*/createElement(OnramperCheckoutButtonView, {
110
+ intentHandle: result.intentHandle,
111
+ style: {
112
+ width: '100%',
113
+ minHeight: 56
114
+ }
115
+ });
116
+ return {
117
+ button,
118
+ quote
119
+ };
120
+ } catch (e) {
121
+ throw OnramperError.from(e);
122
+ }
123
+ }
124
+
125
+ /** Discards a prepared intent (e.g. if the user navigates away before checkout). */
126
+ cancelPreparedIntent(intentHandle) {
127
+ return this.native.cancelPreparedIntent(intentHandle);
128
+ }
129
+
130
+ /** Subscribe to state changes. Returns an unsubscribe function. */
131
+ addStateListener(fn) {
132
+ this.stateListeners.add(fn);
133
+ return () => {
134
+ this.stateListeners.delete(fn);
135
+ };
136
+ }
137
+
138
+ /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
139
+ addEventListener(name, fn) {
140
+ const wrapper = e => {
141
+ if (e.type === name) fn(e);
142
+ };
143
+ this.eventListeners.add(wrapper);
144
+ return () => {
145
+ this.eventListeners.delete(wrapper);
146
+ };
147
+ }
148
+
149
+ /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
150
+ destroy() {
151
+ this.stateListeners.clear();
152
+ this.eventListeners.clear();
153
+ this.native.dispose();
154
+ }
155
+ }
156
+ //# sourceMappingURL=OnramperClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createElement","OnramperCheckoutButtonView","createOnramperNative","OnramperError","OnramperClient","state","kind","lastError","native","stateListeners","Set","eventListeners","constructor","config","setStateListener","json","s","JSON","parse","from","error","fn","setEventListener","e","setSessionExpirationHandler","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","catch","err","undefined","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","result","stringify","quote","quoteJson","button","intentHandle","style","width","minHeight","cancelPreparedIntent","addStateListener","add","delete","addEventListener","name","wrapper","type","destroy","clear","dispose"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { NitroModules } from 'react-native-nitro-modules';
5
+ /**
6
+ * Creates a fresh native Onramper Nitro hybrid object. Each `OnramperClient`
7
+ * owns its own instance, so its listeners and the underlying SDK client are
8
+ * isolated per client and torn down by `destroy()` → `dispose()`.
9
+ */
10
+ export function createOnramperNative() {
11
+ // iOS-only in this release. Fail with a clear message rather than the opaque
12
+ // "hybrid object not found" Nitro would throw on platforms without a native impl.
13
+ if (Platform.OS !== 'ios') {
14
+ throw new Error(`Onramper React Native is iOS-only in this release; it is not supported on ${Platform.OS}.`);
15
+ }
16
+ return NitroModules.createHybridObject('OnramperNitro');
17
+ }
18
+ //# sourceMappingURL=OnramperNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","NitroModules","createOnramperNative","OS","Error","createHybridObject"],"sourceRoot":"../../src","sources":["OnramperNative.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,YAAY,QAAQ,4BAA4B;AAGzD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAA,EAAkB;EACpD;EACA;EACA,IAAIF,QAAQ,CAACG,EAAE,KAAK,KAAK,EAAE;IACzB,MAAM,IAAIC,KAAK,CAAC,6EAA6EJ,QAAQ,CAACG,EAAE,GAAG,CAAC;EAC9G;EACA,OAAOF,YAAY,CAACI,kBAAkB,CAAgB,eAAe,CAAC;AACxE","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ export class OnramperError extends Error {
4
+ constructor(payload) {
5
+ super(payload.message);
6
+ this.name = 'OnramperError';
7
+ this.code = payload.code;
8
+ this.info = payload.info;
9
+ }
10
+ static from(value) {
11
+ if (value instanceof OnramperError) return value;
12
+ 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
+ const v = value;
18
+ return new OnramperError({
19
+ code: v.code ?? 'unrecoverable',
20
+ message: v.message ?? 'Unknown error',
21
+ info: v.info
22
+ });
23
+ }
24
+ return new OnramperError({
25
+ code: 'unrecoverable',
26
+ message: String(value)
27
+ });
28
+ }
29
+ }
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["events.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ {
2
+ "uiViewClassName": "OnramperCheckoutButton",
3
+ "supportsRawText": false,
4
+ "bubblingEventTypes": {},
5
+ "directEventTypes": {},
6
+ "validAttributes": {
7
+ "intentHandle": true,
8
+ "hybridRef": true
9
+ }
10
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ // Public API re-exports.
4
+
5
+ export { OnramperClient } from "./OnramperClient.js";
6
+ export { OnramperCheckoutButtonView } from "./OnramperCheckoutButtonView.js";
7
+ export { OnramperError } from "./errors.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OnramperClient","OnramperCheckoutButtonView","OnramperError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;;AAEA,SAASA,cAAc,QAAQ,qBAAkB;AAEjD,SAASC,0BAA0B,QAAQ,iCAA8B;AAEzE,SAASC,aAAa,QAAQ,aAAU","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=OnramperCheckoutButton.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/OnramperCheckoutButton.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=OnramperNitro.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/OnramperNitro.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}