@vqh2602/mini-app-sdk 1.0.5 → 1.0.7
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 +10 -0
- package/dist/cli/commands/create.js +3 -3
- package/dist/cli/index.js +1 -1
- package/dist/core/client.d.ts +1 -1
- package/dist/core/client.js +1 -1
- package/dist/transport/adaptive-transport.d.ts.map +1 -1
- package/dist/transport/adaptive-transport.js +2 -5
- package/dist/transport/adaptive-transport.js.map +1 -1
- package/dist/transport/native-transport.d.ts +3 -1
- package/dist/transport/native-transport.d.ts.map +1 -1
- package/dist/transport/native-transport.js +63 -53
- package/dist/transport/native-transport.js.map +1 -1
- package/dist/transport/postmessage-transport.d.ts +1 -1
- package/dist/transport/postmessage-transport.d.ts.map +1 -1
- package/dist/transport/postmessage-transport.js +3 -2
- package/dist/transport/postmessage-transport.js.map +1 -1
- package/dist/transport/timeout-policy.d.ts +5 -0
- package/dist/transport/timeout-policy.d.ts.map +1 -0
- package/dist/transport/timeout-policy.js +20 -0
- package/dist/transport/timeout-policy.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -208,3 +208,13 @@ 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.
|
|
217
|
+
|
|
218
|
+
### Timeout khi chờ người dùng
|
|
219
|
+
|
|
220
|
+
Native và simulator mặc định chờ tối đa 5 phút cho quét QR/mã vạch, camera, chọn ảnh/video/file, ghi âm, hộp thoại quyền và checkout; các action khác chờ tối đa 60 giây. Huỷ thao tác từ giao diện native vẫn trả lỗi `CANCELLED` ngay. `timeoutMs` khi khởi tạo SDK hoặc tham số thứ ba của `transport.invoke` sẽ ghi đè mặc định này. Playground dùng chính sách của SDK, không ép timeout 8 giây.
|
|
@@ -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.7',
|
|
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.7');
|
|
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.7";
|
|
13
13
|
readonly transport: ITransport;
|
|
14
14
|
readonly mockEngine?: SDKMockEngine;
|
|
15
15
|
readonly auth: AuthModule;
|
package/dist/core/client.js
CHANGED
|
@@ -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.7';
|
|
12
12
|
transport;
|
|
13
13
|
mockEngine;
|
|
14
14
|
// Domain modules
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NativeBridgeTransport } from './native-transport.js';
|
|
1
|
+
import { NativeBridgeTransport, isNativeBridgeAvailable } from './native-transport.js';
|
|
2
2
|
import { PostMessageTransport } from './postmessage-transport.js';
|
|
3
3
|
import { MockBridgeTransport } from './mock-transport.js';
|
|
4
4
|
/**
|
|
@@ -25,10 +25,7 @@ export class AdaptiveBridgeTransport {
|
|
|
25
25
|
this.mockTransport.setDispatcher(dispatcher);
|
|
26
26
|
}
|
|
27
27
|
isNativeAvailable() {
|
|
28
|
-
|
|
29
|
-
return false;
|
|
30
|
-
const win = window;
|
|
31
|
-
return !!(win.FlutterBridge?.postMessage || win.SuperAppBridge?.postMessage);
|
|
28
|
+
return isNativeBridgeAvailable();
|
|
32
29
|
}
|
|
33
30
|
isSimulatorAvailable() {
|
|
34
31
|
if (typeof window === 'undefined')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptive-transport.js","sourceRoot":"","sources":["../../src/transport/adaptive-transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"adaptive-transport.js","sourceRoot":"","sources":["../../src/transport/adaptive-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
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
|
-
private defaultTimeoutMs
|
|
7
|
+
private defaultTimeoutMs?;
|
|
6
8
|
private debug;
|
|
7
9
|
private callbacks;
|
|
8
10
|
private listeners;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-transport.d.ts","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"native-transport.d.ts","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"AACA,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,CAAC,CAAS;IAClC,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,17 @@
|
|
|
1
|
+
import { bridgeTimeoutMs } from './timeout-policy.js';
|
|
1
2
|
let requestSequence = 1;
|
|
3
|
+
// A forwarding shim is not evidence that a native host is connected.
|
|
4
|
+
const forwardingShims = new WeakSet();
|
|
5
|
+
export function isNativeBridgeAvailable() {
|
|
6
|
+
if (typeof window === 'undefined')
|
|
7
|
+
return false;
|
|
8
|
+
const win = window;
|
|
9
|
+
const send = win.SuperAppBridge?.postMessage;
|
|
10
|
+
return typeof win.FlutterBridge?.postMessage === 'function' ||
|
|
11
|
+
(typeof send === 'function' && !forwardingShims.has(send));
|
|
12
|
+
}
|
|
2
13
|
export class NativeBridgeTransport {
|
|
14
|
+
installedBridges = new WeakSet();
|
|
3
15
|
appId;
|
|
4
16
|
defaultTimeoutMs;
|
|
5
17
|
debug;
|
|
@@ -7,7 +19,7 @@ export class NativeBridgeTransport {
|
|
|
7
19
|
listeners = new Map();
|
|
8
20
|
constructor(config = {}) {
|
|
9
21
|
this.appId = config.appId || 'mini_app_default';
|
|
10
|
-
this.defaultTimeoutMs = config.timeoutMs
|
|
22
|
+
this.defaultTimeoutMs = config.timeoutMs;
|
|
11
23
|
this.debug = config.debug ?? false;
|
|
12
24
|
this.initNativeGlobalBridge();
|
|
13
25
|
}
|
|
@@ -15,70 +27,68 @@ export class NativeBridgeTransport {
|
|
|
15
27
|
return 'native';
|
|
16
28
|
}
|
|
17
29
|
isConnected() {
|
|
18
|
-
|
|
19
|
-
return false;
|
|
20
|
-
const win = window;
|
|
21
|
-
return !!(win.FlutterBridge?.postMessage || win.SuperAppBridge?.postMessage);
|
|
30
|
+
return isNativeBridgeAvailable();
|
|
22
31
|
}
|
|
23
32
|
initNativeGlobalBridge() {
|
|
24
33
|
if (typeof window === 'undefined')
|
|
25
34
|
return;
|
|
26
35
|
const win = window;
|
|
27
36
|
if (!win.SuperAppBridge) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
},
|
|
37
|
+
// Keep the shared callback/listener contract used by the Flutter host and
|
|
38
|
+
// plain JS clients, even when this SDK is the first script to initialize.
|
|
39
|
+
win.SuperAppBridge = {};
|
|
40
|
+
}
|
|
41
|
+
const bridge = win.SuperAppBridge;
|
|
42
|
+
bridge._callbacks ||= {};
|
|
43
|
+
bridge._listeners ||= {};
|
|
44
|
+
if (!bridge.postMessage) {
|
|
45
|
+
bridge.postMessage = (msg) => {
|
|
46
|
+
win.FlutterBridge?.postMessage(typeof msg === 'string' ? msg : JSON.stringify(msg));
|
|
48
47
|
};
|
|
48
|
+
forwardingShims.add(bridge.postMessage);
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
this.handleNativeResponse(res);
|
|
57
|
-
if (typeof prevDispatch === 'function' && prevDispatch !== win.SuperAppBridge.dispatchResponse) {
|
|
58
|
-
try {
|
|
59
|
-
prevDispatch.call(win.SuperAppBridge, res);
|
|
60
|
-
}
|
|
61
|
-
catch (_) { }
|
|
50
|
+
if (!bridge.dispatchResponse) {
|
|
51
|
+
bridge.dispatchResponse = (res) => {
|
|
52
|
+
const callback = bridge._callbacks[res.id];
|
|
53
|
+
if (callback) {
|
|
54
|
+
delete bridge._callbacks[res.id];
|
|
55
|
+
callback(res);
|
|
62
56
|
}
|
|
63
57
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
}
|
|
59
|
+
if (!bridge.dispatchEvent) {
|
|
60
|
+
bridge.dispatchEvent = (evt) => {
|
|
61
|
+
for (const listener of [...(bridge._listeners[evt.event] || [])]) {
|
|
68
62
|
try {
|
|
69
|
-
|
|
63
|
+
listener(evt.payload);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(error);
|
|
70
67
|
}
|
|
71
|
-
catch (_) { }
|
|
72
68
|
}
|
|
73
69
|
};
|
|
74
|
-
if (!win.SuperAppBridge.postMessage) {
|
|
75
|
-
win.SuperAppBridge.postMessage = (msg) => {
|
|
76
|
-
if (win.FlutterBridge?.postMessage) {
|
|
77
|
-
win.FlutterBridge.postMessage(typeof msg === 'string' ? msg : JSON.stringify(msg));
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
70
|
}
|
|
71
|
+
bridge.addEventListener ||= (event, handler) => {
|
|
72
|
+
(bridge._listeners[event] ||= []).push(handler);
|
|
73
|
+
};
|
|
74
|
+
bridge.removeEventListener ||= (event, handler) => {
|
|
75
|
+
bridge._listeners[event] = (bridge._listeners[event] || []).filter(fn => fn !== handler);
|
|
76
|
+
};
|
|
77
|
+
// Install once per bridge object, rather than stacking new wrappers per call.
|
|
78
|
+
// Also reconnect if a host replaces the bridge after SDK initialization.
|
|
79
|
+
if (this.installedBridges.has(bridge))
|
|
80
|
+
return;
|
|
81
|
+
this.installedBridges.add(bridge);
|
|
82
|
+
const previousResponse = bridge.dispatchResponse;
|
|
83
|
+
bridge.dispatchResponse = (res) => {
|
|
84
|
+
this.handleNativeResponse(res);
|
|
85
|
+
previousResponse.call(bridge, res);
|
|
86
|
+
};
|
|
87
|
+
const previousEvent = bridge.dispatchEvent;
|
|
88
|
+
bridge.dispatchEvent = (evt) => {
|
|
89
|
+
this.emit(evt.event, evt.payload);
|
|
90
|
+
previousEvent.call(bridge, evt);
|
|
91
|
+
};
|
|
82
92
|
}
|
|
83
93
|
handleNativeResponse(res) {
|
|
84
94
|
if (!res || !res.id)
|
|
@@ -105,8 +115,8 @@ export class NativeBridgeTransport {
|
|
|
105
115
|
}
|
|
106
116
|
}
|
|
107
117
|
invoke(action, payload = {}, timeoutMs) {
|
|
108
|
-
const id = `
|
|
109
|
-
const timeout = timeoutMs ?? this.defaultTimeoutMs;
|
|
118
|
+
const id = `sdk_req_${Date.now()}_${requestSequence++}`;
|
|
119
|
+
const timeout = bridgeTimeoutMs(action, timeoutMs ?? this.defaultTimeoutMs);
|
|
110
120
|
const request = {
|
|
111
121
|
id,
|
|
112
122
|
action,
|
|
@@ -150,7 +160,7 @@ export class NativeBridgeTransport {
|
|
|
150
160
|
if (win.FlutterBridge?.postMessage) {
|
|
151
161
|
win.FlutterBridge.postMessage(JSON.stringify(request));
|
|
152
162
|
}
|
|
153
|
-
else if (win.SuperAppBridge?.postMessage) {
|
|
163
|
+
else if (isNativeBridgeAvailable() && win.SuperAppBridge?.postMessage) {
|
|
154
164
|
win.SuperAppBridge.postMessage(request);
|
|
155
165
|
}
|
|
156
166
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-transport.js","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"native-transport.js","sourceRoot":"","sources":["../../src/transport/native-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { ITransport } from './transport.interface.js';
|
|
|
2
2
|
import { BridgeEventListener, TransportConfig, TransportType } from './types.js';
|
|
3
3
|
export declare class PostMessageTransport implements ITransport {
|
|
4
4
|
private appId;
|
|
5
|
-
private defaultTimeoutMs
|
|
5
|
+
private defaultTimeoutMs?;
|
|
6
6
|
private debug;
|
|
7
7
|
private callbacks;
|
|
8
8
|
private listeners;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postmessage-transport.d.ts","sourceRoot":"","sources":["../../src/transport/postmessage-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postmessage-transport.d.ts","sourceRoot":"","sources":["../../src/transport/postmessage-transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAe,mBAAmB,EAAiC,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI7H,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAmG;IACpH,OAAO,CAAC,SAAS,CAAoD;IACrE,OAAO,CAAC,eAAe,CAAC,CAAgC;gBAE5C,MAAM,GAAE,eAAoB;IAOjC,OAAO,IAAI,aAAa;IAIxB,WAAW,IAAI,OAAO;IAI7B,OAAO,CAAC,mBAAmB;IAkCpB,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;IA4ClG,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;IAavC,OAAO,IAAI,IAAI;CAKvB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bridgeTimeoutMs } from './timeout-policy.js';
|
|
1
2
|
let requestSequence = 1;
|
|
2
3
|
export class PostMessageTransport {
|
|
3
4
|
appId;
|
|
@@ -8,7 +9,7 @@ export class PostMessageTransport {
|
|
|
8
9
|
messageListener;
|
|
9
10
|
constructor(config = {}) {
|
|
10
11
|
this.appId = config.appId || 'mini_app_simulator';
|
|
11
|
-
this.defaultTimeoutMs = config.timeoutMs
|
|
12
|
+
this.defaultTimeoutMs = config.timeoutMs;
|
|
12
13
|
this.debug = config.debug ?? false;
|
|
13
14
|
this.initMessageListener();
|
|
14
15
|
}
|
|
@@ -54,7 +55,7 @@ export class PostMessageTransport {
|
|
|
54
55
|
}
|
|
55
56
|
invoke(action, payload = {}, timeoutMs) {
|
|
56
57
|
const id = `req_${Date.now()}_${requestSequence++}`;
|
|
57
|
-
const timeout = timeoutMs ?? this.defaultTimeoutMs;
|
|
58
|
+
const timeout = bridgeTimeoutMs(action, timeoutMs ?? this.defaultTimeoutMs);
|
|
58
59
|
const request = {
|
|
59
60
|
id,
|
|
60
61
|
action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postmessage-transport.js","sourceRoot":"","sources":["../../src/transport/postmessage-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postmessage-transport.js","sourceRoot":"","sources":["../../src/transport/postmessage-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const INTERACTIVE_BRIDGE_TIMEOUT_MS: number;
|
|
2
|
+
export declare const DEFAULT_BRIDGE_TIMEOUT_MS: number;
|
|
3
|
+
export declare const INTERACTIVE_BRIDGE_ACTIONS: Set<string>;
|
|
4
|
+
export declare function bridgeTimeoutMs(action: string, override?: number): number;
|
|
5
|
+
//# sourceMappingURL=timeout-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout-policy.d.ts","sourceRoot":"","sources":["../../src/transport/timeout-policy.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,6BAA6B,QAAgB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,QAAY,CAAC;AACnD,eAAO,MAAM,0BAA0B,aAUrC,CAAC;AAEH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Interactive native screens include time spent reading permission prompts,
|
|
2
|
+
// aiming a camera, choosing a file, or completing a checkout.
|
|
3
|
+
export const INTERACTIVE_BRIDGE_TIMEOUT_MS = 5 * 60 * 1000;
|
|
4
|
+
export const DEFAULT_BRIDGE_TIMEOUT_MS = 60 * 1000;
|
|
5
|
+
export const INTERACTIVE_BRIDGE_ACTIONS = new Set([
|
|
6
|
+
'scanQr', 'scanQRCode', 'scanBarcode', 'device.scanQr', 'device.scanQRCode',
|
|
7
|
+
'device.scanBarcode', 'media.scanQRCode', 'getPhoto', 'pickImages', 'pickVideo',
|
|
8
|
+
'chooseImage', 'device.pickImage', 'media.chooseImage', 'media.getPhoto',
|
|
9
|
+
'media.pickImages', 'media.pickVideo', 'pickFile', 'saveFile', 'filePreview',
|
|
10
|
+
'saveImageToGallery', 'saveVideoToGallery', 'speechToText', 'utility.speechToText',
|
|
11
|
+
'permission.request', 'getContacts', 'device.getContacts', 'payment.openCheckout',
|
|
12
|
+
'payment.requestPayment', 'requestSendNotification', 'ui.requestSendNotification',
|
|
13
|
+
'notification.requestSendNotification', 'ui.showAlert', 'ui.showConfirm',
|
|
14
|
+
'showAlert', 'showConfirm',
|
|
15
|
+
]);
|
|
16
|
+
export function bridgeTimeoutMs(action, override) {
|
|
17
|
+
return override ?? (INTERACTIVE_BRIDGE_ACTIONS.has(action)
|
|
18
|
+
? INTERACTIVE_BRIDGE_TIMEOUT_MS : DEFAULT_BRIDGE_TIMEOUT_MS);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=timeout-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout-policy.js","sourceRoot":"","sources":["../../src/transport/timeout-policy.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB;IAC3E,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW;IAC/E,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB;IACxE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa;IAC5E,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,sBAAsB;IAClF,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,sBAAsB;IACjF,wBAAwB,EAAE,yBAAyB,EAAE,4BAA4B;IACjF,sCAAsC,EAAE,cAAc,EAAE,gBAAgB;IACxE,WAAW,EAAE,aAAa;CAC3B,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,QAAiB;IAC/D,OAAO,QAAQ,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC;QACxD,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACjE,CAAC"}
|
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.7",
|
|
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",
|