@vqh2602/mini-app-sdk 0.0.0-stage → 1.0.1

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.
Files changed (158) hide show
  1. package/README.md +159 -2
  2. package/bin/miniapp.js +6 -0
  3. package/bin/simulator.js +74 -0
  4. package/dist/cli/commands/build.d.ts +5 -0
  5. package/dist/cli/commands/build.d.ts.map +1 -0
  6. package/dist/cli/commands/build.js +65 -0
  7. package/dist/cli/commands/build.js.map +1 -0
  8. package/dist/cli/commands/create.d.ts +5 -0
  9. package/dist/cli/commands/create.d.ts.map +1 -0
  10. package/dist/cli/commands/create.js +220 -0
  11. package/dist/cli/commands/create.js.map +1 -0
  12. package/dist/cli/commands/dev.d.ts +8 -0
  13. package/dist/cli/commands/dev.d.ts.map +1 -0
  14. package/dist/cli/commands/dev.js +41 -0
  15. package/dist/cli/commands/dev.js.map +1 -0
  16. package/dist/cli/commands/doctor.d.ts +2 -0
  17. package/dist/cli/commands/doctor.d.ts.map +1 -0
  18. package/dist/cli/commands/doctor.js +47 -0
  19. package/dist/cli/commands/doctor.js.map +1 -0
  20. package/dist/cli/commands/simulator.d.ts +6 -0
  21. package/dist/cli/commands/simulator.d.ts.map +1 -0
  22. package/dist/cli/commands/simulator.js +14 -0
  23. package/dist/cli/commands/simulator.js.map +1 -0
  24. package/dist/cli/commands/upload.d.ts +9 -0
  25. package/dist/cli/commands/upload.d.ts.map +1 -0
  26. package/dist/cli/commands/upload.js +107 -0
  27. package/dist/cli/commands/upload.js.map +1 -0
  28. package/dist/cli/index.d.ts +2 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +63 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/utils/config.d.ts +13 -0
  33. package/dist/cli/utils/config.d.ts.map +1 -0
  34. package/dist/cli/utils/config.js +26 -0
  35. package/dist/cli/utils/config.js.map +1 -0
  36. package/dist/cli/utils/logger.d.ts +9 -0
  37. package/dist/cli/utils/logger.d.ts.map +1 -0
  38. package/dist/cli/utils/logger.js +18 -0
  39. package/dist/cli/utils/logger.js.map +1 -0
  40. package/dist/cli/utils/server.d.ts +3 -0
  41. package/dist/cli/utils/server.d.ts.map +1 -0
  42. package/dist/cli/utils/server.js +71 -0
  43. package/dist/cli/utils/server.js.map +1 -0
  44. package/dist/core/client.d.ts +44 -0
  45. package/dist/core/client.d.ts.map +1 -0
  46. package/dist/core/client.js +94 -0
  47. package/dist/core/client.js.map +1 -0
  48. package/dist/core/index.d.ts +13 -0
  49. package/dist/core/index.d.ts.map +1 -0
  50. package/dist/core/index.js +14 -0
  51. package/dist/core/index.js.map +1 -0
  52. package/dist/core/modules/auth.d.ts +30 -0
  53. package/dist/core/modules/auth.d.ts.map +1 -0
  54. package/dist/core/modules/auth.js +37 -0
  55. package/dist/core/modules/auth.js.map +1 -0
  56. package/dist/core/modules/device.d.ts +34 -0
  57. package/dist/core/modules/device.d.ts.map +1 -0
  58. package/dist/core/modules/device.js +46 -0
  59. package/dist/core/modules/device.js.map +1 -0
  60. package/dist/core/modules/lifecycle.d.ts +19 -0
  61. package/dist/core/modules/lifecycle.d.ts.map +1 -0
  62. package/dist/core/modules/lifecycle.js +25 -0
  63. package/dist/core/modules/lifecycle.js.map +1 -0
  64. package/dist/core/modules/media.d.ts +15 -0
  65. package/dist/core/modules/media.d.ts.map +1 -0
  66. package/dist/core/modules/media.js +19 -0
  67. package/dist/core/modules/media.js.map +1 -0
  68. package/dist/core/modules/navigation.d.ts +19 -0
  69. package/dist/core/modules/navigation.d.ts.map +1 -0
  70. package/dist/core/modules/navigation.js +25 -0
  71. package/dist/core/modules/navigation.js.map +1 -0
  72. package/dist/core/modules/storage.d.ts +26 -0
  73. package/dist/core/modules/storage.d.ts.map +1 -0
  74. package/dist/core/modules/storage.js +46 -0
  75. package/dist/core/modules/storage.js.map +1 -0
  76. package/dist/core/modules/ui.d.ts +46 -0
  77. package/dist/core/modules/ui.d.ts.map +1 -0
  78. package/dist/core/modules/ui.js +72 -0
  79. package/dist/core/modules/ui.js.map +1 -0
  80. package/dist/core/types/index.d.ts +135 -0
  81. package/dist/core/types/index.d.ts.map +1 -0
  82. package/dist/core/types/index.js +2 -0
  83. package/dist/core/types/index.js.map +1 -0
  84. package/dist/index.d.ts +9 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +13 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/mock/handlers/auth.handler.d.ts +16 -0
  89. package/dist/mock/handlers/auth.handler.d.ts.map +1 -0
  90. package/dist/mock/handlers/auth.handler.js +62 -0
  91. package/dist/mock/handlers/auth.handler.js.map +1 -0
  92. package/dist/mock/handlers/device.handler.d.ts +16 -0
  93. package/dist/mock/handlers/device.handler.d.ts.map +1 -0
  94. package/dist/mock/handlers/device.handler.js +53 -0
  95. package/dist/mock/handlers/device.handler.js.map +1 -0
  96. package/dist/mock/handlers/media.handler.d.ts +9 -0
  97. package/dist/mock/handlers/media.handler.d.ts.map +1 -0
  98. package/dist/mock/handlers/media.handler.js +20 -0
  99. package/dist/mock/handlers/media.handler.js.map +1 -0
  100. package/dist/mock/handlers/storage.handler.d.ts +18 -0
  101. package/dist/mock/handlers/storage.handler.d.ts.map +1 -0
  102. package/dist/mock/handlers/storage.handler.js +40 -0
  103. package/dist/mock/handlers/storage.handler.js.map +1 -0
  104. package/dist/mock/handlers/ui.handler.d.ts +34 -0
  105. package/dist/mock/handlers/ui.handler.d.ts.map +1 -0
  106. package/dist/mock/handlers/ui.handler.js +59 -0
  107. package/dist/mock/handlers/ui.handler.js.map +1 -0
  108. package/dist/mock/index.d.ts +10 -0
  109. package/dist/mock/index.d.ts.map +1 -0
  110. package/dist/mock/index.js +10 -0
  111. package/dist/mock/index.js.map +1 -0
  112. package/dist/mock/mock-engine.d.ts +39 -0
  113. package/dist/mock/mock-engine.d.ts.map +1 -0
  114. package/dist/mock/mock-engine.js +205 -0
  115. package/dist/mock/mock-engine.js.map +1 -0
  116. package/dist/mock/presets.d.ts +3 -0
  117. package/dist/mock/presets.d.ts.map +1 -0
  118. package/dist/mock/presets.js +43 -0
  119. package/dist/mock/presets.js.map +1 -0
  120. package/dist/mock/store.d.ts +36 -0
  121. package/dist/mock/store.d.ts.map +1 -0
  122. package/dist/mock/store.js +133 -0
  123. package/dist/mock/store.js.map +1 -0
  124. package/dist/mock/types.d.ts +60 -0
  125. package/dist/mock/types.d.ts.map +1 -0
  126. package/dist/mock/types.js +2 -0
  127. package/dist/mock/types.js.map +1 -0
  128. package/dist/transport/index.d.ts +7 -0
  129. package/dist/transport/index.d.ts.map +1 -0
  130. package/dist/transport/index.js +7 -0
  131. package/dist/transport/index.js.map +1 -0
  132. package/dist/transport/mock-transport.d.ts +20 -0
  133. package/dist/transport/mock-transport.d.ts.map +1 -0
  134. package/dist/transport/mock-transport.js +79 -0
  135. package/dist/transport/mock-transport.js.map +1 -0
  136. package/dist/transport/native-transport.d.ts +19 -0
  137. package/dist/transport/native-transport.d.ts.map +1 -0
  138. package/dist/transport/native-transport.js +151 -0
  139. package/dist/transport/native-transport.js.map +1 -0
  140. package/dist/transport/postmessage-transport.d.ts +20 -0
  141. package/dist/transport/postmessage-transport.d.ts.map +1 -0
  142. package/dist/transport/postmessage-transport.js +130 -0
  143. package/dist/transport/postmessage-transport.js.map +1 -0
  144. package/dist/transport/resolver.d.ts +11 -0
  145. package/dist/transport/resolver.d.ts.map +1 -0
  146. package/dist/transport/resolver.js +41 -0
  147. package/dist/transport/resolver.js.map +1 -0
  148. package/dist/transport/transport.interface.d.ts +10 -0
  149. package/dist/transport/transport.interface.d.ts.map +1 -0
  150. package/dist/transport/transport.interface.js +2 -0
  151. package/dist/transport/transport.interface.js.map +1 -0
  152. package/dist/transport/types.d.ts +46 -0
  153. package/dist/transport/types.d.ts.map +1 -0
  154. package/dist/transport/types.js +2 -0
  155. package/dist/transport/types.js.map +1 -0
  156. package/package.json +73 -4
  157. package/simulator-dist/assets/index-D5M_HJio.js +199 -0
  158. package/simulator-dist/index.html +15 -0
@@ -0,0 +1,47 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { logger } from '../utils/logger.js';
4
+ export async function runDoctor() {
5
+ logger.title('Kiểm tra môi trường phát triển Mini App (Doctor)');
6
+ // 1. Node.js
7
+ const nodeVer = process.version;
8
+ const major = parseInt(nodeVer.slice(1).split('.')[0], 10);
9
+ if (major >= 18) {
10
+ logger.success(`Node.js version: ${nodeVer} (Tốt)`);
11
+ }
12
+ else {
13
+ logger.warn(`Node.js version: ${nodeVer} (Khuyến nghị nâng cấp lên >= v18)`);
14
+ }
15
+ // 2. app.json
16
+ const manifestPath = path.join(process.cwd(), 'app.json');
17
+ if (fs.existsSync(manifestPath)) {
18
+ try {
19
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
20
+ logger.success(`Tìm thấy app.json hợp lệ: ${manifest.name} (${manifest.appId}) v${manifest.version}`);
21
+ }
22
+ catch {
23
+ logger.error('File app.json bị lỗi cú pháp JSON');
24
+ }
25
+ }
26
+ else {
27
+ logger.info('Chưa có file app.json trong thư mục hiện tại (Dùng "miniapp create <tên>" để tạo mới)');
28
+ }
29
+ // 3. Dynamic Registry Backend check
30
+ try {
31
+ const res = await fetch('http://localhost:3000/api/v1/registry/apps', {
32
+ headers: { 'x-tenant-id': 'tenant_001' },
33
+ signal: AbortSignal.timeout(1500),
34
+ });
35
+ if (res.ok) {
36
+ logger.success('Kết nối SuperApp Dynamic Registry Backend (Port 3000): Sẵn sàng');
37
+ }
38
+ else {
39
+ logger.warn(`Dynamic Registry Backend phản hồi HTTP ${res.status}`);
40
+ }
41
+ }
42
+ catch {
43
+ logger.info('Dynamic Registry Backend (Port 3000) chưa được bật hoặc chạy cổng khác');
44
+ }
45
+ console.log('\nMọi kiểm tra cơ bản đã hoàn tất!\n');
46
+ }
47
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAEjE,aAAa;IACb,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,oBAAoB,OAAO,QAAQ,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,oCAAoC,CAAC,CAAC;IAC/E,CAAC;IAED,cAAc;IACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,6BAA6B,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IACvG,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,4CAA4C,EAAE;YACpE,OAAO,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE;YACxC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface SimulatorCommandOptions {
2
+ port?: string;
3
+ appUrl?: string;
4
+ }
5
+ export declare function runSimulator(options?: SimulatorCommandOptions): Promise<void>;
6
+ //# sourceMappingURL=simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/simulator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAavF"}
@@ -0,0 +1,14 @@
1
+ import { startSimulatorServer } from '../utils/server.js';
2
+ import { logger } from '../utils/logger.js';
3
+ export async function runSimulator(options = {}) {
4
+ const port = parseInt(options.port || '5175', 10);
5
+ const appUrl = options.appUrl || 'http://localhost:3000';
6
+ logger.title(`Khởi chạy SuperApp Browser Simulator & DevTools`);
7
+ startSimulatorServer(port);
8
+ logger.info(`Để kết nối với Mini App, mở: http://localhost:${port}/?url=${encodeURIComponent(appUrl)}`);
9
+ process.on('SIGINT', () => {
10
+ logger.info('Đang dừng Browser Simulator...');
11
+ process.exit(0);
12
+ });
13
+ }
14
+ //# sourceMappingURL=simulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../../../src/cli/commands/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAO5C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAmC,EAAE;IACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,uBAAuB,CAAC;IAEzD,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAChE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAExG,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface UploadCommandOptions {
2
+ registry?: string;
3
+ tenantId?: string;
4
+ actorId?: string;
5
+ submit?: boolean;
6
+ notes?: string;
7
+ }
8
+ export declare function uploadProject(options?: UploadCommandOptions): Promise<void>;
9
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upload.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHrF"}
@@ -0,0 +1,107 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { loadManifest } from '../utils/config.js';
4
+ import { logger } from '../utils/logger.js';
5
+ export async function uploadProject(options = {}) {
6
+ const manifest = loadManifest();
7
+ const registryUrl = options.registry || process.env.SUPERAPP_REGISTRY_URL || 'http://localhost:3000';
8
+ const tenantId = options.tenantId || 'tenant_001';
9
+ const actorId = options.actorId || 'dev_partner_001';
10
+ logger.title(`Tải lên SuperApp Dynamic Registry: ${manifest.name}`);
11
+ const distPath = path.resolve(process.cwd(), 'dist');
12
+ const metaPath = path.join(distPath, 'bundle-meta.json');
13
+ if (!fs.existsSync(metaPath)) {
14
+ logger.warn('Chưa tìm thấy bundle đã build. Đang tự động chạy build trước...');
15
+ const { buildProject } = await import('./build.js');
16
+ await buildProject();
17
+ }
18
+ const bundleMeta = JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
19
+ logger.step(1, 3, `Đang kết nối đến Dynamic Registry Backend: ${registryUrl}`);
20
+ logger.info(`Tenant ID: ${tenantId}`);
21
+ logger.info(`App ID: ${manifest.appId} (v${manifest.version})`);
22
+ // Payload aligning with backend RegistryService
23
+ const updatePayload = {
24
+ name: manifest.name,
25
+ category: manifest.category || 'utilities',
26
+ description: manifest.description || '',
27
+ iconUrl: manifest.iconUrl || '',
28
+ runtimeType: 'web',
29
+ schemaDraft: {
30
+ version: manifest.version,
31
+ entry: manifest.entry,
32
+ permissions: manifest.permissions || [],
33
+ checksum: bundleMeta.checksum,
34
+ themeColor: manifest.themeColor || '#0068FF',
35
+ uploadedAt: new Date().toISOString(),
36
+ },
37
+ };
38
+ try {
39
+ // 1. Check or update draft
40
+ logger.step(2, 3, `Cập nhật bản thảo (Draft) lên Registry...`);
41
+ const updateRes = await fetch(`${registryUrl}/api/v1/registry/apps/${manifest.appId}`, {
42
+ method: 'PUT',
43
+ headers: {
44
+ 'Content-Type': 'application/json',
45
+ 'x-tenant-id': tenantId,
46
+ },
47
+ body: JSON.stringify(updatePayload),
48
+ });
49
+ if (!updateRes.ok) {
50
+ // If 404, create new draft
51
+ if (updateRes.status === 404) {
52
+ logger.info(`Mini App chưa tồn tại. Đang tạo mới bản ghi ứng dụng...`);
53
+ const createRes = await fetch(`${registryUrl}/api/v1/registry/apps`, {
54
+ method: 'POST',
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ 'x-tenant-id': tenantId,
58
+ },
59
+ body: JSON.stringify({
60
+ appId: manifest.appId,
61
+ ...updatePayload,
62
+ }),
63
+ });
64
+ if (!createRes.ok) {
65
+ const errText = await createRes.text();
66
+ throw new Error(`Tạo mới thất bại (HTTP ${createRes.status}): ${errText}`);
67
+ }
68
+ }
69
+ else {
70
+ const errText = await updateRes.text();
71
+ throw new Error(`Cập nhật thất bại (HTTP ${updateRes.status}): ${errText}`);
72
+ }
73
+ }
74
+ logger.success(`Cập nhật bản nháp Mini App thành công!`);
75
+ // 2. Submit for review if requested
76
+ if (options.submit) {
77
+ logger.step(3, 3, `Gửi yêu cầu xét duyệt phiên bản ${manifest.version}...`);
78
+ const submitRes = await fetch(`${registryUrl}/api/v1/registry/apps/${manifest.appId}/submit`, {
79
+ method: 'POST',
80
+ headers: {
81
+ 'Content-Type': 'application/json',
82
+ 'x-tenant-id': tenantId,
83
+ 'x-user-id': actorId,
84
+ },
85
+ body: JSON.stringify({
86
+ version: manifest.version,
87
+ changelog: options.notes || `Phát hành phiên bản ${manifest.version} từ Mini App CLI`,
88
+ }),
89
+ });
90
+ if (!submitRes.ok) {
91
+ const errText = await submitRes.text();
92
+ throw new Error(`Gửi xét duyệt thất bại (HTTP ${submitRes.status}): ${errText}`);
93
+ }
94
+ logger.success(`Đã gửi xét duyệt phiên bản v${manifest.version}! Trạng thái: SUBMITTED`);
95
+ logger.info(`Admin có thể phê duyệt tại: http://localhost:5174/admin`);
96
+ }
97
+ else {
98
+ logger.step(3, 3, `Bản nháp đã được lưu. Để gửi xét duyệt, chạy lại kèm cờ --submit`);
99
+ }
100
+ console.log(`\n🎉 Hoàn tất quy trình xuất bản!`);
101
+ }
102
+ catch (err) {
103
+ logger.error('Lỗi khi tải lên SuperApp Registry:', err.message);
104
+ process.exit(1);
105
+ }
106
+ }
107
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/cli/commands/upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import { Command } from 'commander';
2
+ import { buildProject } from './commands/build.js';
3
+ import { createProject } from './commands/create.js';
4
+ import { devServer } from './commands/dev.js';
5
+ import { runDoctor } from './commands/doctor.js';
6
+ import { runSimulator } from './commands/simulator.js';
7
+ import { uploadProject } from './commands/upload.js';
8
+ const program = new Command();
9
+ program
10
+ .name('miniapp')
11
+ .description('SuperApp Mini App Developer CLI: Create, Dev, Build, and Upload')
12
+ .version('1.0.0');
13
+ program
14
+ .command('create <project-name>')
15
+ .description('Khởi tạo một dự án Mini App mới từ mẫu chuẩn SuperApp')
16
+ .option('-t, --template <template>', 'Mẫu giao diện (react | vanilla-ts)', 'vanilla-ts')
17
+ .action((projectName, options) => {
18
+ createProject(projectName, options);
19
+ });
20
+ program
21
+ .command('dev')
22
+ .description('Khởi chạy Development Server và mở Browser Simulator')
23
+ .option('-p, --port <port>', 'Cổng Vite dev server', '3000')
24
+ .option('-s, --simulator-port <port>', 'Cổng Browser Simulator', '5175')
25
+ .option('--open', 'Tự động mở trình duyệt')
26
+ .option('--no-simulator', 'Không khởi chạy Browser Simulator kèm theo')
27
+ .action((options) => {
28
+ devServer(options);
29
+ });
30
+ program
31
+ .command('simulator')
32
+ .description('Khởi chạy Browser Simulator & DevTools độc lập')
33
+ .option('-p, --port <port>', 'Cổng Browser Simulator', '5175')
34
+ .option('-u, --app-url <url>', 'Địa chỉ Mini App đang chạy để kết nối', 'http://localhost:3000')
35
+ .action((options) => {
36
+ runSimulator(options);
37
+ });
38
+ program
39
+ .command('build')
40
+ .description('Đóng gói Mini App thành bundle sẵn sàng xuất bản')
41
+ .option('-o, --out-dir <dir>', 'Thư mục xuất kết quả build', 'dist')
42
+ .action((options) => {
43
+ buildProject(options);
44
+ });
45
+ program
46
+ .command('upload')
47
+ .description('Tải lên bản nháp hoặc gửi xét duyệt Mini App lên Dynamic Registry Backend')
48
+ .option('-r, --registry <url>', 'Địa chỉ backend registry API', 'http://localhost:3000')
49
+ .option('-t, --tenant-id <tenantId>', 'Mã định danh Tenant', 'tenant_001')
50
+ .option('-a, --actor-id <actorId>', 'Mã người thực hiện tải lên', 'dev_partner_001')
51
+ .option('--submit', 'Gửi trực tiếp vào hàng đợi xét duyệt (SUBMITTED)')
52
+ .option('-n, --notes <notes>', 'Ghi chú thay đổi (changelog)')
53
+ .action((options) => {
54
+ uploadProject(options);
55
+ });
56
+ program
57
+ .command('doctor')
58
+ .description('Kiểm tra môi trường phát triển và kết nối dịch vụ SuperApp')
59
+ .action(() => {
60
+ runDoctor();
61
+ });
62
+ program.parse(process.argv);
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface MiniAppManifest {
2
+ appId: string;
3
+ name: string;
4
+ version: string;
5
+ description?: string;
6
+ entry: string;
7
+ category?: string;
8
+ iconUrl?: string;
9
+ themeColor?: string;
10
+ permissions?: string[];
11
+ }
12
+ export declare function loadManifest(cwd?: string): MiniAppManifest;
13
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,eAAe,CAwBzE"}
@@ -0,0 +1,26 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ export function loadManifest(cwd = process.cwd()) {
4
+ const manifestPath = path.join(cwd, 'app.json');
5
+ if (!fs.existsSync(manifestPath)) {
6
+ throw new Error(`File cấu hình "app.json" không tồn tại trong thư mục: ${cwd}`);
7
+ }
8
+ try {
9
+ const content = fs.readFileSync(manifestPath, 'utf-8');
10
+ const manifest = JSON.parse(content);
11
+ if (!manifest.appId) {
12
+ throw new Error('Trường "appId" là bắt buộc trong app.json (ví dụ: "coffee_shop")');
13
+ }
14
+ if (!manifest.name) {
15
+ throw new Error('Trường "name" là bắt buộc trong app.json');
16
+ }
17
+ if (!manifest.version) {
18
+ throw new Error('Trường "version" là bắt buộc trong app.json (ví dụ: "1.0.0")');
19
+ }
20
+ return manifest;
21
+ }
22
+ catch (err) {
23
+ throw new Error(`Lỗi đọc file app.json: ${err.message}`);
24
+ }
25
+ }
26
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,MAAM,UAAU,YAAY,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,yDAAyD,GAAG,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;QAExD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const logger: {
2
+ info: (msg: string) => void;
3
+ success: (msg: string) => void;
4
+ warn: (msg: string) => void;
5
+ error: (msg: string, err?: any) => void;
6
+ title: (msg: string) => void;
7
+ step: (step: number, total: number, msg: string) => void;
8
+ };
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;gBACL,MAAM;mBACH,MAAM;gBACT,MAAM;iBACL,MAAM,QAAQ,GAAG;iBAIjB,MAAM;iBAGN,MAAM,SAAS,MAAM,OAAO,MAAM;CAGhD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import pc from 'picocolors';
2
+ export const logger = {
3
+ info: (msg) => console.log(`${pc.cyan('ℹ')} ${pc.bold(msg)}`),
4
+ success: (msg) => console.log(`${pc.green('✔')} ${pc.bold(pc.green(msg))}`),
5
+ warn: (msg) => console.log(`${pc.yellow('⚠')} ${pc.yellow(msg)}`),
6
+ error: (msg, err) => {
7
+ console.error(`${pc.red('✖')} ${pc.bold(pc.red(msg))}`);
8
+ if (err)
9
+ console.error(err);
10
+ },
11
+ title: (msg) => {
12
+ console.log(`\n${pc.bgCyan(pc.black(' SUPERAPP MINI APP CLI '))} ${pc.bold(msg)}\n`);
13
+ },
14
+ step: (step, total, msg) => {
15
+ console.log(`${pc.dim(`[${step}/${total}]`)} ${msg}`);
16
+ },
17
+ };
18
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACzE,KAAK,EAAE,CAAC,GAAW,EAAE,GAAS,EAAE,EAAE;QAChC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import http from 'node:http';
2
+ export declare function startSimulatorServer(port?: number): http.Server;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAkB7B,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAa,GAAG,IAAI,CAAC,MAAM,CAiErE"}
@@ -0,0 +1,71 @@
1
+ import http from 'node:http';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { logger } from './logger.js';
6
+ const MIME_TYPES = {
7
+ '.html': 'text/html; charset=utf-8',
8
+ '.js': 'application/javascript; charset=utf-8',
9
+ '.css': 'text/css; charset=utf-8',
10
+ '.json': 'application/json',
11
+ '.png': 'image/png',
12
+ '.jpg': 'image/jpeg',
13
+ '.svg': 'image/svg+xml',
14
+ '.ico': 'image/x-icon',
15
+ '.woff2': 'font/woff2',
16
+ };
17
+ export function startSimulatorServer(port = 5175) {
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = path.dirname(__filename);
20
+ // Search candidate directories for simulator web bundle
21
+ const candidates = [
22
+ path.resolve(__dirname, '../../../simulator-dist'),
23
+ path.resolve(__dirname, '../../simulator-dist'),
24
+ path.resolve(__dirname, '../simulator-dist'),
25
+ path.resolve(__dirname, '../../../dist/simulator'),
26
+ path.resolve(__dirname, '../../dist/simulator'),
27
+ ];
28
+ let distDir = candidates.find((dir) => fs.existsSync(dir) && fs.existsSync(path.join(dir, 'index.html')));
29
+ if (!distDir) {
30
+ distDir = candidates[0];
31
+ }
32
+ const server = http.createServer((req, res) => {
33
+ res.setHeader('Access-Control-Allow-Origin', '*');
34
+ res.setHeader('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS');
35
+ if (req.method === 'OPTIONS') {
36
+ res.writeHead(204);
37
+ res.end();
38
+ return;
39
+ }
40
+ const parsedUrl = new URL(req.url || '/', `http://localhost:${port}`);
41
+ let pathname = parsedUrl.pathname;
42
+ let filePath = path.join(distDir, pathname);
43
+ if (!filePath.startsWith(distDir)) {
44
+ res.writeHead(403);
45
+ res.end('Forbidden');
46
+ return;
47
+ }
48
+ fs.stat(filePath, (err, stats) => {
49
+ if (err || !stats.isFile()) {
50
+ filePath = path.join(distDir, 'index.html');
51
+ }
52
+ const ext = path.extname(filePath).toLowerCase();
53
+ const contentType = MIME_TYPES[ext] || 'application/octet-stream';
54
+ fs.readFile(filePath, (readErr, data) => {
55
+ if (readErr) {
56
+ res.writeHead(404);
57
+ res.end('Not Found');
58
+ return;
59
+ }
60
+ res.writeHead(200, { 'Content-Type': contentType });
61
+ res.end(data);
62
+ });
63
+ });
64
+ });
65
+ server.listen(port, () => {
66
+ logger.success(`Browser Simulator đang chạy tại: http://localhost:${port}`);
67
+ logger.info(`Trải nghiệm giả lập Mini App tại: http://localhost:${port}/?url=http://localhost:3000`);
68
+ });
69
+ return server;
70
+ }
71
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/utils/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { ITransport, TransportType } from '../transport/index.js';
2
+ import { SDKMockEngine } from '../mock/index.js';
3
+ import { AuthModule } from './modules/auth.js';
4
+ import { DeviceModule } from './modules/device.js';
5
+ import { StorageModule } from './modules/storage.js';
6
+ import { UIModule } from './modules/ui.js';
7
+ import { NavigationModule } from './modules/navigation.js';
8
+ import { MediaModule } from './modules/media.js';
9
+ import { LifecycleModule } from './modules/lifecycle.js';
10
+ import { AuthLoginOptions, AuthLoginResult, ConfigAppViewOptions, KeepScreenOptions, MinimizeAppResult, NotificationResult, RequestSendNotificationOptions, SDKInitOptions, SetNavigationBarColorOptions, ToastOptions, UserProfile } from './types/index.js';
11
+ export declare class SuperAppSDK {
12
+ readonly version = "1.0.0";
13
+ readonly transport: ITransport;
14
+ readonly mockEngine?: SDKMockEngine;
15
+ readonly auth: AuthModule;
16
+ readonly device: DeviceModule;
17
+ readonly storage: StorageModule;
18
+ readonly ui: UIModule;
19
+ readonly navigation: NavigationModule;
20
+ readonly media: MediaModule;
21
+ readonly lifecycle: LifecycleModule;
22
+ constructor(options?: SDKInitOptions & {
23
+ forceTransport?: TransportType;
24
+ });
25
+ login(options?: AuthLoginOptions): Promise<AuthLoginResult>;
26
+ getUserProfile(): Promise<UserProfile>;
27
+ showToast(options: ToastOptions | string): Promise<void>;
28
+ vibrate(style?: 'light' | 'medium' | 'heavy'): Promise<void>;
29
+ closeApp(): Promise<void>;
30
+ minimizeApp(): Promise<MinimizeAppResult>;
31
+ configAppView(options: ConfigAppViewOptions): Promise<any>;
32
+ setNavigationBarTitle(title: string | {
33
+ title: string;
34
+ }): Promise<void>;
35
+ setNavigationBarColor(options: SetNavigationBarColorOptions | string): Promise<void>;
36
+ keepScreen(options?: KeepScreenOptions | boolean): Promise<{
37
+ success: boolean;
38
+ keepScreenOn: boolean;
39
+ }>;
40
+ requestSendNotification(options?: RequestSendNotificationOptions): Promise<NotificationResult>;
41
+ on(event: string, callback: (payload: any) => void): () => void;
42
+ off(event: string, callback: (payload: any) => void): void;
43
+ }
44
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,94 @@
1
+ import { MockBridgeTransport, TransportResolver } from '../transport/index.js';
2
+ import { SDKMockEngine } from '../mock/index.js';
3
+ import { AuthModule } from './modules/auth.js';
4
+ import { DeviceModule } from './modules/device.js';
5
+ import { StorageModule } from './modules/storage.js';
6
+ import { UIModule } from './modules/ui.js';
7
+ import { NavigationModule } from './modules/navigation.js';
8
+ import { MediaModule } from './modules/media.js';
9
+ import { LifecycleModule } from './modules/lifecycle.js';
10
+ export class SuperAppSDK {
11
+ version = '1.0.0';
12
+ transport;
13
+ mockEngine;
14
+ // Domain modules
15
+ auth;
16
+ device;
17
+ storage;
18
+ ui;
19
+ navigation;
20
+ media;
21
+ lifecycle;
22
+ constructor(options = {}) {
23
+ // If running in pure mock environment, setup local engine
24
+ let mockEngine;
25
+ let mockDispatcher;
26
+ // Detect if need fallback mock dispatcher
27
+ const needsMock = options.forceTransport === 'mock' ||
28
+ (typeof window === 'undefined' || (!window.FlutterBridge && window.parent === window));
29
+ if (needsMock) {
30
+ mockEngine = new SDKMockEngine({ autoApprovePayment: true });
31
+ mockDispatcher = (req) => mockEngine.dispatch(req);
32
+ }
33
+ this.mockEngine = mockEngine;
34
+ this.transport = TransportResolver.resolve({
35
+ appId: options.appId,
36
+ debug: options.debug,
37
+ timeoutMs: options.timeoutMs,
38
+ forceTransport: options.forceTransport,
39
+ mockDispatcher,
40
+ });
41
+ // If MockBridgeTransport was created and we have mockEngine, attach
42
+ if (this.transport instanceof MockBridgeTransport && mockDispatcher) {
43
+ this.transport.setDispatcher(mockDispatcher);
44
+ }
45
+ this.auth = new AuthModule(this.transport);
46
+ this.device = new DeviceModule(this.transport);
47
+ this.storage = new StorageModule(this.transport);
48
+ this.ui = new UIModule(this.transport);
49
+ this.navigation = new NavigationModule(this.transport);
50
+ this.media = new MediaModule(this.transport);
51
+ this.lifecycle = new LifecycleModule(this.transport);
52
+ }
53
+ // Top-level shortcuts
54
+ login(options) {
55
+ return this.auth.login(options);
56
+ }
57
+ getUserProfile() {
58
+ return this.auth.getUserProfile();
59
+ }
60
+ showToast(options) {
61
+ return this.ui.showToast(options);
62
+ }
63
+ vibrate(style) {
64
+ return this.device.vibrate(style);
65
+ }
66
+ closeApp() {
67
+ return this.navigation.closeApp();
68
+ }
69
+ minimizeApp() {
70
+ return this.navigation.minimizeApp();
71
+ }
72
+ configAppView(options) {
73
+ return this.ui.configAppView(options);
74
+ }
75
+ setNavigationBarTitle(title) {
76
+ return this.ui.setNavigationBarTitle(title);
77
+ }
78
+ setNavigationBarColor(options) {
79
+ return this.ui.setNavigationBarColor(options);
80
+ }
81
+ keepScreen(options) {
82
+ return this.device.keepScreen(options);
83
+ }
84
+ requestSendNotification(options) {
85
+ return this.ui.requestSendNotification(options);
86
+ }
87
+ on(event, callback) {
88
+ return this.transport.on(event, callback);
89
+ }
90
+ off(event, callback) {
91
+ this.transport.off(event, callback);
92
+ }
93
+ }
94
+ //# sourceMappingURL=client.js.map
@@ -0,0 +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;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;AAezD,MAAM,OAAO,WAAW;IACN,OAAO,GAAG,OAAO,CAAC;IAClB,SAAS,CAAa;IACtB,UAAU,CAAiB;IAE3C,iBAAiB;IACD,IAAI,CAAa;IACjB,MAAM,CAAe;IACrB,OAAO,CAAgB;IACvB,EAAE,CAAW;IACb,UAAU,CAAmB;IAC7B,KAAK,CAAc;IACnB,SAAS,CAAkB;IAE3C,YAAY,UAA+D,EAAE;QAC3E,0DAA0D;QAC1D,IAAI,UAAqC,CAAC;QAC1C,IAAI,cAAc,CAAC;QAEnB,0CAA0C;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,KAAK,MAAM;YACjD,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;QAElG,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,GAAG,IAAI,aAAa,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,cAAc,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,UAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC;YACzC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,cAAc;SACf,CAAC,CAAC;QAEH,oEAAoE;QACpE,IAAI,IAAI,CAAC,SAAS,YAAY,mBAAmB,IAAI,cAAc,EAAE,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,sBAAsB;IACf,KAAK,CAAC,OAA0B;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,OAA8B;QAC7C,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,OAAO,CAAC,KAAoC;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAEM,aAAa,CAAC,OAA6B;QAChD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAEM,qBAAqB,CAAC,KAAiC;QAC5D,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,qBAAqB,CAAC,OAA8C;QACzE,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEM,UAAU,CAAC,OAAqC;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,uBAAuB,CAAC,OAAwC;QACrE,OAAO,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAEM,EAAE,CAAC,KAAa,EAAE,QAAgC;QACvD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,QAAgC;QACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF"}