@synonymdev/react-native-pubky 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +34 -11
  2. package/android/build.gradle +3 -2
  3. package/android/src/main/java/com/pubky/PubkyModule.kt +32 -18
  4. package/android/src/main/java/uniffi/{mobile/mobile.kt → pubkymobile/pubkymobile.kt} +77 -77
  5. package/android/src/main/jniLibs/arm64-v8a/{libmobile.so → libpubkymobile.so} +0 -0
  6. package/android/src/main/jniLibs/armeabi-v7a/libpubkymobile.so +0 -0
  7. package/android/src/main/jniLibs/x86/{libmobile.so → libpubkymobile.so} +0 -0
  8. package/android/src/main/jniLibs/x86_64/{libmobile.so → libpubkymobile.so} +0 -0
  9. package/ios/Frameworks/{Mobile.xcframework → PubkyMobile.xcframework}/Info.plist +8 -8
  10. package/ios/Frameworks/{Mobile.xcframework → PubkyMobile.xcframework}/ios-arm64/Headers/mobileFFI.h +0 -6
  11. package/ios/Frameworks/{Mobile.xcframework → PubkyMobile.xcframework}/ios-arm64/Headers/module.modulemap +2 -2
  12. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64/Headers/pubkymobileFFI.h +193 -0
  13. package/ios/Frameworks/{Mobile.xcframework → PubkyMobile.xcframework}/ios-arm64/libmobile.a +0 -0
  14. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64/libpubkymobile.a +0 -0
  15. package/ios/Frameworks/{Mobile.xcframework → PubkyMobile.xcframework}/ios-arm64-simulator/Headers/mobileFFI.h +0 -6
  16. package/ios/Frameworks/{Mobile.xcframework → PubkyMobile.xcframework}/ios-arm64-simulator/Headers/module.modulemap +2 -2
  17. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64-simulator/Headers/pubkymobileFFI.h +193 -0
  18. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64-simulator/libmobile.a +0 -0
  19. package/ios/Frameworks/{Mobile.xcframework/ios-arm64-simulator/libmobile.a → PubkyMobile.xcframework/ios-arm64-simulator/libpubkymobile.a} +0 -0
  20. package/ios/Pubky.mm +3 -0
  21. package/ios/Pubky.swift +22 -11
  22. package/ios/{mobile.swift → pubkymobile.swift} +15 -14
  23. package/lib/commonjs/index.js +13 -0
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/module/index.js +12 -0
  26. package/lib/module/index.js.map +1 -1
  27. package/lib/typescript/commonjs/src/index.d.ts +11 -0
  28. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  29. package/lib/typescript/module/src/index.d.ts +11 -0
  30. package/lib/typescript/module/src/index.d.ts.map +1 -1
  31. package/package.json +10 -8
  32. package/react-native-pubky.podspec +2 -2
  33. package/src/index.tsx +26 -0
  34. package/android/src/main/java/com/pubky/pubky.iml +0 -11
  35. package/android/src/main/jniLibs/armeabi-v7a/libmobile.so +0 -0
@@ -0,0 +1,193 @@
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
+
4
+ #pragma once
5
+
6
+ #include <stdbool.h>
7
+ #include <stddef.h>
8
+ #include <stdint.h>
9
+
10
+ // The following structs are used to implement the lowest level
11
+ // of the FFI, and thus useful to multiple uniffied crates.
12
+ // We ensure they are declared exactly once, with a header guard, UNIFFI_SHARED_H.
13
+ #ifdef UNIFFI_SHARED_H
14
+ // We also try to prevent mixing versions of shared uniffi header structs.
15
+ // If you add anything to the #else block, you must increment the version suffix in UNIFFI_SHARED_HEADER_V4
16
+ #ifndef UNIFFI_SHARED_HEADER_V4
17
+ #error Combining helper code from multiple versions of uniffi is not supported
18
+ #endif // ndef UNIFFI_SHARED_HEADER_V4
19
+ #else
20
+ #define UNIFFI_SHARED_H
21
+ #define UNIFFI_SHARED_HEADER_V4
22
+ // ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️
23
+ // ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️
24
+
25
+ typedef struct RustBuffer
26
+ {
27
+ int32_t capacity;
28
+ int32_t len;
29
+ uint8_t *_Nullable data;
30
+ } RustBuffer;
31
+
32
+ typedef int32_t (*ForeignCallback)(uint64_t, int32_t, const uint8_t *_Nonnull, int32_t, RustBuffer *_Nonnull);
33
+
34
+ // Task defined in Rust that Swift executes
35
+ typedef void (*UniFfiRustTaskCallback)(const void * _Nullable, int8_t);
36
+
37
+ // Callback to execute Rust tasks using a Swift Task
38
+ //
39
+ // Args:
40
+ // executor: ForeignExecutor lowered into a size_t value
41
+ // delay: Delay in MS
42
+ // task: UniFfiRustTaskCallback to call
43
+ // task_data: data to pass the task callback
44
+ typedef int8_t (*UniFfiForeignExecutorCallback)(size_t, uint32_t, UniFfiRustTaskCallback _Nullable, const void * _Nullable);
45
+
46
+ typedef struct ForeignBytes
47
+ {
48
+ int32_t len;
49
+ const uint8_t *_Nullable data;
50
+ } ForeignBytes;
51
+
52
+ // Error definitions
53
+ typedef struct RustCallStatus {
54
+ int8_t code;
55
+ RustBuffer errorBuf;
56
+ } RustCallStatus;
57
+
58
+ // ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️
59
+ // ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️
60
+ #endif // def UNIFFI_SHARED_H
61
+
62
+ // Continuation callback for UniFFI Futures
63
+ typedef void (*UniFfiRustFutureContinuation)(void * _Nonnull, int8_t);
64
+
65
+ // Scaffolding functions
66
+ void* _Nonnull uniffi_pubkymobile_fn_func_auth(RustBuffer url, RustBuffer secret_key
67
+ );
68
+ RustBuffer uniffi_pubkymobile_fn_func_parse_auth_url(RustBuffer url, RustCallStatus *_Nonnull out_status
69
+ );
70
+ RustBuffer ffi_pubkymobile_rustbuffer_alloc(int32_t size, RustCallStatus *_Nonnull out_status
71
+ );
72
+ RustBuffer ffi_pubkymobile_rustbuffer_from_bytes(ForeignBytes bytes, RustCallStatus *_Nonnull out_status
73
+ );
74
+ void ffi_pubkymobile_rustbuffer_free(RustBuffer buf, RustCallStatus *_Nonnull out_status
75
+ );
76
+ RustBuffer ffi_pubkymobile_rustbuffer_reserve(RustBuffer buf, int32_t additional, RustCallStatus *_Nonnull out_status
77
+ );
78
+ void ffi_pubkymobile_rust_future_continuation_callback_set(UniFfiRustFutureContinuation _Nonnull callback
79
+ );
80
+ void ffi_pubkymobile_rust_future_poll_u8(void* _Nonnull handle, void* _Nonnull uniffi_callback
81
+ );
82
+ void ffi_pubkymobile_rust_future_cancel_u8(void* _Nonnull handle
83
+ );
84
+ void ffi_pubkymobile_rust_future_free_u8(void* _Nonnull handle
85
+ );
86
+ uint8_t ffi_pubkymobile_rust_future_complete_u8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
87
+ );
88
+ void ffi_pubkymobile_rust_future_poll_i8(void* _Nonnull handle, void* _Nonnull uniffi_callback
89
+ );
90
+ void ffi_pubkymobile_rust_future_cancel_i8(void* _Nonnull handle
91
+ );
92
+ void ffi_pubkymobile_rust_future_free_i8(void* _Nonnull handle
93
+ );
94
+ int8_t ffi_pubkymobile_rust_future_complete_i8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
95
+ );
96
+ void ffi_pubkymobile_rust_future_poll_u16(void* _Nonnull handle, void* _Nonnull uniffi_callback
97
+ );
98
+ void ffi_pubkymobile_rust_future_cancel_u16(void* _Nonnull handle
99
+ );
100
+ void ffi_pubkymobile_rust_future_free_u16(void* _Nonnull handle
101
+ );
102
+ uint16_t ffi_pubkymobile_rust_future_complete_u16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
103
+ );
104
+ void ffi_pubkymobile_rust_future_poll_i16(void* _Nonnull handle, void* _Nonnull uniffi_callback
105
+ );
106
+ void ffi_pubkymobile_rust_future_cancel_i16(void* _Nonnull handle
107
+ );
108
+ void ffi_pubkymobile_rust_future_free_i16(void* _Nonnull handle
109
+ );
110
+ int16_t ffi_pubkymobile_rust_future_complete_i16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
111
+ );
112
+ void ffi_pubkymobile_rust_future_poll_u32(void* _Nonnull handle, void* _Nonnull uniffi_callback
113
+ );
114
+ void ffi_pubkymobile_rust_future_cancel_u32(void* _Nonnull handle
115
+ );
116
+ void ffi_pubkymobile_rust_future_free_u32(void* _Nonnull handle
117
+ );
118
+ uint32_t ffi_pubkymobile_rust_future_complete_u32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
119
+ );
120
+ void ffi_pubkymobile_rust_future_poll_i32(void* _Nonnull handle, void* _Nonnull uniffi_callback
121
+ );
122
+ void ffi_pubkymobile_rust_future_cancel_i32(void* _Nonnull handle
123
+ );
124
+ void ffi_pubkymobile_rust_future_free_i32(void* _Nonnull handle
125
+ );
126
+ int32_t ffi_pubkymobile_rust_future_complete_i32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
127
+ );
128
+ void ffi_pubkymobile_rust_future_poll_u64(void* _Nonnull handle, void* _Nonnull uniffi_callback
129
+ );
130
+ void ffi_pubkymobile_rust_future_cancel_u64(void* _Nonnull handle
131
+ );
132
+ void ffi_pubkymobile_rust_future_free_u64(void* _Nonnull handle
133
+ );
134
+ uint64_t ffi_pubkymobile_rust_future_complete_u64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
135
+ );
136
+ void ffi_pubkymobile_rust_future_poll_i64(void* _Nonnull handle, void* _Nonnull uniffi_callback
137
+ );
138
+ void ffi_pubkymobile_rust_future_cancel_i64(void* _Nonnull handle
139
+ );
140
+ void ffi_pubkymobile_rust_future_free_i64(void* _Nonnull handle
141
+ );
142
+ int64_t ffi_pubkymobile_rust_future_complete_i64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
143
+ );
144
+ void ffi_pubkymobile_rust_future_poll_f32(void* _Nonnull handle, void* _Nonnull uniffi_callback
145
+ );
146
+ void ffi_pubkymobile_rust_future_cancel_f32(void* _Nonnull handle
147
+ );
148
+ void ffi_pubkymobile_rust_future_free_f32(void* _Nonnull handle
149
+ );
150
+ float ffi_pubkymobile_rust_future_complete_f32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
151
+ );
152
+ void ffi_pubkymobile_rust_future_poll_f64(void* _Nonnull handle, void* _Nonnull uniffi_callback
153
+ );
154
+ void ffi_pubkymobile_rust_future_cancel_f64(void* _Nonnull handle
155
+ );
156
+ void ffi_pubkymobile_rust_future_free_f64(void* _Nonnull handle
157
+ );
158
+ double ffi_pubkymobile_rust_future_complete_f64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
159
+ );
160
+ void ffi_pubkymobile_rust_future_poll_pointer(void* _Nonnull handle, void* _Nonnull uniffi_callback
161
+ );
162
+ void ffi_pubkymobile_rust_future_cancel_pointer(void* _Nonnull handle
163
+ );
164
+ void ffi_pubkymobile_rust_future_free_pointer(void* _Nonnull handle
165
+ );
166
+ void*_Nonnull ffi_pubkymobile_rust_future_complete_pointer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
167
+ );
168
+ void ffi_pubkymobile_rust_future_poll_rust_buffer(void* _Nonnull handle, void* _Nonnull uniffi_callback
169
+ );
170
+ void ffi_pubkymobile_rust_future_cancel_rust_buffer(void* _Nonnull handle
171
+ );
172
+ void ffi_pubkymobile_rust_future_free_rust_buffer(void* _Nonnull handle
173
+ );
174
+ RustBuffer ffi_pubkymobile_rust_future_complete_rust_buffer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
175
+ );
176
+ void ffi_pubkymobile_rust_future_poll_void(void* _Nonnull handle, void* _Nonnull uniffi_callback
177
+ );
178
+ void ffi_pubkymobile_rust_future_cancel_void(void* _Nonnull handle
179
+ );
180
+ void ffi_pubkymobile_rust_future_free_void(void* _Nonnull handle
181
+ );
182
+ void ffi_pubkymobile_rust_future_complete_void(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
183
+ );
184
+ uint16_t uniffi_pubkymobile_checksum_func_auth(void
185
+
186
+ );
187
+ uint16_t uniffi_pubkymobile_checksum_func_parse_auth_url(void
188
+
189
+ );
190
+ uint32_t ffi_pubkymobile_uniffi_contract_version(void
191
+
192
+ );
193
+
@@ -64,9 +64,6 @@ typedef void (*UniFfiRustFutureContinuation)(void * _Nonnull, int8_t);
64
64
 
65
65
  // Scaffolding functions
66
66
  void* _Nonnull uniffi_mobile_fn_func_auth(RustBuffer url, RustBuffer secret_key
67
- );
68
- RustBuffer uniffi_mobile_fn_func_myexample(RustCallStatus *_Nonnull out_status
69
-
70
67
  );
71
68
  RustBuffer ffi_mobile_rustbuffer_alloc(int32_t size, RustCallStatus *_Nonnull out_status
72
69
  );
@@ -184,9 +181,6 @@ void ffi_mobile_rust_future_complete_void(void* _Nonnull handle, RustCallStatus
184
181
  );
185
182
  uint16_t uniffi_mobile_checksum_func_auth(void
186
183
 
187
- );
188
- uint16_t uniffi_mobile_checksum_func_myexample(void
189
-
190
184
  );
191
185
  uint32_t ffi_mobile_uniffi_contract_version(void
192
186
 
@@ -1,6 +1,6 @@
1
1
  // This file was autogenerated by some hot garbage in the `uniffi` crate.
2
2
  // Trust me, you don't want to mess with it!
3
- module mobileFFI {
4
- header "mobileFFI.h"
3
+ module pubkymobileFFI {
4
+ header "pubkymobileFFI.h"
5
5
  export *
6
6
  }
@@ -0,0 +1,193 @@
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
+
4
+ #pragma once
5
+
6
+ #include <stdbool.h>
7
+ #include <stddef.h>
8
+ #include <stdint.h>
9
+
10
+ // The following structs are used to implement the lowest level
11
+ // of the FFI, and thus useful to multiple uniffied crates.
12
+ // We ensure they are declared exactly once, with a header guard, UNIFFI_SHARED_H.
13
+ #ifdef UNIFFI_SHARED_H
14
+ // We also try to prevent mixing versions of shared uniffi header structs.
15
+ // If you add anything to the #else block, you must increment the version suffix in UNIFFI_SHARED_HEADER_V4
16
+ #ifndef UNIFFI_SHARED_HEADER_V4
17
+ #error Combining helper code from multiple versions of uniffi is not supported
18
+ #endif // ndef UNIFFI_SHARED_HEADER_V4
19
+ #else
20
+ #define UNIFFI_SHARED_H
21
+ #define UNIFFI_SHARED_HEADER_V4
22
+ // ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️
23
+ // ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️
24
+
25
+ typedef struct RustBuffer
26
+ {
27
+ int32_t capacity;
28
+ int32_t len;
29
+ uint8_t *_Nullable data;
30
+ } RustBuffer;
31
+
32
+ typedef int32_t (*ForeignCallback)(uint64_t, int32_t, const uint8_t *_Nonnull, int32_t, RustBuffer *_Nonnull);
33
+
34
+ // Task defined in Rust that Swift executes
35
+ typedef void (*UniFfiRustTaskCallback)(const void * _Nullable, int8_t);
36
+
37
+ // Callback to execute Rust tasks using a Swift Task
38
+ //
39
+ // Args:
40
+ // executor: ForeignExecutor lowered into a size_t value
41
+ // delay: Delay in MS
42
+ // task: UniFfiRustTaskCallback to call
43
+ // task_data: data to pass the task callback
44
+ typedef int8_t (*UniFfiForeignExecutorCallback)(size_t, uint32_t, UniFfiRustTaskCallback _Nullable, const void * _Nullable);
45
+
46
+ typedef struct ForeignBytes
47
+ {
48
+ int32_t len;
49
+ const uint8_t *_Nullable data;
50
+ } ForeignBytes;
51
+
52
+ // Error definitions
53
+ typedef struct RustCallStatus {
54
+ int8_t code;
55
+ RustBuffer errorBuf;
56
+ } RustCallStatus;
57
+
58
+ // ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️
59
+ // ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️
60
+ #endif // def UNIFFI_SHARED_H
61
+
62
+ // Continuation callback for UniFFI Futures
63
+ typedef void (*UniFfiRustFutureContinuation)(void * _Nonnull, int8_t);
64
+
65
+ // Scaffolding functions
66
+ void* _Nonnull uniffi_pubkymobile_fn_func_auth(RustBuffer url, RustBuffer secret_key
67
+ );
68
+ RustBuffer uniffi_pubkymobile_fn_func_parse_auth_url(RustBuffer url, RustCallStatus *_Nonnull out_status
69
+ );
70
+ RustBuffer ffi_pubkymobile_rustbuffer_alloc(int32_t size, RustCallStatus *_Nonnull out_status
71
+ );
72
+ RustBuffer ffi_pubkymobile_rustbuffer_from_bytes(ForeignBytes bytes, RustCallStatus *_Nonnull out_status
73
+ );
74
+ void ffi_pubkymobile_rustbuffer_free(RustBuffer buf, RustCallStatus *_Nonnull out_status
75
+ );
76
+ RustBuffer ffi_pubkymobile_rustbuffer_reserve(RustBuffer buf, int32_t additional, RustCallStatus *_Nonnull out_status
77
+ );
78
+ void ffi_pubkymobile_rust_future_continuation_callback_set(UniFfiRustFutureContinuation _Nonnull callback
79
+ );
80
+ void ffi_pubkymobile_rust_future_poll_u8(void* _Nonnull handle, void* _Nonnull uniffi_callback
81
+ );
82
+ void ffi_pubkymobile_rust_future_cancel_u8(void* _Nonnull handle
83
+ );
84
+ void ffi_pubkymobile_rust_future_free_u8(void* _Nonnull handle
85
+ );
86
+ uint8_t ffi_pubkymobile_rust_future_complete_u8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
87
+ );
88
+ void ffi_pubkymobile_rust_future_poll_i8(void* _Nonnull handle, void* _Nonnull uniffi_callback
89
+ );
90
+ void ffi_pubkymobile_rust_future_cancel_i8(void* _Nonnull handle
91
+ );
92
+ void ffi_pubkymobile_rust_future_free_i8(void* _Nonnull handle
93
+ );
94
+ int8_t ffi_pubkymobile_rust_future_complete_i8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
95
+ );
96
+ void ffi_pubkymobile_rust_future_poll_u16(void* _Nonnull handle, void* _Nonnull uniffi_callback
97
+ );
98
+ void ffi_pubkymobile_rust_future_cancel_u16(void* _Nonnull handle
99
+ );
100
+ void ffi_pubkymobile_rust_future_free_u16(void* _Nonnull handle
101
+ );
102
+ uint16_t ffi_pubkymobile_rust_future_complete_u16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
103
+ );
104
+ void ffi_pubkymobile_rust_future_poll_i16(void* _Nonnull handle, void* _Nonnull uniffi_callback
105
+ );
106
+ void ffi_pubkymobile_rust_future_cancel_i16(void* _Nonnull handle
107
+ );
108
+ void ffi_pubkymobile_rust_future_free_i16(void* _Nonnull handle
109
+ );
110
+ int16_t ffi_pubkymobile_rust_future_complete_i16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
111
+ );
112
+ void ffi_pubkymobile_rust_future_poll_u32(void* _Nonnull handle, void* _Nonnull uniffi_callback
113
+ );
114
+ void ffi_pubkymobile_rust_future_cancel_u32(void* _Nonnull handle
115
+ );
116
+ void ffi_pubkymobile_rust_future_free_u32(void* _Nonnull handle
117
+ );
118
+ uint32_t ffi_pubkymobile_rust_future_complete_u32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
119
+ );
120
+ void ffi_pubkymobile_rust_future_poll_i32(void* _Nonnull handle, void* _Nonnull uniffi_callback
121
+ );
122
+ void ffi_pubkymobile_rust_future_cancel_i32(void* _Nonnull handle
123
+ );
124
+ void ffi_pubkymobile_rust_future_free_i32(void* _Nonnull handle
125
+ );
126
+ int32_t ffi_pubkymobile_rust_future_complete_i32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
127
+ );
128
+ void ffi_pubkymobile_rust_future_poll_u64(void* _Nonnull handle, void* _Nonnull uniffi_callback
129
+ );
130
+ void ffi_pubkymobile_rust_future_cancel_u64(void* _Nonnull handle
131
+ );
132
+ void ffi_pubkymobile_rust_future_free_u64(void* _Nonnull handle
133
+ );
134
+ uint64_t ffi_pubkymobile_rust_future_complete_u64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
135
+ );
136
+ void ffi_pubkymobile_rust_future_poll_i64(void* _Nonnull handle, void* _Nonnull uniffi_callback
137
+ );
138
+ void ffi_pubkymobile_rust_future_cancel_i64(void* _Nonnull handle
139
+ );
140
+ void ffi_pubkymobile_rust_future_free_i64(void* _Nonnull handle
141
+ );
142
+ int64_t ffi_pubkymobile_rust_future_complete_i64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
143
+ );
144
+ void ffi_pubkymobile_rust_future_poll_f32(void* _Nonnull handle, void* _Nonnull uniffi_callback
145
+ );
146
+ void ffi_pubkymobile_rust_future_cancel_f32(void* _Nonnull handle
147
+ );
148
+ void ffi_pubkymobile_rust_future_free_f32(void* _Nonnull handle
149
+ );
150
+ float ffi_pubkymobile_rust_future_complete_f32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
151
+ );
152
+ void ffi_pubkymobile_rust_future_poll_f64(void* _Nonnull handle, void* _Nonnull uniffi_callback
153
+ );
154
+ void ffi_pubkymobile_rust_future_cancel_f64(void* _Nonnull handle
155
+ );
156
+ void ffi_pubkymobile_rust_future_free_f64(void* _Nonnull handle
157
+ );
158
+ double ffi_pubkymobile_rust_future_complete_f64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
159
+ );
160
+ void ffi_pubkymobile_rust_future_poll_pointer(void* _Nonnull handle, void* _Nonnull uniffi_callback
161
+ );
162
+ void ffi_pubkymobile_rust_future_cancel_pointer(void* _Nonnull handle
163
+ );
164
+ void ffi_pubkymobile_rust_future_free_pointer(void* _Nonnull handle
165
+ );
166
+ void*_Nonnull ffi_pubkymobile_rust_future_complete_pointer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
167
+ );
168
+ void ffi_pubkymobile_rust_future_poll_rust_buffer(void* _Nonnull handle, void* _Nonnull uniffi_callback
169
+ );
170
+ void ffi_pubkymobile_rust_future_cancel_rust_buffer(void* _Nonnull handle
171
+ );
172
+ void ffi_pubkymobile_rust_future_free_rust_buffer(void* _Nonnull handle
173
+ );
174
+ RustBuffer ffi_pubkymobile_rust_future_complete_rust_buffer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
175
+ );
176
+ void ffi_pubkymobile_rust_future_poll_void(void* _Nonnull handle, void* _Nonnull uniffi_callback
177
+ );
178
+ void ffi_pubkymobile_rust_future_cancel_void(void* _Nonnull handle
179
+ );
180
+ void ffi_pubkymobile_rust_future_free_void(void* _Nonnull handle
181
+ );
182
+ void ffi_pubkymobile_rust_future_complete_void(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
183
+ );
184
+ uint16_t uniffi_pubkymobile_checksum_func_auth(void
185
+
186
+ );
187
+ uint16_t uniffi_pubkymobile_checksum_func_parse_auth_url(void
188
+
189
+ );
190
+ uint32_t ffi_pubkymobile_uniffi_contract_version(void
191
+
192
+ );
193
+
package/ios/Pubky.mm CHANGED
@@ -7,6 +7,9 @@ RCT_EXTERN_METHOD(auth:(NSString *)url
7
7
  withResolver:(RCTPromiseResolveBlock)resolve
8
8
  withRejecter:(RCTPromiseRejectBlock)reject)
9
9
 
10
+ RCT_EXTERN_METHOD(parseAuthUrl:(NSString *)url
11
+ withResolver:(RCTPromiseResolveBlock)resolve
12
+ withRejecter:(RCTPromiseRejectBlock)reject)
10
13
 
11
14
  + (BOOL)requiresMainQueueSetup
12
15
  {
package/ios/Pubky.swift CHANGED
@@ -2,15 +2,26 @@ import Foundation
2
2
 
3
3
  @objc(Pubky)
4
4
  class Pubky: NSObject {
5
- @objc(auth:secretKey:withResolver:withRejecter:)
6
- func auth(_ url: String, secretKey: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
7
- Task {
8
- do {
9
- let result = try await react_native_pubky.auth(url: url, secretKey: secretKey)
10
- resolve(result)
11
- } catch {
12
- reject("auth Error", "Failed to auth", error)
13
- }
14
- }
15
- }
5
+ @objc(auth:secretKey:withResolver:withRejecter:)
6
+ func auth(_ url: String, secretKey: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
7
+ Task {
8
+ do {
9
+ let result = try await react_native_pubky.auth(url: url, secretKey: secretKey)
10
+ resolve(result)
11
+ } catch {
12
+ reject("auth Error", "Failed to auth", error)
13
+ }
14
+ }
15
+ }
16
+ @objc(parseAuthUrl:withResolver:withRejecter:)
17
+ func parseAuthUrl(_ url: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
18
+ Task {
19
+ do {
20
+ let result = react_native_pubky.parseAuthUrl(url: url)
21
+ resolve(result)
22
+ } catch {
23
+ reject("parseAuthUrl Error", "Failed to parse auth url", error)
24
+ }
25
+ }
26
+ }
16
27
  }
@@ -5,8 +5,8 @@ import Foundation
5
5
  // Depending on the consumer's build setup, the low-level FFI code
6
6
  // might be in a separate module, or it might be compiled inline into
7
7
  // this module. This is a bit of light hackery to work with both.
8
- #if canImport(mobileFFI)
9
- import mobileFFI
8
+ #if canImport(pubkymobileFFI)
9
+ import pubkymobileFFI
10
10
  #endif
11
11
 
12
12
  fileprivate extension RustBuffer {
@@ -19,13 +19,13 @@ fileprivate extension RustBuffer {
19
19
  }
20
20
 
21
21
  static func from(_ ptr: UnsafeBufferPointer<UInt8>) -> RustBuffer {
22
- try! rustCall { ffi_mobile_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
22
+ try! rustCall { ffi_pubkymobile_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
23
23
  }
24
24
 
25
25
  // Frees the buffer in place.
26
26
  // The buffer must not be used after this is called.
27
27
  func deallocate() {
28
- try! rustCall { ffi_mobile_rustbuffer_free(self, $0) }
28
+ try! rustCall { ffi_pubkymobile_rustbuffer_free(self, $0) }
29
29
  }
30
30
  }
31
31
 
@@ -416,20 +416,20 @@ fileprivate class ContinuationHolder {
416
416
  }
417
417
 
418
418
  fileprivate func uniffiInitContinuationCallback() {
419
- ffi_mobile_rust_future_continuation_callback_set(uniffiFutureContinuationCallback)
419
+ ffi_pubkymobile_rust_future_continuation_callback_set(uniffiFutureContinuationCallback)
420
420
  }
421
421
 
422
422
  public func auth(url: String, secretKey: String) async -> [String] {
423
423
  return try! await uniffiRustCallAsync(
424
424
  rustFutureFunc: {
425
- uniffi_mobile_fn_func_auth(
425
+ uniffi_pubkymobile_fn_func_auth(
426
426
  FfiConverterString.lower(url),
427
427
  FfiConverterString.lower(secretKey)
428
428
  )
429
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,
430
+ pollFunc: ffi_pubkymobile_rust_future_poll_rust_buffer,
431
+ completeFunc: ffi_pubkymobile_rust_future_complete_rust_buffer,
432
+ freeFunc: ffi_pubkymobile_rust_future_free_rust_buffer,
433
433
  liftFunc: FfiConverterSequenceString.lift,
434
434
  errorHandler: nil
435
435
 
@@ -438,10 +438,11 @@ public func auth(url: String, secretKey: String) async -> [String] {
438
438
 
439
439
 
440
440
 
441
- public func myexample() -> [String] {
441
+ public func parseAuthUrl(url: String) -> [String] {
442
442
  return try! FfiConverterSequenceString.lift(
443
443
  try! rustCall() {
444
- uniffi_mobile_fn_func_myexample($0)
444
+ uniffi_pubkymobile_fn_func_parse_auth_url(
445
+ FfiConverterString.lower(url),$0)
445
446
  }
446
447
  )
447
448
  }
@@ -457,14 +458,14 @@ private var initializationResult: InitializationResult {
457
458
  // Get the bindings contract version from our ComponentInterface
458
459
  let bindings_contract_version = 24
459
460
  // Get the scaffolding contract version by calling the into the dylib
460
- let scaffolding_contract_version = ffi_mobile_uniffi_contract_version()
461
+ let scaffolding_contract_version = ffi_pubkymobile_uniffi_contract_version()
461
462
  if bindings_contract_version != scaffolding_contract_version {
462
463
  return InitializationResult.contractVersionMismatch
463
464
  }
464
- if (uniffi_mobile_checksum_func_auth() != 55720) {
465
+ if (uniffi_pubkymobile_checksum_func_auth() != 46918) {
465
466
  return InitializationResult.apiChecksumMismatch
466
467
  }
467
- if (uniffi_mobile_checksum_func_myexample() != 65225) {
468
+ if (uniffi_pubkymobile_checksum_func_parse_auth_url() != 29088) {
468
469
  return InitializationResult.apiChecksumMismatch
469
470
  }
470
471
 
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.auth = auth;
7
+ exports.parseAuthUrl = parseAuthUrl;
7
8
  var _reactNative = require("react-native");
8
9
  var _result = require("@synonymdev/result");
9
10
  const LINKING_ERROR = `The package 'react-native-pubky' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
@@ -22,4 +23,16 @@ async function auth(url, secretKey) {
22
23
  }
23
24
  return (0, _result.ok)(res[1]);
24
25
  }
26
+ async function parseAuthUrl(url) {
27
+ try {
28
+ const res = await Pubky.parseAuthUrl(url);
29
+ if (res[0] === 'error') {
30
+ return (0, _result.err)(res[1]);
31
+ }
32
+ const parsed = JSON.parse(res[1]);
33
+ return (0, _result.ok)(parsed);
34
+ } catch (e) {
35
+ return (0, _result.err)(JSON.stringify(e));
36
+ }
37
+ }
25
38
  //# sourceMappingURL=index.js.map
@@ -1 +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":[]}
1
+ {"version":3,"names":["_reactNative","require","_result","LINKING_ERROR","Platform","select","ios","default","Pubky","NativeModules","Proxy","get","Error","auth","url","secretKey","res","err","ok","parseAuthUrl","parsed","JSON","parse","e","stringify"],"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;AAaO,eAAeG,YAAYA,CAChCL,GAAW,EACwB;EACnC,IAAI;IACF,MAAME,GAAG,GAAG,MAAMR,KAAK,CAACW,YAAY,CAACL,GAAG,CAAC;IACzC,IAAIE,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;MACtB,OAAO,IAAAC,WAAG,EAACD,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB;IACA,MAAMI,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACN,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,IAAAE,UAAE,EAACE,MAAM,CAAC;EACnB,CAAC,CAAC,OAAOG,CAAC,EAAE;IACV,OAAO,IAAAN,WAAG,EAACI,IAAI,CAACG,SAAS,CAACD,CAAC,CAAC,CAAC;EAC/B;AACF","ignoreList":[]}
@@ -18,4 +18,16 @@ export async function auth(url, secretKey) {
18
18
  }
19
19
  return ok(res[1]);
20
20
  }
21
+ export async function parseAuthUrl(url) {
22
+ try {
23
+ const res = await Pubky.parseAuthUrl(url);
24
+ if (res[0] === 'error') {
25
+ return err(res[1]);
26
+ }
27
+ const parsed = JSON.parse(res[1]);
28
+ return ok(parsed);
29
+ } catch (e) {
30
+ return err(JSON.stringify(e));
31
+ }
32
+ }
21
33
  //# sourceMappingURL=index.js.map
@@ -1 +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":[]}
1
+ {"version":3,"names":["NativeModules","Platform","ok","err","LINKING_ERROR","select","ios","default","Pubky","Proxy","get","Error","auth","url","secretKey","res","parseAuthUrl","parsed","JSON","parse","e","stringify"],"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;AAaA,OAAO,eAAeC,YAAYA,CAChCH,GAAW,EACwB;EACnC,IAAI;IACF,MAAME,GAAG,GAAG,MAAMP,KAAK,CAACQ,YAAY,CAACH,GAAG,CAAC;IACzC,IAAIE,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;MACtB,OAAOZ,GAAG,CAACY,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB;IACA,MAAME,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,OAAOb,EAAE,CAACe,MAAM,CAAC;EACnB,CAAC,CAAC,OAAOG,CAAC,EAAE;IACV,OAAOjB,GAAG,CAACe,IAAI,CAACG,SAAS,CAACD,CAAC,CAAC,CAAC;EAC/B;AACF","ignoreList":[]}
@@ -1,3 +1,14 @@
1
1
  import { type Result } from '@synonymdev/result';
2
2
  export declare function auth(url: string, secretKey: string): Promise<Result<string[]>>;
3
+ type Capability = {
4
+ path: string;
5
+ permission: string;
6
+ };
7
+ type PubkyAuthDetails = {
8
+ relay: string;
9
+ capabilities: Capability[];
10
+ secret: string;
11
+ };
12
+ export declare function parseAuthUrl(url: string): Promise<Result<PubkyAuthDetails>>;
13
+ export {};
3
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAWnC"}
@@ -1,3 +1,14 @@
1
1
  import { type Result } from '@synonymdev/result';
2
2
  export declare function auth(url: string, secretKey: string): Promise<Result<string[]>>;
3
+ type Capability = {
4
+ path: string;
5
+ permission: string;
6
+ };
7
+ type PubkyAuthDetails = {
8
+ relay: string;
9
+ capabilities: Capability[];
10
+ secret: string;
11
+ };
12
+ export declare function parseAuthUrl(url: string): Promise<Result<PubkyAuthDetails>>;
13
+ export {};
3
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAWnC"}