@leonxin/meetgames 0.1.0

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 (246) hide show
  1. package/README.md +120 -0
  2. package/bundled/android/sample.txt +1 -0
  3. package/dist/android/adapter.d.ts +3 -0
  4. package/dist/android/adapter.d.ts.map +1 -0
  5. package/dist/android/adapter.js +8 -0
  6. package/dist/android/adapter.js.map +1 -0
  7. package/dist/android/assembleIntegrationJson.d.ts +8 -0
  8. package/dist/android/assembleIntegrationJson.d.ts.map +1 -0
  9. package/dist/android/assembleIntegrationJson.js +31 -0
  10. package/dist/android/assembleIntegrationJson.js.map +1 -0
  11. package/dist/android/detect.d.ts +11 -0
  12. package/dist/android/detect.d.ts.map +1 -0
  13. package/dist/android/detect.js +87 -0
  14. package/dist/android/detect.js.map +1 -0
  15. package/dist/android/downloadGoogleServicesJson.d.ts +20 -0
  16. package/dist/android/downloadGoogleServicesJson.d.ts.map +1 -0
  17. package/dist/android/downloadGoogleServicesJson.js +43 -0
  18. package/dist/android/downloadGoogleServicesJson.js.map +1 -0
  19. package/dist/android/fetchRemoteConfig.d.ts +5 -0
  20. package/dist/android/fetchRemoteConfig.d.ts.map +1 -0
  21. package/dist/android/fetchRemoteConfig.js +24 -0
  22. package/dist/android/fetchRemoteConfig.js.map +1 -0
  23. package/dist/android/gradle.d.ts +30 -0
  24. package/dist/android/gradle.d.ts.map +1 -0
  25. package/dist/android/gradle.js +87 -0
  26. package/dist/android/gradle.js.map +1 -0
  27. package/dist/android/manifest.d.ts +10 -0
  28. package/dist/android/manifest.d.ts.map +1 -0
  29. package/dist/android/manifest.js +45 -0
  30. package/dist/android/manifest.js.map +1 -0
  31. package/dist/android/meetSdkRemoteGradle.d.ts +86 -0
  32. package/dist/android/meetSdkRemoteGradle.d.ts.map +1 -0
  33. package/dist/android/meetSdkRemoteGradle.js +479 -0
  34. package/dist/android/meetSdkRemoteGradle.js.map +1 -0
  35. package/dist/android/snapchatManifestPlaceholders.d.ts +15 -0
  36. package/dist/android/snapchatManifestPlaceholders.d.ts.map +1 -0
  37. package/dist/android/snapchatManifestPlaceholders.js +53 -0
  38. package/dist/android/snapchatManifestPlaceholders.js.map +1 -0
  39. package/dist/cli.d.ts +2 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +291 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/config/fetchConfigWrite.d.ts +10 -0
  44. package/dist/config/fetchConfigWrite.d.ts.map +1 -0
  45. package/dist/config/fetchConfigWrite.js +21 -0
  46. package/dist/config/fetchConfigWrite.js.map +1 -0
  47. package/dist/config/loadAndroidIntegration.d.ts +4 -0
  48. package/dist/config/loadAndroidIntegration.d.ts.map +1 -0
  49. package/dist/config/loadAndroidIntegration.js +34 -0
  50. package/dist/config/loadAndroidIntegration.js.map +1 -0
  51. package/dist/config/loadManifest.d.ts +3 -0
  52. package/dist/config/loadManifest.d.ts.map +1 -0
  53. package/dist/config/loadManifest.js +33 -0
  54. package/dist/config/loadManifest.js.map +1 -0
  55. package/dist/config/meetSdkDefaultConfig.d.ts +5 -0
  56. package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -0
  57. package/dist/config/meetSdkDefaultConfig.js +15 -0
  58. package/dist/config/meetSdkDefaultConfig.js.map +1 -0
  59. package/dist/config/meetSdkRemoteConfig.d.ts +240 -0
  60. package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -0
  61. package/dist/config/meetSdkRemoteConfig.js +892 -0
  62. package/dist/config/meetSdkRemoteConfig.js.map +1 -0
  63. package/dist/config/topsdkFeatureModules.d.ts +19 -0
  64. package/dist/config/topsdkFeatureModules.d.ts.map +1 -0
  65. package/dist/config/topsdkFeatureModules.js +47 -0
  66. package/dist/config/topsdkFeatureModules.js.map +1 -0
  67. package/dist/contracts/types.d.ts +95 -0
  68. package/dist/contracts/types.d.ts.map +1 -0
  69. package/dist/contracts/types.js +2 -0
  70. package/dist/contracts/types.js.map +1 -0
  71. package/dist/core/engine.d.ts +3 -0
  72. package/dist/core/engine.d.ts.map +1 -0
  73. package/dist/core/engine.js +18 -0
  74. package/dist/core/engine.js.map +1 -0
  75. package/dist/core/patch.d.ts +2 -0
  76. package/dist/core/patch.d.ts.map +1 -0
  77. package/dist/core/patch.js +61 -0
  78. package/dist/core/patch.js.map +1 -0
  79. package/dist/core/pipeline.d.ts +12 -0
  80. package/dist/core/pipeline.d.ts.map +1 -0
  81. package/dist/core/pipeline.js +102 -0
  82. package/dist/core/pipeline.js.map +1 -0
  83. package/dist/core/previewPatches.d.ts +8 -0
  84. package/dist/core/previewPatches.d.ts.map +1 -0
  85. package/dist/core/previewPatches.js +25 -0
  86. package/dist/core/previewPatches.js.map +1 -0
  87. package/dist/core/reporter.d.ts +3 -0
  88. package/dist/core/reporter.d.ts.map +1 -0
  89. package/dist/core/reporter.js +24 -0
  90. package/dist/core/reporter.js.map +1 -0
  91. package/dist/core/resolveFetchChannelType.d.ts +27 -0
  92. package/dist/core/resolveFetchChannelType.d.ts.map +1 -0
  93. package/dist/core/resolveFetchChannelType.js +54 -0
  94. package/dist/core/resolveFetchChannelType.js.map +1 -0
  95. package/dist/core/workspace.d.ts +5 -0
  96. package/dist/core/workspace.d.ts.map +1 -0
  97. package/dist/core/workspace.js +24 -0
  98. package/dist/core/workspace.js.map +1 -0
  99. package/dist/entry.d.ts +3 -0
  100. package/dist/entry.d.ts.map +1 -0
  101. package/dist/entry.js +7 -0
  102. package/dist/entry.js.map +1 -0
  103. package/dist/index.d.ts +23 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +22 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/ios/channelConfig.d.ts +7 -0
  108. package/dist/ios/channelConfig.d.ts.map +1 -0
  109. package/dist/ios/channelConfig.js +51 -0
  110. package/dist/ios/channelConfig.js.map +1 -0
  111. package/dist/ios/codeUtils.d.ts +15 -0
  112. package/dist/ios/codeUtils.d.ts.map +1 -0
  113. package/dist/ios/codeUtils.js +166 -0
  114. package/dist/ios/codeUtils.js.map +1 -0
  115. package/dist/ios/detect.d.ts +3 -0
  116. package/dist/ios/detect.d.ts.map +1 -0
  117. package/dist/ios/detect.js +65 -0
  118. package/dist/ios/detect.js.map +1 -0
  119. package/dist/ios/fileManager.d.ts +12 -0
  120. package/dist/ios/fileManager.d.ts.map +1 -0
  121. package/dist/ios/fileManager.js +46 -0
  122. package/dist/ios/fileManager.js.map +1 -0
  123. package/dist/ios/infoPlist.d.ts +11 -0
  124. package/dist/ios/infoPlist.d.ts.map +1 -0
  125. package/dist/ios/infoPlist.js +48 -0
  126. package/dist/ios/infoPlist.js.map +1 -0
  127. package/dist/ios/integrate.d.ts +12 -0
  128. package/dist/ios/integrate.d.ts.map +1 -0
  129. package/dist/ios/integrate.js +263 -0
  130. package/dist/ios/integrate.js.map +1 -0
  131. package/dist/ios/pbxprojEditor.d.ts +20 -0
  132. package/dist/ios/pbxprojEditor.d.ts.map +1 -0
  133. package/dist/ios/pbxprojEditor.js +198 -0
  134. package/dist/ios/pbxprojEditor.js.map +1 -0
  135. package/dist/ios/pluginConfig.d.ts +6 -0
  136. package/dist/ios/pluginConfig.d.ts.map +1 -0
  137. package/dist/ios/pluginConfig.js +64 -0
  138. package/dist/ios/pluginConfig.js.map +1 -0
  139. package/dist/ios/reserved.d.ts +4 -0
  140. package/dist/ios/reserved.d.ts.map +1 -0
  141. package/dist/ios/reserved.js +6 -0
  142. package/dist/ios/reserved.js.map +1 -0
  143. package/dist/ios/sdkBundle.d.ts +7 -0
  144. package/dist/ios/sdkBundle.d.ts.map +1 -0
  145. package/dist/ios/sdkBundle.js +30 -0
  146. package/dist/ios/sdkBundle.js.map +1 -0
  147. package/dist/ios/template.d.ts +3 -0
  148. package/dist/ios/template.d.ts.map +1 -0
  149. package/dist/ios/template.js +24 -0
  150. package/dist/ios/template.js.map +1 -0
  151. package/dist/ios/types.d.ts +43 -0
  152. package/dist/ios/types.d.ts.map +1 -0
  153. package/dist/ios/types.js +11 -0
  154. package/dist/ios/types.js.map +1 -0
  155. package/dist/mcp/server.d.ts +4 -0
  156. package/dist/mcp/server.d.ts.map +1 -0
  157. package/dist/mcp/server.js +139 -0
  158. package/dist/mcp/server.js.map +1 -0
  159. package/dist/mcp/service.d.ts +49 -0
  160. package/dist/mcp/service.d.ts.map +1 -0
  161. package/dist/mcp/service.js +113 -0
  162. package/dist/mcp/service.js.map +1 -0
  163. package/dist/mcp-entry.d.ts +3 -0
  164. package/dist/mcp-entry.d.ts.map +1 -0
  165. package/dist/mcp-entry.js +7 -0
  166. package/dist/mcp-entry.js.map +1 -0
  167. package/dist/ops/fileStore.d.ts +17 -0
  168. package/dist/ops/fileStore.d.ts.map +1 -0
  169. package/dist/ops/fileStore.js +55 -0
  170. package/dist/ops/fileStore.js.map +1 -0
  171. package/dist/ops/handlers.d.ts +10 -0
  172. package/dist/ops/handlers.d.ts.map +1 -0
  173. package/dist/ops/handlers.js +268 -0
  174. package/dist/ops/handlers.js.map +1 -0
  175. package/dist/platforms/android/adapter.d.ts +3 -0
  176. package/dist/platforms/android/adapter.d.ts.map +1 -0
  177. package/dist/platforms/android/adapter.js +8 -0
  178. package/dist/platforms/android/adapter.js.map +1 -0
  179. package/dist/platforms/android/detect.d.ts +3 -0
  180. package/dist/platforms/android/detect.d.ts.map +1 -0
  181. package/dist/platforms/android/detect.js +79 -0
  182. package/dist/platforms/android/detect.js.map +1 -0
  183. package/dist/platforms/android/gradle.d.ts +30 -0
  184. package/dist/platforms/android/gradle.d.ts.map +1 -0
  185. package/dist/platforms/android/gradle.js +83 -0
  186. package/dist/platforms/android/gradle.js.map +1 -0
  187. package/dist/platforms/android/manifest.d.ts +7 -0
  188. package/dist/platforms/android/manifest.d.ts.map +1 -0
  189. package/dist/platforms/android/manifest.js +24 -0
  190. package/dist/platforms/android/manifest.js.map +1 -0
  191. package/dist/platforms/ios/adapter.d.ts +3 -0
  192. package/dist/platforms/ios/adapter.d.ts.map +1 -0
  193. package/dist/platforms/ios/adapter.js +8 -0
  194. package/dist/platforms/ios/adapter.js.map +1 -0
  195. package/dist/platforms/ios/detect.d.ts +8 -0
  196. package/dist/platforms/ios/detect.d.ts.map +1 -0
  197. package/dist/platforms/ios/detect.js +67 -0
  198. package/dist/platforms/ios/detect.js.map +1 -0
  199. package/dist/platforms/ios/plist.d.ts +11 -0
  200. package/dist/platforms/ios/plist.d.ts.map +1 -0
  201. package/dist/platforms/ios/plist.js +24 -0
  202. package/dist/platforms/ios/plist.js.map +1 -0
  203. package/dist/platforms/ios/podfile.d.ts +7 -0
  204. package/dist/platforms/ios/podfile.d.ts.map +1 -0
  205. package/dist/platforms/ios/podfile.js +15 -0
  206. package/dist/platforms/ios/podfile.js.map +1 -0
  207. package/dist/remote/fetchJson.d.ts +5 -0
  208. package/dist/remote/fetchJson.d.ts.map +1 -0
  209. package/dist/remote/fetchJson.js +24 -0
  210. package/dist/remote/fetchJson.js.map +1 -0
  211. package/dist/remote/topsdkDownloadSdkConfig.d.ts +23 -0
  212. package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -0
  213. package/dist/remote/topsdkDownloadSdkConfig.js +56 -0
  214. package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -0
  215. package/dist/remote/topsdkGetSdkConfig.d.ts +46 -0
  216. package/dist/remote/topsdkGetSdkConfig.d.ts.map +1 -0
  217. package/dist/remote/topsdkGetSdkConfig.js +95 -0
  218. package/dist/remote/topsdkGetSdkConfig.js.map +1 -0
  219. package/dist/remote/topsdkSign.d.ts +6 -0
  220. package/dist/remote/topsdkSign.d.ts.map +1 -0
  221. package/dist/remote/topsdkSign.js +10 -0
  222. package/dist/remote/topsdkSign.js.map +1 -0
  223. package/docs/ANDROID.md +133 -0
  224. package/docs/API.md +47 -0
  225. package/docs/CURSOR-MCP-SETUP.md +72 -0
  226. package/docs/MCP-SKILL.md +63 -0
  227. package/docs/README.md +12 -0
  228. package/docs/api/downloadSDKConfig.md +96 -0
  229. package/docs/api/getChannelConfig-meetgames.md +106 -0
  230. package/docs/api/getSDKConfig.md +38 -0
  231. package/docs//346/212/200/346/234/257/346/226/271/346/241/210/350/260/203/347/240/224.md +329 -0
  232. package/docs//351/234/200/346/261/202/346/226/207/346/241/243.md +320 -0
  233. package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +123 -0
  234. package/fixtures/meetsdk-remote-config.download-shape.json +20 -0
  235. package/fixtures/meetsdk-remote-config.mock.json +69 -0
  236. package/fixtures/recipes/android-default.fixture.yaml +15 -0
  237. package/fixtures/recipes/android-integration.fixture.json +29 -0
  238. package/fixtures/topsdk-config-reference.json +39 -0
  239. package/meetsdk-android.json +151 -0
  240. package/package.json +61 -0
  241. package/recipes/android-default.yaml +15 -0
  242. package/recipes/integrate-default.yaml +16 -0
  243. package/recipes/ios-default.yaml +5 -0
  244. package/schema/android-integration.schema.json +65 -0
  245. package/schema/manifest.schema.json +45 -0
  246. package/schema/meetsdk-remote-config.schema.json +45 -0
@@ -0,0 +1,55 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ /** Tracks text file originals and pending content for dry-run / apply */
4
+ export class TextFileStore {
5
+ projectRoot;
6
+ map = new Map();
7
+ constructor(projectRoot) {
8
+ this.projectRoot = projectRoot;
9
+ }
10
+ rel(abs) {
11
+ return path.relative(this.projectRoot, abs).split(path.sep).join("/");
12
+ }
13
+ read(rel) {
14
+ const existing = this.map.get(rel);
15
+ if (existing)
16
+ return existing.current;
17
+ const abs = path.join(this.projectRoot, rel);
18
+ if (!fs.existsSync(abs))
19
+ return "";
20
+ const content = fs.readFileSync(abs, "utf8");
21
+ this.map.set(rel, { original: content, current: content });
22
+ return content;
23
+ }
24
+ write(rel, content) {
25
+ const abs = path.join(this.projectRoot, rel);
26
+ const existing = this.map.get(rel);
27
+ if (existing) {
28
+ existing.current = content;
29
+ return;
30
+ }
31
+ let original = "";
32
+ if (fs.existsSync(abs))
33
+ original = fs.readFileSync(abs, "utf8");
34
+ this.map.set(rel, { original, current: content });
35
+ }
36
+ /** Files where current !== original */
37
+ changedEntries() {
38
+ const out = [];
39
+ for (const [rel, v] of this.map) {
40
+ if (v.current !== v.original)
41
+ out.push({ rel, original: v.original, current: v.current });
42
+ }
43
+ return out;
44
+ }
45
+ flushToDisk() {
46
+ for (const [rel, v] of this.map) {
47
+ if (v.current === v.original)
48
+ continue;
49
+ const abs = path.join(this.projectRoot, rel);
50
+ fs.mkdirSync(path.dirname(abs), { recursive: true });
51
+ fs.writeFileSync(abs, v.current, "utf8");
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=fileStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileStore.js","sourceRoot":"","sources":["../../src/ops/fileStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { StepResult, WorkspaceContext } from "../contracts/types.js";
2
+ import type { TextFileStore } from "./fileStore.js";
3
+ export interface BinaryCopy {
4
+ fromAbs: string;
5
+ relTo: string;
6
+ }
7
+ export type OpHandler = (ctx: WorkspaceContext, store: TextFileStore, args: Record<string, unknown>, dryRun: boolean, binaryCopies: BinaryCopy[]) => StepResult | Promise<StepResult>;
8
+ export declare const opHandlers: Record<string, OpHandler>;
9
+ export declare function getOpHandler(name: string): OpHandler | undefined;
10
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/ops/handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAoB1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAoCpD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,UAAU,EAAE,KACvB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA4MhD,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEhE"}
@@ -0,0 +1,268 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { applicationModuleRelPath } from "../android/detect.js";
4
+ import { updateModuleBuildGradleDependencies, updateRootBuildGradleRepositories } from "../android/gradle.js";
5
+ import { updateModuleBuildGradleMeetSdkRemote, updateRootBuildGradleMeetSdkRemote, updateSettingsGradleMeetSdkRemote, } from "../android/meetSdkRemoteGradle.js";
6
+ import { MEETSDK_REMOTE_CONFIG_FILENAME, applyMeetSdkDefaultConfig, collectMeetSdkRemoteApplyPlugins, collectMeetSdkRemoteBuildscriptClasspaths, collectMeetSdkRemoteBuildscriptRepositories, collectMeetSdkRemoteRepositories, tryParseAsMeetSdkRemoteConfig, validateMeetSdkRemoteConfig, } from "../config/meetSdkRemoteConfig.js";
7
+ import { loadBuiltInMeetSdkDefaultConfig } from "../config/meetSdkDefaultConfig.js";
8
+ import { insertPermissions } from "../android/manifest.js";
9
+ function ok(changed, warnings = []) {
10
+ return { ok: true, changedFiles: changed, warnings, errors: [] };
11
+ }
12
+ function fail(errors) {
13
+ return { ok: false, changedFiles: [], warnings: [], errors };
14
+ }
15
+ function readRootBuildGradle(projectRoot) {
16
+ const a = path.join(projectRoot, "build.gradle");
17
+ if (fs.existsSync(a))
18
+ return { rel: "build.gradle", abs: a };
19
+ const b = path.join(projectRoot, "build.gradle.kts");
20
+ if (fs.existsSync(b))
21
+ return { rel: "build.gradle.kts", abs: b };
22
+ return null;
23
+ }
24
+ function readSettingsGradle(projectRoot) {
25
+ const a = path.join(projectRoot, "settings.gradle");
26
+ if (fs.existsSync(a))
27
+ return { rel: "settings.gradle", abs: a };
28
+ const b = path.join(projectRoot, "settings.gradle.kts");
29
+ if (fs.existsSync(b))
30
+ return { rel: "settings.gradle.kts", abs: b };
31
+ return null;
32
+ }
33
+ function moduleGradleRel(ctx) {
34
+ if (!ctx.android?.ok)
35
+ return null;
36
+ const moduleDir = ctx.android.moduleDir;
37
+ const a = path.join(moduleDir, "build.gradle");
38
+ if (fs.existsSync(a))
39
+ return path.relative(ctx.projectRoot, a).split(path.sep).join("/");
40
+ const b = path.join(moduleDir, "build.gradle.kts");
41
+ if (fs.existsSync(b))
42
+ return path.relative(ctx.projectRoot, b).split(path.sep).join("/");
43
+ return null;
44
+ }
45
+ export const opHandlers = {
46
+ /**
47
+ * Reads meetsdk-remote-config.json (or args.configFile) and writes TOPSDK-managed blocks
48
+ * into root `build.gradle` (repositories) and the app module `build.gradle` (resValue + TOPSDK dependencies),
49
+ * matching sdk-integration-agent `gradleEditor.js` behavior.
50
+ */
51
+ "gradle.applyMeetSdkRemoteConfig": (ctx, store, args, _dry, _bc) => {
52
+ if (!ctx.android?.ok)
53
+ return fail(["android application module not detected"]);
54
+ const configRel = typeof args.configFile === "string" && args.configFile.trim()
55
+ ? args.configFile.trim().replace(/\\/g, "/")
56
+ : MEETSDK_REMOTE_CONFIG_FILENAME;
57
+ const abs = path.join(ctx.projectRoot, configRel);
58
+ if (!fs.existsSync(abs))
59
+ return fail([`meet sdk remote config not found: ${configRel}`]);
60
+ let raw;
61
+ try {
62
+ raw = JSON.parse(fs.readFileSync(abs, "utf8"));
63
+ }
64
+ catch {
65
+ return fail([`failed to parse JSON: ${configRel}`]);
66
+ }
67
+ const parsed = tryParseAsMeetSdkRemoteConfig(raw);
68
+ if (!parsed)
69
+ return fail([`not a meetsdk-remote-config document: ${configRel}`]);
70
+ const v = validateMeetSdkRemoteConfig(parsed);
71
+ if (!v.ok) {
72
+ return fail([`meetsdk-remote-config validation failed (${configRel}): ${v.missing.join(", ")}`]);
73
+ }
74
+ const resolved = applyMeetSdkDefaultConfig(parsed, loadBuiltInMeetSdkDefaultConfig());
75
+ const repositories = collectMeetSdkRemoteRepositories(resolved);
76
+ const buildscriptRepositories = collectMeetSdkRemoteBuildscriptRepositories(resolved);
77
+ const buildscriptClasspaths = collectMeetSdkRemoteBuildscriptClasspaths(resolved);
78
+ const changed = [];
79
+ const warnings = [];
80
+ const settings = readSettingsGradle(ctx.projectRoot);
81
+ let repositoriesWrittenInSettings = false;
82
+ if (settings && repositories.length > 0) {
83
+ if (settings.rel.endsWith(".kts")) {
84
+ warnings.push("gradle.applyMeetSdkRemoteConfig: settings.gradle.kts repositories edit not supported yet; fallback to root build.gradle");
85
+ }
86
+ else {
87
+ const settingsBefore = store.read(settings.rel);
88
+ const settingsU = updateSettingsGradleMeetSdkRemote(settingsBefore, repositories);
89
+ if (!settingsU.ok) {
90
+ warnings.push(settingsU.error);
91
+ }
92
+ else {
93
+ store.write(settings.rel, settingsU.content);
94
+ if (settingsU.changed)
95
+ changed.push(settings.rel);
96
+ warnings.push(...settingsU.warnings);
97
+ repositoriesWrittenInSettings = true;
98
+ }
99
+ }
100
+ }
101
+ const root = readRootBuildGradle(ctx.projectRoot);
102
+ if (!root) {
103
+ if (!repositoriesWrittenInSettings)
104
+ return fail(["root build.gradle not found"]);
105
+ if (buildscriptRepositories.length > 0 || buildscriptClasspaths.length > 0) {
106
+ warnings.push("root build.gradle not found; skipped buildscript repositories/classpaths");
107
+ }
108
+ }
109
+ else {
110
+ if (root.rel.endsWith(".kts")) {
111
+ return fail(["gradle.applyMeetSdkRemoteConfig: root build.gradle.kts not supported in MVP"]);
112
+ }
113
+ const rootBefore = store.read(root.rel);
114
+ const rootU = updateRootBuildGradleMeetSdkRemote(rootBefore, {
115
+ repositories: repositoriesWrittenInSettings ? [] : repositories,
116
+ buildscriptRepositories,
117
+ buildscriptClasspaths,
118
+ });
119
+ if (!rootU.ok)
120
+ return fail([rootU.error]);
121
+ store.write(root.rel, rootU.content);
122
+ if (rootU.changed)
123
+ changed.push(root.rel);
124
+ warnings.push(...rootU.warnings);
125
+ }
126
+ const modRel = moduleGradleRel(ctx);
127
+ if (!modRel)
128
+ return fail(["module build.gradle not found"]);
129
+ if (modRel.endsWith(".kts")) {
130
+ return fail(["gradle.applyMeetSdkRemoteConfig: module build.gradle.kts not supported in MVP"]);
131
+ }
132
+ const modBefore = store.read(modRel);
133
+ const modU = updateModuleBuildGradleMeetSdkRemote(modBefore, resolved, collectMeetSdkRemoteApplyPlugins(resolved));
134
+ if (!modU.ok)
135
+ return fail([modU.error]);
136
+ store.write(modRel, modU.content);
137
+ if (modU.changed)
138
+ changed.push(modRel);
139
+ return ok(changed, [...warnings, ...modU.warnings]);
140
+ },
141
+ "gradle.insertRepositories": (ctx, store, args, _dry, _bc) => {
142
+ if (!ctx.android?.ok)
143
+ return fail(["android application module not detected"]);
144
+ const urls = args.urls;
145
+ if (!Array.isArray(urls) || !urls.every((u) => typeof u === "string")) {
146
+ return fail(["gradle.insertRepositories requires args.urls: string[]"]);
147
+ }
148
+ const root = readRootBuildGradle(ctx.projectRoot);
149
+ if (!root)
150
+ return fail(["root build.gradle not found"]);
151
+ if (root.rel.endsWith(".kts"))
152
+ return fail(["gradle.insertRepositories: build.gradle.kts not supported in MVP"]);
153
+ const rel = root.rel;
154
+ const before = store.read(rel);
155
+ const res = updateRootBuildGradleRepositories(before, urls);
156
+ if (!res.ok)
157
+ return fail([res.error]);
158
+ store.write(rel, res.content);
159
+ const changed = res.changed ? [rel] : [];
160
+ return ok(changed, res.warnings);
161
+ },
162
+ "gradle.addDependency": (ctx, store, args, _dry, _bc) => {
163
+ if (!ctx.android?.ok)
164
+ return fail(["android application module not detected"]);
165
+ const modRel = moduleGradleRel(ctx);
166
+ if (!modRel)
167
+ return fail(["module build.gradle not found"]);
168
+ if (modRel.endsWith(".kts"))
169
+ return fail(["gradle.addDependency: build.gradle.kts not supported in MVP"]);
170
+ let depLines = [];
171
+ if (Array.isArray(args.lines)) {
172
+ depLines = args.lines.map((x) => String(x));
173
+ }
174
+ else if (typeof args.coordinate === "string") {
175
+ const cfg = typeof args.configuration === "string" ? args.configuration : "implementation";
176
+ depLines = [` ${cfg} '${args.coordinate}'`];
177
+ }
178
+ else {
179
+ return fail(["gradle.addDependency requires args.lines: string[] or args.coordinate: string"]);
180
+ }
181
+ const before = store.read(modRel);
182
+ const res = updateModuleBuildGradleDependencies(before, depLines);
183
+ if (!res.ok)
184
+ return fail([res.error]);
185
+ store.write(modRel, res.content);
186
+ return ok(res.changed ? [modRel] : [], res.warnings);
187
+ },
188
+ "android.manifest.insertPermissions": (ctx, store, args, _dry, _bc) => {
189
+ if (!ctx.android?.ok)
190
+ return fail(["android application module not detected"]);
191
+ const perms = args.permissions;
192
+ if (!Array.isArray(perms) || !perms.every((p) => typeof p === "string")) {
193
+ return fail(["android.manifest.insertPermissions requires args.permissions: string[]"]);
194
+ }
195
+ const rel = path.relative(ctx.projectRoot, ctx.android.manifestPath).split(path.sep).join("/");
196
+ const before = store.read(rel);
197
+ const { content, changed } = insertPermissions(before, perms);
198
+ store.write(rel, content);
199
+ return ok(changed ? [rel] : []);
200
+ },
201
+ "ios.integrateTopSdk": async (ctx, store, args, dryRun, binaryCopies) => {
202
+ if (!ctx.ios?.ok)
203
+ return fail(["iOS project not detected"]);
204
+ const { runIosIntegrateTopSdk } = await import("../ios/integrate.js");
205
+ const targetName = typeof args.targetName === "string" ? args.targetName : undefined;
206
+ const executeAppDelegate = args.executeAppDelegate === false ? false : true;
207
+ return runIosIntegrateTopSdk(ctx, store, binaryCopies, {
208
+ dryRun,
209
+ targetName,
210
+ executeAppDelegate,
211
+ });
212
+ },
213
+ "files.downloadGoogleServicesJson": async (ctx, _store, args, dryRun, _bc) => {
214
+ if (!ctx.android?.ok)
215
+ return fail(["android application module not detected"]);
216
+ const configRel = typeof args.configFile === "string" && args.configFile.trim()
217
+ ? args.configFile.trim().replace(/\\/g, "/")
218
+ : MEETSDK_REMOTE_CONFIG_FILENAME;
219
+ const abs = path.join(ctx.projectRoot, configRel);
220
+ if (!fs.existsSync(abs))
221
+ return fail([`meet sdk remote config not found: ${configRel}`]);
222
+ let raw;
223
+ try {
224
+ raw = JSON.parse(fs.readFileSync(abs, "utf8"));
225
+ }
226
+ catch {
227
+ return fail([`failed to parse JSON: ${configRel}`]);
228
+ }
229
+ const parsed = tryParseAsMeetSdkRemoteConfig(raw);
230
+ if (!parsed)
231
+ return fail([`not a meetsdk-remote-config document: ${configRel}`]);
232
+ const resolved = applyMeetSdkDefaultConfig(parsed, loadBuiltInMeetSdkDefaultConfig());
233
+ const firebase = resolved.sdkModules.analytics.firebase;
234
+ if (typeof firebase !== "object" || firebase === null) {
235
+ return ok([], ["files.downloadGoogleServicesJson: analytics.firebase not enabled, skipped"]);
236
+ }
237
+ const moduleRel = applicationModuleRelPath(ctx.projectRoot, ctx.android);
238
+ const { downloadGoogleServicesJson } = await import("../android/downloadGoogleServicesJson.js");
239
+ const result = await downloadGoogleServicesJson(ctx.projectRoot, firebase, {
240
+ applicationModuleRelPath: moduleRel,
241
+ dryRun,
242
+ });
243
+ if (!result.ok)
244
+ return fail([`files.downloadGoogleServicesJson: ${result.error}`]);
245
+ return ok(dryRun ? [] : [result.relPath], [
246
+ dryRun
247
+ ? `would download google-services.json to ${result.relPath}`
248
+ : `downloaded google-services.json to ${result.relPath}`,
249
+ ]);
250
+ },
251
+ "files.copyBundled": (ctx, _store, args, _dry, binaryCopies) => {
252
+ const from = args.from;
253
+ const to = args.to;
254
+ if (typeof from !== "string" || typeof to !== "string") {
255
+ return fail(["files.copyBundled requires args.from and args.to as strings"]);
256
+ }
257
+ const fromAbs = path.join(ctx.packageRoot, "bundled", from);
258
+ if (!fs.existsSync(fromAbs))
259
+ return fail([`bundled source not found: bundled/${from}`]);
260
+ const relTo = to.replace(/\\/g, "/");
261
+ binaryCopies.push({ fromAbs, relTo });
262
+ return ok([relTo]);
263
+ },
264
+ };
265
+ export function getOpHandler(name) {
266
+ return opHandlers[name];
267
+ }
268
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/ops/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PlatformAdapter } from "../../contracts/types.js";
2
+ export declare const androidPlatformAdapter: PlatformAdapter;
3
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/platforms/android/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGrF,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { detectAndroid } from "./detect.js";
2
+ export const androidPlatformAdapter = {
3
+ id: "android",
4
+ detect(projectRoot) {
5
+ return detectAndroid(projectRoot);
6
+ },
7
+ };
8
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/platforms/android/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,EAAE,EAAE,SAAS;IACb,MAAM,CAAC,WAAmB;QACxB,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AndroidDetectResult } from "../../contracts/types.js";
2
+ export declare function detectAndroid(projectRoot: string): AndroidDetectResult;
3
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/platforms/android/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAmCpE,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAgDtE"}
@@ -0,0 +1,79 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ function parseIncludes(settingsContent) {
4
+ const includes = [];
5
+ const includeRegex = /include\s+([^\n]+)/g;
6
+ let match = includeRegex.exec(settingsContent);
7
+ while (match) {
8
+ const raw = match[1];
9
+ const parts = raw
10
+ .split(",")
11
+ .map((x) => x.trim())
12
+ .filter(Boolean)
13
+ .map((x) => x.replace(/^['"]|['"]$/g, ""));
14
+ includes.push(...parts);
15
+ match = includeRegex.exec(settingsContent);
16
+ }
17
+ return includes;
18
+ }
19
+ function isApplicationModule(buildGradleContent) {
20
+ const applyPlugin = /apply\s+plugin:\s*['"]com\.android\.application['"]/m.test(buildGradleContent);
21
+ const pluginsBlock = /id\s*\(?\s*['"]com\.android\.application['"]\s*\)?/m.test(buildGradleContent);
22
+ return applyPlugin || pluginsBlock;
23
+ }
24
+ function moduleNameToDir(projectRoot, moduleName) {
25
+ const normalized = moduleName.startsWith(":") ? moduleName.slice(1) : moduleName;
26
+ const relative = normalized.replace(/:/g, "/");
27
+ return path.join(projectRoot, relative);
28
+ }
29
+ function defaultManifestPath(moduleDir) {
30
+ return path.join(moduleDir, "src", "main", "AndroidManifest.xml");
31
+ }
32
+ export function detectAndroid(projectRoot) {
33
+ const settingsGradle = path.join(projectRoot, "settings.gradle");
34
+ const settingsGradleKts = path.join(projectRoot, "settings.gradle.kts");
35
+ let settingsPath = "";
36
+ let settingsContent = "";
37
+ if (fs.existsSync(settingsGradle)) {
38
+ settingsPath = settingsGradle;
39
+ settingsContent = fs.readFileSync(settingsGradle, "utf8");
40
+ }
41
+ else if (fs.existsSync(settingsGradleKts)) {
42
+ settingsPath = settingsGradleKts;
43
+ settingsContent = fs.readFileSync(settingsGradleKts, "utf8");
44
+ }
45
+ else {
46
+ return { ok: false, error: "settings.gradle / settings.gradle.kts not found in project root" };
47
+ }
48
+ void settingsPath;
49
+ const modules = parseIncludes(settingsContent);
50
+ if (!modules.length) {
51
+ return { ok: false, error: "no modules found in settings.gradle" };
52
+ }
53
+ const applicationModules = [];
54
+ for (const moduleName of modules) {
55
+ const moduleDir = moduleNameToDir(projectRoot, moduleName);
56
+ const candidates = [path.join(moduleDir, "build.gradle"), path.join(moduleDir, "build.gradle.kts")];
57
+ const moduleGradle = candidates.find((p) => fs.existsSync(p));
58
+ if (!moduleGradle)
59
+ continue;
60
+ const content = fs.readFileSync(moduleGradle, "utf8");
61
+ if (isApplicationModule(content)) {
62
+ applicationModules.push({ moduleName, moduleDir });
63
+ }
64
+ }
65
+ if (applicationModules.length === 0) {
66
+ return { ok: false, error: "NO_APPLICATION_MODULE_FOUND" };
67
+ }
68
+ if (applicationModules.length > 1) {
69
+ const list = applicationModules.map((x) => x.moduleName).join(", ");
70
+ return { ok: false, error: `MULTIPLE_APPLICATION_MODULES_FOUND: ${list}` };
71
+ }
72
+ const { moduleName, moduleDir } = applicationModules[0];
73
+ const manifestPath = defaultManifestPath(moduleDir);
74
+ if (!fs.existsSync(manifestPath)) {
75
+ return { ok: false, error: `AndroidManifest.xml not found at ${manifestPath}` };
76
+ }
77
+ return { ok: true, moduleName, moduleDir, manifestPath };
78
+ }
79
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../../src/platforms/android/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export declare const START_REPO_MARKER = "// >>> MEET_INTEGRATE REPOS START";
2
+ export declare const END_REPO_MARKER = "// >>> MEET_INTEGRATE REPOS END";
3
+ export declare const START_BLOCK_MARKER = "// >>> MEET_INTEGRATE BLOCK START";
4
+ export declare const END_BLOCK_MARKER = "// >>> MEET_INTEGRATE BLOCK END";
5
+ export interface BlockRange {
6
+ start: number;
7
+ openBrace: number;
8
+ end: number;
9
+ }
10
+ export declare function findBlockRange(content: string, keyword: string, searchFrom?: number): BlockRange | null;
11
+ export declare function replaceOrInsertManaged(content: string, blockRange: BlockRange, startMarker: string, endMarker: string, snippet: string): string;
12
+ export declare function updateRootBuildGradleRepositories(content: string, urls: string[]): {
13
+ ok: true;
14
+ content: string;
15
+ changed: boolean;
16
+ warnings: string[];
17
+ } | {
18
+ ok: false;
19
+ error: string;
20
+ };
21
+ export declare function updateModuleBuildGradleDependencies(content: string, dependencyLines: string[]): {
22
+ ok: true;
23
+ content: string;
24
+ changed: boolean;
25
+ warnings: string[];
26
+ } | {
27
+ ok: false;
28
+ error: string;
29
+ };
30
+ //# sourceMappingURL=gradle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradle.d.ts","sourceRoot":"","sources":["../../../src/platforms/android/gradle.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,sCAAsC,CAAC;AACrE,eAAO,MAAM,eAAe,oCAAoC,CAAC;AACjE,eAAO,MAAM,kBAAkB,sCAAsC,CAAC;AACtE,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,UAAU,GAAG,IAAI,CAelG;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,CAeR;AAaD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAqBpG;AAMD,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EAAE,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAgBpG"}
@@ -0,0 +1,83 @@
1
+ export const START_REPO_MARKER = "// >>> MEET_INTEGRATE REPOS START";
2
+ export const END_REPO_MARKER = "// >>> MEET_INTEGRATE REPOS END";
3
+ export const START_BLOCK_MARKER = "// >>> MEET_INTEGRATE BLOCK START";
4
+ export const END_BLOCK_MARKER = "// >>> MEET_INTEGRATE BLOCK END";
5
+ export function findBlockRange(content, keyword, searchFrom = 0) {
6
+ const keywordIndex = content.indexOf(keyword, searchFrom);
7
+ if (keywordIndex < 0)
8
+ return null;
9
+ const openBrace = content.indexOf("{", keywordIndex);
10
+ if (openBrace < 0)
11
+ return null;
12
+ let depth = 0;
13
+ for (let i = openBrace; i < content.length; i += 1) {
14
+ const ch = content[i];
15
+ if (ch === "{")
16
+ depth += 1;
17
+ if (ch === "}") {
18
+ depth -= 1;
19
+ if (depth === 0)
20
+ return { start: keywordIndex, openBrace, end: i };
21
+ }
22
+ }
23
+ return null;
24
+ }
25
+ export function replaceOrInsertManaged(content, blockRange, startMarker, endMarker, snippet) {
26
+ const blockText = content.slice(blockRange.openBrace + 1, blockRange.end);
27
+ const startInBlock = blockText.indexOf(startMarker);
28
+ const endInBlock = blockText.indexOf(endMarker);
29
+ const insertion = `${snippet}\n`;
30
+ if (startInBlock >= 0 && endInBlock > startInBlock) {
31
+ const before = blockText.slice(0, startInBlock).replace(/\s*$/, "\n");
32
+ const after = blockText.slice(endInBlock + endMarker.length).replace(/^\s*/, "\n");
33
+ const replaced = `${before}${snippet}${after}`;
34
+ return content.slice(0, blockRange.openBrace + 1) + replaced + content.slice(blockRange.end);
35
+ }
36
+ const prefix = content.slice(0, blockRange.end);
37
+ return prefix + insertion.trimEnd() + "\n" + content.slice(blockRange.end);
38
+ }
39
+ function buildRepoSnippet(urls) {
40
+ const lines = [START_REPO_MARKER];
41
+ for (const url of urls) {
42
+ if (url === "google")
43
+ lines.push(" google()");
44
+ else if (url === "mavenCentral")
45
+ lines.push(" mavenCentral()");
46
+ else
47
+ lines.push(` maven { url '${url}' }`);
48
+ }
49
+ lines.push(END_REPO_MARKER);
50
+ return lines.join("\n");
51
+ }
52
+ export function updateRootBuildGradleRepositories(content, urls) {
53
+ const warnings = [];
54
+ const allprojects = findBlockRange(content, "allprojects");
55
+ if (!allprojects) {
56
+ return { ok: false, error: "allprojects block not found in root build.gradle" };
57
+ }
58
+ const repositoriesBlock = findBlockRange(content, "repositories", allprojects.start);
59
+ if (!repositoriesBlock || repositoriesBlock.end > allprojects.end) {
60
+ return { ok: false, error: "repositories block under allprojects not found" };
61
+ }
62
+ const snippet = buildRepoSnippet(urls || []);
63
+ const updated = replaceOrInsertManaged(content, repositoriesBlock, START_REPO_MARKER, END_REPO_MARKER, snippet);
64
+ if (updated === content)
65
+ warnings.push("root build.gradle repositories unchanged");
66
+ return { ok: true, content: updated, changed: updated !== content, warnings };
67
+ }
68
+ function buildDependenciesSnippet(lines) {
69
+ return [START_BLOCK_MARKER, ...lines, END_BLOCK_MARKER].join("\n");
70
+ }
71
+ export function updateModuleBuildGradleDependencies(content, dependencyLines) {
72
+ const warnings = [];
73
+ const dependenciesBlock = findBlockRange(content, "dependencies");
74
+ if (!dependenciesBlock) {
75
+ return { ok: false, error: "dependencies block not found in module build.gradle" };
76
+ }
77
+ const snippet = buildDependenciesSnippet(dependencyLines);
78
+ const updated = replaceOrInsertManaged(content, dependenciesBlock, START_BLOCK_MARKER, END_BLOCK_MARKER, snippet);
79
+ if (updated === content)
80
+ warnings.push("module build.gradle dependencies unchanged");
81
+ return { ok: true, content: updated, changed: updated !== content, warnings };
82
+ }
83
+ //# sourceMappingURL=gradle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradle.js","sourceRoot":"","sources":["../../../src/platforms/android/gradle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,iCAAiC,CAAC;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAQlE,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,OAAe,EAAE,UAAU,GAAG,CAAC;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACrE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,UAAsB,EACtB,WAAmB,EACnB,SAAiB,EACjB,OAAe;IAEf,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,GAAG,OAAO,IAAI,CAAC;IAEjC,IAAI,YAAY,IAAI,CAAC,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,EAAE,CAAC;QAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAChD,IAAI,GAAG,KAAK,cAAc;YAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;;YACjE,KAAK,CAAC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAAe,EACf,IAAc;IAEd,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IACrF,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC;IAChF,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,sBAAsB,CACpC,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,OAAO,CACR,CAAC;IACF,IAAI,OAAO,KAAK,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACnF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,QAAQ,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAe;IAC/C,OAAO,CAAC,kBAAkB,EAAE,GAAG,KAAK,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,OAAe,EACf,eAAyB;IAEzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAClE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;IACrF,CAAC;IACD,MAAM,OAAO,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,sBAAsB,CACpC,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,CACR,CAAC;IACF,IAAI,OAAO,KAAK,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACrF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,EAAE,QAAQ,EAAE,CAAC;AAChF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const MANIFEST_PERM_START = "<!-- MEET_INTEGRATE PERMISSIONS START -->";
2
+ export declare const MANIFEST_PERM_END = "<!-- MEET_INTEGRATE PERMISSIONS END -->";
3
+ export declare function insertPermissions(content: string, permissions: string[]): {
4
+ content: string;
5
+ changed: boolean;
6
+ };
7
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/platforms/android/manifest.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,8CAA8C,CAAC;AAC/E,eAAO,MAAM,iBAAiB,4CAA4C,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAuB/G"}