@synonymdev/react-native-pubky 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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"}