@leonxin/meetgames 0.1.8 → 0.1.12

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 (228) 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 +36 -13
  7. package/{meetsdk-android.json → config/meetsdk-android.json} +2 -1
  8. package/config/meetsdk-ios.json +15 -0
  9. package/dist/android/adapter.d.ts.map +1 -1
  10. package/dist/android/adapter.js +2 -2
  11. package/dist/android/adapter.js.map +1 -1
  12. package/dist/android/detect.d.ts +2 -2
  13. package/dist/android/detect.d.ts.map +1 -1
  14. package/dist/android/detect.js +36 -8
  15. package/dist/android/detect.js.map +1 -1
  16. package/dist/cache.d.ts +44 -0
  17. package/dist/cache.d.ts.map +1 -0
  18. package/dist/cache.js +101 -0
  19. package/dist/cache.js.map +1 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +181 -49
  22. package/dist/cli.js.map +1 -1
  23. package/dist/config/meetSdkDefaultConfig.d.ts +19 -2
  24. package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
  25. package/dist/config/meetSdkDefaultConfig.js +69 -6
  26. package/dist/config/meetSdkDefaultConfig.js.map +1 -1
  27. package/dist/config/meetSdkIosConfig.d.ts +21 -0
  28. package/dist/config/meetSdkIosConfig.d.ts.map +1 -0
  29. package/dist/config/meetSdkIosConfig.js +68 -0
  30. package/dist/config/meetSdkIosConfig.js.map +1 -0
  31. package/dist/config/meetSdkRemoteConfig.d.ts +19 -1
  32. package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
  33. package/dist/config/meetSdkRemoteConfig.js +64 -25
  34. package/dist/config/meetSdkRemoteConfig.js.map +1 -1
  35. package/dist/contracts/types.d.ts +27 -6
  36. package/dist/contracts/types.d.ts.map +1 -1
  37. package/dist/core/doctor.d.ts +17 -0
  38. package/dist/core/doctor.d.ts.map +1 -0
  39. package/dist/core/doctor.js +444 -0
  40. package/dist/core/doctor.js.map +1 -0
  41. package/dist/core/pipeline.d.ts.map +1 -1
  42. package/dist/core/pipeline.js +0 -15
  43. package/dist/core/pipeline.js.map +1 -1
  44. package/dist/core/platform.d.ts +12 -0
  45. package/dist/core/platform.d.ts.map +1 -0
  46. package/dist/core/platform.js +40 -0
  47. package/dist/core/platform.js.map +1 -0
  48. package/dist/core/previewPatches.d.ts +1 -1
  49. package/dist/core/previewPatches.js +2 -2
  50. package/dist/core/previewPatches.js.map +1 -1
  51. package/dist/core/reporter.js +1 -1
  52. package/dist/core/reporter.js.map +1 -1
  53. package/dist/core/workspace.d.ts +2 -2
  54. package/dist/core/workspace.d.ts.map +1 -1
  55. package/dist/core/workspace.js +6 -5
  56. package/dist/core/workspace.js.map +1 -1
  57. package/dist/index.d.ts +4 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +4 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/ios/channelConfig.d.ts +1 -0
  62. package/dist/ios/channelConfig.d.ts.map +1 -1
  63. package/dist/ios/channelConfig.js +82 -0
  64. package/dist/ios/channelConfig.js.map +1 -1
  65. package/dist/ios/codeUtils.d.ts +1 -0
  66. package/dist/ios/codeUtils.d.ts.map +1 -1
  67. package/dist/ios/codeUtils.js +11 -2
  68. package/dist/ios/codeUtils.js.map +1 -1
  69. package/dist/ios/detect.d.ts +2 -2
  70. package/dist/ios/detect.d.ts.map +1 -1
  71. package/dist/ios/detect.js +49 -10
  72. package/dist/ios/detect.js.map +1 -1
  73. package/dist/ios/entitlements.d.ts +4 -0
  74. package/dist/ios/entitlements.d.ts.map +1 -0
  75. package/dist/ios/entitlements.js +53 -0
  76. package/dist/ios/entitlements.js.map +1 -0
  77. package/dist/ios/fileManager.d.ts.map +1 -1
  78. package/dist/ios/fileManager.js +3 -2
  79. package/dist/ios/fileManager.js.map +1 -1
  80. package/dist/ios/infoPlist.d.ts +1 -1
  81. package/dist/ios/infoPlist.d.ts.map +1 -1
  82. package/dist/ios/infoPlist.js.map +1 -1
  83. package/dist/ios/integrate.d.ts.map +1 -1
  84. package/dist/ios/integrate.js +214 -39
  85. package/dist/ios/integrate.js.map +1 -1
  86. package/dist/ios/pbxprojEditor.d.ts +2 -0
  87. package/dist/ios/pbxprojEditor.d.ts.map +1 -1
  88. package/dist/ios/pbxprojEditor.js +250 -6
  89. package/dist/ios/pbxprojEditor.js.map +1 -1
  90. package/dist/ios/pluginConfig.d.ts +1 -0
  91. package/dist/ios/pluginConfig.d.ts.map +1 -1
  92. package/dist/ios/pluginConfig.js +36 -4
  93. package/dist/ios/pluginConfig.js.map +1 -1
  94. package/dist/ios/sdkBundle.d.ts +1 -6
  95. package/dist/ios/sdkBundle.d.ts.map +1 -1
  96. package/dist/ios/sdkBundle.js +47 -17
  97. package/dist/ios/sdkBundle.js.map +1 -1
  98. package/dist/ios/template.d.ts +1 -0
  99. package/dist/ios/template.d.ts.map +1 -1
  100. package/dist/ios/template.js +14 -1
  101. package/dist/ios/template.js.map +1 -1
  102. package/dist/ios/types.d.ts +2 -2
  103. package/dist/ios/types.d.ts.map +1 -1
  104. package/dist/mcp/server.d.ts.map +1 -1
  105. package/dist/mcp/server.js +22 -15
  106. package/dist/mcp/server.js.map +1 -1
  107. package/dist/mcp/service.d.ts +11 -6
  108. package/dist/mcp/service.d.ts.map +1 -1
  109. package/dist/mcp/service.js +61 -18
  110. package/dist/mcp/service.js.map +1 -1
  111. package/dist/ops/handlers.d.ts.map +1 -1
  112. package/dist/ops/handlers.js +34 -23
  113. package/dist/ops/handlers.js.map +1 -1
  114. package/dist/remote/sdkHomeDownload.d.ts +65 -0
  115. package/dist/remote/sdkHomeDownload.d.ts.map +1 -0
  116. package/dist/remote/sdkHomeDownload.js +229 -0
  117. package/dist/remote/sdkHomeDownload.js.map +1 -0
  118. package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -1
  119. package/dist/remote/topsdkDownloadSdkConfig.js +11 -1
  120. package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -1
  121. package/dist/shared/errors.d.ts +7 -0
  122. package/dist/shared/errors.d.ts.map +1 -0
  123. package/dist/shared/errors.js +16 -0
  124. package/dist/shared/errors.js.map +1 -0
  125. package/docs/API.md +246 -32
  126. package/docs/CLI.md +291 -0
  127. package/docs/INTEGRATION.md +116 -0
  128. package/docs/MCP.md +86 -0
  129. package/docs/README.md +18 -10
  130. package/docs/{api → archive/api}/downloadSDKConfig.md +9 -7
  131. package/docs/{api → archive/api}/getChannelConfig-meetgames.md +2 -2
  132. package/docs/archive/ios-migration.md +2139 -0
  133. 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
  134. package/docs/{ → archive/product/}/351/234/200/346/261/202/346/226/207/346/241/243.md +16 -15
  135. package/package.json +7 -36
  136. package/recipes/android-default.yaml +0 -5
  137. package/recipes/integrate-default.yaml +0 -5
  138. package/src/android/adapter.ts +9 -0
  139. package/src/android/assembleIntegrationJson.ts +33 -0
  140. package/src/android/detect.ts +132 -0
  141. package/src/android/downloadGoogleServicesJson.ts +56 -0
  142. package/src/android/gradle.ts +116 -0
  143. package/src/android/manifest.ts +50 -0
  144. package/src/android/meetSdkRemoteGradle.ts +837 -0
  145. package/src/cache.ts +164 -0
  146. package/src/cli.ts +496 -0
  147. package/src/config/fetchConfigWrite.ts +30 -0
  148. package/src/config/loadAndroidIntegration.ts +41 -0
  149. package/src/config/loadManifest.ts +40 -0
  150. package/src/config/meetSdkDefaultConfig.ts +100 -0
  151. package/src/config/meetSdkIosConfig.ts +89 -0
  152. package/src/config/meetSdkRemoteConfig.ts +1215 -0
  153. package/src/config/topsdkFeatureModules.ts +92 -0
  154. package/src/contracts/types.ts +129 -0
  155. package/src/core/doctor.ts +485 -0
  156. package/src/core/patch.ts +64 -0
  157. package/src/core/pipeline.ts +107 -0
  158. package/src/core/platform.ts +47 -0
  159. package/src/core/previewPatches.ts +23 -0
  160. package/src/core/reporter.ts +24 -0
  161. package/src/core/workspace.ts +31 -0
  162. package/src/entry.ts +7 -0
  163. package/src/index.ts +140 -0
  164. package/src/ios/channelConfig.ts +128 -0
  165. package/src/ios/codeUtils.ts +160 -0
  166. package/src/ios/detect.ts +105 -0
  167. package/src/ios/entitlements.ts +61 -0
  168. package/src/ios/fileManager.ts +48 -0
  169. package/src/ios/infoPlist.ts +55 -0
  170. package/src/ios/integrate.ts +517 -0
  171. package/src/ios/pbxprojEditor.ts +450 -0
  172. package/src/ios/pluginConfig.ts +97 -0
  173. package/src/ios/reserved.ts +8 -0
  174. package/src/ios/sdkBundle.ts +59 -0
  175. package/src/ios/template.ts +36 -0
  176. package/src/ios/types.ts +65 -0
  177. package/src/mcp/server.ts +176 -0
  178. package/src/mcp/service.ts +253 -0
  179. package/src/mcp-entry.ts +7 -0
  180. package/src/ops/fileStore.ts +56 -0
  181. package/src/ops/handlers.ts +308 -0
  182. package/src/remote/fetchJson.ts +22 -0
  183. package/src/remote/sdkHomeDownload.ts +295 -0
  184. package/src/remote/topsdkDownloadSdkConfig.ts +93 -0
  185. package/src/remote/topsdkGetSdkConfig.ts +122 -0
  186. package/src/remote/topsdkSign.ts +10 -0
  187. package/src/shared/errors.ts +16 -0
  188. package/tests/assemble.test.ts +12 -0
  189. package/tests/doctor.test.ts +91 -0
  190. package/tests/downloadGoogleServicesJson.test.ts +47 -0
  191. package/tests/fetch-remote.test.ts +23 -0
  192. package/tests/fetchConfigOverrides.test.ts +28 -0
  193. package/tests/fetchConfigWrite.test.ts +54 -0
  194. package/tests/fixtures-hosts.test.ts +78 -0
  195. package/tests/gradle.test.ts +33 -0
  196. package/tests/integration-json.test.ts +29 -0
  197. package/tests/ios.codeUtils.test.ts +23 -0
  198. package/tests/ios.sdkBundle.test.ts +21 -0
  199. package/tests/loadManifest.test.ts +15 -0
  200. package/tests/manifest-xml.test.ts +30 -0
  201. package/tests/mcp.e2e.ts +214 -0
  202. package/tests/mcp.service.test.ts +53 -0
  203. package/tests/meetSdkRemoteConfig.test.ts +481 -0
  204. package/tests/meetSdkRemoteGradle.test.ts +414 -0
  205. package/tests/pipeline.android.test.ts +95 -0
  206. package/tests/pipeline.integration-json.test.ts +58 -0
  207. package/tests/pipeline.ios.test.ts +392 -0
  208. package/tests/pipeline.preview.patch.test.ts +85 -0
  209. package/tests/platformSelection.test.ts +77 -0
  210. package/tests/sdkHomeDownload.test.ts +124 -0
  211. package/tests/sdkVersionConfig.test.ts +131 -0
  212. package/tests/topsdk.test.ts +53 -0
  213. package/tests/topsdkDownloadSdkConfig.test.ts +81 -0
  214. package/tests/topsdkFeatureModules.test.ts +116 -0
  215. package/tsconfig.json +19 -0
  216. package/vitest.config.ts +9 -0
  217. package/vitest.mcp.config.ts +11 -0
  218. package/bundled/android/sample.txt +0 -1
  219. package/docs/ANDROID.md +0 -133
  220. package/docs/CURSOR-MCP-SETUP.md +0 -72
  221. package/docs/MCP-SKILL.md +0 -63
  222. package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +0 -123
  223. package/fixtures/meetsdk-remote-config.download-shape.json +0 -20
  224. package/fixtures/meetsdk-remote-config.mock.json +0 -69
  225. package/fixtures/recipes/android-default.fixture.yaml +0 -15
  226. package/fixtures/recipes/android-integration.fixture.json +0 -29
  227. package/fixtures/topsdk-config-reference.json +0 -39
  228. /package/docs/{api → archive/api}/getSDKConfig.md +0 -0
package/dist/cli.js CHANGED
@@ -3,11 +3,15 @@ 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";
9
- import { validateDownloadSdkConfigForWrite, writeDownloadSdkConfigRaw, } from "./config/fetchConfigWrite.js";
11
+ import { defaultSdkHomeApiBaseUrl, downloadIosSdkToBundled, DEFAULT_IOS_SDK_PACKAGE_TYPE, } from "./remote/sdkHomeDownload.js";
12
+ import { validateDownloadSdkConfigForWrite, } from "./config/fetchConfigWrite.js";
10
13
  import { MEETSDK_REMOTE_CONFIG_FILENAME, readMeetSdkRemoteChannel, tryParseAsMeetSdkRemoteConfig, } from "./config/meetSdkRemoteConfig.js";
14
+ import { MEET_SDK_TOOL_CACHE_ROOT, resolveRemoteConfigCachePath, writeRemoteConfigCache, } from "./cache.js";
11
15
  const EXIT = {
12
16
  OK: 0,
13
17
  INVALID_ARGS: 2,
@@ -25,35 +29,45 @@ function printHelp() {
25
29
  meetgames — Android-first integration CLI (TypeScript)
26
30
 
27
31
  Usage:
28
- meetgames integrate [--project-root <path>] [--dry-run] [--verbose] [--patch-file <path>]
32
+ meetgames integrate [--project-root <path>] [--app-id ID] [--channel-type TYPE] [--env prod|pre|test] [--app-target <target>] [--dry-run] [--verbose] [--patch-file <path>]
29
33
  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]
34
+ meetgames download-ios-sdk [--version VERSION] [--plugins csv] [--package-type native|unity|cocos] [--sdk-api-base-url URL] [--verbose]
35
+ 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>]
36
+ meetgames doctor [--app-id ID] [--app-secret SECRET] [--channel-type TYPE] [--env prod|pre|test] --project-root <path> [--app-target <target>] [--verbose]
32
37
 
33
38
  Notes:
34
39
  - Source code is TypeScript only; published bin runs compiled output under dist/.
35
40
  - 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).
37
- - 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).
39
- - iOS SDK is read from bundled/ios-sdk/ in the tool package (native iOS only).
41
+ - fetch-config calls TOPSDK downloadSDKConfig and writes the response body unchanged under ${MEET_SDK_TOOL_CACHE_ROOT}.
42
+ - setup runs fetch-config, then download-ios-sdk for iOS projects, then integrate in one process.
43
+ - doctor / setup / integrate require --project-root and auto-select exactly one platform from that root.
44
+ - doctor first fetches downloadSDKConfig to the cache, then validates the detected platform integration.
45
+ - integrate uses recipes/integrate-default.yaml, filtered to the detected platform before execution.
46
+ - iOS SDK is read from ${MEET_SDK_TOOL_CACHE_ROOT}/sdk/ios/.
47
+ - Android integrate/doctor reads the latest SDK version from sdk-home and stores it in config/meetsdk-android.json.
48
+ - download-ios-sdk calls sdk-home getDownLoadUrl, saves and extracts the iOS SDK under ${MEET_SDK_TOOL_CACHE_ROOT}/sdk/ios/.
40
49
  - 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).
42
- - fetch-config writes to <project-root>/meetsdk-remote-config.json.
43
- - fetch-config requires --channel-type (or channel in local meetsdk-remote-config.json / TOPSDK_CHANNEL_TYPE); not inferred from Android/iOS detection.
44
- - 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).
50
+ - 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.
51
+ - fetch-config writes to ${MEET_SDK_TOOL_CACHE_ROOT}/configs/<env>/<appId>/<channelType>/meetsdk-remote-config.json.
52
+ - integrate/doctor read the cache entry selected by --env, --app-id, and --channel-type; without those flags they only read an existing project-root meetsdk-remote-config.json for compatibility.
53
+ - Recipe op gradle.applyMeetSdkRemoteConfig reads cached meetsdk-remote-config.json and writes TOPSDK marker blocks to root + app build.gradle (same idea as sdk-integration-agent gradleEditor).
45
54
 
46
55
  Options (global where noted):
47
- --project-root Host project directory (default: cwd); also sets fetch-config cache write location
48
- --app-id fetch-config override; default reads topsdk.appId from meetsdk-remote-config.json
56
+ --project-root Host project directory (default: cwd); for iOS it may point to the project root or directly to a .xcodeproj directory
57
+ --app-target App target to integrate/check: Android application Gradle module (e.g. :app or launcher) or iOS App target name
58
+ --app-id fetch-config/integrate/doctor cache selector; default TOPSDK_APP_ID
49
59
  --app-secret fetch-config: required appSecret for downloadSDKConfig sign (or env TOPSDK_APP_SECRET)
50
- --channel-type fetch-config: channelType query param for downloadSDKConfig (required unless channel in local file or TOPSDK_CHANNEL_TYPE)
51
- --auth-type 已忽略(downloadSDKConfig 不需要 authType);保留参数仅为兼容旧脚本
60
+ --channel-type fetch-config/integrate/doctor cache selector; default TOPSDK_CHANNEL_TYPE
52
61
  --env fetch-config: prod(正式服,默认)| pre | test(开发调试)
53
62
  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)
63
+ MEETGAMES_SDK_HOME_API_BASE_URL 覆盖 sdk-home API 根地址(默认 https://business-api.meetgames.com);用于 Android 最新版本查询和 iOS SDK 下载
64
+ --sdk-api-base-url sdk-home API 根地址;用于 Android 最新版本查询和 iOS SDK 下载
65
+ --version download-ios-sdk: 指定 iOS SDK 版本;不传时从 /sdk/home/version 读取最新 iOS 版本
66
+ --plugins download-ios-sdk: 逗号分隔插件列表;默认与下载页 iOS 默认选择一致
67
+ --package-type download-ios-sdk: native(默认)| unity | cocos
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
- --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.
70
+ --patch-file integrate: write unified diff to this path (works with --dry-run). If under <pkg>/preview-patches/, all existing files in that dir are removed first so only the latest patch remains.
57
71
  --verbose Verbose logs and full patch preview
58
72
 
59
73
  Subcommand notes:
@@ -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,11 @@ function parseArgv(argv) {
76
91
  topsdkAppSecret: "",
77
92
  topsdkChannelType: "",
78
93
  topsdkPackageName: "",
79
- topsdkAuthTypes: [],
94
+ appTarget: "",
95
+ sdkHomeApiBaseUrl: "",
96
+ iosSdkVersion: "",
97
+ iosSdkPlugins: "",
98
+ iosSdkPackageType: "",
80
99
  };
81
100
  const rest = argv.slice(2);
82
101
  if (!rest.length || (rest[0]?.startsWith("-") ?? false)) {
@@ -100,6 +119,44 @@ function parseArgv(argv) {
100
119
  }
101
120
  if (t === "--project-root") {
102
121
  out.projectRoot = path.resolve(rest[i + 1] ?? "");
122
+ out.projectRootProvided = true;
123
+ i += 1;
124
+ continue;
125
+ }
126
+ if (t === "--app-target") {
127
+ out.appTarget = rest[i + 1] ?? "";
128
+ if (!out.appTarget || out.appTarget.startsWith("-"))
129
+ fail("--app-target requires a target name", EXIT.INVALID_ARGS);
130
+ i += 1;
131
+ continue;
132
+ }
133
+ if (t === "--sdk-api-base-url") {
134
+ out.sdkHomeApiBaseUrl = rest[i + 1] ?? "";
135
+ if (!out.sdkHomeApiBaseUrl || out.sdkHomeApiBaseUrl.startsWith("-")) {
136
+ fail("--sdk-api-base-url requires a URL", EXIT.INVALID_ARGS);
137
+ }
138
+ i += 1;
139
+ continue;
140
+ }
141
+ if (t === "--version") {
142
+ out.iosSdkVersion = rest[i + 1] ?? "";
143
+ if (!out.iosSdkVersion || out.iosSdkVersion.startsWith("-"))
144
+ fail("--version requires a version", EXIT.INVALID_ARGS);
145
+ i += 1;
146
+ continue;
147
+ }
148
+ if (t === "--plugins") {
149
+ out.iosSdkPlugins = rest[i + 1] ?? "";
150
+ if (!out.iosSdkPlugins || out.iosSdkPlugins.startsWith("-"))
151
+ fail("--plugins requires a comma-separated list", EXIT.INVALID_ARGS);
152
+ i += 1;
153
+ continue;
154
+ }
155
+ if (t === "--package-type") {
156
+ out.iosSdkPackageType = rest[i + 1] ?? "";
157
+ if (!out.iosSdkPackageType || out.iosSdkPackageType.startsWith("-")) {
158
+ fail("--package-type requires native, unity, or cocos", EXIT.INVALID_ARGS);
159
+ }
103
160
  i += 1;
104
161
  continue;
105
162
  }
@@ -127,11 +184,6 @@ function parseArgv(argv) {
127
184
  i += 1;
128
185
  continue;
129
186
  }
130
- if (t === "--auth-type") {
131
- out.topsdkAuthTypes.push(rest[i + 1] ?? "");
132
- i += 1;
133
- continue;
134
- }
135
187
  if (t === "--report-file") {
136
188
  out.reportFile = path.resolve(rest[i + 1] ?? "");
137
189
  i += 1;
@@ -147,24 +199,45 @@ function parseArgv(argv) {
147
199
  return out;
148
200
  }
149
201
  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,
202
+ function requiresProjectRoot(command) {
203
+ return command === "doctor" || command === "setup" || command === "integrate";
204
+ }
205
+ function resolvedAppTarget(parsed) {
206
+ return parsed.appTarget;
207
+ }
208
+ function cachedRemoteConfigPathFromArgs(parsed) {
209
+ const appId = parsed.topsdkAppId || process.env.TOPSDK_APP_ID || "";
210
+ const channelType = parsed.topsdkChannelType || process.env.TOPSDK_CHANNEL_TYPE || "";
211
+ if (!appId || !channelType)
212
+ return "";
213
+ return resolveRemoteConfigCachePath({ env: parsed.topsdkEnv, appId, channelType });
214
+ }
215
+ function selectedPlatformContext(parsed) {
216
+ const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot(), {
217
+ appTarget: resolvedAppTarget(parsed),
218
+ sdkHomeApiBaseUrl: parsed.sdkHomeApiBaseUrl || undefined,
219
+ remoteConfigPath: cachedRemoteConfigPathFromArgs(parsed) || 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));
161
229
  }
162
- /** 固定缓存路径:宿主工程根目录下的 meetsdk-remote-config.json */
163
- function meetSdkRemoteConfigCachePath(projectRoot) {
164
- return path.join(projectRoot, MEETSDK_REMOTE_CONFIG_FILENAME);
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);
165
239
  }
166
- function readLocalMeetSdkRemoteConfig(projectRoot) {
167
- const configPath = meetSdkRemoteConfigCachePath(projectRoot);
240
+ function readLocalMeetSdkRemoteConfig(configPath) {
168
241
  if (!fs.existsSync(configPath))
169
242
  return null;
170
243
  try {
@@ -175,17 +248,14 @@ function readLocalMeetSdkRemoteConfig(projectRoot) {
175
248
  }
176
249
  }
177
250
  async function cmdFetchConfig(parsed) {
178
- const out = meetSdkRemoteConfigCachePath(parsed.projectRoot);
179
- const localConfig = readLocalMeetSdkRemoteConfig(parsed.projectRoot);
251
+ const selectedConfigPath = cachedRemoteConfigPathFromArgs(parsed);
252
+ const localConfig = selectedConfigPath ? readLocalMeetSdkRemoteConfig(selectedConfigPath) : null;
180
253
  const appId = parsed.topsdkAppId || localConfig?.topsdk.appId || process.env.TOPSDK_APP_ID || "";
181
254
  const appSecret = parsed.topsdkAppSecret || process.env.TOPSDK_APP_SECRET || "";
182
255
  const channelType = parsed.topsdkChannelType ||
183
256
  (localConfig ? readMeetSdkRemoteChannel(localConfig) : "") ||
184
257
  process.env.TOPSDK_CHANNEL_TYPE ||
185
258
  "";
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
259
  if (!appId || !channelType || !appSecret) {
190
260
  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
261
  }
@@ -214,10 +284,18 @@ async function cmdFetchConfig(parsed) {
214
284
  for (const warning of validation.warnings) {
215
285
  console.warn(`[meetgames] warning: ${warning}`);
216
286
  }
217
- writeDownloadSdkConfigRaw(out, rawText);
218
- console.log(`[meetgames] wrote ${MEETSDK_REMOTE_CONFIG_FILENAME} (downloadSDKConfig response, unmodified): ${out}`);
287
+ const written = writeRemoteConfigCache({
288
+ env: parsed.topsdkEnv,
289
+ appId,
290
+ channelType,
291
+ requestUrl,
292
+ rawText,
293
+ warnings: validation.warnings,
294
+ });
295
+ console.log(`[meetgames] wrote ${MEETSDK_REMOTE_CONFIG_FILENAME} (downloadSDKConfig response, unmodified): ${written.configPath}`);
219
296
  if (parsed.verbose) {
220
297
  console.log(`[meetgames] GET ${requestUrl}`);
298
+ console.log(`[meetgames] metadata: ${written.metadataPath}`);
221
299
  }
222
300
  }
223
301
  async function cmdIntegrate(parsed) {
@@ -232,8 +310,9 @@ async function cmdIntegrate(parsed) {
232
310
  catch (e) {
233
311
  fail(e instanceof Error ? e.message : String(e), EXIT.CONFIG_ERROR);
234
312
  }
235
- const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot());
236
- const { report, patch, binaryCopies } = await runPipeline(ctx, manifest, { dryRun: parsed.dryRun });
313
+ const { platform, ctx, selectedCtx } = selectedPlatformContext(parsed);
314
+ const selectedManifest = manifestForPlatform(manifest, platform);
315
+ const { report, patch, binaryCopies } = await runPipeline(selectedCtx, selectedManifest, { dryRun: parsed.dryRun });
237
316
  printReport(report, patch, parsed.verbose);
238
317
  if (binaryCopies.length) {
239
318
  console.log("[meetgames] planned binary copies:");
@@ -257,11 +336,54 @@ async function cmdIntegrate(parsed) {
257
336
  }
258
337
  }
259
338
  async function cmdSetup(parsed) {
339
+ const { platform } = selectedPlatformContext(parsed);
260
340
  console.log("[meetgames] setup: fetching remote config…");
261
341
  await cmdFetchConfig(parsed);
342
+ if (platform === "ios") {
343
+ console.log("[meetgames] setup: downloading iOS SDK…");
344
+ await cmdDownloadIosSdk(parsed);
345
+ }
262
346
  console.log("[meetgames] setup: integrating project…");
263
347
  await cmdIntegrate(parsed);
264
348
  }
349
+ async function cmdDownloadIosSdk(parsed) {
350
+ const baseUrl = parsed.sdkHomeApiBaseUrl || process.env.MEETGAMES_SDK_HOME_API_BASE_URL?.trim() || defaultSdkHomeApiBaseUrl;
351
+ const packageType = parsed.iosSdkPackageType || DEFAULT_IOS_SDK_PACKAGE_TYPE;
352
+ if (!["native", "unity", "cocos"].includes(packageType)) {
353
+ fail(`invalid --package-type (use native, unity, or cocos): ${packageType}`, EXIT.INVALID_ARGS);
354
+ }
355
+ const plugins = parsed.iosSdkPlugins
356
+ ? parsed.iosSdkPlugins
357
+ .split(",")
358
+ .map((s) => s.trim())
359
+ .filter(Boolean)
360
+ : undefined;
361
+ if (parsed.iosSdkPlugins && !plugins?.length) {
362
+ fail("--plugins must contain at least one plugin", EXIT.INVALID_ARGS);
363
+ }
364
+ console.log("[meetgames] download-ios-sdk: resolving sdk-home iOS SDK…");
365
+ let result;
366
+ try {
367
+ result = await downloadIosSdkToBundled(resolvePackageRoot(), {
368
+ baseUrl,
369
+ version: parsed.iosSdkVersion || undefined,
370
+ plugins,
371
+ packageType,
372
+ });
373
+ }
374
+ catch (e) {
375
+ fail(e instanceof Error ? e.message : String(e), EXIT.NETWORK_ERROR);
376
+ }
377
+ console.log(`[meetgames] downloaded iOS SDK ${result.version} zip: ${result.zipPath}`);
378
+ console.log(`[meetgames] extracted iOS SDK to: ${result.extractDir}`);
379
+ console.log(`[meetgames] resolved iOS SDK root: ${result.resolvedSdkRoot}`);
380
+ console.log(`[meetgames] wrote iOS SDK metadata: ${result.cacheMetadataPath}`);
381
+ if (parsed.verbose) {
382
+ console.log(`[meetgames] GET ${result.versionUrl}`);
383
+ console.log(`[meetgames] GET ${result.downloadApiUrl}`);
384
+ console.log(`[meetgames] SDK zip URL: ${result.sdkZipUrl}`);
385
+ }
386
+ }
265
387
  export async function main() {
266
388
  const parsed = parseArgv(process.argv);
267
389
  if (parsed.help) {
@@ -272,12 +394,19 @@ export async function main() {
272
394
  printHelp();
273
395
  process.exit(EXIT.INVALID_ARGS);
274
396
  }
397
+ if (requiresProjectRoot(parsed.command) && !parsed.projectRootProvided) {
398
+ fail(`${parsed.command} requires --project-root`, EXIT.INVALID_ARGS);
399
+ }
275
400
  if (!fs.existsSync(parsed.projectRoot) || !fs.statSync(parsed.projectRoot).isDirectory()) {
276
401
  fail("project root does not exist or is not a directory", EXIT.INVALID_ARGS);
277
402
  }
403
+ if (parsed.appTarget && !["doctor", "setup", "integrate"].includes(parsed.command)) {
404
+ fail("--app-target is only supported by doctor, setup, and integrate", EXIT.INVALID_ARGS);
405
+ }
406
+ resolvedAppTarget(parsed);
278
407
  switch (parsed.command) {
279
408
  case "doctor":
280
- cmdDoctor(parsed);
409
+ await cmdDoctor(parsed);
281
410
  break;
282
411
  case "integrate":
283
412
  await cmdIntegrate(parsed);
@@ -285,6 +414,9 @@ export async function main() {
285
414
  case "fetch-config":
286
415
  await cmdFetchConfig(parsed);
287
416
  break;
417
+ case "download-ios-sdk":
418
+ await cmdDownloadIosSdk(parsed);
419
+ break;
288
420
  case "setup":
289
421
  await cmdSetup(parsed);
290
422
  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 `config/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;AAOxE,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,81 @@
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
- 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`);
8
+ const MEETSDK_CONFIG_DIR = "config";
9
+ const defaultConfigPath = fileURLToPath(new URL(`../../${MEETSDK_CONFIG_DIR}/${MEETSDK_ANDROID_DEFAULTS_FILENAME}`, import.meta.url));
10
+ export function resolveMeetSdkAndroidConfigPath(packageRoot) {
11
+ return packageRoot ? path.join(packageRoot, MEETSDK_CONFIG_DIR, MEETSDK_ANDROID_DEFAULTS_FILENAME) : defaultConfigPath;
12
+ }
13
+ export function loadBuiltInMeetSdkDefaultConfig(options = {}) {
14
+ const configPath = resolveMeetSdkAndroidConfigPath(options.packageRoot);
15
+ if (!fs.existsSync(configPath)) {
16
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} not found at ${configPath}; reinstall @leonxin/meetgames or run from a complete package install`);
10
17
  }
11
- const raw = JSON.parse(fs.readFileSync(defaultConfigPath, "utf8"));
18
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf8"));
12
19
  const parsed = tryParseAsMeetSdkDefaultConfig(raw);
13
20
  if (!parsed) {
14
21
  throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} is not a valid MeetSdk default config`);
15
22
  }
16
23
  return parsed;
17
24
  }
25
+ function cloneDefaultConfig(value) {
26
+ return JSON.parse(JSON.stringify(value));
27
+ }
28
+ function resolveSdkHomeApiBaseUrl(baseUrl) {
29
+ return baseUrl || process.env.MEETGAMES_SDK_HOME_API_BASE_URL?.trim() || defaultSdkHomeApiBaseUrl;
30
+ }
31
+ const latestAndroidVersionCache = new Map();
32
+ async function fetchLatestAndroidSdkVersion(baseUrl) {
33
+ const resolvedBaseUrl = resolveSdkHomeApiBaseUrl(baseUrl);
34
+ let cached = latestAndroidVersionCache.get(resolvedBaseUrl);
35
+ if (!cached) {
36
+ cached = fetchSdkHomeVersions({ baseUrl: resolvedBaseUrl }).then(({ versions }) => versions.android);
37
+ latestAndroidVersionCache.set(resolvedBaseUrl, cached);
38
+ }
39
+ return cached;
40
+ }
41
+ export function syncMeetSdkAndroidVersionToConfig(params) {
42
+ const version = params.version.trim();
43
+ if (!version)
44
+ throw new Error("Android SDK version is empty");
45
+ const configPath = resolveMeetSdkAndroidConfigPath(params.packageRoot);
46
+ if (!fs.existsSync(configPath)) {
47
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} not found at ${configPath}`);
48
+ }
49
+ const raw = JSON.parse(fs.readFileSync(configPath, "utf8"));
50
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
51
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} is not a JSON object`);
52
+ }
53
+ const record = raw;
54
+ if (typeof record.topsdk !== "object" || record.topsdk === null || Array.isArray(record.topsdk)) {
55
+ throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} does not contain topsdk object`);
56
+ }
57
+ const topsdk = record.topsdk;
58
+ topsdk.version = version;
59
+ if (params.date?.trim())
60
+ topsdk.date = params.date.trim();
61
+ fs.writeFileSync(configPath, `${JSON.stringify(record, null, 2)}\n`, "utf8");
62
+ return configPath;
63
+ }
64
+ /**
65
+ * Built-in Android SDK defaults with the SDK version resolved at runtime from sdk-home.
66
+ * The version is also persisted to `config/meetsdk-android.json` so the package config
67
+ * reflects the latest SDK version discovered from the download center.
68
+ */
69
+ export async function loadMeetSdkDefaultConfigWithLatestAndroidVersion(options = {}) {
70
+ const defaults = cloneDefaultConfig(loadBuiltInMeetSdkDefaultConfig({ packageRoot: options.packageRoot }));
71
+ const latest = await fetchLatestAndroidSdkVersion(options.sdkHomeApiBaseUrl);
72
+ syncMeetSdkAndroidVersionToConfig({
73
+ version: latest.ver,
74
+ date: latest.date,
75
+ packageRoot: options.packageRoot,
76
+ });
77
+ defaults.topsdk.version = latest.ver;
78
+ defaults.topsdk.date = latest.date;
79
+ return defaults;
80
+ }
18
81
  //# 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;AAG9D,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,CAK3F;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,68 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export const MEETSDK_IOS_CONFIG_FILENAME = "meetsdk-ios.json";
4
+ const MEETSDK_CONFIG_DIR = "config";
5
+ function isRecord(value) {
6
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7
+ }
8
+ function str(value) {
9
+ return typeof value === "string" ? value.trim() : "";
10
+ }
11
+ function normalizePlugins(value) {
12
+ if (!Array.isArray(value))
13
+ return undefined;
14
+ const plugins = value.map((x) => String(x).trim()).filter(Boolean);
15
+ return plugins.length ? plugins : undefined;
16
+ }
17
+ export function resolveMeetSdkIosConfigPath(packageRoot) {
18
+ return path.join(packageRoot, MEETSDK_CONFIG_DIR, MEETSDK_IOS_CONFIG_FILENAME);
19
+ }
20
+ export function tryParseAsMeetSdkIosConfig(raw) {
21
+ if (!isRecord(raw))
22
+ return null;
23
+ const topsdk = isRecord(raw.topsdk) ? raw.topsdk : {};
24
+ return {
25
+ topsdk: {
26
+ version: str(topsdk.version),
27
+ date: str(topsdk.date) || undefined,
28
+ packageType: str(topsdk.packageType) || undefined,
29
+ plugins: normalizePlugins(topsdk.plugins),
30
+ },
31
+ };
32
+ }
33
+ export function loadMeetSdkIosConfig(packageRoot) {
34
+ const configPath = resolveMeetSdkIosConfigPath(packageRoot);
35
+ if (!fs.existsSync(configPath)) {
36
+ return { topsdk: { version: "" } };
37
+ }
38
+ const parsed = tryParseAsMeetSdkIosConfig(JSON.parse(fs.readFileSync(configPath, "utf8")));
39
+ if (!parsed) {
40
+ throw new Error(`${MEETSDK_IOS_CONFIG_FILENAME} is not a valid MeetSdk iOS config`);
41
+ }
42
+ return parsed;
43
+ }
44
+ export function writeMeetSdkIosConfig(packageRoot, config) {
45
+ const configPath = resolveMeetSdkIosConfigPath(packageRoot);
46
+ fs.mkdirSync(path.dirname(configPath), { recursive: true });
47
+ fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
48
+ return configPath;
49
+ }
50
+ export function syncMeetSdkIosVersionToConfig(params) {
51
+ const version = params.version.trim();
52
+ if (!version)
53
+ throw new Error("iOS SDK version is empty");
54
+ const current = loadMeetSdkIosConfig(params.packageRoot);
55
+ const nextDate = params.date === undefined ? current.topsdk.date : params.date.trim() || undefined;
56
+ const next = {
57
+ ...current,
58
+ topsdk: {
59
+ ...current.topsdk,
60
+ version,
61
+ date: nextDate,
62
+ packageType: params.packageType?.trim() || current.topsdk.packageType,
63
+ plugins: params.plugins?.map((x) => x.trim()).filter(Boolean) || current.topsdk.plugins,
64
+ },
65
+ };
66
+ return writeMeetSdkIosConfig(params.packageRoot, next);
67
+ }
68
+ //# sourceMappingURL=meetSdkIosConfig.js.map