@maplibre/maplibre-react-native 11.0.0-beta.19 → 11.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/org/maplibre/reactnative/MLRNPackage.kt +13 -0
- package/android/src/main/java/org/maplibre/reactnative/modules/MLRNLogModule.kt +2 -0
- package/android/src/main/java/org/maplibre/reactnative/modules/MLRNNetworkModule.kt +0 -42
- package/android/src/main/java/org/maplibre/reactnative/modules/MLRNTransformRequestModule.kt +144 -0
- package/android/src/main/java/org/maplibre/reactnative/modules/TransformRequestInterceptor.kt +184 -0
- package/ios/modules/logging/MLRNLogging.h +4 -0
- package/ios/modules/logging/MLRNLogging.m +8 -0
- package/ios/modules/network/MLRNNetworkModule.mm +0 -10
- package/ios/modules/transform-request/MLRNTransformRequest.h +38 -0
- package/ios/modules/transform-request/MLRNTransformRequest.m +413 -0
- package/ios/modules/transform-request/MLRNTransformRequestModule.h +9 -0
- package/ios/modules/transform-request/MLRNTransformRequestModule.mm +72 -0
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/modules/network/NativeNetworkModule.js.map +1 -1
- package/lib/commonjs/modules/network/NetworkManager.js +1 -39
- package/lib/commonjs/modules/network/NetworkManager.js.map +1 -1
- package/lib/commonjs/modules/transform-request/NativeTransformRequestModule.js +9 -0
- package/lib/commonjs/modules/transform-request/NativeTransformRequestModule.js.map +1 -0
- package/lib/commonjs/modules/transform-request/TransformRequestManager.js +223 -0
- package/lib/commonjs/modules/transform-request/TransformRequestManager.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/network/NativeNetworkModule.js.map +1 -1
- package/lib/module/modules/network/NetworkManager.js +1 -39
- package/lib/module/modules/network/NetworkManager.js.map +1 -1
- package/lib/module/modules/transform-request/NativeTransformRequestModule.js +5 -0
- package/lib/module/modules/transform-request/NativeTransformRequestModule.js.map +1 -0
- package/lib/module/modules/transform-request/TransformRequestManager.js +220 -0
- package/lib/module/modules/transform-request/TransformRequestManager.js.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/modules/network/NativeNetworkModule.d.ts +0 -2
- package/lib/typescript/commonjs/modules/network/NativeNetworkModule.d.ts.map +1 -1
- package/lib/typescript/commonjs/modules/network/NetworkManager.d.ts +1 -33
- package/lib/typescript/commonjs/modules/network/NetworkManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/modules/transform-request/NativeTransformRequestModule.d.ts +15 -0
- package/lib/typescript/commonjs/modules/transform-request/NativeTransformRequestModule.d.ts.map +1 -0
- package/lib/typescript/commonjs/modules/transform-request/TransformRequestManager.d.ts +201 -0
- package/lib/typescript/commonjs/modules/transform-request/TransformRequestManager.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/modules/network/NativeNetworkModule.d.ts +0 -2
- package/lib/typescript/module/modules/network/NativeNetworkModule.d.ts.map +1 -1
- package/lib/typescript/module/modules/network/NetworkManager.d.ts +1 -33
- package/lib/typescript/module/modules/network/NetworkManager.d.ts.map +1 -1
- package/lib/typescript/module/modules/transform-request/NativeTransformRequestModule.d.ts +15 -0
- package/lib/typescript/module/modules/transform-request/NativeTransformRequestModule.d.ts.map +1 -0
- package/lib/typescript/module/modules/transform-request/TransformRequestManager.d.ts +201 -0
- package/lib/typescript/module/modules/transform-request/TransformRequestManager.d.ts.map +1 -0
- package/package.json +1 -12
- package/src/index.ts +8 -0
- package/src/modules/network/NativeNetworkModule.ts +0 -4
- package/src/modules/network/NetworkManager.ts +1 -47
- package/src/modules/transform-request/NativeTransformRequestModule.ts +41 -0
- package/src/modules/transform-request/TransformRequestManager.ts +292 -0
- package/android/src/main/java/org/maplibre/reactnative/http/RequestHeadersInterceptor.kt +0 -65
- package/ios/modules/network/MLRNNetworkHTTPHeaders.h +0 -14
- package/ios/modules/network/MLRNNetworkHTTPHeaders.m +0 -97
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
#import "MLRNTransformRequest.h"
|
|
2
|
+
#import <MapLibre/MLNNetworkConfiguration.h>
|
|
3
|
+
#import <MapLibre/MapLibre.h>
|
|
4
|
+
|
|
5
|
+
static NSString *MLRNTRMatchDescription(NSRegularExpression *_Nullable match) {
|
|
6
|
+
return match != nil ? [NSString stringWithFormat:@" (match='%@')", match.pattern] : @"";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// MARK: TransformConfig
|
|
10
|
+
|
|
11
|
+
@interface TransformConfig : NSObject
|
|
12
|
+
@property (nonatomic, copy) NSString *id;
|
|
13
|
+
@property (nonatomic, strong, nullable) NSRegularExpression *match;
|
|
14
|
+
|
|
15
|
+
- (instancetype)initWithId:(nonnull NSString *)id match:(nullable NSString *)match;
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
@implementation TransformConfig
|
|
19
|
+
|
|
20
|
+
- (instancetype)initWithId:(nonnull NSString *)id match:(nullable NSString *)match {
|
|
21
|
+
if (self = [super init]) {
|
|
22
|
+
_id = id;
|
|
23
|
+
|
|
24
|
+
if (match != nil) {
|
|
25
|
+
NSError *error = nil;
|
|
26
|
+
_match = [NSRegularExpression regularExpressionWithPattern:match options:0 error:&error];
|
|
27
|
+
if (error != nil) {
|
|
28
|
+
@throw [NSException
|
|
29
|
+
exceptionWithName:NSInvalidArgumentException
|
|
30
|
+
reason:[NSString stringWithFormat:@"[MLRNTransformRequest] Invalid match "
|
|
31
|
+
@"regex pattern '%@': %@",
|
|
32
|
+
match, error.localizedDescription]
|
|
33
|
+
userInfo:nil];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return self;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@end
|
|
42
|
+
|
|
43
|
+
// MARK: UrlTransformConfig
|
|
44
|
+
|
|
45
|
+
@interface UrlTransformConfig : TransformConfig
|
|
46
|
+
@property (nonatomic, strong) NSRegularExpression *find;
|
|
47
|
+
@property (nonatomic, strong) NSString *replace;
|
|
48
|
+
|
|
49
|
+
- (instancetype)initWithId:(nonnull NSString *)id
|
|
50
|
+
match:(nullable NSString *)match
|
|
51
|
+
find:(nonnull NSString *)find
|
|
52
|
+
replace:(nonnull NSString *)replace;
|
|
53
|
+
@end
|
|
54
|
+
|
|
55
|
+
@implementation UrlTransformConfig
|
|
56
|
+
|
|
57
|
+
- (instancetype)initWithId:(nonnull NSString *)id
|
|
58
|
+
match:(nullable NSString *)match
|
|
59
|
+
find:(nonnull NSString *)find
|
|
60
|
+
replace:(nonnull NSString *)replace {
|
|
61
|
+
if (self = [super initWithId:id match:match]) {
|
|
62
|
+
NSError *error = nil;
|
|
63
|
+
_find = [NSRegularExpression regularExpressionWithPattern:find options:0 error:&error];
|
|
64
|
+
if (error != nil || _find == nil) {
|
|
65
|
+
@throw [NSException
|
|
66
|
+
exceptionWithName:NSInvalidArgumentException
|
|
67
|
+
reason:[NSString stringWithFormat:@"[MLRNTransformRequest] addUrlTransform "
|
|
68
|
+
@"'%@': invalid find regex '%@': %@",
|
|
69
|
+
id, find, error.localizedDescription]
|
|
70
|
+
userInfo:nil];
|
|
71
|
+
}
|
|
72
|
+
_replace = replace;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return self;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@end
|
|
79
|
+
|
|
80
|
+
// MARK: UrlSearchParamConfig
|
|
81
|
+
|
|
82
|
+
@interface UrlSearchParamConfig : TransformConfig
|
|
83
|
+
@property (nonatomic, strong) NSString *name;
|
|
84
|
+
@property (nonatomic, strong) NSString *value;
|
|
85
|
+
|
|
86
|
+
- (instancetype)initWithId:(nonnull NSString *)transformId
|
|
87
|
+
match:(nullable NSString *)match
|
|
88
|
+
name:(nonnull NSString *)name
|
|
89
|
+
value:(nonnull NSString *)value;
|
|
90
|
+
@end
|
|
91
|
+
|
|
92
|
+
@implementation UrlSearchParamConfig
|
|
93
|
+
|
|
94
|
+
- (instancetype)initWithId:(nonnull NSString *)id
|
|
95
|
+
match:(nullable NSString *)match
|
|
96
|
+
name:(nonnull NSString *)name
|
|
97
|
+
value:(nonnull NSString *)value {
|
|
98
|
+
if (self = [super initWithId:id match:match]) {
|
|
99
|
+
_name = name;
|
|
100
|
+
_value = value;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return self;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@end
|
|
107
|
+
|
|
108
|
+
// MARK: HeaderConfig
|
|
109
|
+
|
|
110
|
+
@interface HeaderConfig : TransformConfig
|
|
111
|
+
@property (nonatomic, strong) NSString *name;
|
|
112
|
+
@property (nonatomic, strong) NSString *value;
|
|
113
|
+
|
|
114
|
+
- (instancetype)initWithId:(nonnull NSString *)transformId
|
|
115
|
+
match:(nullable NSString *)match
|
|
116
|
+
name:(nonnull NSString *)name
|
|
117
|
+
value:(nonnull NSString *)value;
|
|
118
|
+
@end
|
|
119
|
+
|
|
120
|
+
@implementation HeaderConfig
|
|
121
|
+
|
|
122
|
+
- (instancetype)initWithId:(nonnull NSString *)transformId
|
|
123
|
+
match:(nullable NSString *)match
|
|
124
|
+
name:(nonnull NSString *)name
|
|
125
|
+
value:(nonnull NSString *)value {
|
|
126
|
+
if (self = [super initWithId:transformId match:match]) {
|
|
127
|
+
_name = name;
|
|
128
|
+
_value = value;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return self;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@end
|
|
135
|
+
|
|
136
|
+
// MARK: MLRNTransformRequest
|
|
137
|
+
|
|
138
|
+
@implementation MLRNTransformRequest {
|
|
139
|
+
NSMutableArray<UrlTransformConfig *> *urlTransforms;
|
|
140
|
+
NSMutableArray<UrlSearchParamConfig *> *urlSearchParams;
|
|
141
|
+
NSMutableArray<HeaderConfig *> *headers;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
- (instancetype)init {
|
|
145
|
+
if (self = [super init]) {
|
|
146
|
+
urlTransforms = [[NSMutableArray alloc] init];
|
|
147
|
+
urlSearchParams = [[NSMutableArray alloc] init];
|
|
148
|
+
headers = [[NSMutableArray alloc] init];
|
|
149
|
+
[[MLNNetworkConfiguration sharedManager] setDelegate:self];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return self;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
+ (MLRNTransformRequest *)sharedInstance {
|
|
156
|
+
static MLRNTransformRequest *transformRequest;
|
|
157
|
+
static dispatch_once_t onceToken;
|
|
158
|
+
|
|
159
|
+
dispatch_once(&onceToken, ^{
|
|
160
|
+
transformRequest = [[self alloc] init];
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
return transformRequest;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// MARK: Logging
|
|
167
|
+
|
|
168
|
+
- (void)debugLog:(NSString *)message {
|
|
169
|
+
#ifdef DEBUG
|
|
170
|
+
NSLog(@"[TransformRequest] %@", message);
|
|
171
|
+
#endif
|
|
172
|
+
if (self.logCallback) {
|
|
173
|
+
self.logCallback(@"debug", @"TransformRequest", message);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
- (void)errorLog:(NSString *)message {
|
|
178
|
+
NSLog(@"[TransformRequest] ERROR: %@", message);
|
|
179
|
+
if (self.logCallback) {
|
|
180
|
+
self.logCallback(@"error", @"TransformRequest", message);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// MARK: URL Transforms
|
|
185
|
+
|
|
186
|
+
- (void)addUrlTransform:(NSString *)transformId
|
|
187
|
+
match:(nullable NSString *)match
|
|
188
|
+
find:(NSString *)find
|
|
189
|
+
replace:(NSString *)replace {
|
|
190
|
+
UrlTransformConfig *config = [[UrlTransformConfig alloc] initWithId:transformId
|
|
191
|
+
match:match
|
|
192
|
+
find:find
|
|
193
|
+
replace:replace];
|
|
194
|
+
|
|
195
|
+
for (UrlTransformConfig *existing in urlTransforms) {
|
|
196
|
+
if ([existing.id isEqualToString:transformId]) {
|
|
197
|
+
NSUInteger idx = [urlTransforms indexOfObject:existing];
|
|
198
|
+
[urlTransforms replaceObjectAtIndex:idx withObject:config];
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
[urlTransforms addObject:config];
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
- (void)removeUrlTransform:(NSString *)transformId {
|
|
207
|
+
NSUInteger idx = [urlTransforms
|
|
208
|
+
indexOfObjectPassingTest:^BOOL(UrlTransformConfig *c, NSUInteger i, BOOL *stop) {
|
|
209
|
+
return [c.id isEqualToString:transformId];
|
|
210
|
+
}];
|
|
211
|
+
if (idx != NSNotFound) {
|
|
212
|
+
[urlTransforms removeObjectAtIndex:idx];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
- (void)clearUrlTransforms {
|
|
217
|
+
[urlTransforms removeAllObjects];
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// MARK: URL Search Params
|
|
221
|
+
|
|
222
|
+
- (void)addUrlSearchParam:(NSString *)transformId
|
|
223
|
+
match:(nullable NSString *)match
|
|
224
|
+
name:(NSString *)name
|
|
225
|
+
value:(NSString *)value {
|
|
226
|
+
UrlSearchParamConfig *config = [[UrlSearchParamConfig alloc] initWithId:transformId
|
|
227
|
+
match:match
|
|
228
|
+
name:name
|
|
229
|
+
value:value];
|
|
230
|
+
|
|
231
|
+
// Update in-place when the id already exists — preserves order
|
|
232
|
+
for (UrlSearchParamConfig *existing in urlSearchParams) {
|
|
233
|
+
if ([existing.id isEqualToString:transformId]) {
|
|
234
|
+
NSUInteger idx = [urlSearchParams indexOfObject:existing];
|
|
235
|
+
[urlSearchParams replaceObjectAtIndex:idx withObject:config];
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
[urlSearchParams addObject:config];
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
- (void)removeUrlSearchParam:(NSString *)transformId {
|
|
244
|
+
NSUInteger idx = [urlSearchParams
|
|
245
|
+
indexOfObjectPassingTest:^BOOL(UrlSearchParamConfig *c, NSUInteger i, BOOL *stop) {
|
|
246
|
+
return [c.id isEqualToString:transformId];
|
|
247
|
+
}];
|
|
248
|
+
if (idx != NSNotFound) {
|
|
249
|
+
[urlSearchParams removeObjectAtIndex:idx];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
- (void)clearUrlSearchParams {
|
|
254
|
+
[urlSearchParams removeAllObjects];
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// MARK: Headers
|
|
258
|
+
|
|
259
|
+
- (void)addHeader:(NSString *)transformId
|
|
260
|
+
match:(nullable NSString *)match
|
|
261
|
+
name:(NSString *)name
|
|
262
|
+
value:(NSString *)value {
|
|
263
|
+
HeaderConfig *config = [[HeaderConfig alloc] initWithId:transformId
|
|
264
|
+
match:match
|
|
265
|
+
name:name
|
|
266
|
+
value:value];
|
|
267
|
+
|
|
268
|
+
for (HeaderConfig *existing in headers) {
|
|
269
|
+
if ([existing.id isEqualToString:transformId]) {
|
|
270
|
+
NSUInteger idx = [headers indexOfObject:existing];
|
|
271
|
+
[headers replaceObjectAtIndex:idx withObject:config];
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
[headers addObject:config];
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
- (void)removeHeader:(NSString *)transformId {
|
|
280
|
+
NSUInteger idx =
|
|
281
|
+
[headers indexOfObjectPassingTest:^BOOL(HeaderConfig *c, NSUInteger i, BOOL *stop) {
|
|
282
|
+
return [c.id isEqualToString:transformId];
|
|
283
|
+
}];
|
|
284
|
+
if (idx != NSNotFound) {
|
|
285
|
+
[headers removeObjectAtIndex:idx];
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
- (void)clearHeaders {
|
|
290
|
+
[headers removeAllObjects];
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// MARK: MLNNetworkConfigurationDelegate
|
|
294
|
+
|
|
295
|
+
- (NSMutableURLRequest *)willSendRequest:(NSMutableURLRequest *)request {
|
|
296
|
+
NSArray<UrlTransformConfig *> *currentTransforms = [urlTransforms copy];
|
|
297
|
+
NSArray<UrlSearchParamConfig *> *currentParams = [urlSearchParams copy];
|
|
298
|
+
NSArray<HeaderConfig *> *currentHeaders = [headers copy];
|
|
299
|
+
|
|
300
|
+
BOOL hasConfig =
|
|
301
|
+
currentTransforms.count > 0 || currentParams.count > 0 || currentHeaders.count > 0;
|
|
302
|
+
|
|
303
|
+
if (hasConfig) {
|
|
304
|
+
[self debugLog:[NSString stringWithFormat:@"Request: %@", request.URL.absoluteString]];
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// 1. URL transforms
|
|
308
|
+
for (UrlTransformConfig *config in currentTransforms) {
|
|
309
|
+
NSString *currentUrl = request.URL.absoluteString;
|
|
310
|
+
|
|
311
|
+
if (config.match != nil) {
|
|
312
|
+
NSRange r = [config.match rangeOfFirstMatchInString:currentUrl
|
|
313
|
+
options:0
|
|
314
|
+
range:NSMakeRange(0, currentUrl.length)];
|
|
315
|
+
if (r.location == NSNotFound) {
|
|
316
|
+
[self debugLog:[NSString stringWithFormat:@" URL Transform [%@]%@: SKIPPED (no match)",
|
|
317
|
+
config.id, MLRNTRMatchDescription(config.match)]];
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
NSString *transformed =
|
|
323
|
+
[config.find stringByReplacingMatchesInString:currentUrl
|
|
324
|
+
options:0
|
|
325
|
+
range:NSMakeRange(0, currentUrl.length)
|
|
326
|
+
withTemplate:config.replace];
|
|
327
|
+
NSURL *newURL = [NSURL URLWithString:transformed];
|
|
328
|
+
if (newURL == nil) {
|
|
329
|
+
[self errorLog:[NSString stringWithFormat:@"URL Transform [%@]%@: produced invalid URL '%@',"
|
|
330
|
+
@" using pre-transform URL",
|
|
331
|
+
config.id, MLRNTRMatchDescription(config.match),
|
|
332
|
+
transformed]];
|
|
333
|
+
} else {
|
|
334
|
+
[self debugLog:[NSString stringWithFormat:@" URL Transform [%@]%@: APPLIED '%@' → '%@'",
|
|
335
|
+
config.id, MLRNTRMatchDescription(config.match),
|
|
336
|
+
currentUrl, transformed]];
|
|
337
|
+
[request setURL:newURL];
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// 2. URL search params
|
|
342
|
+
if (currentParams.count > 0) {
|
|
343
|
+
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:request.URL
|
|
344
|
+
resolvingAgainstBaseURL:NO];
|
|
345
|
+
NSMutableArray<NSURLQueryItem *> *queryItems =
|
|
346
|
+
[NSMutableArray arrayWithArray:urlComponents.queryItems ?: @[]];
|
|
347
|
+
|
|
348
|
+
for (UrlSearchParamConfig *config in currentParams) {
|
|
349
|
+
BOOL shouldApply = YES;
|
|
350
|
+
|
|
351
|
+
if (config.match != nil) {
|
|
352
|
+
NSRange range = [config.match
|
|
353
|
+
rangeOfFirstMatchInString:request.URL.absoluteString
|
|
354
|
+
options:0
|
|
355
|
+
range:NSMakeRange(0, request.URL.absoluteString.length)];
|
|
356
|
+
shouldApply = (range.location != NSNotFound);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (shouldApply) {
|
|
360
|
+
[self debugLog:[NSString stringWithFormat:@" URL Search Param [%@]%@: APPLIED '%@=%@'",
|
|
361
|
+
config.id, MLRNTRMatchDescription(config.match),
|
|
362
|
+
config.name, config.value]];
|
|
363
|
+
|
|
364
|
+
for (NSInteger i = queryItems.count - 1; i >= 0; i--) {
|
|
365
|
+
if ([queryItems[(NSUInteger)i].name isEqualToString:config.name]) {
|
|
366
|
+
[queryItems removeObjectAtIndex:(NSUInteger)i];
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
[queryItems addObject:[NSURLQueryItem queryItemWithName:config.name value:config.value]];
|
|
371
|
+
} else {
|
|
372
|
+
[self debugLog:[NSString stringWithFormat:@" URL Search Param [%@]%@: SKIPPED (no match)",
|
|
373
|
+
config.id, MLRNTRMatchDescription(config.match)]];
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
urlComponents.queryItems = queryItems;
|
|
378
|
+
if (urlComponents.URL != nil) {
|
|
379
|
+
[request setURL:urlComponents.URL];
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// 3. Headers
|
|
384
|
+
for (HeaderConfig *config in currentHeaders) {
|
|
385
|
+
BOOL shouldApply = YES;
|
|
386
|
+
|
|
387
|
+
if (config.match != nil) {
|
|
388
|
+
NSRange range = [config.match
|
|
389
|
+
rangeOfFirstMatchInString:request.URL.absoluteString
|
|
390
|
+
options:0
|
|
391
|
+
range:NSMakeRange(0, request.URL.absoluteString.length)];
|
|
392
|
+
shouldApply = (range.location != NSNotFound);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
if (shouldApply) {
|
|
396
|
+
[self debugLog:[NSString stringWithFormat:@" Header [%@]%@: APPLIED '%@: %@'", config.id,
|
|
397
|
+
MLRNTRMatchDescription(config.match), config.name,
|
|
398
|
+
config.value]];
|
|
399
|
+
[request setValue:config.value forHTTPHeaderField:config.name];
|
|
400
|
+
} else {
|
|
401
|
+
[self debugLog:[NSString stringWithFormat:@" Header [%@]%@: SKIPPED (no match)", config.id,
|
|
402
|
+
MLRNTRMatchDescription(config.match)]];
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (hasConfig) {
|
|
407
|
+
[self debugLog:[NSString stringWithFormat:@"Final URL: %@", request.URL.absoluteString]];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return request;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
@end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#import "MLRNTransformRequestModule.h"
|
|
2
|
+
#import "MLRNLogging.h"
|
|
3
|
+
#import "MLRNTransformRequest.h"
|
|
4
|
+
|
|
5
|
+
@implementation MLRNTransformRequestModule
|
|
6
|
+
|
|
7
|
+
+ (NSString *)moduleName {
|
|
8
|
+
return @"MLRNTransformRequestModule";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
12
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
13
|
+
return std::make_shared<facebook::react::NativeTransformRequestModuleSpecJSI>(params);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
- (instancetype)init {
|
|
17
|
+
if (self = [super init]) {
|
|
18
|
+
MLRNLogging *logging = [[MLRNLogging alloc] init];
|
|
19
|
+
[MLRNTransformRequest sharedInstance].logCallback =
|
|
20
|
+
^(NSString *level, NSString *tag, NSString *message) {
|
|
21
|
+
[logging forwardLog:level tag:tag message:message];
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return self;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (void)addUrlTransform:(NSString *)id
|
|
28
|
+
match:(NSString *_Nullable)match
|
|
29
|
+
find:(NSString *)find
|
|
30
|
+
replace:(NSString *)replace {
|
|
31
|
+
[MLRNTransformRequest.sharedInstance addUrlTransform:id match:match find:find replace:replace];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
- (void)removeUrlTransform:(NSString *)id {
|
|
35
|
+
[MLRNTransformRequest.sharedInstance removeUrlTransform:id];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
- (void)clearUrlTransforms {
|
|
39
|
+
[MLRNTransformRequest.sharedInstance clearUrlTransforms];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
- (void)addUrlSearchParam:(NSString *)id
|
|
43
|
+
match:(NSString *_Nullable)match
|
|
44
|
+
name:(NSString *)name
|
|
45
|
+
value:(NSString *)value {
|
|
46
|
+
[MLRNTransformRequest.sharedInstance addUrlSearchParam:id match:match name:name value:value];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
- (void)removeUrlSearchParam:(NSString *)id {
|
|
50
|
+
[MLRNTransformRequest.sharedInstance removeUrlSearchParam:id];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
- (void)clearUrlSearchParams {
|
|
54
|
+
[MLRNTransformRequest.sharedInstance clearUrlSearchParams];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
- (void)addHeader:(NSString *)id
|
|
58
|
+
match:(NSString *_Nullable)match
|
|
59
|
+
name:(NSString *)name
|
|
60
|
+
value:(NSString *)value {
|
|
61
|
+
[MLRNTransformRequest.sharedInstance addHeader:id match:match name:name value:value];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
- (void)removeHeader:(NSString *)id {
|
|
65
|
+
[MLRNTransformRequest.sharedInstance removeHeader:id];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
- (void)clearHeaders {
|
|
69
|
+
[MLRNTransformRequest.sharedInstance clearHeaders];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@end
|
package/lib/commonjs/index.js
CHANGED
|
@@ -111,6 +111,12 @@ Object.defineProperty(exports, "StaticMapImageManager", {
|
|
|
111
111
|
return _StaticMapManager.StaticMapImageManager;
|
|
112
112
|
}
|
|
113
113
|
});
|
|
114
|
+
Object.defineProperty(exports, "TransformRequestManager", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get: function () {
|
|
117
|
+
return _TransformRequestManager.TransformRequestManager;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
114
120
|
Object.defineProperty(exports, "UserLocation", {
|
|
115
121
|
enumerable: true,
|
|
116
122
|
get: function () {
|
|
@@ -156,5 +162,6 @@ var _NetworkManager = require("./modules/network/NetworkManager.js");
|
|
|
156
162
|
var _OfflineManager = require("./modules/offline/OfflineManager.js");
|
|
157
163
|
var _OfflinePack = require("./modules/offline/OfflinePack.js");
|
|
158
164
|
var _StaticMapManager = require("./modules/static-map/StaticMapManager.js");
|
|
165
|
+
var _TransformRequestManager = require("./modules/transform-request/TransformRequestManager.js");
|
|
159
166
|
var _Animated = require("./utils/animated/Animated.js");
|
|
160
167
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Camera","require","_Map","_ViewAnnotation","_LayerAnnotation","_Callout","_UserLocation","_NativeUserLocation","_useCurrentPosition","_ImageSource","_GeoJSONSource","_RasterSource","_VectorSource","_Layer","_Images","_Marker","_LocationManager","_LogManager","_NetworkManager","_OfflineManager","_OfflinePack","_StaticMapManager","_Animated"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_Camera","require","_Map","_ViewAnnotation","_LayerAnnotation","_Callout","_UserLocation","_NativeUserLocation","_useCurrentPosition","_ImageSource","_GeoJSONSource","_RasterSource","_VectorSource","_Layer","_Images","_Marker","_LocationManager","_LogManager","_NetworkManager","_OfflineManager","_OfflinePack","_StaticMapManager","_TransformRequestManager","_Animated"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAiBA,IAAAC,IAAA,GAAAD,OAAA;AAQA,IAAAE,eAAA,GAAAF,OAAA;AAQA,IAAAG,gBAAA,GAAAH,OAAA;AAKA,IAAAI,QAAA,GAAAJ,OAAA;AAKA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AAEA,IAAAQ,YAAA,GAAAR,OAAA;AAKA,IAAAS,cAAA,GAAAT,OAAA;AAMA,IAAAU,aAAA,GAAAV,OAAA;AAKA,IAAAW,aAAA,GAAAX,OAAA;AAMA,IAAAY,MAAA,GAAAZ,OAAA;AA+CA,IAAAa,OAAA,GAAAb,OAAA;AAOA,IAAAc,OAAA,GAAAd,OAAA;AAOA,IAAAe,gBAAA,GAAAf,OAAA;AAKA,IAAAgB,WAAA,GAAAhB,OAAA;AAEA,IAAAiB,eAAA,GAAAjB,OAAA;AAEA,IAAAkB,eAAA,GAAAlB,OAAA;AAQA,IAAAmB,YAAA,GAAAnB,OAAA;AAKA,IAAAoB,iBAAA,GAAApB,OAAA;AAQA,IAAAqB,wBAAA,GAAArB,OAAA;AA8BA,IAAAsB,SAAA,GAAAtB,OAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/network/NativeNetworkModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/network/NativeNetworkModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMpCC,gCAAmB,CAACC,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
|
|
@@ -7,47 +7,9 @@ exports.NetworkManager = void 0;
|
|
|
7
7
|
var _NativeNetworkModule = _interopRequireDefault(require("./NativeNetworkModule.js"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
/**
|
|
10
|
-
* NetworkManager provides methods for managing
|
|
11
|
-
* This includes adding custom headers to tile requests and controlling network connectivity.
|
|
10
|
+
* NetworkManager provides methods for managing and controlling network connectivity.
|
|
12
11
|
*/
|
|
13
12
|
class NetworkManager {
|
|
14
|
-
/**
|
|
15
|
-
* Adds a custom HTTP header that will be sent with all map tile requests.
|
|
16
|
-
* This is useful for adding authentication tokens or other custom headers
|
|
17
|
-
* required by your tile server.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* // Add header to all requests
|
|
21
|
-
* NetworkManager.addRequestHeader("Authorization", "Bearer token123");
|
|
22
|
-
*
|
|
23
|
-
* // Add header only to requests matching a regex pattern (string)
|
|
24
|
-
* NetworkManager.addRequestHeader("X-API-Key", "key123", "https:\\/\\/api\\.example\\.com\\/tiles\\/");
|
|
25
|
-
*
|
|
26
|
-
* // Add header only to requests matching a regex pattern (RegExp)
|
|
27
|
-
* NetworkManager.addRequestHeader("X-API-Key", "key123", /https:\/\/api\.example\.com\/tiles\//);
|
|
28
|
-
*
|
|
29
|
-
* @param name The name of the header (e.g., "Authorization")
|
|
30
|
-
* @param value The value of the header (e.g., "Bearer token123")
|
|
31
|
-
* @param match Optional regex pattern to match against network URLs. If provided, the header will only be added to requests whose URLs match this pattern. Can be a RegExp object or a regex string.
|
|
32
|
-
*/
|
|
33
|
-
static addRequestHeader(name, value, match) {
|
|
34
|
-
_NativeNetworkModule.default.addRequestHeader(name, value, (match instanceof RegExp ? match.source : match) || null);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Removes a previously added custom HTTP header.
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```ts
|
|
42
|
-
* NetworkManager.removeRequestHeader("Authorization");
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* @param headerName The name of the header to remove
|
|
46
|
-
*/
|
|
47
|
-
static removeRequestHeader(headerName) {
|
|
48
|
-
_NativeNetworkModule.default.removeRequestHeader(headerName);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
13
|
/**
|
|
52
14
|
* Android only: Sets the connectivity state of the map. When set to false, the map will
|
|
53
15
|
* not make any network requests and will only use cached tiles. This is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_NativeNetworkModule","_interopRequireDefault","require","e","__esModule","default","NetworkManager","
|
|
1
|
+
{"version":3,"names":["_NativeNetworkModule","_interopRequireDefault","require","e","__esModule","default","NetworkManager","setConnected","connected","NativeNetworkModule","exports"],"sourceRoot":"../../../../src","sources":["modules/network/NetworkManager.ts"],"mappings":";;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwD,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExD;AACA;AACA;AACA,MAAMG,cAAc,CAAC;EACnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,YAAYA,CAACC,SAAkB,EAAQ;IAC5CC,4BAAmB,CAACF,YAAY,CAACC,SAAS,CAAC;EAC7C;AACF;AAACE,OAAA,CAAAJ,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing("MLRNTransformRequestModule");
|
|
9
|
+
//# sourceMappingURL=NativeTransformRequestModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../../src","sources":["modules/transform-request/NativeTransformRequestModule.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAqCpCC,gCAAmB,CAACC,YAAY,CAC7C,4BACF,CAAC","ignoreList":[]}
|