@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 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.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 res = await superApp.payment.requestPayment({
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.3');
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')
@@ -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.3";
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,EAAE,UAAU,EAA0C,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,cAAc,EACd,4BAA4B,EAC5B,YAAY,EACZ,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,WAAW;IACtB,SAAgB,OAAO,WAAW;IAClC,SAAgB,SAAS,EAAE,UAAU,CAAC;IACtC,SAAgB,UAAU,CAAC,EAAE,aAAa,CAAC;IAG3C,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,UAAU,EAAE,gBAAgB,CAAC;IAC7C,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,SAAS,EAAE,eAAe,CAAC;gBAE/B,OAAO,GAAE,cAAc,GAAG;QAAE,cAAc,CAAC,EAAE,aAAa,CAAA;KAAO;IAsCtE,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI3D,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAItC,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIzC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1D,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpF,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAIvG,uBAAuB,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI9F,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;CAGlE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,UAAU,EAA0C,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnI,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,cAAc,EACd,4BAA4B,EAC5B,YAAY,EACZ,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,WAAW;IACtB,SAAgB,OAAO,WAAW;IAClC,SAAgB,SAAS,EAAE,UAAU,CAAC;IACtC,SAAgB,UAAU,CAAC,EAAE,aAAa,CAAC;IAG3C,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,UAAU,EAAE,gBAAgB,CAAC;IAC7C,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAgB,SAAS,EAAE,eAAe,CAAC;gBAE/B,OAAO,GAAE,cAAc,GAAG;QAAE,cAAc,CAAC,EAAE,aAAa,CAAA;KAAO;IAwCtE,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI3D,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAItC,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7F,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAItE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIzC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1D,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpF,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAIvG,uBAAuB,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI9F,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAI/D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;CAGlE"}
@@ -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.3';
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 MockBridgeTransport && mockDispatcher) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
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';
@@ -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"}
@@ -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;AAIjJ,qBAAa,qBAAsB,YAAW,UAAU;IACtD,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;IAM7B,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,oBAAoB;IAiBrB,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;IAuDlG,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
+ {"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
- if (typeof window === 'undefined')
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
- win.SuperAppBridge = {
29
- _callbacks: {},
30
- _listeners: {},
31
- postMessage: (msg) => {
32
- if (win.FlutterBridge?.postMessage) {
33
- win.FlutterBridge.postMessage(typeof msg === 'string' ? msg : JSON.stringify(msg));
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
- dispatchResponse: (res) => {
37
- this.handleNativeResponse(res);
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 = `req_${Date.now()}_${requestSequence++}`;
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":"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"}
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;AAC1E,OAAO,EAAsB,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhF,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;CAuC1E"}
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. Automatic runtime environment detection
17
- if (typeof window !== 'undefined') {
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;AAQ1E,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,6CAA6C;QAC7C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAuC,CAAC;YAEpD,4CAA4C;YAC5C,IAAI,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;gBACnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;gBAChF,CAAC;gBACD,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,uDAAuD;YACvD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;gBAC1F,CAAC;gBACD,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,0FAA0F;QAC1F,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,mBAAmB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACrF,CAAC;CACF"}
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,4 +1,4 @@
1
- export type TransportType = 'native' | 'postmessage' | 'mock';
1
+ export type TransportType = 'native' | 'postmessage' | 'mock' | 'adaptive';
2
2
  export interface BridgeRequest<T = Record<string, any>> {
3
3
  id: string;
4
4
  action: string;
@@ -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;AAE9D,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"}
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",
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",