@synonymdev/react-native-pubky 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +57 -0
  3. package/android/build.gradle +101 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +3 -0
  6. package/android/src/main/AndroidManifestNew.xml +2 -0
  7. package/android/src/main/java/com/pubky/PubkyModule.kt +43 -0
  8. package/android/src/main/java/com/pubky/PubkyPackage.kt +17 -0
  9. package/android/src/main/java/com/pubky/pubky.iml +11 -0
  10. package/android/src/main/java/uniffi/mobile/mobile.kt +688 -0
  11. package/android/src/main/jniLibs/arm64-v8a/libmobile.so +0 -0
  12. package/android/src/main/jniLibs/armeabi-v7a/libmobile.so +0 -0
  13. package/android/src/main/jniLibs/x86/libmobile.so +0 -0
  14. package/android/src/main/jniLibs/x86_64/libmobile.so +0 -0
  15. package/ios/Frameworks/Mobile.xcframework/Info.plist +47 -0
  16. package/ios/Frameworks/Mobile.xcframework/ios-arm64/Headers/mobileFFI.h +194 -0
  17. package/ios/Frameworks/Mobile.xcframework/ios-arm64/Headers/module.modulemap +6 -0
  18. package/ios/Frameworks/Mobile.xcframework/ios-arm64/libmobile.a +0 -0
  19. package/ios/Frameworks/Mobile.xcframework/ios-arm64-simulator/Headers/mobileFFI.h +194 -0
  20. package/ios/Frameworks/Mobile.xcframework/ios-arm64-simulator/Headers/module.modulemap +6 -0
  21. package/ios/Frameworks/Mobile.xcframework/ios-arm64-simulator/libmobile.a +0 -0
  22. package/ios/Pubky-Bridging-Header.h +2 -0
  23. package/ios/Pubky.mm +16 -0
  24. package/ios/Pubky.swift +16 -0
  25. package/ios/mobile.swift +484 -0
  26. package/lib/commonjs/index.js +25 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/module/index.js +21 -0
  29. package/lib/module/index.js.map +1 -0
  30. package/lib/typescript/commonjs/package.json +1 -0
  31. package/lib/typescript/commonjs/src/index.d.ts +3 -0
  32. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  33. package/lib/typescript/module/package.json +1 -0
  34. package/lib/typescript/module/src/index.d.ts +3 -0
  35. package/lib/typescript/module/src/index.d.ts.map +1 -0
  36. package/package.json +198 -0
  37. package/react-native-pubky.podspec +50 -0
  38. package/src/index.tsx +30 -0
@@ -0,0 +1,484 @@
1
+ // This file was autogenerated by some hot garbage in the `uniffi` crate.
2
+ // Trust me, you don't want to mess with it!
3
+ import Foundation
4
+
5
+ // Depending on the consumer's build setup, the low-level FFI code
6
+ // might be in a separate module, or it might be compiled inline into
7
+ // this module. This is a bit of light hackery to work with both.
8
+ #if canImport(mobileFFI)
9
+ import mobileFFI
10
+ #endif
11
+
12
+ fileprivate extension RustBuffer {
13
+ // Allocate a new buffer, copying the contents of a `UInt8` array.
14
+ init(bytes: [UInt8]) {
15
+ let rbuf = bytes.withUnsafeBufferPointer { ptr in
16
+ RustBuffer.from(ptr)
17
+ }
18
+ self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data)
19
+ }
20
+
21
+ static func from(_ ptr: UnsafeBufferPointer<UInt8>) -> RustBuffer {
22
+ try! rustCall { ffi_mobile_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
23
+ }
24
+
25
+ // Frees the buffer in place.
26
+ // The buffer must not be used after this is called.
27
+ func deallocate() {
28
+ try! rustCall { ffi_mobile_rustbuffer_free(self, $0) }
29
+ }
30
+ }
31
+
32
+ fileprivate extension ForeignBytes {
33
+ init(bufferPointer: UnsafeBufferPointer<UInt8>) {
34
+ self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress)
35
+ }
36
+ }
37
+
38
+ // For every type used in the interface, we provide helper methods for conveniently
39
+ // lifting and lowering that type from C-compatible data, and for reading and writing
40
+ // values of that type in a buffer.
41
+
42
+ // Helper classes/extensions that don't change.
43
+ // Someday, this will be in a library of its own.
44
+
45
+ fileprivate extension Data {
46
+ init(rustBuffer: RustBuffer) {
47
+ // TODO: This copies the buffer. Can we read directly from a
48
+ // Rust buffer?
49
+ self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len))
50
+ }
51
+ }
52
+
53
+ // Define reader functionality. Normally this would be defined in a class or
54
+ // struct, but we use standalone functions instead in order to make external
55
+ // types work.
56
+ //
57
+ // With external types, one swift source file needs to be able to call the read
58
+ // method on another source file's FfiConverter, but then what visibility
59
+ // should Reader have?
60
+ // - If Reader is fileprivate, then this means the read() must also
61
+ // be fileprivate, which doesn't work with external types.
62
+ // - If Reader is internal/public, we'll get compile errors since both source
63
+ // files will try define the same type.
64
+ //
65
+ // Instead, the read() method and these helper functions input a tuple of data
66
+
67
+ fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) {
68
+ (data: data, offset: 0)
69
+ }
70
+
71
+ // Reads an integer at the current offset, in big-endian order, and advances
72
+ // the offset on success. Throws if reading the integer would move the
73
+ // offset past the end of the buffer.
74
+ fileprivate func readInt<T: FixedWidthInteger>(_ reader: inout (data: Data, offset: Data.Index)) throws -> T {
75
+ let range = reader.offset..<reader.offset + MemoryLayout<T>.size
76
+ guard reader.data.count >= range.upperBound else {
77
+ throw UniffiInternalError.bufferOverflow
78
+ }
79
+ if T.self == UInt8.self {
80
+ let value = reader.data[reader.offset]
81
+ reader.offset += 1
82
+ return value as! T
83
+ }
84
+ var value: T = 0
85
+ let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)})
86
+ reader.offset = range.upperBound
87
+ return value.bigEndian
88
+ }
89
+
90
+ // Reads an arbitrary number of bytes, to be used to read
91
+ // raw bytes, this is useful when lifting strings
92
+ fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array<UInt8> {
93
+ let range = reader.offset..<(reader.offset+count)
94
+ guard reader.data.count >= range.upperBound else {
95
+ throw UniffiInternalError.bufferOverflow
96
+ }
97
+ var value = [UInt8](repeating: 0, count: count)
98
+ value.withUnsafeMutableBufferPointer({ buffer in
99
+ reader.data.copyBytes(to: buffer, from: range)
100
+ })
101
+ reader.offset = range.upperBound
102
+ return value
103
+ }
104
+
105
+ // Reads a float at the current offset.
106
+ fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float {
107
+ return Float(bitPattern: try readInt(&reader))
108
+ }
109
+
110
+ // Reads a float at the current offset.
111
+ fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double {
112
+ return Double(bitPattern: try readInt(&reader))
113
+ }
114
+
115
+ // Indicates if the offset has reached the end of the buffer.
116
+ fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool {
117
+ return reader.offset < reader.data.count
118
+ }
119
+
120
+ // Define writer functionality. Normally this would be defined in a class or
121
+ // struct, but we use standalone functions instead in order to make external
122
+ // types work. See the above discussion on Readers for details.
123
+
124
+ fileprivate func createWriter() -> [UInt8] {
125
+ return []
126
+ }
127
+
128
+ fileprivate func writeBytes<S>(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 {
129
+ writer.append(contentsOf: byteArr)
130
+ }
131
+
132
+ // Writes an integer in big-endian order.
133
+ //
134
+ // Warning: make sure what you are trying to write
135
+ // is in the correct type!
136
+ fileprivate func writeInt<T: FixedWidthInteger>(_ writer: inout [UInt8], _ value: T) {
137
+ var value = value.bigEndian
138
+ withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) }
139
+ }
140
+
141
+ fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) {
142
+ writeInt(&writer, value.bitPattern)
143
+ }
144
+
145
+ fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) {
146
+ writeInt(&writer, value.bitPattern)
147
+ }
148
+
149
+ // Protocol for types that transfer other types across the FFI. This is
150
+ // analogous go the Rust trait of the same name.
151
+ fileprivate protocol FfiConverter {
152
+ associatedtype FfiType
153
+ associatedtype SwiftType
154
+
155
+ static func lift(_ value: FfiType) throws -> SwiftType
156
+ static func lower(_ value: SwiftType) -> FfiType
157
+ static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType
158
+ static func write(_ value: SwiftType, into buf: inout [UInt8])
159
+ }
160
+
161
+ // Types conforming to `Primitive` pass themselves directly over the FFI.
162
+ fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { }
163
+
164
+ extension FfiConverterPrimitive {
165
+ public static func lift(_ value: FfiType) throws -> SwiftType {
166
+ return value
167
+ }
168
+
169
+ public static func lower(_ value: SwiftType) -> FfiType {
170
+ return value
171
+ }
172
+ }
173
+
174
+ // Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`.
175
+ // Used for complex types where it's hard to write a custom lift/lower.
176
+ fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {}
177
+
178
+ extension FfiConverterRustBuffer {
179
+ public static func lift(_ buf: RustBuffer) throws -> SwiftType {
180
+ var reader = createReader(data: Data(rustBuffer: buf))
181
+ let value = try read(from: &reader)
182
+ if hasRemaining(reader) {
183
+ throw UniffiInternalError.incompleteData
184
+ }
185
+ buf.deallocate()
186
+ return value
187
+ }
188
+
189
+ public static func lower(_ value: SwiftType) -> RustBuffer {
190
+ var writer = createWriter()
191
+ write(value, into: &writer)
192
+ return RustBuffer(bytes: writer)
193
+ }
194
+ }
195
+ // An error type for FFI errors. These errors occur at the UniFFI level, not
196
+ // the library level.
197
+ fileprivate enum UniffiInternalError: LocalizedError {
198
+ case bufferOverflow
199
+ case incompleteData
200
+ case unexpectedOptionalTag
201
+ case unexpectedEnumCase
202
+ case unexpectedNullPointer
203
+ case unexpectedRustCallStatusCode
204
+ case unexpectedRustCallError
205
+ case unexpectedStaleHandle
206
+ case rustPanic(_ message: String)
207
+
208
+ public var errorDescription: String? {
209
+ switch self {
210
+ case .bufferOverflow: return "Reading the requested value would read past the end of the buffer"
211
+ case .incompleteData: return "The buffer still has data after lifting its containing value"
212
+ case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1"
213
+ case .unexpectedEnumCase: return "Raw enum value doesn't match any cases"
214
+ case .unexpectedNullPointer: return "Raw pointer value was null"
215
+ case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code"
216
+ case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified"
217
+ case .unexpectedStaleHandle: return "The object in the handle map has been dropped already"
218
+ case let .rustPanic(message): return message
219
+ }
220
+ }
221
+ }
222
+
223
+ fileprivate let CALL_SUCCESS: Int8 = 0
224
+ fileprivate let CALL_ERROR: Int8 = 1
225
+ fileprivate let CALL_PANIC: Int8 = 2
226
+ fileprivate let CALL_CANCELLED: Int8 = 3
227
+
228
+ fileprivate extension RustCallStatus {
229
+ init() {
230
+ self.init(
231
+ code: CALL_SUCCESS,
232
+ errorBuf: RustBuffer.init(
233
+ capacity: 0,
234
+ len: 0,
235
+ data: nil
236
+ )
237
+ )
238
+ }
239
+ }
240
+
241
+ private func rustCall<T>(_ callback: (UnsafeMutablePointer<RustCallStatus>) -> T) throws -> T {
242
+ try makeRustCall(callback, errorHandler: nil)
243
+ }
244
+
245
+ private func rustCallWithError<T>(
246
+ _ errorHandler: @escaping (RustBuffer) throws -> Error,
247
+ _ callback: (UnsafeMutablePointer<RustCallStatus>) -> T) throws -> T {
248
+ try makeRustCall(callback, errorHandler: errorHandler)
249
+ }
250
+
251
+ private func makeRustCall<T>(
252
+ _ callback: (UnsafeMutablePointer<RustCallStatus>) -> T,
253
+ errorHandler: ((RustBuffer) throws -> Error)?
254
+ ) throws -> T {
255
+ uniffiEnsureInitialized()
256
+ var callStatus = RustCallStatus.init()
257
+ let returnedVal = callback(&callStatus)
258
+ try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler)
259
+ return returnedVal
260
+ }
261
+
262
+ private func uniffiCheckCallStatus(
263
+ callStatus: RustCallStatus,
264
+ errorHandler: ((RustBuffer) throws -> Error)?
265
+ ) throws {
266
+ switch callStatus.code {
267
+ case CALL_SUCCESS:
268
+ return
269
+
270
+ case CALL_ERROR:
271
+ if let errorHandler = errorHandler {
272
+ throw try errorHandler(callStatus.errorBuf)
273
+ } else {
274
+ callStatus.errorBuf.deallocate()
275
+ throw UniffiInternalError.unexpectedRustCallError
276
+ }
277
+
278
+ case CALL_PANIC:
279
+ // When the rust code sees a panic, it tries to construct a RustBuffer
280
+ // with the message. But if that code panics, then it just sends back
281
+ // an empty buffer.
282
+ if callStatus.errorBuf.len > 0 {
283
+ throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf))
284
+ } else {
285
+ callStatus.errorBuf.deallocate()
286
+ throw UniffiInternalError.rustPanic("Rust panic")
287
+ }
288
+
289
+ case CALL_CANCELLED:
290
+ throw CancellationError()
291
+
292
+ default:
293
+ throw UniffiInternalError.unexpectedRustCallStatusCode
294
+ }
295
+ }
296
+
297
+ // Public interface members begin here.
298
+
299
+
300
+ fileprivate struct FfiConverterString: FfiConverter {
301
+ typealias SwiftType = String
302
+ typealias FfiType = RustBuffer
303
+
304
+ public static func lift(_ value: RustBuffer) throws -> String {
305
+ defer {
306
+ value.deallocate()
307
+ }
308
+ if value.data == nil {
309
+ return String()
310
+ }
311
+ let bytes = UnsafeBufferPointer<UInt8>(start: value.data!, count: Int(value.len))
312
+ return String(bytes: bytes, encoding: String.Encoding.utf8)!
313
+ }
314
+
315
+ public static func lower(_ value: String) -> RustBuffer {
316
+ return value.utf8CString.withUnsafeBufferPointer { ptr in
317
+ // The swift string gives us int8_t, we want uint8_t.
318
+ ptr.withMemoryRebound(to: UInt8.self) { ptr in
319
+ // The swift string gives us a trailing null byte, we don't want it.
320
+ let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1))
321
+ return RustBuffer.from(buf)
322
+ }
323
+ }
324
+ }
325
+
326
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String {
327
+ let len: Int32 = try readInt(&buf)
328
+ return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)!
329
+ }
330
+
331
+ public static func write(_ value: String, into buf: inout [UInt8]) {
332
+ let len = Int32(value.utf8.count)
333
+ writeInt(&buf, len)
334
+ writeBytes(&buf, value.utf8)
335
+ }
336
+ }
337
+
338
+ fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer {
339
+ typealias SwiftType = [String]
340
+
341
+ public static func write(_ value: [String], into buf: inout [UInt8]) {
342
+ let len = Int32(value.count)
343
+ writeInt(&buf, len)
344
+ for item in value {
345
+ FfiConverterString.write(item, into: &buf)
346
+ }
347
+ }
348
+
349
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String] {
350
+ let len: Int32 = try readInt(&buf)
351
+ var seq = [String]()
352
+ seq.reserveCapacity(Int(len))
353
+ for _ in 0 ..< len {
354
+ seq.append(try FfiConverterString.read(from: &buf))
355
+ }
356
+ return seq
357
+ }
358
+ }
359
+ private let UNIFFI_RUST_FUTURE_POLL_READY: Int8 = 0
360
+ private let UNIFFI_RUST_FUTURE_POLL_MAYBE_READY: Int8 = 1
361
+
362
+ fileprivate func uniffiRustCallAsync<F, T>(
363
+ rustFutureFunc: () -> UnsafeMutableRawPointer,
364
+ pollFunc: (UnsafeMutableRawPointer, UnsafeMutableRawPointer) -> (),
365
+ completeFunc: (UnsafeMutableRawPointer, UnsafeMutablePointer<RustCallStatus>) -> F,
366
+ freeFunc: (UnsafeMutableRawPointer) -> (),
367
+ liftFunc: (F) throws -> T,
368
+ errorHandler: ((RustBuffer) throws -> Error)?
369
+ ) async throws -> T {
370
+ // Make sure to call uniffiEnsureInitialized() since future creation doesn't have a
371
+ // RustCallStatus param, so doesn't use makeRustCall()
372
+ uniffiEnsureInitialized()
373
+ let rustFuture = rustFutureFunc()
374
+ defer {
375
+ freeFunc(rustFuture)
376
+ }
377
+ var pollResult: Int8;
378
+ repeat {
379
+ pollResult = await withUnsafeContinuation {
380
+ pollFunc(rustFuture, ContinuationHolder($0).toOpaque())
381
+ }
382
+ } while pollResult != UNIFFI_RUST_FUTURE_POLL_READY
383
+
384
+ return try liftFunc(makeRustCall(
385
+ { completeFunc(rustFuture, $0) },
386
+ errorHandler: errorHandler
387
+ ))
388
+ }
389
+
390
+ // Callback handlers for an async calls. These are invoked by Rust when the future is ready. They
391
+ // lift the return value or error and resume the suspended function.
392
+ fileprivate func uniffiFutureContinuationCallback(ptr: UnsafeMutableRawPointer, pollResult: Int8) {
393
+ ContinuationHolder.fromOpaque(ptr).resume(pollResult)
394
+ }
395
+
396
+ // Wraps UnsafeContinuation in a class so that we can use reference counting when passing it across
397
+ // the FFI
398
+ fileprivate class ContinuationHolder {
399
+ let continuation: UnsafeContinuation<Int8, Never>
400
+
401
+ init(_ continuation: UnsafeContinuation<Int8, Never>) {
402
+ self.continuation = continuation
403
+ }
404
+
405
+ func resume(_ pollResult: Int8) {
406
+ self.continuation.resume(returning: pollResult)
407
+ }
408
+
409
+ func toOpaque() -> UnsafeMutableRawPointer {
410
+ return Unmanaged<ContinuationHolder>.passRetained(self).toOpaque()
411
+ }
412
+
413
+ static func fromOpaque(_ ptr: UnsafeRawPointer) -> ContinuationHolder {
414
+ return Unmanaged<ContinuationHolder>.fromOpaque(ptr).takeRetainedValue()
415
+ }
416
+ }
417
+
418
+ fileprivate func uniffiInitContinuationCallback() {
419
+ ffi_mobile_rust_future_continuation_callback_set(uniffiFutureContinuationCallback)
420
+ }
421
+
422
+ public func auth(url: String, secretKey: String) async -> [String] {
423
+ return try! await uniffiRustCallAsync(
424
+ rustFutureFunc: {
425
+ uniffi_mobile_fn_func_auth(
426
+ FfiConverterString.lower(url),
427
+ FfiConverterString.lower(secretKey)
428
+ )
429
+ },
430
+ pollFunc: ffi_mobile_rust_future_poll_rust_buffer,
431
+ completeFunc: ffi_mobile_rust_future_complete_rust_buffer,
432
+ freeFunc: ffi_mobile_rust_future_free_rust_buffer,
433
+ liftFunc: FfiConverterSequenceString.lift,
434
+ errorHandler: nil
435
+
436
+ )
437
+ }
438
+
439
+
440
+
441
+ public func myexample() -> [String] {
442
+ return try! FfiConverterSequenceString.lift(
443
+ try! rustCall() {
444
+ uniffi_mobile_fn_func_myexample($0)
445
+ }
446
+ )
447
+ }
448
+
449
+ private enum InitializationResult {
450
+ case ok
451
+ case contractVersionMismatch
452
+ case apiChecksumMismatch
453
+ }
454
+ // Use a global variables to perform the versioning checks. Swift ensures that
455
+ // the code inside is only computed once.
456
+ private var initializationResult: InitializationResult {
457
+ // Get the bindings contract version from our ComponentInterface
458
+ let bindings_contract_version = 24
459
+ // Get the scaffolding contract version by calling the into the dylib
460
+ let scaffolding_contract_version = ffi_mobile_uniffi_contract_version()
461
+ if bindings_contract_version != scaffolding_contract_version {
462
+ return InitializationResult.contractVersionMismatch
463
+ }
464
+ if (uniffi_mobile_checksum_func_auth() != 55720) {
465
+ return InitializationResult.apiChecksumMismatch
466
+ }
467
+ if (uniffi_mobile_checksum_func_myexample() != 65225) {
468
+ return InitializationResult.apiChecksumMismatch
469
+ }
470
+
471
+ uniffiInitContinuationCallback()
472
+ return InitializationResult.ok
473
+ }
474
+
475
+ private func uniffiEnsureInitialized() {
476
+ switch initializationResult {
477
+ case .ok:
478
+ break
479
+ case .contractVersionMismatch:
480
+ fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project")
481
+ case .apiChecksumMismatch:
482
+ fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
483
+ }
484
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.auth = auth;
7
+ var _reactNative = require("react-native");
8
+ var _result = require("@synonymdev/result");
9
+ const LINKING_ERROR = `The package 'react-native-pubky' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
10
+ ios: "- You have run 'pod install'\n",
11
+ default: ''
12
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
13
+ const Pubky = _reactNative.NativeModules.Pubky ? _reactNative.NativeModules.Pubky : new Proxy({}, {
14
+ get() {
15
+ throw new Error(LINKING_ERROR);
16
+ }
17
+ });
18
+ async function auth(url, secretKey) {
19
+ const res = await Pubky.auth(url, secretKey);
20
+ if (res[0] === 'error') {
21
+ return (0, _result.err)(res[1]);
22
+ }
23
+ return (0, _result.ok)(res[1]);
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_result","LINKING_ERROR","Platform","select","ios","default","Pubky","NativeModules","Proxy","get","Error","auth","url","secretKey","res","err","ok"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,MAAME,aAAa,GACjB,6EAA6E,GAC7EC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,KAAK,GAAGC,0BAAa,CAACD,KAAK,GAC7BC,0BAAa,CAACD,KAAK,GACnB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEE,eAAeU,IAAIA,CACxBC,GAAW,EACXC,SAAiB,EACU;EAC3B,MAAMC,GAAG,GAAG,MAAMR,KAAK,CAACK,IAAI,CAACC,GAAG,EAAEC,SAAS,CAAC;EAC5C,IAAIC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;IACtB,OAAO,IAAAC,WAAG,EAACD,GAAG,CAAC,CAAC,CAAC,CAAC;EACpB;EACA,OAAO,IAAAE,UAAE,EAACF,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ import { NativeModules, Platform } from 'react-native';
4
+ import { ok, err } from '@synonymdev/result';
5
+ const LINKING_ERROR = `The package 'react-native-pubky' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
6
+ ios: "- You have run 'pod install'\n",
7
+ default: ''
8
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
9
+ const Pubky = NativeModules.Pubky ? NativeModules.Pubky : new Proxy({}, {
10
+ get() {
11
+ throw new Error(LINKING_ERROR);
12
+ }
13
+ });
14
+ export async function auth(url, secretKey) {
15
+ const res = await Pubky.auth(url, secretKey);
16
+ if (res[0] === 'error') {
17
+ return err(res[1]);
18
+ }
19
+ return ok(res[1]);
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","Platform","ok","err","LINKING_ERROR","select","ios","default","Pubky","Proxy","get","Error","auth","url","secretKey","res"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,EAAE,EAAEC,GAAG,QAAqB,oBAAoB;AAEzD,MAAMC,aAAa,GACjB,6EAA6E,GAC7EH,QAAQ,CAACI,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,KAAK,GAAGR,aAAa,CAACQ,KAAK,GAC7BR,aAAa,CAACQ,KAAK,GACnB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,eAAeQ,IAAIA,CACxBC,GAAW,EACXC,SAAiB,EACU;EAC3B,MAAMC,GAAG,GAAG,MAAMP,KAAK,CAACI,IAAI,CAACC,GAAG,EAAEC,SAAS,CAAC;EAC5C,IAAIC,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;IACtB,OAAOZ,GAAG,CAACY,GAAG,CAAC,CAAC,CAAC,CAAC;EACpB;EACA,OAAOb,EAAE,CAACa,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,3 @@
1
+ import { type Result } from '@synonymdev/result';
2
+ export declare function auth(url: string, secretKey: string): Promise<Result<string[]>>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmB1D,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAM3B"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,3 @@
1
+ import { type Result } from '@synonymdev/result';
2
+ export declare function auth(url: string, secretKey: string): Promise<Result<string[]>>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmB1D,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAM3B"}