@leonxin/meetgames 0.1.8 → 0.1.11

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 (285) hide show
  1. package/.agents/skills/meet-sdk-regression/SKILL.md +93 -0
  2. package/.cursor/mcp.example.json +16 -0
  3. package/.cursor/mcp.json +11 -0
  4. package/.cursor/skills/meetgames-mcp/SKILL.md +48 -0
  5. package/.vite/vitest/results.json +1 -0
  6. package/README.md +31 -8
  7. package/dist/aab-converter/aab-entry.d.ts +3 -0
  8. package/dist/aab-converter/aab-entry.d.ts.map +1 -0
  9. package/dist/aab-converter/aab-entry.js +49 -0
  10. package/dist/aab-converter/aab-entry.js.map +1 -0
  11. package/dist/aab-converter/apksExtractor.d.ts +2 -0
  12. package/dist/aab-converter/apksExtractor.d.ts.map +1 -0
  13. package/dist/aab-converter/apksExtractor.js +108 -0
  14. package/dist/aab-converter/apksExtractor.js.map +1 -0
  15. package/dist/aab-converter/bundletoolRunner.d.ts +15 -0
  16. package/dist/aab-converter/bundletoolRunner.d.ts.map +1 -0
  17. package/dist/aab-converter/bundletoolRunner.js +46 -0
  18. package/dist/aab-converter/bundletoolRunner.js.map +1 -0
  19. package/dist/aab-converter/cliArgs.d.ts +27 -0
  20. package/dist/aab-converter/cliArgs.d.ts.map +1 -0
  21. package/dist/aab-converter/cliArgs.js +170 -0
  22. package/dist/aab-converter/cliArgs.js.map +1 -0
  23. package/dist/aab-converter/convertAabToApk.d.ts +7 -0
  24. package/dist/aab-converter/convertAabToApk.d.ts.map +1 -0
  25. package/dist/aab-converter/convertAabToApk.js +69 -0
  26. package/dist/aab-converter/convertAabToApk.js.map +1 -0
  27. package/dist/aab-converter/resourcePaths.d.ts +4 -0
  28. package/dist/aab-converter/resourcePaths.d.ts.map +1 -0
  29. package/dist/aab-converter/resourcePaths.js +42 -0
  30. package/dist/aab-converter/resourcePaths.js.map +1 -0
  31. package/dist/aab-converter/signingOptions.d.ts +9 -0
  32. package/dist/aab-converter/signingOptions.d.ts.map +1 -0
  33. package/dist/aab-converter/signingOptions.js +21 -0
  34. package/dist/aab-converter/signingOptions.js.map +1 -0
  35. package/dist/aab-converter/types.d.ts +24 -0
  36. package/dist/aab-converter/types.d.ts.map +1 -0
  37. package/dist/aab-converter/types.js +2 -0
  38. package/dist/aab-converter/types.js.map +1 -0
  39. package/dist/android/adapter.d.ts.map +1 -1
  40. package/dist/android/adapter.js +2 -2
  41. package/dist/android/adapter.js.map +1 -1
  42. package/dist/android/detect.d.ts +2 -2
  43. package/dist/android/detect.d.ts.map +1 -1
  44. package/dist/android/detect.js +36 -8
  45. package/dist/android/detect.js.map +1 -1
  46. package/dist/cli.d.ts.map +1 -1
  47. package/dist/cli.js +157 -31
  48. package/dist/cli.js.map +1 -1
  49. package/dist/config/meetSdkDefaultConfig.d.ts +19 -2
  50. package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
  51. package/dist/config/meetSdkDefaultConfig.js +67 -5
  52. package/dist/config/meetSdkDefaultConfig.js.map +1 -1
  53. package/dist/config/meetSdkIosConfig.d.ts +21 -0
  54. package/dist/config/meetSdkIosConfig.d.ts.map +1 -0
  55. package/dist/config/meetSdkIosConfig.js +66 -0
  56. package/dist/config/meetSdkIosConfig.js.map +1 -0
  57. package/dist/config/meetSdkRemoteConfig.d.ts +18 -1
  58. package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
  59. package/dist/config/meetSdkRemoteConfig.js +61 -25
  60. package/dist/config/meetSdkRemoteConfig.js.map +1 -1
  61. package/dist/contracts/types.d.ts +19 -6
  62. package/dist/contracts/types.d.ts.map +1 -1
  63. package/dist/core/doctor.d.ts +17 -0
  64. package/dist/core/doctor.d.ts.map +1 -0
  65. package/dist/core/doctor.js +444 -0
  66. package/dist/core/doctor.js.map +1 -0
  67. package/dist/core/pipeline.d.ts.map +1 -1
  68. package/dist/core/pipeline.js +0 -15
  69. package/dist/core/pipeline.js.map +1 -1
  70. package/dist/core/platform.d.ts +12 -0
  71. package/dist/core/platform.d.ts.map +1 -0
  72. package/dist/core/platform.js +40 -0
  73. package/dist/core/platform.js.map +1 -0
  74. package/dist/core/reporter.js +1 -1
  75. package/dist/core/reporter.js.map +1 -1
  76. package/dist/core/workspace.d.ts +2 -2
  77. package/dist/core/workspace.d.ts.map +1 -1
  78. package/dist/core/workspace.js +4 -5
  79. package/dist/core/workspace.js.map +1 -1
  80. package/dist/index.d.ts +3 -1
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +3 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/ios/channelConfig.d.ts +1 -0
  85. package/dist/ios/channelConfig.d.ts.map +1 -1
  86. package/dist/ios/channelConfig.js +82 -0
  87. package/dist/ios/channelConfig.js.map +1 -1
  88. package/dist/ios/codeUtils.d.ts +1 -0
  89. package/dist/ios/codeUtils.d.ts.map +1 -1
  90. package/dist/ios/codeUtils.js +11 -2
  91. package/dist/ios/codeUtils.js.map +1 -1
  92. package/dist/ios/detect.d.ts +2 -2
  93. package/dist/ios/detect.d.ts.map +1 -1
  94. package/dist/ios/detect.js +49 -10
  95. package/dist/ios/detect.js.map +1 -1
  96. package/dist/ios/entitlements.d.ts +4 -0
  97. package/dist/ios/entitlements.d.ts.map +1 -0
  98. package/dist/ios/entitlements.js +53 -0
  99. package/dist/ios/entitlements.js.map +1 -0
  100. package/dist/ios/fileManager.d.ts.map +1 -1
  101. package/dist/ios/fileManager.js +3 -2
  102. package/dist/ios/fileManager.js.map +1 -1
  103. package/dist/ios/infoPlist.d.ts +1 -1
  104. package/dist/ios/infoPlist.d.ts.map +1 -1
  105. package/dist/ios/infoPlist.js.map +1 -1
  106. package/dist/ios/integrate.d.ts.map +1 -1
  107. package/dist/ios/integrate.js +211 -36
  108. package/dist/ios/integrate.js.map +1 -1
  109. package/dist/ios/pbxprojEditor.d.ts +2 -0
  110. package/dist/ios/pbxprojEditor.d.ts.map +1 -1
  111. package/dist/ios/pbxprojEditor.js +179 -1
  112. package/dist/ios/pbxprojEditor.js.map +1 -1
  113. package/dist/ios/pluginConfig.d.ts +1 -0
  114. package/dist/ios/pluginConfig.d.ts.map +1 -1
  115. package/dist/ios/pluginConfig.js +36 -4
  116. package/dist/ios/pluginConfig.js.map +1 -1
  117. package/dist/ios/sdkBundle.d.ts +1 -1
  118. package/dist/ios/sdkBundle.d.ts.map +1 -1
  119. package/dist/ios/sdkBundle.js +7 -5
  120. package/dist/ios/sdkBundle.js.map +1 -1
  121. package/dist/ios/template.d.ts +1 -0
  122. package/dist/ios/template.d.ts.map +1 -1
  123. package/dist/ios/template.js +14 -1
  124. package/dist/ios/template.js.map +1 -1
  125. package/dist/ios/types.d.ts +2 -2
  126. package/dist/ios/types.d.ts.map +1 -1
  127. package/dist/mcp/server.d.ts.map +1 -1
  128. package/dist/mcp/server.js +14 -13
  129. package/dist/mcp/server.js.map +1 -1
  130. package/dist/mcp/service.d.ts +8 -6
  131. package/dist/mcp/service.d.ts.map +1 -1
  132. package/dist/mcp/service.js +34 -14
  133. package/dist/mcp/service.js.map +1 -1
  134. package/dist/ops/handlers.d.ts.map +1 -1
  135. package/dist/ops/handlers.js +10 -4
  136. package/dist/ops/handlers.js.map +1 -1
  137. package/dist/remote/sdkHomeDownload.d.ts +65 -0
  138. package/dist/remote/sdkHomeDownload.d.ts.map +1 -0
  139. package/dist/remote/sdkHomeDownload.js +208 -0
  140. package/dist/remote/sdkHomeDownload.js.map +1 -0
  141. package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -1
  142. package/dist/remote/topsdkDownloadSdkConfig.js +11 -1
  143. package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -1
  144. package/dist/shared/errors.d.ts +7 -0
  145. package/dist/shared/errors.d.ts.map +1 -0
  146. package/dist/shared/errors.js +16 -0
  147. package/dist/shared/errors.js.map +1 -0
  148. package/dist/shared/fileUtils.d.ts +5 -0
  149. package/dist/shared/fileUtils.d.ts.map +1 -0
  150. package/dist/shared/fileUtils.js +35 -0
  151. package/dist/shared/fileUtils.js.map +1 -0
  152. package/dist/shared/logger.d.ts +10 -0
  153. package/dist/shared/logger.d.ts.map +1 -0
  154. package/dist/shared/logger.js +37 -0
  155. package/dist/shared/logger.js.map +1 -0
  156. package/dist/shared/pathUtils.d.ts +4 -0
  157. package/dist/shared/pathUtils.d.ts.map +1 -0
  158. package/dist/shared/pathUtils.js +22 -0
  159. package/dist/shared/pathUtils.js.map +1 -0
  160. package/dist/shared/processRunner.d.ts +12 -0
  161. package/dist/shared/processRunner.d.ts.map +1 -0
  162. package/dist/shared/processRunner.js +31 -0
  163. package/dist/shared/processRunner.js.map +1 -0
  164. package/docs/AAB_CONVERTER_CLI_PLAN.md +392 -0
  165. package/docs/API.md +246 -32
  166. package/docs/CLI.md +292 -0
  167. package/docs/INTEGRATION.md +116 -0
  168. package/docs/MCP.md +86 -0
  169. package/docs/README.md +19 -10
  170. package/docs/{api → archive/api}/downloadSDKConfig.md +8 -6
  171. package/docs/{api → archive/api}/getChannelConfig-meetgames.md +1 -1
  172. package/docs/archive/ios-migration.md +2139 -0
  173. package/docs/{ → archive/product/}/346/212/200/346/234/257/346/226/271/346/241/210/350/260/203/347/240/224.md +7 -7
  174. package/docs/{ → archive/product/}/351/234/200/346/261/202/346/226/207/346/241/243.md +15 -14
  175. package/logs/convert-20260622-155037.log +5 -0
  176. package/logs/convert-20260622-155226.log +6 -0
  177. package/meetsdk-android.json +2 -1
  178. package/meetsdk-ios.json +15 -0
  179. package/package.json +10 -36
  180. package/scripts/package-aab-cli-win.mjs +193 -0
  181. package/src/aab-converter/aab-entry.ts +48 -0
  182. package/src/aab-converter/apksExtractor.ts +119 -0
  183. package/src/aab-converter/bundletoolRunner.ts +63 -0
  184. package/src/aab-converter/cliArgs.ts +194 -0
  185. package/src/aab-converter/convertAabToApk.ts +81 -0
  186. package/src/aab-converter/resourcePaths.ts +43 -0
  187. package/src/aab-converter/signingOptions.ts +29 -0
  188. package/src/aab-converter/types.ts +26 -0
  189. package/src/android/adapter.ts +9 -0
  190. package/src/android/assembleIntegrationJson.ts +33 -0
  191. package/src/android/detect.ts +132 -0
  192. package/src/android/downloadGoogleServicesJson.ts +56 -0
  193. package/src/android/gradle.ts +116 -0
  194. package/src/android/manifest.ts +50 -0
  195. package/src/android/meetSdkRemoteGradle.ts +837 -0
  196. package/src/cli.ts +488 -0
  197. package/src/config/fetchConfigWrite.ts +30 -0
  198. package/src/config/loadAndroidIntegration.ts +41 -0
  199. package/src/config/loadManifest.ts +40 -0
  200. package/src/config/meetSdkDefaultConfig.ts +99 -0
  201. package/src/config/meetSdkIosConfig.ts +87 -0
  202. package/src/config/meetSdkRemoteConfig.ts +1211 -0
  203. package/src/config/topsdkFeatureModules.ts +92 -0
  204. package/src/contracts/types.ts +121 -0
  205. package/src/core/doctor.ts +485 -0
  206. package/src/core/patch.ts +64 -0
  207. package/src/core/pipeline.ts +107 -0
  208. package/src/core/platform.ts +47 -0
  209. package/src/core/previewPatches.ts +23 -0
  210. package/src/core/reporter.ts +24 -0
  211. package/src/core/workspace.ts +29 -0
  212. package/src/entry.ts +7 -0
  213. package/src/index.ts +133 -0
  214. package/src/ios/channelConfig.ts +128 -0
  215. package/src/ios/codeUtils.ts +160 -0
  216. package/src/ios/detect.ts +105 -0
  217. package/src/ios/entitlements.ts +61 -0
  218. package/src/ios/fileManager.ts +48 -0
  219. package/src/ios/infoPlist.ts +55 -0
  220. package/src/ios/integrate.ts +516 -0
  221. package/src/ios/pbxprojEditor.ts +383 -0
  222. package/src/ios/pluginConfig.ts +97 -0
  223. package/src/ios/reserved.ts +8 -0
  224. package/src/ios/sdkBundle.ts +36 -0
  225. package/src/ios/template.ts +36 -0
  226. package/src/ios/types.ts +65 -0
  227. package/src/mcp/server.ts +170 -0
  228. package/src/mcp/service.ts +222 -0
  229. package/src/mcp-entry.ts +7 -0
  230. package/src/ops/fileStore.ts +56 -0
  231. package/src/ops/handlers.ts +304 -0
  232. package/src/remote/fetchJson.ts +22 -0
  233. package/src/remote/sdkHomeDownload.ts +274 -0
  234. package/src/remote/topsdkDownloadSdkConfig.ts +93 -0
  235. package/src/remote/topsdkGetSdkConfig.ts +122 -0
  236. package/src/remote/topsdkSign.ts +10 -0
  237. package/src/shared/errors.ts +16 -0
  238. package/src/shared/fileUtils.ts +41 -0
  239. package/src/shared/logger.ts +49 -0
  240. package/src/shared/pathUtils.ts +24 -0
  241. package/src/shared/processRunner.ts +43 -0
  242. package/test-projects/README.md +51 -0
  243. package/test-projects/_preview/pipeline.patch +281 -0
  244. package/tests/aab-converter.test.ts +213 -0
  245. package/tests/assemble.test.ts +12 -0
  246. package/tests/doctor.test.ts +89 -0
  247. package/tests/downloadGoogleServicesJson.test.ts +47 -0
  248. package/tests/fetch-remote.test.ts +23 -0
  249. package/tests/fetchConfigOverrides.test.ts +28 -0
  250. package/tests/fetchConfigWrite.test.ts +54 -0
  251. package/tests/gradle.test.ts +33 -0
  252. package/tests/integration-json.test.ts +29 -0
  253. package/tests/ios.codeUtils.test.ts +23 -0
  254. package/tests/ios.sdkBundle.test.ts +16 -0
  255. package/tests/loadManifest.test.ts +15 -0
  256. package/tests/manifest-xml.test.ts +30 -0
  257. package/tests/mcp.e2e.ts +217 -0
  258. package/tests/mcp.service.test.ts +53 -0
  259. package/tests/meetSdkRemoteConfig.test.ts +456 -0
  260. package/tests/meetSdkRemoteGradle.test.ts +414 -0
  261. package/tests/pipeline.android.test.ts +96 -0
  262. package/tests/pipeline.integration-json.test.ts +58 -0
  263. package/tests/pipeline.ios.test.ts +385 -0
  264. package/tests/pipeline.preview.patch.test.ts +85 -0
  265. package/tests/platformSelection.test.ts +77 -0
  266. package/tests/sdkHomeDownload.test.ts +124 -0
  267. package/tests/sdkVersionConfig.test.ts +130 -0
  268. package/tests/test-projects-hosts.test.ts +78 -0
  269. package/tests/topsdk.test.ts +53 -0
  270. package/tests/topsdkDownloadSdkConfig.test.ts +81 -0
  271. package/tests/topsdkFeatureModules.test.ts +116 -0
  272. package/tsconfig.json +19 -0
  273. package/vitest.config.ts +9 -0
  274. package/vitest.mcp.config.ts +11 -0
  275. package/bundled/android/sample.txt +0 -1
  276. package/docs/ANDROID.md +0 -133
  277. package/docs/CURSOR-MCP-SETUP.md +0 -72
  278. package/docs/MCP-SKILL.md +0 -63
  279. package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +0 -123
  280. package/fixtures/meetsdk-remote-config.download-shape.json +0 -20
  281. package/fixtures/meetsdk-remote-config.mock.json +0 -69
  282. package/fixtures/recipes/android-default.fixture.yaml +0 -15
  283. package/fixtures/recipes/android-integration.fixture.json +0 -29
  284. package/fixtures/topsdk-config-reference.json +0 -39
  285. /package/docs/{api → archive/api}/getSDKConfig.md +0 -0
package/dist/cli.js CHANGED
@@ -3,9 +3,12 @@ import path from "node:path";
3
3
  import { loadManifestFile } from "./config/loadManifest.js";
4
4
  import { buildWorkspaceContext, resolvePackageRoot } from "./core/workspace.js";
5
5
  import { runPipeline } from "./core/pipeline.js";
6
+ import { detectSinglePlatform, manifestForPlatform, platformContext, } from "./core/platform.js";
7
+ import { runDoctor } from "./core/doctor.js";
6
8
  import { clearPreviewPatchFilesIfTargetInside } from "./core/previewPatches.js";
7
9
  import { printReport } from "./core/reporter.js";
8
10
  import { defaultTopSdkBaseUrl, fetchTopSdkDownloadSdkConfig } from "./remote/topsdkDownloadSdkConfig.js";
11
+ import { defaultSdkHomeApiBaseUrl, downloadIosSdkToBundled, DEFAULT_IOS_SDK_PACKAGE_TYPE, } from "./remote/sdkHomeDownload.js";
9
12
  import { validateDownloadSdkConfigForWrite, writeDownloadSdkConfigRaw, } from "./config/fetchConfigWrite.js";
10
13
  import { MEETSDK_REMOTE_CONFIG_FILENAME, readMeetSdkRemoteChannel, tryParseAsMeetSdkRemoteConfig, } from "./config/meetSdkRemoteConfig.js";
11
14
  const EXIT = {
@@ -25,33 +28,44 @@ function printHelp() {
25
28
  meetgames — Android-first integration CLI (TypeScript)
26
29
 
27
30
  Usage:
28
- meetgames integrate [--project-root <path>] [--dry-run] [--verbose] [--patch-file <path>]
31
+ meetgames integrate [--project-root <path>] [--app-target <target>] [--dry-run] [--verbose] [--patch-file <path>]
29
32
  meetgames fetch-config [--app-id ID] [--app-secret SECRET] [--channel-type TYPE] [--env prod|pre|test] [--project-root <path>] [--verbose]
30
- meetgames setup [--app-id ID] [--app-secret SECRET] [--channel-type TYPE] [--env prod|pre|test] [--project-root <path>] [--dry-run] [--verbose] [--patch-file <path>]
31
- meetgames doctor [--project-root <path>] [--verbose]
33
+ meetgames download-ios-sdk [--version VERSION] [--plugins csv] [--package-type native|unity|cocos] [--sdk-api-base-url URL] [--output-dir <path>] [--verbose]
34
+ meetgames setup [--app-id ID] [--app-secret SECRET] [--channel-type TYPE] [--env prod|pre|test] [--project-root <path>] [--app-target <target>] [--dry-run] [--verbose] [--patch-file <path>]
35
+ meetgames doctor [--app-id ID] [--app-secret SECRET] [--channel-type TYPE] [--env prod|pre|test] --project-root <path> [--app-target <target>] [--verbose]
32
36
 
33
37
  Notes:
34
38
  - Source code is TypeScript only; published bin runs compiled output under dist/.
35
39
  - iOS: copies frameworks to topSDK/, edits project.pbxproj & Info.plist, injects AppDelegate (.m/.mm) when present (topsdk-tool-ios parity).
36
- - fetch-config calls TOPSDK downloadSDKConfig and writes the response body unchanged to <project-root>/meetsdk-remote-config.json (integrate merges meetsdk-android.json in memory only).
40
+ - fetch-config calls TOPSDK downloadSDKConfig and writes the response body unchanged to <project-root>/meetsdk-remote-config.json.
37
41
  - setup runs fetch-config then integrate in one process (same flags as both subcommands).
38
- - integrate uses recipes/integrate-default.yaml (Android + iOS steps; skips undetected platforms).
42
+ - doctor / setup / integrate require --project-root and auto-select exactly one platform from that root.
43
+ - doctor first fetches downloadSDKConfig to <project-root>/meetsdk-remote-config.json, then validates the detected platform integration.
44
+ - integrate uses recipes/integrate-default.yaml, filtered to the detected platform before execution.
39
45
  - iOS SDK is read from bundled/ios-sdk/ in the tool package (native iOS only).
46
+ - Android integrate/doctor reads the latest SDK version from sdk-home and stores it in meetsdk-android.json.
47
+ - download-ios-sdk calls sdk-home getDownLoadUrl, saves the iOS SDK zip under bundled/ios-sdk/, extracts it there, and stores the resolved version in meetsdk-ios.json.
40
48
  - fetch-config requires --app-secret (or TOPSDK_APP_SECRET) to sign downloadSDKConfig; appSecret is never read from meetsdk-remote-config.json.
41
- - When analytics.firebase is enabled, downloads google-services.json to {detected app module}/google-services.json (or JSON path/name).
49
+ - When analytics.firebase is enabled, Android downloads google-services.json to the detected/selected app module; iOS downloads GoogleService-Info.plist next to Info.plist.
42
50
  - fetch-config writes to <project-root>/meetsdk-remote-config.json.
43
51
  - fetch-config requires --channel-type (or channel in local meetsdk-remote-config.json / TOPSDK_CHANNEL_TYPE); not inferred from Android/iOS detection.
44
52
  - Recipe op gradle.applyMeetSdkRemoteConfig reads meetsdk-remote-config.json and writes TOPSDK marker blocks to root + app build.gradle (same idea as sdk-integration-agent gradleEditor).
45
53
 
46
54
  Options (global where noted):
47
- --project-root Host project directory (default: cwd); also sets fetch-config cache write location
55
+ --project-root Host project directory (default: cwd); for iOS it may point to the project root or directly to a .xcodeproj directory
56
+ --app-target App target to integrate/check: Android application Gradle module (e.g. :app or launcher) or iOS App target name
48
57
  --app-id fetch-config override; default reads topsdk.appId from meetsdk-remote-config.json
49
58
  --app-secret fetch-config: required appSecret for downloadSDKConfig sign (or env TOPSDK_APP_SECRET)
50
59
  --channel-type fetch-config: channelType query param for downloadSDKConfig (required unless channel in local file or TOPSDK_CHANNEL_TYPE)
51
- --auth-type 已忽略(downloadSDKConfig 不需要 authType);保留参数仅为兼容旧脚本
52
60
  --env fetch-config: prod(正式服,默认)| pre | test(开发调试)
53
61
  TOPSDK_API_BASE_URL fetch-config: 覆盖 API 根地址(如 http://localhost:18080/ 联调本机 console)
54
- --dry-run integrate: compute changes and patch preview without writing files (default is write to disk)
62
+ MEETGAMES_SDK_HOME_API_BASE_URL 覆盖 sdk-home API 根地址(默认 https://business-api.meetgames.com);用于 Android 最新版本查询和 iOS SDK 下载
63
+ --sdk-api-base-url sdk-home API 根地址;用于 Android 最新版本查询和 iOS SDK 下载
64
+ --version download-ios-sdk: 指定 iOS SDK 版本;不传时从 /sdk/home/version 读取最新 iOS 版本
65
+ --plugins download-ios-sdk: 逗号分隔插件列表;默认与下载页 iOS 默认选择一致
66
+ --package-type download-ios-sdk: native(默认)| unity | cocos
67
+ --output-dir download-ios-sdk: 解压目标目录;默认 <package-root>/bundled/ios-sdk
68
+ --dry-run integrate: compute changes and patch preview without writing host project files (default is write to disk)
55
69
  --report-file Write JSON report to path
56
70
  --patch-file integrate: write unified diff to this path (works with --dry-run). If under <pkg>/test-projects/_preview/, all existing files in that dir are removed first so only the latest patch remains.
57
71
  --verbose Verbose logs and full patch preview
@@ -66,6 +80,7 @@ function parseArgv(argv) {
66
80
  const out = {
67
81
  command: "",
68
82
  projectRoot: process.cwd(),
83
+ projectRootProvided: false,
69
84
  dryRun: false,
70
85
  verbose: false,
71
86
  reportFile: "",
@@ -76,7 +91,12 @@ function parseArgv(argv) {
76
91
  topsdkAppSecret: "",
77
92
  topsdkChannelType: "",
78
93
  topsdkPackageName: "",
79
- topsdkAuthTypes: [],
94
+ appTarget: "",
95
+ sdkHomeApiBaseUrl: "",
96
+ iosSdkVersion: "",
97
+ iosSdkPlugins: "",
98
+ iosSdkPackageType: "",
99
+ iosSdkOutputDir: "",
80
100
  };
81
101
  const rest = argv.slice(2);
82
102
  if (!rest.length || (rest[0]?.startsWith("-") ?? false)) {
@@ -100,6 +120,51 @@ function parseArgv(argv) {
100
120
  }
101
121
  if (t === "--project-root") {
102
122
  out.projectRoot = path.resolve(rest[i + 1] ?? "");
123
+ out.projectRootProvided = true;
124
+ i += 1;
125
+ continue;
126
+ }
127
+ if (t === "--app-target") {
128
+ out.appTarget = rest[i + 1] ?? "";
129
+ if (!out.appTarget || out.appTarget.startsWith("-"))
130
+ fail("--app-target requires a target name", EXIT.INVALID_ARGS);
131
+ i += 1;
132
+ continue;
133
+ }
134
+ if (t === "--sdk-api-base-url") {
135
+ out.sdkHomeApiBaseUrl = rest[i + 1] ?? "";
136
+ if (!out.sdkHomeApiBaseUrl || out.sdkHomeApiBaseUrl.startsWith("-")) {
137
+ fail("--sdk-api-base-url requires a URL", EXIT.INVALID_ARGS);
138
+ }
139
+ i += 1;
140
+ continue;
141
+ }
142
+ if (t === "--version") {
143
+ out.iosSdkVersion = rest[i + 1] ?? "";
144
+ if (!out.iosSdkVersion || out.iosSdkVersion.startsWith("-"))
145
+ fail("--version requires a version", EXIT.INVALID_ARGS);
146
+ i += 1;
147
+ continue;
148
+ }
149
+ if (t === "--plugins") {
150
+ out.iosSdkPlugins = rest[i + 1] ?? "";
151
+ if (!out.iosSdkPlugins || out.iosSdkPlugins.startsWith("-"))
152
+ fail("--plugins requires a comma-separated list", EXIT.INVALID_ARGS);
153
+ i += 1;
154
+ continue;
155
+ }
156
+ if (t === "--package-type") {
157
+ out.iosSdkPackageType = rest[i + 1] ?? "";
158
+ if (!out.iosSdkPackageType || out.iosSdkPackageType.startsWith("-")) {
159
+ fail("--package-type requires native, unity, or cocos", EXIT.INVALID_ARGS);
160
+ }
161
+ i += 1;
162
+ continue;
163
+ }
164
+ if (t === "--output-dir") {
165
+ out.iosSdkOutputDir = path.resolve(rest[i + 1] ?? "");
166
+ if (!out.iosSdkOutputDir || rest[i + 1]?.startsWith("-"))
167
+ fail("--output-dir requires a directory path", EXIT.INVALID_ARGS);
103
168
  i += 1;
104
169
  continue;
105
170
  }
@@ -127,11 +192,6 @@ function parseArgv(argv) {
127
192
  i += 1;
128
193
  continue;
129
194
  }
130
- if (t === "--auth-type") {
131
- out.topsdkAuthTypes.push(rest[i + 1] ?? "");
132
- i += 1;
133
- continue;
134
- }
135
195
  if (t === "--report-file") {
136
196
  out.reportFile = path.resolve(rest[i + 1] ?? "");
137
197
  i += 1;
@@ -147,17 +207,35 @@ function parseArgv(argv) {
147
207
  return out;
148
208
  }
149
209
  const DEFAULT_MANIFEST = "recipes/integrate-default.yaml";
150
- function cmdDoctor(parsed) {
151
- const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot());
152
- const summary = {
153
- projectRoot: ctx.projectRoot,
154
- packageRoot: ctx.packageRoot,
155
- engine: ctx.engine,
156
- android: ctx.android,
157
- ios: ctx.ios,
158
- iosReserved: ctx.iosReserved,
210
+ function requiresProjectRoot(command) {
211
+ return command === "doctor" || command === "setup" || command === "integrate";
212
+ }
213
+ function resolvedAppTarget(parsed) {
214
+ return parsed.appTarget;
215
+ }
216
+ function selectedPlatformContext(parsed) {
217
+ const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot(), {
218
+ appTarget: resolvedAppTarget(parsed),
219
+ sdkHomeApiBaseUrl: parsed.sdkHomeApiBaseUrl || undefined,
220
+ });
221
+ const detected = detectSinglePlatform(ctx);
222
+ if (!detected.ok)
223
+ fail(detected.error, EXIT.PROJECT_ERROR);
224
+ return {
225
+ platform: detected.platform,
226
+ ctx,
227
+ selectedCtx: platformContext(ctx, detected.platform),
159
228
  };
160
- console.log(JSON.stringify(summary, null, 2));
229
+ }
230
+ async function cmdDoctor(parsed) {
231
+ const { platform, selectedCtx } = selectedPlatformContext(parsed);
232
+ console.log("[meetgames] doctor: fetching remote config…");
233
+ await cmdFetchConfig(parsed);
234
+ console.log("[meetgames] doctor: checking project integration…");
235
+ const report = await runDoctor(selectedCtx, platform);
236
+ console.log(JSON.stringify(report, null, 2));
237
+ if (!report.ok)
238
+ process.exit(EXIT.CONFIG_ERROR);
161
239
  }
162
240
  /** 固定缓存路径:宿主工程根目录下的 meetsdk-remote-config.json */
163
241
  function meetSdkRemoteConfigCachePath(projectRoot) {
@@ -183,9 +261,6 @@ async function cmdFetchConfig(parsed) {
183
261
  (localConfig ? readMeetSdkRemoteChannel(localConfig) : "") ||
184
262
  process.env.TOPSDK_CHANNEL_TYPE ||
185
263
  "";
186
- if (parsed.topsdkAuthTypes.length > 0 || process.env.TOPSDK_AUTH_TYPES) {
187
- console.warn("[meetgames] note: --auth-type / TOPSDK_AUTH_TYPES are ignored; fetch-config uses downloadSDKConfig.");
188
- }
189
264
  if (!appId || !channelType || !appSecret) {
190
265
  fail(`fetch-config requires --app-id, --app-secret, and --channel-type (or TOPSDK_APP_ID / TOPSDK_APP_SECRET / TOPSDK_CHANNEL_TYPE; appSecret is not read from ${MEETSDK_REMOTE_CONFIG_FILENAME}).`, EXIT.INVALID_ARGS);
191
266
  }
@@ -232,8 +307,9 @@ async function cmdIntegrate(parsed) {
232
307
  catch (e) {
233
308
  fail(e instanceof Error ? e.message : String(e), EXIT.CONFIG_ERROR);
234
309
  }
235
- const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot());
236
- const { report, patch, binaryCopies } = await runPipeline(ctx, manifest, { dryRun: parsed.dryRun });
310
+ const { platform, ctx, selectedCtx } = selectedPlatformContext(parsed);
311
+ const selectedManifest = manifestForPlatform(manifest, platform);
312
+ const { report, patch, binaryCopies } = await runPipeline(selectedCtx, selectedManifest, { dryRun: parsed.dryRun });
237
313
  printReport(report, patch, parsed.verbose);
238
314
  if (binaryCopies.length) {
239
315
  console.log("[meetgames] planned binary copies:");
@@ -257,11 +333,51 @@ async function cmdIntegrate(parsed) {
257
333
  }
258
334
  }
259
335
  async function cmdSetup(parsed) {
336
+ selectedPlatformContext(parsed);
260
337
  console.log("[meetgames] setup: fetching remote config…");
261
338
  await cmdFetchConfig(parsed);
262
339
  console.log("[meetgames] setup: integrating project…");
263
340
  await cmdIntegrate(parsed);
264
341
  }
342
+ async function cmdDownloadIosSdk(parsed) {
343
+ const baseUrl = parsed.sdkHomeApiBaseUrl || process.env.MEETGAMES_SDK_HOME_API_BASE_URL?.trim() || defaultSdkHomeApiBaseUrl;
344
+ const packageType = parsed.iosSdkPackageType || DEFAULT_IOS_SDK_PACKAGE_TYPE;
345
+ if (!["native", "unity", "cocos"].includes(packageType)) {
346
+ fail(`invalid --package-type (use native, unity, or cocos): ${packageType}`, EXIT.INVALID_ARGS);
347
+ }
348
+ const plugins = parsed.iosSdkPlugins
349
+ ? parsed.iosSdkPlugins
350
+ .split(",")
351
+ .map((s) => s.trim())
352
+ .filter(Boolean)
353
+ : undefined;
354
+ if (parsed.iosSdkPlugins && !plugins?.length) {
355
+ fail("--plugins must contain at least one plugin", EXIT.INVALID_ARGS);
356
+ }
357
+ console.log("[meetgames] download-ios-sdk: resolving sdk-home iOS SDK…");
358
+ let result;
359
+ try {
360
+ result = await downloadIosSdkToBundled(resolvePackageRoot(), {
361
+ baseUrl,
362
+ version: parsed.iosSdkVersion || undefined,
363
+ plugins,
364
+ packageType,
365
+ outputDir: parsed.iosSdkOutputDir || undefined,
366
+ });
367
+ }
368
+ catch (e) {
369
+ fail(e instanceof Error ? e.message : String(e), EXIT.NETWORK_ERROR);
370
+ }
371
+ console.log(`[meetgames] downloaded iOS SDK ${result.version} zip: ${result.zipPath}`);
372
+ console.log(`[meetgames] extracted iOS SDK to: ${result.extractDir}`);
373
+ console.log(`[meetgames] resolved iOS SDK root: ${result.resolvedSdkRoot}`);
374
+ console.log(`[meetgames] updated iOS SDK config: ${result.iosConfigPath}`);
375
+ if (parsed.verbose) {
376
+ console.log(`[meetgames] GET ${result.versionUrl}`);
377
+ console.log(`[meetgames] GET ${result.downloadApiUrl}`);
378
+ console.log(`[meetgames] SDK zip URL: ${result.sdkZipUrl}`);
379
+ }
380
+ }
265
381
  export async function main() {
266
382
  const parsed = parseArgv(process.argv);
267
383
  if (parsed.help) {
@@ -272,12 +388,19 @@ export async function main() {
272
388
  printHelp();
273
389
  process.exit(EXIT.INVALID_ARGS);
274
390
  }
391
+ if (requiresProjectRoot(parsed.command) && !parsed.projectRootProvided) {
392
+ fail(`${parsed.command} requires --project-root`, EXIT.INVALID_ARGS);
393
+ }
275
394
  if (!fs.existsSync(parsed.projectRoot) || !fs.statSync(parsed.projectRoot).isDirectory()) {
276
395
  fail("project root does not exist or is not a directory", EXIT.INVALID_ARGS);
277
396
  }
397
+ if (parsed.appTarget && !["doctor", "setup", "integrate"].includes(parsed.command)) {
398
+ fail("--app-target is only supported by doctor, setup, and integrate", EXIT.INVALID_ARGS);
399
+ }
400
+ resolvedAppTarget(parsed);
278
401
  switch (parsed.command) {
279
402
  case "doctor":
280
- cmdDoctor(parsed);
403
+ await cmdDoctor(parsed);
281
404
  break;
282
405
  case "integrate":
283
406
  await cmdIntegrate(parsed);
@@ -285,6 +408,9 @@ export async function main() {
285
408
  case "fetch-config":
286
409
  await cmdFetchConfig(parsed);
287
410
  break;
411
+ case "download-ios-sdk":
412
+ await cmdDownloadIosSdk(parsed);
413
+ break;
288
414
  case "setup":
289
415
  await cmdSetup(parsed);
290
416
  break;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAqB,MAAM,qCAAqC,CAAC;AAE5H,OAAO,EACL,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,GAE9B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,IAAI,GAAG;IACX,EAAE,EAAE,CAAC;IACL,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC;CACR,CAAC;AAEX,SAAS,IAAI,CAAC,OAAe,EAAE,IAAY;IACzC,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAkBD,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAW;QAClB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;QAC1B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,MAAM;QACjB,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,EAAE;QACrB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;KACpB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC;YAC3B,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM;gBAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;;gBAC9D,IAAI,CAAC,2CAA2C,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YACrB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YACzB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC;YAC3B,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;YACxB,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,eAAe,EAAE,CAAC;YAC1B,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YACzB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAE1D,SAAS,SAAS,CAAC,MAAc;IAC/B,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,kDAAkD;AAClD,SAAS,4BAA4B,CAAC,WAAmB;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,4BAA4B,CAAC,WAAmB;IACvD,MAAM,UAAU,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAY,CAAC,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc;IAC1C,MAAM,GAAG,GAAG,4BAA4B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,4BAA4B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,IAAI,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IACjG,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAChF,MAAM,WAAW,GACf,MAAM,CAAC,iBAAiB;QACxB,CAAC,WAAW,CAAC,CAAC,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,EAAE,CAAC;IAEL,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;IACtH,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CACF,4JAA4J,8BAA8B,IAAI,EAC9L,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAElG,IAAI,IAAa,CAAC;IAClB,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,4BAA4B,CAAC;YAC7C,OAAO;YACP,KAAK;YACL,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAChB,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC;QACrB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,UAAU,GAAG,iCAAiC,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,CACF,6CAA6C,8BAA8B,kBAAkB,UAAU,GAAG,EAC1G,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,yBAAyB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,qBAAqB,8BAA8B,8CAA8C,GAAG,EAAE,CAAC,CAAC;IACpH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,0BAA0B,YAAY,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,oCAAoC,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAAc;IACpC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACzF,IAAI,CAAC,mDAAmD,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/E,CAAC;IAED,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,WAAW;YACd,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM;QACR,KAAK,cAAc;YACjB,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,OAAO;YACV,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM;QACR;YACE,IAAI,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,22 @@
1
1
  import { type MeetSdkDefaultConfig } from "./meetSdkRemoteConfig.js";
2
- /** Built-in Android SDK defaults (version, repos, per-plugin dependencies). */
2
+ /** Built-in Android SDK defaults (repos and per-plugin dependencies). */
3
3
  export declare const MEETSDK_ANDROID_DEFAULTS_FILENAME = "meetsdk-android.json";
4
- export declare function loadBuiltInMeetSdkDefaultConfig(): MeetSdkDefaultConfig;
4
+ export declare function resolveMeetSdkAndroidConfigPath(packageRoot?: string): string;
5
+ export declare function loadBuiltInMeetSdkDefaultConfig(options?: {
6
+ packageRoot?: string;
7
+ }): MeetSdkDefaultConfig;
8
+ export declare function syncMeetSdkAndroidVersionToConfig(params: {
9
+ version: string;
10
+ date?: string;
11
+ packageRoot?: string;
12
+ }): string;
13
+ /**
14
+ * Built-in Android SDK defaults with the SDK version resolved at runtime from sdk-home.
15
+ * The version is also persisted to `meetsdk-android.json` so the package config
16
+ * reflects the latest SDK version discovered from the download center.
17
+ */
18
+ export declare function loadMeetSdkDefaultConfigWithLatestAndroidVersion(options?: {
19
+ sdkHomeApiBaseUrl?: string;
20
+ packageRoot?: string;
21
+ }): Promise<MeetSdkDefaultConfig>;
5
22
  //# sourceMappingURL=meetSdkDefaultConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meetSdkDefaultConfig.d.ts","sourceRoot":"","sources":["../../src/config/meetSdkDefaultConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErG,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,yBAAyB,CAAC;AAMxE,wBAAgB,+BAA+B,IAAI,oBAAoB,CAYtE"}
1
+ {"version":3,"file":"meetSdkDefaultConfig.d.ts","sourceRoot":"","sources":["../../src/config/meetSdkDefaultConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGrG,yEAAyE;AACzE,eAAO,MAAM,iCAAiC,yBAAyB,CAAC;AAMxE,wBAAgB,+BAA+B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,+BAA+B,CAAC,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,oBAAoB,CAa5G;AAsBD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAqBT;AAED;;;;GAIG;AACH,wBAAsB,gDAAgD,CAAC,OAAO,GAAE;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAWrC"}
@@ -1,18 +1,80 @@
1
1
  import fs from "node:fs";
2
+ import path from "node:path";
2
3
  import { fileURLToPath } from "node:url";
3
4
  import { tryParseAsMeetSdkDefaultConfig } from "./meetSdkRemoteConfig.js";
4
- /** Built-in Android SDK defaults (version, repos, per-plugin dependencies). */
5
+ import { defaultSdkHomeApiBaseUrl, fetchSdkHomeVersions } from "../remote/sdkHomeDownload.js";
6
+ /** Built-in Android SDK defaults (repos and per-plugin dependencies). */
5
7
  export const MEETSDK_ANDROID_DEFAULTS_FILENAME = "meetsdk-android.json";
6
8
  const defaultConfigPath = fileURLToPath(new URL(`../../${MEETSDK_ANDROID_DEFAULTS_FILENAME}`, import.meta.url));
7
- export function loadBuiltInMeetSdkDefaultConfig() {
8
- if (!fs.existsSync(defaultConfigPath)) {
9
- throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} not found at ${defaultConfigPath}; reinstall @leonxin/meetgames or run from a complete package install`);
9
+ export function resolveMeetSdkAndroidConfigPath(packageRoot) {
10
+ return packageRoot ? path.join(packageRoot, MEETSDK_ANDROID_DEFAULTS_FILENAME) : defaultConfigPath;
11
+ }
12
+ export function loadBuiltInMeetSdkDefaultConfig(options = {}) {
13
+ const configPath = resolveMeetSdkAndroidConfigPath(options.packageRoot);
14
+ if (!fs.existsSync(configPath)) {
15
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} not found at ${configPath}; reinstall @leonxin/meetgames or run from a complete package install`);
10
16
  }
11
- const raw = JSON.parse(fs.readFileSync(defaultConfigPath, "utf8"));
17
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf8"));
12
18
  const parsed = tryParseAsMeetSdkDefaultConfig(raw);
13
19
  if (!parsed) {
14
20
  throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} is not a valid MeetSdk default config`);
15
21
  }
16
22
  return parsed;
17
23
  }
24
+ function cloneDefaultConfig(value) {
25
+ return JSON.parse(JSON.stringify(value));
26
+ }
27
+ function resolveSdkHomeApiBaseUrl(baseUrl) {
28
+ return baseUrl || process.env.MEETGAMES_SDK_HOME_API_BASE_URL?.trim() || defaultSdkHomeApiBaseUrl;
29
+ }
30
+ const latestAndroidVersionCache = new Map();
31
+ async function fetchLatestAndroidSdkVersion(baseUrl) {
32
+ const resolvedBaseUrl = resolveSdkHomeApiBaseUrl(baseUrl);
33
+ let cached = latestAndroidVersionCache.get(resolvedBaseUrl);
34
+ if (!cached) {
35
+ cached = fetchSdkHomeVersions({ baseUrl: resolvedBaseUrl }).then(({ versions }) => versions.android);
36
+ latestAndroidVersionCache.set(resolvedBaseUrl, cached);
37
+ }
38
+ return cached;
39
+ }
40
+ export function syncMeetSdkAndroidVersionToConfig(params) {
41
+ const version = params.version.trim();
42
+ if (!version)
43
+ throw new Error("Android SDK version is empty");
44
+ const configPath = resolveMeetSdkAndroidConfigPath(params.packageRoot);
45
+ if (!fs.existsSync(configPath)) {
46
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} not found at ${configPath}`);
47
+ }
48
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf8"));
49
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
50
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} is not a JSON object`);
51
+ }
52
+ const record = raw;
53
+ if (typeof record.topsdk !== "object" || record.topsdk === null || Array.isArray(record.topsdk)) {
54
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} does not contain topsdk object`);
55
+ }
56
+ const topsdk = record.topsdk;
57
+ topsdk.version = version;
58
+ if (params.date?.trim())
59
+ topsdk.date = params.date.trim();
60
+ fs.writeFileSync(configPath, `${JSON.stringify(record, null, 2)}\n`, "utf8");
61
+ return configPath;
62
+ }
63
+ /**
64
+ * Built-in Android SDK defaults with the SDK version resolved at runtime from sdk-home.
65
+ * The version is also persisted to `meetsdk-android.json` so the package config
66
+ * reflects the latest SDK version discovered from the download center.
67
+ */
68
+ export async function loadMeetSdkDefaultConfigWithLatestAndroidVersion(options = {}) {
69
+ const defaults = cloneDefaultConfig(loadBuiltInMeetSdkDefaultConfig({ packageRoot: options.packageRoot }));
70
+ const latest = await fetchLatestAndroidSdkVersion(options.sdkHomeApiBaseUrl);
71
+ syncMeetSdkAndroidVersionToConfig({
72
+ version: latest.ver,
73
+ date: latest.date,
74
+ packageRoot: options.packageRoot,
75
+ });
76
+ defaults.topsdk.version = latest.ver;
77
+ defaults.topsdk.date = latest.date;
78
+ return defaults;
79
+ }
18
80
  //# sourceMappingURL=meetSdkDefaultConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meetSdkDefaultConfig.js","sourceRoot":"","sources":["../../src/config/meetSdkDefaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAA6B,MAAM,0BAA0B,CAAC;AAErG,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAExE,MAAM,iBAAiB,GAAG,aAAa,CACrC,IAAI,GAAG,CAAC,SAAS,iCAAiC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACvE,CAAC;AAEF,MAAM,UAAU,+BAA+B;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,YAAY,iCAAiC,iBAAiB,iBAAiB,uEAAuE,CACvJ,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAY,CAAC;IAC9E,MAAM,MAAM,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,YAAY,iCAAiC,wCAAwC,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"meetSdkDefaultConfig.js","sourceRoot":"","sources":["../../src/config/meetSdkDefaultConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export declare const MEETSDK_IOS_CONFIG_FILENAME = "meetsdk-ios.json";
2
+ export interface MeetSdkIosConfig {
3
+ topsdk: {
4
+ version: string;
5
+ date?: string;
6
+ packageType?: string;
7
+ plugins?: string[];
8
+ };
9
+ }
10
+ export declare function resolveMeetSdkIosConfigPath(packageRoot: string): string;
11
+ export declare function tryParseAsMeetSdkIosConfig(raw: unknown): MeetSdkIosConfig | null;
12
+ export declare function loadMeetSdkIosConfig(packageRoot: string): MeetSdkIosConfig;
13
+ export declare function writeMeetSdkIosConfig(packageRoot: string, config: MeetSdkIosConfig): string;
14
+ export declare function syncMeetSdkIosVersionToConfig(params: {
15
+ packageRoot: string;
16
+ version: string;
17
+ date?: string;
18
+ packageType?: string;
19
+ plugins?: readonly string[];
20
+ }): string;
21
+ //# sourceMappingURL=meetSdkIosConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meetSdkIosConfig.d.ts","sourceRoot":"","sources":["../../src/config/meetSdkIosConfig.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAgBD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAWhF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAU1E;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAI3F;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,GAAG,MAAM,CAiBT"}
@@ -0,0 +1,66 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export const MEETSDK_IOS_CONFIG_FILENAME = "meetsdk-ios.json";
4
+ function isRecord(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+ function str(value) {
8
+ return typeof value === "string" ? value.trim() : "";
9
+ }
10
+ function normalizePlugins(value) {
11
+ if (!Array.isArray(value))
12
+ return undefined;
13
+ const plugins = value.map((x) => String(x).trim()).filter(Boolean);
14
+ return plugins.length ? plugins : undefined;
15
+ }
16
+ export function resolveMeetSdkIosConfigPath(packageRoot) {
17
+ return path.join(packageRoot, MEETSDK_IOS_CONFIG_FILENAME);
18
+ }
19
+ export function tryParseAsMeetSdkIosConfig(raw) {
20
+ if (!isRecord(raw))
21
+ return null;
22
+ const topsdk = isRecord(raw.topsdk) ? raw.topsdk : {};
23
+ return {
24
+ topsdk: {
25
+ version: str(topsdk.version),
26
+ date: str(topsdk.date) || undefined,
27
+ packageType: str(topsdk.packageType) || undefined,
28
+ plugins: normalizePlugins(topsdk.plugins),
29
+ },
30
+ };
31
+ }
32
+ export function loadMeetSdkIosConfig(packageRoot) {
33
+ const configPath = resolveMeetSdkIosConfigPath(packageRoot);
34
+ if (!fs.existsSync(configPath)) {
35
+ return { topsdk: { version: "" } };
36
+ }
37
+ const parsed = tryParseAsMeetSdkIosConfig(JSON.parse(fs.readFileSync(configPath, "utf8")));
38
+ if (!parsed) {
39
+ throw new Error(`${MEETSDK_IOS_CONFIG_FILENAME} is not a valid MeetSdk iOS config`);
40
+ }
41
+ return parsed;
42
+ }
43
+ export function writeMeetSdkIosConfig(packageRoot, config) {
44
+ const configPath = resolveMeetSdkIosConfigPath(packageRoot);
45
+ fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
46
+ return configPath;
47
+ }
48
+ export function syncMeetSdkIosVersionToConfig(params) {
49
+ const version = params.version.trim();
50
+ if (!version)
51
+ throw new Error("iOS SDK version is empty");
52
+ const current = loadMeetSdkIosConfig(params.packageRoot);
53
+ const nextDate = params.date === undefined ? current.topsdk.date : params.date.trim() || undefined;
54
+ const next = {
55
+ ...current,
56
+ topsdk: {
57
+ ...current.topsdk,
58
+ version,
59
+ date: nextDate,
60
+ packageType: params.packageType?.trim() || current.topsdk.packageType,
61
+ plugins: params.plugins?.map((x) => x.trim()).filter(Boolean) || current.topsdk.plugins,
62
+ },
63
+ };
64
+ return writeMeetSdkIosConfig(params.packageRoot, next);
65
+ }
66
+ //# sourceMappingURL=meetSdkIosConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meetSdkIosConfig.js","sourceRoot":"","sources":["../../src/config/meetSdkIosConfig.ts"],"names":[],"mappings":"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"}