@webview-bridge/web 1.4.0 → 1.4.2
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/dist/commonjs/index.cjs
CHANGED
|
@@ -58,7 +58,14 @@ var createEvents = () => ({
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
|
-
var createResolver = (
|
|
61
|
+
var createResolver = ({
|
|
62
|
+
emitter: emitter2,
|
|
63
|
+
evaluate,
|
|
64
|
+
eventId,
|
|
65
|
+
failHandler = false,
|
|
66
|
+
methodName,
|
|
67
|
+
onFallback
|
|
68
|
+
}) => {
|
|
62
69
|
return new Promise((resolve, reject) => {
|
|
63
70
|
const unbind = emitter2.on(
|
|
64
71
|
`${methodName}-${eventId}`,
|
|
@@ -66,6 +73,7 @@ var createResolver = (emitter2, methodName, eventId, evaluate, failHandler = fal
|
|
|
66
73
|
unbind();
|
|
67
74
|
if (throwOccurred) {
|
|
68
75
|
if (failHandler instanceof Error) {
|
|
76
|
+
onFallback?.();
|
|
69
77
|
reject(failHandler);
|
|
70
78
|
} else {
|
|
71
79
|
resolve(void 0);
|
|
@@ -214,29 +222,39 @@ var linkBridgeStore = (initialState = {}) => {
|
|
|
214
222
|
};
|
|
215
223
|
|
|
216
224
|
// src/linkBridge.ts
|
|
217
|
-
var createNativeMethod = (
|
|
225
|
+
var createNativeMethod = ({
|
|
226
|
+
methodName,
|
|
227
|
+
throwOnError,
|
|
228
|
+
timeoutMs,
|
|
229
|
+
onFallback
|
|
230
|
+
}) => (...args) => {
|
|
218
231
|
const eventId = createRandomId();
|
|
219
|
-
return Promise.race(
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
232
|
+
return Promise.race(
|
|
233
|
+
[
|
|
234
|
+
createResolver({
|
|
235
|
+
emitter,
|
|
236
|
+
methodName,
|
|
237
|
+
eventId,
|
|
238
|
+
evaluate: () => {
|
|
239
|
+
window.ReactNativeWebView?.postMessage(
|
|
240
|
+
JSON.stringify({
|
|
241
|
+
type: "bridge",
|
|
242
|
+
body: {
|
|
243
|
+
method: methodName,
|
|
244
|
+
eventId,
|
|
245
|
+
args
|
|
246
|
+
}
|
|
247
|
+
})
|
|
248
|
+
);
|
|
249
|
+
},
|
|
250
|
+
onFallback: () => {
|
|
251
|
+
onFallback?.(methodName, args);
|
|
252
|
+
},
|
|
253
|
+
failHandler: throwOnError && new NativeMethodError(methodName)
|
|
254
|
+
}),
|
|
255
|
+
timeoutMs > 0 && timeout(timeoutMs, throwOnError)
|
|
256
|
+
].filter(Boolean)
|
|
257
|
+
);
|
|
240
258
|
};
|
|
241
259
|
var linkBridge = (options = {
|
|
242
260
|
timeout: 2e3,
|
|
@@ -270,11 +288,12 @@ var linkBridge = (options = {
|
|
|
270
288
|
(acc, methodName) => {
|
|
271
289
|
return {
|
|
272
290
|
...acc,
|
|
273
|
-
[methodName]: createNativeMethod(
|
|
291
|
+
[methodName]: createNativeMethod({
|
|
274
292
|
methodName,
|
|
275
293
|
timeoutMs,
|
|
276
|
-
willMethodThrowOnError(methodName)
|
|
277
|
-
|
|
294
|
+
throwOnError: willMethodThrowOnError(methodName),
|
|
295
|
+
onFallback
|
|
296
|
+
})
|
|
278
297
|
};
|
|
279
298
|
},
|
|
280
299
|
{}
|
|
@@ -286,11 +305,12 @@ var linkBridge = (options = {
|
|
|
286
305
|
)) {
|
|
287
306
|
return target2[methodName];
|
|
288
307
|
}
|
|
289
|
-
return createNativeMethod(
|
|
308
|
+
return createNativeMethod({
|
|
290
309
|
methodName,
|
|
291
310
|
timeoutMs,
|
|
292
|
-
willMethodThrowOnError(methodName)
|
|
293
|
-
|
|
311
|
+
throwOnError: willMethodThrowOnError(methodName),
|
|
312
|
+
onFallback
|
|
313
|
+
});
|
|
294
314
|
}
|
|
295
315
|
});
|
|
296
316
|
Object.assign(target, {
|
|
@@ -314,9 +334,11 @@ var linkBridge = (options = {
|
|
|
314
334
|
}
|
|
315
335
|
})
|
|
316
336
|
);
|
|
317
|
-
onFallback?.(methodName);
|
|
318
337
|
if (willMethodThrowOnError(methodName)) {
|
|
319
|
-
return () =>
|
|
338
|
+
return (...args) => {
|
|
339
|
+
onFallback?.(methodName, args);
|
|
340
|
+
Promise.reject(new MethodNotFoundError(methodName));
|
|
341
|
+
};
|
|
320
342
|
} else {
|
|
321
343
|
console.warn(
|
|
322
344
|
`[WebViewBridge] ${methodName} is not defined, using fallback.`
|
package/dist/module/index.mjs
CHANGED
|
@@ -28,7 +28,14 @@ var createEvents = () => ({
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
|
-
var createResolver = (
|
|
31
|
+
var createResolver = ({
|
|
32
|
+
emitter: emitter2,
|
|
33
|
+
evaluate,
|
|
34
|
+
eventId,
|
|
35
|
+
failHandler = false,
|
|
36
|
+
methodName,
|
|
37
|
+
onFallback
|
|
38
|
+
}) => {
|
|
32
39
|
return new Promise((resolve, reject) => {
|
|
33
40
|
const unbind = emitter2.on(
|
|
34
41
|
`${methodName}-${eventId}`,
|
|
@@ -36,6 +43,7 @@ var createResolver = (emitter2, methodName, eventId, evaluate, failHandler = fal
|
|
|
36
43
|
unbind();
|
|
37
44
|
if (throwOccurred) {
|
|
38
45
|
if (failHandler instanceof Error) {
|
|
46
|
+
onFallback?.();
|
|
39
47
|
reject(failHandler);
|
|
40
48
|
} else {
|
|
41
49
|
resolve(void 0);
|
|
@@ -184,29 +192,39 @@ var linkBridgeStore = (initialState = {}) => {
|
|
|
184
192
|
};
|
|
185
193
|
|
|
186
194
|
// src/linkBridge.ts
|
|
187
|
-
var createNativeMethod = (
|
|
195
|
+
var createNativeMethod = ({
|
|
196
|
+
methodName,
|
|
197
|
+
throwOnError,
|
|
198
|
+
timeoutMs,
|
|
199
|
+
onFallback
|
|
200
|
+
}) => (...args) => {
|
|
188
201
|
const eventId = createRandomId();
|
|
189
|
-
return Promise.race(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
202
|
+
return Promise.race(
|
|
203
|
+
[
|
|
204
|
+
createResolver({
|
|
205
|
+
emitter,
|
|
206
|
+
methodName,
|
|
207
|
+
eventId,
|
|
208
|
+
evaluate: () => {
|
|
209
|
+
window.ReactNativeWebView?.postMessage(
|
|
210
|
+
JSON.stringify({
|
|
211
|
+
type: "bridge",
|
|
212
|
+
body: {
|
|
213
|
+
method: methodName,
|
|
214
|
+
eventId,
|
|
215
|
+
args
|
|
216
|
+
}
|
|
217
|
+
})
|
|
218
|
+
);
|
|
219
|
+
},
|
|
220
|
+
onFallback: () => {
|
|
221
|
+
onFallback?.(methodName, args);
|
|
222
|
+
},
|
|
223
|
+
failHandler: throwOnError && new NativeMethodError(methodName)
|
|
224
|
+
}),
|
|
225
|
+
timeoutMs > 0 && timeout(timeoutMs, throwOnError)
|
|
226
|
+
].filter(Boolean)
|
|
227
|
+
);
|
|
210
228
|
};
|
|
211
229
|
var linkBridge = (options = {
|
|
212
230
|
timeout: 2e3,
|
|
@@ -240,11 +258,12 @@ var linkBridge = (options = {
|
|
|
240
258
|
(acc, methodName) => {
|
|
241
259
|
return {
|
|
242
260
|
...acc,
|
|
243
|
-
[methodName]: createNativeMethod(
|
|
261
|
+
[methodName]: createNativeMethod({
|
|
244
262
|
methodName,
|
|
245
263
|
timeoutMs,
|
|
246
|
-
willMethodThrowOnError(methodName)
|
|
247
|
-
|
|
264
|
+
throwOnError: willMethodThrowOnError(methodName),
|
|
265
|
+
onFallback
|
|
266
|
+
})
|
|
248
267
|
};
|
|
249
268
|
},
|
|
250
269
|
{}
|
|
@@ -256,11 +275,12 @@ var linkBridge = (options = {
|
|
|
256
275
|
)) {
|
|
257
276
|
return target2[methodName];
|
|
258
277
|
}
|
|
259
|
-
return createNativeMethod(
|
|
278
|
+
return createNativeMethod({
|
|
260
279
|
methodName,
|
|
261
280
|
timeoutMs,
|
|
262
|
-
willMethodThrowOnError(methodName)
|
|
263
|
-
|
|
281
|
+
throwOnError: willMethodThrowOnError(methodName),
|
|
282
|
+
onFallback
|
|
283
|
+
});
|
|
264
284
|
}
|
|
265
285
|
});
|
|
266
286
|
Object.assign(target, {
|
|
@@ -284,9 +304,11 @@ var linkBridge = (options = {
|
|
|
284
304
|
}
|
|
285
305
|
})
|
|
286
306
|
);
|
|
287
|
-
onFallback?.(methodName);
|
|
288
307
|
if (willMethodThrowOnError(methodName)) {
|
|
289
|
-
return () =>
|
|
308
|
+
return (...args) => {
|
|
309
|
+
onFallback?.(methodName, args);
|
|
310
|
+
Promise.reject(new MethodNotFoundError(methodName));
|
|
311
|
+
};
|
|
290
312
|
} else {
|
|
291
313
|
console.warn(
|
|
292
314
|
`[WebViewBridge] ${methodName} is not defined, using fallback.`
|
|
@@ -3,7 +3,7 @@ import { LinkBridge } from "./types";
|
|
|
3
3
|
export interface LinkBridgeOptions<T extends BridgeStore<T extends Bridge ? T : any>> {
|
|
4
4
|
timeout?: number;
|
|
5
5
|
throwOnError?: boolean | (keyof ExtractStore<T>)[] | string[];
|
|
6
|
-
onFallback?: (methodName: string) => void;
|
|
6
|
+
onFallback?: (methodName: string, args: unknown[]) => void;
|
|
7
7
|
onReady?: (method: LinkBridge<ExcludePrimitive<ExtractStore<T>>, Omit<T, "setState">>) => void;
|
|
8
8
|
}
|
|
9
9
|
export declare const linkBridge: <T extends BridgeStore<T extends Bridge ? T : any>>(options?: LinkBridgeOptions<T>) => LinkBridge<ExcludePrimitive<ExtractStore<T>>, Omit<T, "setState">>;
|
|
@@ -12,5 +12,13 @@ export interface EventEmitter<Events extends EventsMap = DefaultEvents> {
|
|
|
12
12
|
on<K extends keyof Events>(this: this, event: K, cb: Events[K]): () => void;
|
|
13
13
|
}
|
|
14
14
|
export declare const createEvents: <Events extends EventsMap = DefaultEvents>() => EventEmitter<Events>;
|
|
15
|
-
export
|
|
15
|
+
export interface CreateResolverOptions {
|
|
16
|
+
emitter: EventEmitter<DefaultEvents>;
|
|
17
|
+
evaluate: () => void;
|
|
18
|
+
eventId: string;
|
|
19
|
+
failHandler?: Error | false;
|
|
20
|
+
methodName: string;
|
|
21
|
+
onFallback?: () => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const createResolver: ({ emitter, evaluate, eventId, failHandler, methodName, onFallback, }: CreateResolverOptions) => Promise<unknown>;
|
|
16
24
|
export {};
|