@vqh2602/mini-app-sdk 1.0.3 → 1.0.6
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/README.md +6 -0
- package/dist/cli/commands/create.js +3 -3
- package/dist/cli/index.js +1 -1
- package/dist/core/client.d.ts +3 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +13 -4
- package/dist/core/client.js.map +1 -1
- package/dist/core/modules/navigation.d.ts +12 -0
- package/dist/core/modules/navigation.d.ts.map +1 -1
- package/dist/core/modules/navigation.js +18 -0
- package/dist/core/modules/navigation.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/transport/adaptive-transport.d.ts +33 -0
- package/dist/transport/adaptive-transport.d.ts.map +1 -0
- package/dist/transport/adaptive-transport.js +89 -0
- package/dist/transport/adaptive-transport.js.map +1 -0
- package/dist/transport/index.d.ts +1 -0
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +1 -0
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/native-transport.d.ts +2 -0
- package/dist/transport/native-transport.d.ts.map +1 -1
- package/dist/transport/native-transport.js +94 -25
- package/dist/transport/native-transport.js.map +1 -1
- package/dist/transport/resolver.d.ts.map +1 -1
- package/dist/transport/resolver.js +3 -23
- package/dist/transport/resolver.js.map +1 -1
- package/dist/transport/types.d.ts +1 -1
- package/dist/transport/types.d.ts.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -208,3 +208,9 @@ npm pack --dry-run
|
|
|
208
208
|
# Xuất bản trực tiếp lên npm
|
|
209
209
|
npm publish --access public
|
|
210
210
|
```
|
|
211
|
+
|
|
212
|
+
### Kiểm tra transport và ví dụ
|
|
213
|
+
|
|
214
|
+
Chạy `npm test` trong `mini_app_sdk` để kiểm tra native callbacks, JS gọi trực tiếp dùng chung bridge, nhiều SDK instance, lifecycle events, simulator, browser mock, bridge được gắn muộn và timeout. SDK giữ nguyên callback registry `_callbacks` của host; không thay global bridge bằng dispatcher riêng. Playground sử dụng transport chính thức cho native và simulator.
|
|
215
|
+
|
|
216
|
+
Sau khi sửa SDK trong repository, chạy `npm run build:miniapps` từ thư mục gốc để build và đồng bộ SDK vào các ví dụ trước khi deploy backend. Lệnh này không phát hành package lên npm.
|
|
@@ -42,7 +42,7 @@ export async function createProject(projectName, options = {}) {
|
|
|
42
42
|
preview: 'vite preview',
|
|
43
43
|
},
|
|
44
44
|
dependencies: {
|
|
45
|
-
'@vqh2602/mini-app-sdk': '^1.0.
|
|
45
|
+
'@vqh2602/mini-app-sdk': '^1.0.6',
|
|
46
46
|
},
|
|
47
47
|
devDependencies: {
|
|
48
48
|
typescript: '^5.6.3',
|
|
@@ -152,13 +152,13 @@ document.getElementById('btnLogin')?.addEventListener('click', async () => {
|
|
|
152
152
|
// 2. Thanh toán
|
|
153
153
|
document.getElementById('btnPay')?.addEventListener('click', async () => {
|
|
154
154
|
try {
|
|
155
|
-
const
|
|
155
|
+
const order = await superApp.transport.invoke<{ orderId: string }>('payment.createOrder', {
|
|
156
156
|
orderId: 'ORDER_' + Date.now(),
|
|
157
157
|
amount: 45000,
|
|
158
158
|
description: 'Thanh toán đơn hàng mẫu Mini App',
|
|
159
159
|
});
|
|
160
|
+
const res = await superApp.transport.invoke('payment.openCheckout', { orderId: order.orderId });
|
|
160
161
|
log(res);
|
|
161
|
-
await superApp.ui.showToast('Thanh toán thành công!');
|
|
162
162
|
} catch (err: any) {
|
|
163
163
|
log({ error: err });
|
|
164
164
|
}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,7 +9,7 @@ const program = new Command();
|
|
|
9
9
|
program
|
|
10
10
|
.name('miniapp')
|
|
11
11
|
.description('SuperApp Mini App Developer CLI: Create, Dev, Build, and Upload')
|
|
12
|
-
.version('1.0.
|
|
12
|
+
.version('1.0.6');
|
|
13
13
|
program
|
|
14
14
|
.command('create <project-name>')
|
|
15
15
|
.description('Khởi tạo một dự án Mini App mới từ mẫu chuẩn SuperApp')
|
package/dist/core/client.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { MediaModule } from './modules/media.js';
|
|
|
9
9
|
import { LifecycleModule } from './modules/lifecycle.js';
|
|
10
10
|
import { AuthLoginOptions, AuthLoginResult, ConfigAppViewOptions, KeepScreenOptions, MinimizeAppResult, NotificationResult, RequestSendNotificationOptions, SDKInitOptions, SetNavigationBarColorOptions, ToastOptions, UserProfile } from './types/index.js';
|
|
11
11
|
export declare class SuperAppSDK {
|
|
12
|
-
readonly version = "1.0.
|
|
12
|
+
readonly version = "1.0.6";
|
|
13
13
|
readonly transport: ITransport;
|
|
14
14
|
readonly mockEngine?: SDKMockEngine;
|
|
15
15
|
readonly auth: AuthModule;
|
|
@@ -26,6 +26,8 @@ export declare class SuperAppSDK {
|
|
|
26
26
|
getUserProfile(): Promise<UserProfile>;
|
|
27
27
|
showToast(options: ToastOptions | string): Promise<void>;
|
|
28
28
|
vibrate(style?: 'light' | 'medium' | 'heavy'): Promise<void>;
|
|
29
|
+
openNativePage(page: 'profile' | 'form' | string, params?: Record<string, any>): Promise<any>;
|
|
30
|
+
openMiniApp(appId: string, params?: Record<string, any>): Promise<any>;
|
|
29
31
|
closeApp(): Promise<void>;
|
|
30
32
|
minimizeApp(): Promise<MinimizeAppResult>;
|
|
31
33
|
configAppView(options: ConfigAppViewOptions): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MockBridgeTransport, TransportResolver } from '../transport/index.js';
|
|
1
|
+
import { AdaptiveBridgeTransport, MockBridgeTransport, TransportResolver } from '../transport/index.js';
|
|
2
2
|
import { SDKMockEngine } from '../mock/index.js';
|
|
3
3
|
import { AuthModule } from './modules/auth.js';
|
|
4
4
|
import { DeviceModule } from './modules/device.js';
|
|
@@ -8,7 +8,7 @@ import { NavigationModule } from './modules/navigation.js';
|
|
|
8
8
|
import { MediaModule } from './modules/media.js';
|
|
9
9
|
import { LifecycleModule } from './modules/lifecycle.js';
|
|
10
10
|
export class SuperAppSDK {
|
|
11
|
-
version = '1.0.
|
|
11
|
+
version = '1.0.6';
|
|
12
12
|
transport;
|
|
13
13
|
mockEngine;
|
|
14
14
|
// Domain modules
|
|
@@ -38,8 +38,11 @@ export class SuperAppSDK {
|
|
|
38
38
|
forceTransport: options.forceTransport,
|
|
39
39
|
mockDispatcher,
|
|
40
40
|
});
|
|
41
|
-
// If MockBridgeTransport was created and we have mockEngine, attach
|
|
42
|
-
if (this.transport instanceof
|
|
41
|
+
// If AdaptiveBridgeTransport or MockBridgeTransport was created and we have mockEngine, attach
|
|
42
|
+
if (this.transport instanceof AdaptiveBridgeTransport && mockDispatcher) {
|
|
43
|
+
this.transport.setMockDispatcher(mockDispatcher);
|
|
44
|
+
}
|
|
45
|
+
else if (this.transport instanceof MockBridgeTransport && mockDispatcher) {
|
|
43
46
|
this.transport.setDispatcher(mockDispatcher);
|
|
44
47
|
}
|
|
45
48
|
this.auth = new AuthModule(this.transport);
|
|
@@ -63,6 +66,12 @@ export class SuperAppSDK {
|
|
|
63
66
|
vibrate(style) {
|
|
64
67
|
return this.device.vibrate(style);
|
|
65
68
|
}
|
|
69
|
+
openNativePage(page, params) {
|
|
70
|
+
return this.navigation.openNativePage(page, params);
|
|
71
|
+
}
|
|
72
|
+
openMiniApp(appId, params) {
|
|
73
|
+
return this.navigation.openMiniApp(appId, params);
|
|
74
|
+
}
|
|
66
75
|
closeApp() {
|
|
67
76
|
return this.navigation.closeApp();
|
|
68
77
|
}
|
package/dist/core/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,mBAAmB,EAAE,iBAAiB,EAAiB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,22 @@ import { MinimizeAppResult } from '../types/index.js';
|
|
|
3
3
|
export declare class NavigationModule {
|
|
4
4
|
private transport;
|
|
5
5
|
constructor(transport: ITransport);
|
|
6
|
+
/**
|
|
7
|
+
* Tự động điều hướng mở màn hình Native của SuperApp (ví dụ: 'profile', 'form')
|
|
8
|
+
*/
|
|
9
|
+
openNativePage(page: 'profile' | 'form' | string, params?: Record<string, any>): Promise<any>;
|
|
10
|
+
/**
|
|
11
|
+
* Điều hướng chuyển sang một Mini App khác trong SuperApp
|
|
12
|
+
*/
|
|
13
|
+
openMiniApp(appId: string, params?: Record<string, any>): Promise<any>;
|
|
6
14
|
/**
|
|
7
15
|
* Đóng Mini App và quay lại màn hình SuperApp chính
|
|
8
16
|
*/
|
|
9
17
|
closeApp(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Alias cho closeApp()
|
|
20
|
+
*/
|
|
21
|
+
close(): Promise<void>;
|
|
10
22
|
/**
|
|
11
23
|
* Thu nhỏ Mini App vào dạng floating window / background dock
|
|
12
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/core/modules/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,gBAAgB;IACf,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,UAAU;IAEzC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAItD;;OAEG;IACU,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjD"}
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/core/modules/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,gBAAgB;IACf,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,UAAU;IAEzC;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1G;;OAEG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAInF;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAItD;;OAEG;IACU,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjD"}
|
|
@@ -3,12 +3,30 @@ export class NavigationModule {
|
|
|
3
3
|
constructor(transport) {
|
|
4
4
|
this.transport = transport;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Tự động điều hướng mở màn hình Native của SuperApp (ví dụ: 'profile', 'form')
|
|
8
|
+
*/
|
|
9
|
+
async openNativePage(page, params) {
|
|
10
|
+
return this.transport.invoke('navigation.openNativePage', { page, params });
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Điều hướng chuyển sang một Mini App khác trong SuperApp
|
|
14
|
+
*/
|
|
15
|
+
async openMiniApp(appId, params) {
|
|
16
|
+
return this.transport.invoke('navigation.openMiniApp', { appId, params });
|
|
17
|
+
}
|
|
6
18
|
/**
|
|
7
19
|
* Đóng Mini App và quay lại màn hình SuperApp chính
|
|
8
20
|
*/
|
|
9
21
|
async closeApp() {
|
|
10
22
|
await this.transport.invoke('navigation.closeApp');
|
|
11
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Alias cho closeApp()
|
|
26
|
+
*/
|
|
27
|
+
async close() {
|
|
28
|
+
await this.transport.invoke('navigation.close');
|
|
29
|
+
}
|
|
12
30
|
/**
|
|
13
31
|
* Thu nhỏ Mini App vào dạng floating window / background dock
|
|
14
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/core/modules/navigation.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;IAAG,CAAC;IAE7C;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAoB,wBAAwB,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/core/modules/navigation.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;IAAG,CAAC;IAE7C;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,IAAiC,EAAE,MAA4B;QACzF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAA4B;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAoB,wBAAwB,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { superApp, SuperAppSDK } from './core/index.js';
|
|
|
2
2
|
export default superApp;
|
|
3
3
|
export { superApp, SuperAppSDK };
|
|
4
4
|
export * from './core/index.js';
|
|
5
|
-
export { ITransport, NativeBridgeTransport, PostMessageTransport, MockBridgeTransport, TransportResolver, TransportType, BridgeRequest, BridgeResponse, BridgeEventListener, BridgeError, } from './transport/index.js';
|
|
5
|
+
export { ITransport, NativeBridgeTransport, PostMessageTransport, MockBridgeTransport, AdaptiveBridgeTransport, TransportResolver, TransportType, BridgeRequest, BridgeResponse, BridgeEventListener, BridgeError, } from './transport/index.js';
|
|
6
6
|
export { SDKMockEngine, MockStateStore, MOCK_USER_PRESETS, MockUserProfile, MockPaymentOrder, MockDeviceState, MockNetworkCondition, MockLogEntry, } from './mock/index.js';
|
|
7
7
|
export * as transport from './transport/index.js';
|
|
8
8
|
export * as mock from './mock/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAGjC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export { superApp, SuperAppSDK };
|
|
|
4
4
|
// Re-export all core modules and types
|
|
5
5
|
export * from './core/index.js';
|
|
6
6
|
// Re-export transport interfaces & classes
|
|
7
|
-
export { NativeBridgeTransport, PostMessageTransport, MockBridgeTransport, TransportResolver, } from './transport/index.js';
|
|
7
|
+
export { NativeBridgeTransport, PostMessageTransport, MockBridgeTransport, AdaptiveBridgeTransport, TransportResolver, } from './transport/index.js';
|
|
8
8
|
// Re-export mock engine classes & presets
|
|
9
9
|
export { SDKMockEngine, MockStateStore, MOCK_USER_PRESETS, } from './mock/index.js';
|
|
10
10
|
// Sub-namespaces
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAEjC,uCAAuC;AACvC,cAAc,iBAAiB,CAAC;AAEhC,2CAA2C;AAC3C,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAMlB,MAAM,sBAAsB,CAAC;AAE9B,0CAA0C;AAC1C,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,GAMlB,MAAM,iBAAiB,CAAC;AAEzB,iBAAiB;AACjB,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAEjC,uCAAuC;AACvC,cAAc,iBAAiB,CAAC;AAEhC,2CAA2C;AAC3C,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,GAMlB,MAAM,sBAAsB,CAAC;AAE9B,0CAA0C;AAC1C,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,GAMlB,MAAM,iBAAiB,CAAC;AAEzB,iBAAiB;AACjB,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ITransport } from './transport.interface.js';
|
|
2
|
+
import { MockDispatcher } from './mock-transport.js';
|
|
3
|
+
import { BridgeEventListener, TransportConfig, TransportType } from './types.js';
|
|
4
|
+
export interface AdaptiveTransportOptions extends TransportConfig {
|
|
5
|
+
mockDispatcher?: MockDispatcher;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* AdaptiveBridgeTransport automatically selects and routes requests to:
|
|
9
|
+
* 1. Native container (SuperApp Flutter WebView via window.FlutterBridge or window.SuperAppBridge)
|
|
10
|
+
* 2. Parent Simulator iframe (Browser Simulator via window.parent.postMessage)
|
|
11
|
+
* 3. Mock Bridge Transport (Local dev, test suites, or standalone browser tabs)
|
|
12
|
+
*
|
|
13
|
+
* It re-evaluates the environment dynamically so that if the native bridge
|
|
14
|
+
* becomes available after script evaluation, calls are seamlessly routed to native.
|
|
15
|
+
*/
|
|
16
|
+
export declare class AdaptiveBridgeTransport implements ITransport {
|
|
17
|
+
private nativeTransport;
|
|
18
|
+
private postmessageTransport;
|
|
19
|
+
private mockTransport;
|
|
20
|
+
private debug;
|
|
21
|
+
constructor(options?: AdaptiveTransportOptions);
|
|
22
|
+
setMockDispatcher(dispatcher: MockDispatcher): void;
|
|
23
|
+
isNativeAvailable(): boolean;
|
|
24
|
+
isSimulatorAvailable(): boolean;
|
|
25
|
+
getType(): TransportType;
|
|
26
|
+
isConnected(): boolean;
|
|
27
|
+
getActiveTransport(): ITransport;
|
|
28
|
+
invoke<T = any>(action: string, payload?: Record<string, any>, timeoutMs?: number): Promise<T>;
|
|
29
|
+
on(event: string, listener: BridgeEventListener): () => void;
|
|
30
|
+
off(event: string, listener: BridgeEventListener): void;
|
|
31
|
+
emit(event: string, payload: any): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=adaptive-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-transport.d.ts","sourceRoot":"","sources":["../../src/transport/adaptive-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,GAAE,wBAA6B;IAO3C,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;IAInD,iBAAiB,IAAI,OAAO;IAI5B,oBAAoB,IAAI,OAAO;IAK/B,OAAO,IAAI,aAAa;IAMxB,WAAW,IAAI,OAAO;IAItB,kBAAkB,IAAI,UAAU;IAU1B,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBxG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAW5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAMvD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { NativeBridgeTransport, isNativeBridgeAvailable } from './native-transport.js';
|
|
2
|
+
import { PostMessageTransport } from './postmessage-transport.js';
|
|
3
|
+
import { MockBridgeTransport } from './mock-transport.js';
|
|
4
|
+
/**
|
|
5
|
+
* AdaptiveBridgeTransport automatically selects and routes requests to:
|
|
6
|
+
* 1. Native container (SuperApp Flutter WebView via window.FlutterBridge or window.SuperAppBridge)
|
|
7
|
+
* 2. Parent Simulator iframe (Browser Simulator via window.parent.postMessage)
|
|
8
|
+
* 3. Mock Bridge Transport (Local dev, test suites, or standalone browser tabs)
|
|
9
|
+
*
|
|
10
|
+
* It re-evaluates the environment dynamically so that if the native bridge
|
|
11
|
+
* becomes available after script evaluation, calls are seamlessly routed to native.
|
|
12
|
+
*/
|
|
13
|
+
export class AdaptiveBridgeTransport {
|
|
14
|
+
nativeTransport;
|
|
15
|
+
postmessageTransport;
|
|
16
|
+
mockTransport;
|
|
17
|
+
debug;
|
|
18
|
+
constructor(options = {}) {
|
|
19
|
+
this.debug = options.debug ?? false;
|
|
20
|
+
this.nativeTransport = new NativeBridgeTransport(options);
|
|
21
|
+
this.postmessageTransport = new PostMessageTransport(options);
|
|
22
|
+
this.mockTransport = new MockBridgeTransport({ ...options, dispatcher: options.mockDispatcher });
|
|
23
|
+
}
|
|
24
|
+
setMockDispatcher(dispatcher) {
|
|
25
|
+
this.mockTransport.setDispatcher(dispatcher);
|
|
26
|
+
}
|
|
27
|
+
isNativeAvailable() {
|
|
28
|
+
return isNativeBridgeAvailable();
|
|
29
|
+
}
|
|
30
|
+
isSimulatorAvailable() {
|
|
31
|
+
if (typeof window === 'undefined')
|
|
32
|
+
return false;
|
|
33
|
+
return !!(window.parent && window.parent !== window);
|
|
34
|
+
}
|
|
35
|
+
getType() {
|
|
36
|
+
if (this.isNativeAvailable())
|
|
37
|
+
return 'native';
|
|
38
|
+
if (this.isSimulatorAvailable())
|
|
39
|
+
return 'postmessage';
|
|
40
|
+
return 'mock';
|
|
41
|
+
}
|
|
42
|
+
isConnected() {
|
|
43
|
+
return this.isNativeAvailable() || this.isSimulatorAvailable() || this.mockTransport.isConnected();
|
|
44
|
+
}
|
|
45
|
+
getActiveTransport() {
|
|
46
|
+
if (this.isNativeAvailable()) {
|
|
47
|
+
return this.nativeTransport;
|
|
48
|
+
}
|
|
49
|
+
if (this.isSimulatorAvailable()) {
|
|
50
|
+
return this.postmessageTransport;
|
|
51
|
+
}
|
|
52
|
+
return this.mockTransport;
|
|
53
|
+
}
|
|
54
|
+
async invoke(action, payload = {}, timeoutMs) {
|
|
55
|
+
// If not immediately available, perform a brief micro-poll (up to 100ms)
|
|
56
|
+
// to give Flutter WebView's addJavaScriptChannel time to attach
|
|
57
|
+
if (!this.isNativeAvailable() && !this.isSimulatorAvailable() && typeof window !== 'undefined') {
|
|
58
|
+
for (let i = 0; i < 4; i++) {
|
|
59
|
+
if (this.isNativeAvailable())
|
|
60
|
+
break;
|
|
61
|
+
await new Promise((r) => setTimeout(r, 25));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const active = this.getActiveTransport();
|
|
65
|
+
if (this.debug) {
|
|
66
|
+
console.info(`[AdaptiveBridgeTransport] Routing action "${action}" to transport: [${active.getType()}]`);
|
|
67
|
+
}
|
|
68
|
+
return active.invoke(action, payload, timeoutMs);
|
|
69
|
+
}
|
|
70
|
+
on(event, listener) {
|
|
71
|
+
const unsubNative = this.nativeTransport.on(event, listener);
|
|
72
|
+
const unsubPost = this.postmessageTransport.on(event, listener);
|
|
73
|
+
const unsubMock = this.mockTransport.on(event, listener);
|
|
74
|
+
return () => {
|
|
75
|
+
unsubNative();
|
|
76
|
+
unsubPost();
|
|
77
|
+
unsubMock();
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
off(event, listener) {
|
|
81
|
+
this.nativeTransport.off(event, listener);
|
|
82
|
+
this.postmessageTransport.off(event, listener);
|
|
83
|
+
this.mockTransport.off(event, listener);
|
|
84
|
+
}
|
|
85
|
+
emit(event, payload) {
|
|
86
|
+
this.getActiveTransport().emit(event, payload);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=adaptive-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive-transport.js","sourceRoot":"","sources":["../../src/transport/adaptive-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,6 @@ export * from './transport.interface.js';
|
|
|
3
3
|
export * from './native-transport.js';
|
|
4
4
|
export * from './postmessage-transport.js';
|
|
5
5
|
export * from './mock-transport.js';
|
|
6
|
+
export * from './adaptive-transport.js';
|
|
6
7
|
export * from './resolver.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC"}
|
package/dist/transport/index.js
CHANGED
|
@@ -3,5 +3,6 @@ export * from './transport.interface.js';
|
|
|
3
3
|
export * from './native-transport.js';
|
|
4
4
|
export * from './postmessage-transport.js';
|
|
5
5
|
export * from './mock-transport.js';
|
|
6
|
+
export * from './adaptive-transport.js';
|
|
6
7
|
export * from './resolver.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ITransport } from './transport.interface.js';
|
|
2
2
|
import { BridgeEventListener, TransportConfig, TransportType } from './types.js';
|
|
3
|
+
export declare function isNativeBridgeAvailable(): boolean;
|
|
3
4
|
export declare class NativeBridgeTransport implements ITransport {
|
|
5
|
+
private installedBridges;
|
|
4
6
|
private appId;
|
|
5
7
|
private defaultTimeoutMs;
|
|
6
8
|
private debug;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-transport.d.ts","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAe,mBAAmB,EAAqD,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"native-transport.d.ts","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAe,mBAAmB,EAAqD,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKjJ,wBAAgB,uBAAuB,IAAI,OAAO,CAMjD;AAED,qBAAa,qBAAsB,YAAW,UAAU;IACtD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAmG;IACpH,OAAO,CAAC,SAAS,CAAoD;gBAEzD,MAAM,GAAE,eAAoB;IAOjC,OAAO,IAAI,aAAa;IAIxB,WAAW,IAAI,OAAO;IAI7B,OAAO,CAAC,sBAAsB;IAuD9B,OAAO,CAAC,oBAAoB;IAyBrB,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IA6ElG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAQ5D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAUvD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;CAe/C"}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
let requestSequence = 1;
|
|
2
|
+
// A forwarding shim is not evidence that a native host is connected.
|
|
3
|
+
const forwardingShims = new WeakSet();
|
|
4
|
+
export function isNativeBridgeAvailable() {
|
|
5
|
+
if (typeof window === 'undefined')
|
|
6
|
+
return false;
|
|
7
|
+
const win = window;
|
|
8
|
+
const send = win.SuperAppBridge?.postMessage;
|
|
9
|
+
return typeof win.FlutterBridge?.postMessage === 'function' ||
|
|
10
|
+
(typeof send === 'function' && !forwardingShims.has(send));
|
|
11
|
+
}
|
|
2
12
|
export class NativeBridgeTransport {
|
|
13
|
+
installedBridges = new WeakSet();
|
|
3
14
|
appId;
|
|
4
15
|
defaultTimeoutMs;
|
|
5
16
|
debug;
|
|
@@ -15,40 +26,72 @@ export class NativeBridgeTransport {
|
|
|
15
26
|
return 'native';
|
|
16
27
|
}
|
|
17
28
|
isConnected() {
|
|
18
|
-
|
|
19
|
-
return false;
|
|
20
|
-
const win = window;
|
|
21
|
-
return !!win.FlutterBridge?.postMessage;
|
|
29
|
+
return isNativeBridgeAvailable();
|
|
22
30
|
}
|
|
23
31
|
initNativeGlobalBridge() {
|
|
24
32
|
if (typeof window === 'undefined')
|
|
25
33
|
return;
|
|
26
34
|
const win = window;
|
|
27
35
|
if (!win.SuperAppBridge) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
// Keep the shared callback/listener contract used by the Flutter host and
|
|
37
|
+
// plain JS clients, even when this SDK is the first script to initialize.
|
|
38
|
+
win.SuperAppBridge = {};
|
|
39
|
+
}
|
|
40
|
+
const bridge = win.SuperAppBridge;
|
|
41
|
+
bridge._callbacks ||= {};
|
|
42
|
+
bridge._listeners ||= {};
|
|
43
|
+
if (!bridge.postMessage) {
|
|
44
|
+
bridge.postMessage = (msg) => {
|
|
45
|
+
win.FlutterBridge?.postMessage(typeof msg === 'string' ? msg : JSON.stringify(msg));
|
|
46
|
+
};
|
|
47
|
+
forwardingShims.add(bridge.postMessage);
|
|
48
|
+
}
|
|
49
|
+
if (!bridge.dispatchResponse) {
|
|
50
|
+
bridge.dispatchResponse = (res) => {
|
|
51
|
+
const callback = bridge._callbacks[res.id];
|
|
52
|
+
if (callback) {
|
|
53
|
+
delete bridge._callbacks[res.id];
|
|
54
|
+
callback(res);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (!bridge.dispatchEvent) {
|
|
59
|
+
bridge.dispatchEvent = (evt) => {
|
|
60
|
+
for (const listener of [...(bridge._listeners[evt.event] || [])]) {
|
|
61
|
+
try {
|
|
62
|
+
listener(evt.payload);
|
|
34
63
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
dispatchEvent: (evt) => {
|
|
40
|
-
this.emit(evt.event, evt.payload);
|
|
41
|
-
},
|
|
42
|
-
addEventListener: (event, handler) => {
|
|
43
|
-
this.on(event, handler);
|
|
44
|
-
},
|
|
45
|
-
removeEventListener: (event, handler) => {
|
|
46
|
-
this.off(event, handler);
|
|
47
|
-
},
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error(error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
48
68
|
};
|
|
49
69
|
}
|
|
70
|
+
bridge.addEventListener ||= (event, handler) => {
|
|
71
|
+
(bridge._listeners[event] ||= []).push(handler);
|
|
72
|
+
};
|
|
73
|
+
bridge.removeEventListener ||= (event, handler) => {
|
|
74
|
+
bridge._listeners[event] = (bridge._listeners[event] || []).filter(fn => fn !== handler);
|
|
75
|
+
};
|
|
76
|
+
// Install once per bridge object, rather than stacking new wrappers per call.
|
|
77
|
+
// Also reconnect if a host replaces the bridge after SDK initialization.
|
|
78
|
+
if (this.installedBridges.has(bridge))
|
|
79
|
+
return;
|
|
80
|
+
this.installedBridges.add(bridge);
|
|
81
|
+
const previousResponse = bridge.dispatchResponse;
|
|
82
|
+
bridge.dispatchResponse = (res) => {
|
|
83
|
+
this.handleNativeResponse(res);
|
|
84
|
+
previousResponse.call(bridge, res);
|
|
85
|
+
};
|
|
86
|
+
const previousEvent = bridge.dispatchEvent;
|
|
87
|
+
bridge.dispatchEvent = (evt) => {
|
|
88
|
+
this.emit(evt.event, evt.payload);
|
|
89
|
+
previousEvent.call(bridge, evt);
|
|
90
|
+
};
|
|
50
91
|
}
|
|
51
92
|
handleNativeResponse(res) {
|
|
93
|
+
if (!res || !res.id)
|
|
94
|
+
return;
|
|
52
95
|
if (this.debug) {
|
|
53
96
|
console.log(`[NativeBridgeTransport] Response received:`, res);
|
|
54
97
|
}
|
|
@@ -57,6 +100,12 @@ export class NativeBridgeTransport {
|
|
|
57
100
|
return;
|
|
58
101
|
clearTimeout(pending.timer);
|
|
59
102
|
this.callbacks.delete(res.id);
|
|
103
|
+
if (typeof window !== 'undefined') {
|
|
104
|
+
const win = window;
|
|
105
|
+
if (win.SuperAppBridge?._callbacks) {
|
|
106
|
+
delete win.SuperAppBridge._callbacks[res.id];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
60
109
|
if (res.success) {
|
|
61
110
|
pending.resolve(res.data);
|
|
62
111
|
}
|
|
@@ -65,7 +114,7 @@ export class NativeBridgeTransport {
|
|
|
65
114
|
}
|
|
66
115
|
}
|
|
67
116
|
invoke(action, payload = {}, timeoutMs) {
|
|
68
|
-
const id = `
|
|
117
|
+
const id = `sdk_req_${Date.now()}_${requestSequence++}`;
|
|
69
118
|
const timeout = timeoutMs ?? this.defaultTimeoutMs;
|
|
70
119
|
const request = {
|
|
71
120
|
id,
|
|
@@ -76,8 +125,15 @@ export class NativeBridgeTransport {
|
|
|
76
125
|
timestamp: Date.now(),
|
|
77
126
|
};
|
|
78
127
|
return new Promise((resolve, reject) => {
|
|
128
|
+
this.initNativeGlobalBridge();
|
|
79
129
|
const timer = setTimeout(() => {
|
|
80
130
|
this.callbacks.delete(id);
|
|
131
|
+
if (typeof window !== 'undefined') {
|
|
132
|
+
const win = window;
|
|
133
|
+
if (win.SuperAppBridge?._callbacks) {
|
|
134
|
+
delete win.SuperAppBridge._callbacks[id];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
81
137
|
const timeoutError = {
|
|
82
138
|
code: 'TIMEOUT',
|
|
83
139
|
message: `Bridge call "${action}" timed out after ${timeout}ms`,
|
|
@@ -93,15 +149,28 @@ export class NativeBridgeTransport {
|
|
|
93
149
|
}
|
|
94
150
|
if (typeof window !== 'undefined') {
|
|
95
151
|
const win = window;
|
|
152
|
+
// Register callback in window.SuperAppBridge._callbacks for seamless polyfill response delivery
|
|
153
|
+
if (win.SuperAppBridge) {
|
|
154
|
+
win.SuperAppBridge._callbacks = win.SuperAppBridge._callbacks || {};
|
|
155
|
+
win.SuperAppBridge._callbacks[id] = (res) => {
|
|
156
|
+
this.handleNativeResponse(res);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
96
159
|
if (win.FlutterBridge?.postMessage) {
|
|
97
160
|
win.FlutterBridge.postMessage(JSON.stringify(request));
|
|
98
161
|
}
|
|
162
|
+
else if (isNativeBridgeAvailable() && win.SuperAppBridge?.postMessage) {
|
|
163
|
+
win.SuperAppBridge.postMessage(request);
|
|
164
|
+
}
|
|
99
165
|
else {
|
|
100
166
|
clearTimeout(timer);
|
|
101
167
|
this.callbacks.delete(id);
|
|
168
|
+
if (win.SuperAppBridge?._callbacks) {
|
|
169
|
+
delete win.SuperAppBridge._callbacks[id];
|
|
170
|
+
}
|
|
102
171
|
reject({
|
|
103
172
|
code: 'NATIVE_NOT_AVAILABLE',
|
|
104
|
-
message: 'FlutterBridge is not installed on window object',
|
|
173
|
+
message: 'FlutterBridge or SuperAppBridge is not installed on window object',
|
|
105
174
|
});
|
|
106
175
|
}
|
|
107
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-transport.js","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"AAGA,IAAI,eAAe,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"native-transport.js","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/transport/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/transport/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,qBAAa,iBAAiB;WACd,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,UAAU;CAe1E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NativeBridgeTransport } from './native-transport.js';
|
|
2
2
|
import { PostMessageTransport } from './postmessage-transport.js';
|
|
3
3
|
import { MockBridgeTransport } from './mock-transport.js';
|
|
4
|
+
import { AdaptiveBridgeTransport } from './adaptive-transport.js';
|
|
4
5
|
export class TransportResolver {
|
|
5
6
|
static resolve(options = {}) {
|
|
6
7
|
// 1. Explicit override if requested
|
|
@@ -13,29 +14,8 @@ export class TransportResolver {
|
|
|
13
14
|
if (options.forceTransport === 'mock') {
|
|
14
15
|
return new MockBridgeTransport({ ...options, dispatcher: options.mockDispatcher });
|
|
15
16
|
}
|
|
16
|
-
// 2.
|
|
17
|
-
|
|
18
|
-
const win = window;
|
|
19
|
-
// Real SuperApp Flutter WebView environment
|
|
20
|
-
if (win.FlutterBridge?.postMessage) {
|
|
21
|
-
if (options.debug) {
|
|
22
|
-
console.info('[TransportResolver] Detected Native Flutter Bridge container.');
|
|
23
|
-
}
|
|
24
|
-
return new NativeBridgeTransport(options);
|
|
25
|
-
}
|
|
26
|
-
// Inside Simulator Iframe (parent is different window)
|
|
27
|
-
if (window.parent && window.parent !== window) {
|
|
28
|
-
if (options.debug) {
|
|
29
|
-
console.info('[TransportResolver] Detected Browser Simulator parent iframe container.');
|
|
30
|
-
}
|
|
31
|
-
return new PostMessageTransport(options);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// 3. Fallback: Mock Bridge Transport (for standalone browser tabs, local dev, or testing)
|
|
35
|
-
if (options.debug) {
|
|
36
|
-
console.info('[TransportResolver] Falling back to Mock Bridge Transport.');
|
|
37
|
-
}
|
|
38
|
-
return new MockBridgeTransport({ ...options, dispatcher: options.mockDispatcher });
|
|
17
|
+
// 2. Default: Dynamic Adaptive Bridge Transport that automatically detects and routes calls
|
|
18
|
+
return new AdaptiveBridgeTransport(options);
|
|
39
19
|
}
|
|
40
20
|
}
|
|
41
21
|
//# sourceMappingURL=resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/transport/resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/transport/resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAQlE,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAC,OAAO,CAAC,UAAoC,EAAE;QAC1D,oCAAoC;QACpC,IAAI,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,KAAK,aAAa,EAAE,CAAC;YAC7C,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,IAAI,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,4FAA4F;QAC5F,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transport/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transport/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE;QACd,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC,CAAC;IACF,cAAc,CAAC,EAAE;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC,CAAC;QAC1D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAClD,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;QAChC,gBAAgB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;QAChD,aAAa,EAAE,CAAC,GAAG,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,GAAG,CAAA;SAAE,KAAK,IAAI,CAAC;QAC9D,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;QACxE,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;KAC5E,CAAC;CACH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vqh2602/mini-app-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Official Unified TypeScript SDK & CLI for SuperApp Mini Apps: Core API, Bridge Transport, Mock Engine, and Browser Simulator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
"release:major": "node ../scripts/bump-version.cjs major && npm publish --access public",
|
|
50
50
|
"prepublishOnly": "node ../scripts/bump-version.cjs check-publish && npm run build",
|
|
51
51
|
"simulator": "node ./bin/simulator.js",
|
|
52
|
-
"clean": "rm -rf dist simulator-dist"
|
|
52
|
+
"clean": "rm -rf dist simulator-dist",
|
|
53
|
+
"test": "npm run build:ts && node --test test/*.test.mjs"
|
|
53
54
|
},
|
|
54
55
|
"dependencies": {
|
|
55
56
|
"commander": "^12.1.0",
|