@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.
- package/.agents/skills/meet-sdk-regression/SKILL.md +93 -0
- package/.cursor/mcp.example.json +16 -0
- package/.cursor/mcp.json +11 -0
- package/.cursor/skills/meetgames-mcp/SKILL.md +48 -0
- package/.vite/vitest/results.json +1 -0
- package/README.md +36 -13
- package/{meetsdk-android.json → config/meetsdk-android.json} +2 -1
- package/config/meetsdk-ios.json +15 -0
- package/dist/android/adapter.d.ts.map +1 -1
- package/dist/android/adapter.js +2 -2
- package/dist/android/adapter.js.map +1 -1
- package/dist/android/detect.d.ts +2 -2
- package/dist/android/detect.d.ts.map +1 -1
- package/dist/android/detect.js +36 -8
- package/dist/android/detect.js.map +1 -1
- package/dist/cache.d.ts +44 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +101 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +181 -49
- package/dist/cli.js.map +1 -1
- package/dist/config/meetSdkDefaultConfig.d.ts +19 -2
- package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
- package/dist/config/meetSdkDefaultConfig.js +69 -6
- package/dist/config/meetSdkDefaultConfig.js.map +1 -1
- package/dist/config/meetSdkIosConfig.d.ts +21 -0
- package/dist/config/meetSdkIosConfig.d.ts.map +1 -0
- package/dist/config/meetSdkIosConfig.js +68 -0
- package/dist/config/meetSdkIosConfig.js.map +1 -0
- package/dist/config/meetSdkRemoteConfig.d.ts +19 -1
- package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
- package/dist/config/meetSdkRemoteConfig.js +64 -25
- package/dist/config/meetSdkRemoteConfig.js.map +1 -1
- package/dist/contracts/types.d.ts +27 -6
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/core/doctor.d.ts +17 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +444 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +0 -15
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/platform.d.ts +12 -0
- package/dist/core/platform.d.ts.map +1 -0
- package/dist/core/platform.js +40 -0
- package/dist/core/platform.js.map +1 -0
- package/dist/core/previewPatches.d.ts +1 -1
- package/dist/core/previewPatches.js +2 -2
- package/dist/core/previewPatches.js.map +1 -1
- package/dist/core/reporter.js +1 -1
- package/dist/core/reporter.js.map +1 -1
- package/dist/core/workspace.d.ts +2 -2
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +6 -5
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/ios/channelConfig.d.ts +1 -0
- package/dist/ios/channelConfig.d.ts.map +1 -1
- package/dist/ios/channelConfig.js +82 -0
- package/dist/ios/channelConfig.js.map +1 -1
- package/dist/ios/codeUtils.d.ts +1 -0
- package/dist/ios/codeUtils.d.ts.map +1 -1
- package/dist/ios/codeUtils.js +11 -2
- package/dist/ios/codeUtils.js.map +1 -1
- package/dist/ios/detect.d.ts +2 -2
- package/dist/ios/detect.d.ts.map +1 -1
- package/dist/ios/detect.js +49 -10
- package/dist/ios/detect.js.map +1 -1
- package/dist/ios/entitlements.d.ts +4 -0
- package/dist/ios/entitlements.d.ts.map +1 -0
- package/dist/ios/entitlements.js +53 -0
- package/dist/ios/entitlements.js.map +1 -0
- package/dist/ios/fileManager.d.ts.map +1 -1
- package/dist/ios/fileManager.js +3 -2
- package/dist/ios/fileManager.js.map +1 -1
- package/dist/ios/infoPlist.d.ts +1 -1
- package/dist/ios/infoPlist.d.ts.map +1 -1
- package/dist/ios/infoPlist.js.map +1 -1
- package/dist/ios/integrate.d.ts.map +1 -1
- package/dist/ios/integrate.js +214 -39
- package/dist/ios/integrate.js.map +1 -1
- package/dist/ios/pbxprojEditor.d.ts +2 -0
- package/dist/ios/pbxprojEditor.d.ts.map +1 -1
- package/dist/ios/pbxprojEditor.js +250 -6
- package/dist/ios/pbxprojEditor.js.map +1 -1
- package/dist/ios/pluginConfig.d.ts +1 -0
- package/dist/ios/pluginConfig.d.ts.map +1 -1
- package/dist/ios/pluginConfig.js +36 -4
- package/dist/ios/pluginConfig.js.map +1 -1
- package/dist/ios/sdkBundle.d.ts +1 -6
- package/dist/ios/sdkBundle.d.ts.map +1 -1
- package/dist/ios/sdkBundle.js +47 -17
- package/dist/ios/sdkBundle.js.map +1 -1
- package/dist/ios/template.d.ts +1 -0
- package/dist/ios/template.d.ts.map +1 -1
- package/dist/ios/template.js +14 -1
- package/dist/ios/template.js.map +1 -1
- package/dist/ios/types.d.ts +2 -2
- package/dist/ios/types.d.ts.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +22 -15
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service.d.ts +11 -6
- package/dist/mcp/service.d.ts.map +1 -1
- package/dist/mcp/service.js +61 -18
- package/dist/mcp/service.js.map +1 -1
- package/dist/ops/handlers.d.ts.map +1 -1
- package/dist/ops/handlers.js +34 -23
- package/dist/ops/handlers.js.map +1 -1
- package/dist/remote/sdkHomeDownload.d.ts +65 -0
- package/dist/remote/sdkHomeDownload.d.ts.map +1 -0
- package/dist/remote/sdkHomeDownload.js +229 -0
- package/dist/remote/sdkHomeDownload.js.map +1 -0
- package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -1
- package/dist/remote/topsdkDownloadSdkConfig.js +11 -1
- package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -1
- package/dist/shared/errors.d.ts +7 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +16 -0
- package/dist/shared/errors.js.map +1 -0
- package/docs/API.md +246 -32
- package/docs/CLI.md +291 -0
- package/docs/INTEGRATION.md +116 -0
- package/docs/MCP.md +86 -0
- package/docs/README.md +18 -10
- package/docs/{api → archive/api}/downloadSDKConfig.md +9 -7
- package/docs/{api → archive/api}/getChannelConfig-meetgames.md +2 -2
- package/docs/archive/ios-migration.md +2139 -0
- 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
- package/docs/{ → archive/product/}/351/234/200/346/261/202/346/226/207/346/241/243.md +16 -15
- package/package.json +7 -36
- package/recipes/android-default.yaml +0 -5
- package/recipes/integrate-default.yaml +0 -5
- package/src/android/adapter.ts +9 -0
- package/src/android/assembleIntegrationJson.ts +33 -0
- package/src/android/detect.ts +132 -0
- package/src/android/downloadGoogleServicesJson.ts +56 -0
- package/src/android/gradle.ts +116 -0
- package/src/android/manifest.ts +50 -0
- package/src/android/meetSdkRemoteGradle.ts +837 -0
- package/src/cache.ts +164 -0
- package/src/cli.ts +496 -0
- package/src/config/fetchConfigWrite.ts +30 -0
- package/src/config/loadAndroidIntegration.ts +41 -0
- package/src/config/loadManifest.ts +40 -0
- package/src/config/meetSdkDefaultConfig.ts +100 -0
- package/src/config/meetSdkIosConfig.ts +89 -0
- package/src/config/meetSdkRemoteConfig.ts +1215 -0
- package/src/config/topsdkFeatureModules.ts +92 -0
- package/src/contracts/types.ts +129 -0
- package/src/core/doctor.ts +485 -0
- package/src/core/patch.ts +64 -0
- package/src/core/pipeline.ts +107 -0
- package/src/core/platform.ts +47 -0
- package/src/core/previewPatches.ts +23 -0
- package/src/core/reporter.ts +24 -0
- package/src/core/workspace.ts +31 -0
- package/src/entry.ts +7 -0
- package/src/index.ts +140 -0
- package/src/ios/channelConfig.ts +128 -0
- package/src/ios/codeUtils.ts +160 -0
- package/src/ios/detect.ts +105 -0
- package/src/ios/entitlements.ts +61 -0
- package/src/ios/fileManager.ts +48 -0
- package/src/ios/infoPlist.ts +55 -0
- package/src/ios/integrate.ts +517 -0
- package/src/ios/pbxprojEditor.ts +450 -0
- package/src/ios/pluginConfig.ts +97 -0
- package/src/ios/reserved.ts +8 -0
- package/src/ios/sdkBundle.ts +59 -0
- package/src/ios/template.ts +36 -0
- package/src/ios/types.ts +65 -0
- package/src/mcp/server.ts +176 -0
- package/src/mcp/service.ts +253 -0
- package/src/mcp-entry.ts +7 -0
- package/src/ops/fileStore.ts +56 -0
- package/src/ops/handlers.ts +308 -0
- package/src/remote/fetchJson.ts +22 -0
- package/src/remote/sdkHomeDownload.ts +295 -0
- package/src/remote/topsdkDownloadSdkConfig.ts +93 -0
- package/src/remote/topsdkGetSdkConfig.ts +122 -0
- package/src/remote/topsdkSign.ts +10 -0
- package/src/shared/errors.ts +16 -0
- package/tests/assemble.test.ts +12 -0
- package/tests/doctor.test.ts +91 -0
- package/tests/downloadGoogleServicesJson.test.ts +47 -0
- package/tests/fetch-remote.test.ts +23 -0
- package/tests/fetchConfigOverrides.test.ts +28 -0
- package/tests/fetchConfigWrite.test.ts +54 -0
- package/tests/fixtures-hosts.test.ts +78 -0
- package/tests/gradle.test.ts +33 -0
- package/tests/integration-json.test.ts +29 -0
- package/tests/ios.codeUtils.test.ts +23 -0
- package/tests/ios.sdkBundle.test.ts +21 -0
- package/tests/loadManifest.test.ts +15 -0
- package/tests/manifest-xml.test.ts +30 -0
- package/tests/mcp.e2e.ts +214 -0
- package/tests/mcp.service.test.ts +53 -0
- package/tests/meetSdkRemoteConfig.test.ts +481 -0
- package/tests/meetSdkRemoteGradle.test.ts +414 -0
- package/tests/pipeline.android.test.ts +95 -0
- package/tests/pipeline.integration-json.test.ts +58 -0
- package/tests/pipeline.ios.test.ts +392 -0
- package/tests/pipeline.preview.patch.test.ts +85 -0
- package/tests/platformSelection.test.ts +77 -0
- package/tests/sdkHomeDownload.test.ts +124 -0
- package/tests/sdkVersionConfig.test.ts +131 -0
- package/tests/topsdk.test.ts +53 -0
- package/tests/topsdkDownloadSdkConfig.test.ts +81 -0
- package/tests/topsdkFeatureModules.test.ts +116 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +9 -0
- package/vitest.mcp.config.ts +11 -0
- package/bundled/android/sample.txt +0 -1
- package/docs/ANDROID.md +0 -133
- package/docs/CURSOR-MCP-SETUP.md +0 -72
- package/docs/MCP-SKILL.md +0 -63
- package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +0 -123
- package/fixtures/meetsdk-remote-config.download-shape.json +0 -20
- package/fixtures/meetsdk-remote-config.mock.json +0 -69
- package/fixtures/recipes/android-default.fixture.yaml +0 -15
- package/fixtures/recipes/android-integration.fixture.json +0 -29
- package/fixtures/topsdk-config-reference.json +0 -39
- /package/docs/{api → archive/api}/getSDKConfig.md +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { MeetSdkFeatureScope, MeetSdkGradleDependency, MeetSdkRemoteConfig } from "./meetSdkRemoteConfig.js";
|
|
2
|
+
import { hasSdkModuleKey } from "./meetSdkRemoteConfig.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Gradle `implementation` lines from `sdkModules`(是否接入由 `hasSdkModuleKey` 判定:JSON 是否写了子键)。
|
|
6
|
+
* 登录 Facebook → `facebook`;埋点 Facebook Data → `facebookdata` / `facebook-data` 构件。
|
|
7
|
+
*/
|
|
8
|
+
export type MeetSdkFeatureCategory = "login" | "payment" | "analytics";
|
|
9
|
+
|
|
10
|
+
export interface TopSdkFeatureModule {
|
|
11
|
+
readonly category: MeetSdkFeatureCategory;
|
|
12
|
+
readonly topsdkArtifact: string;
|
|
13
|
+
readonly scope: MeetSdkFeatureScope;
|
|
14
|
+
/** Key under `sdkModules[scope]` (e.g. `facebook` for login vs analytics). */
|
|
15
|
+
readonly subKey: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function readToggle(config: MeetSdkRemoteConfig, m: TopSdkFeatureModule): boolean {
|
|
19
|
+
const bucket = config.sdkModules[m.scope] as unknown as Record<string, unknown>;
|
|
20
|
+
return hasSdkModuleKey(bucket, m.subKey);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function isTopSdkFeatureModuleEnabled(config: MeetSdkRemoteConfig, m: TopSdkFeatureModule): boolean {
|
|
24
|
+
return readToggle(config, m);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Stable Gradle output order. */
|
|
28
|
+
export const TOPSDK_FEATURE_MODULES: readonly TopSdkFeatureModule[] = [
|
|
29
|
+
{ scope: "login", subKey: "guest", category: "login", topsdkArtifact: "guest" },
|
|
30
|
+
{ scope: "login", subKey: "email", category: "login", topsdkArtifact: "email" },
|
|
31
|
+
{ scope: "login", subKey: "facebook", category: "login", topsdkArtifact: "facebook" },
|
|
32
|
+
{ scope: "login", subKey: "google", category: "login", topsdkArtifact: "google" },
|
|
33
|
+
{ scope: "login", subKey: "twitter", category: "login", topsdkArtifact: "twitter" },
|
|
34
|
+
{ scope: "login", subKey: "snapchat", category: "login", topsdkArtifact: "snapchat" },
|
|
35
|
+
{ scope: "login", subKey: "line", category: "login", topsdkArtifact: "line" },
|
|
36
|
+
{ scope: "login", subKey: "naver", category: "login", topsdkArtifact: "naver" },
|
|
37
|
+
{ scope: "login", subKey: "kakao", category: "login", topsdkArtifact: "kakao" },
|
|
38
|
+
{ scope: "login", subKey: "tiktok", category: "login", topsdkArtifact: "tiktok" },
|
|
39
|
+
{ scope: "login", subKey: "discord", category: "login", topsdkArtifact: "discord" },
|
|
40
|
+
{ scope: "analytics", subKey: "appsflyer", category: "analytics", topsdkArtifact: "appsflyer" },
|
|
41
|
+
{ scope: "analytics", subKey: "firebase", category: "analytics", topsdkArtifact: "firebase" },
|
|
42
|
+
{ scope: "analytics", subKey: "adjust", category: "analytics", topsdkArtifact: "adjust" },
|
|
43
|
+
{ scope: "analytics", subKey: "facebookdata", category: "analytics", topsdkArtifact: "facebook-data" },
|
|
44
|
+
{ scope: "payment", subKey: "googleIap", category: "payment", topsdkArtifact: "google-iap" },
|
|
45
|
+
{ scope: "payment", subKey: "onestoreIap", category: "payment", topsdkArtifact: "onestore-iap" },
|
|
46
|
+
{ scope: "payment", subKey: "huaweiIap", category: "payment", topsdkArtifact: "huawei-iap" },
|
|
47
|
+
{ scope: "payment", subKey: "xiaomiIap", category: "payment", topsdkArtifact: "xiaomi-iap" },
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
function appendRepositories(out: string[], repositories: readonly string[] | undefined): void {
|
|
51
|
+
if (!repositories) return;
|
|
52
|
+
for (const repo of repositories) {
|
|
53
|
+
if (!out.includes(repo)) out.push(repo);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Maven repositories for modules present in `meetsdk-remote-config.json` (`hasSdkModuleKey`),
|
|
59
|
+
* with `repositories` resolved from merged `meetsdk-android.json` defaults.
|
|
60
|
+
*/
|
|
61
|
+
export function collectTopSdkFeatureRepositories(config: MeetSdkRemoteConfig): string[] {
|
|
62
|
+
const out: string[] = [];
|
|
63
|
+
for (const m of TOPSDK_FEATURE_MODULES) {
|
|
64
|
+
const bucket = config.sdkModules[m.scope] as unknown as Record<string, unknown>;
|
|
65
|
+
if (!hasSdkModuleKey(bucket, m.subKey)) continue;
|
|
66
|
+
const value = bucket[m.subKey];
|
|
67
|
+
if (typeof value === "object" && value !== null) {
|
|
68
|
+
const repos = (value as { repositories?: unknown }).repositories;
|
|
69
|
+
appendRepositories(out, Array.isArray(repos) ? repos.map((x) => String(x)) : undefined);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Gradle `implementation` lines for enabled modules (excludes mandatory `ui`). */
|
|
76
|
+
export function buildTopSdkFeatureImplementationLines(config: MeetSdkRemoteConfig): string[] {
|
|
77
|
+
const lines: string[] = [];
|
|
78
|
+
for (const m of TOPSDK_FEATURE_MODULES) {
|
|
79
|
+
if (isTopSdkFeatureModuleEnabled(config, m)) {
|
|
80
|
+
const bucket = config.sdkModules[m.scope] as unknown as Record<string, unknown>;
|
|
81
|
+
const value = bucket[m.subKey];
|
|
82
|
+
const deps =
|
|
83
|
+
typeof value === "object" && value !== null && Array.isArray((value as { dependencies?: unknown }).dependencies)
|
|
84
|
+
? ((value as { dependencies: MeetSdkGradleDependency[] }).dependencies)
|
|
85
|
+
: [{ implementation: `$groupId:${m.topsdkArtifact}:$topsdk_version` }];
|
|
86
|
+
for (const dep of deps) {
|
|
87
|
+
lines.push(` implementation "${dep.implementation}"`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return lines;
|
|
92
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
export interface AndroidDetection {
|
|
2
|
+
ok: true;
|
|
3
|
+
moduleName: string;
|
|
4
|
+
moduleDir: string;
|
|
5
|
+
manifestPath: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface AndroidDetectionError {
|
|
9
|
+
ok: false;
|
|
10
|
+
error: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type AndroidDetectResult = AndroidDetection | AndroidDetectionError;
|
|
14
|
+
|
|
15
|
+
export interface AndroidDetectOptions {
|
|
16
|
+
/** Unified app target selector; for Android this is the application Gradle module, e.g. `:app` or `launcher`. */
|
|
17
|
+
appTarget?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IOSDetectOptions {
|
|
21
|
+
/** Unified app target selector; for iOS this is the Xcode application target name. */
|
|
22
|
+
appTarget?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface IOSDetection {
|
|
26
|
+
ok: true;
|
|
27
|
+
iosRoot: string;
|
|
28
|
+
podfilePath?: string;
|
|
29
|
+
xcodeprojPath?: string;
|
|
30
|
+
workspacePath?: string;
|
|
31
|
+
/** Primary PBXNativeTarget name */
|
|
32
|
+
targetName?: string;
|
|
33
|
+
/** Xcode PBXNativeTarget names whose product type is iOS application. */
|
|
34
|
+
targetNames?: string[];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface IOSDetectionError {
|
|
38
|
+
ok: false;
|
|
39
|
+
error: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export type IOSDetectResult = IOSDetection | IOSDetectionError;
|
|
43
|
+
|
|
44
|
+
/** iOS 工具链状态说明。 */
|
|
45
|
+
export interface IosToolingReserved {
|
|
46
|
+
status: "not_implemented" | "implemented";
|
|
47
|
+
plan?: readonly string[];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface WorkspaceContext {
|
|
51
|
+
projectRoot: string;
|
|
52
|
+
/** Absolute path to npm package root (for bundled assets) */
|
|
53
|
+
packageRoot: string;
|
|
54
|
+
/** sdk-home API root used for latest Android/iOS SDK version discovery. */
|
|
55
|
+
sdkHomeApiBaseUrl?: string;
|
|
56
|
+
/** Cached meetsdk-remote-config.json path for this project. */
|
|
57
|
+
remoteConfigPath?: string;
|
|
58
|
+
/** Cached iOS SDK root used as the source for integration resources. */
|
|
59
|
+
iosSdkRoot?: string;
|
|
60
|
+
android?: AndroidDetectResult;
|
|
61
|
+
/** Reserved: populated via placeholder until iOS tooling ships. */
|
|
62
|
+
ios?: IOSDetectResult;
|
|
63
|
+
iosReserved?: IosToolingReserved;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface WorkspaceContextOptions {
|
|
67
|
+
/** Unified app target selector: Android application module or iOS application target. */
|
|
68
|
+
appTarget?: string;
|
|
69
|
+
/** sdk-home API root; defaults to the production MeetGames business API. */
|
|
70
|
+
sdkHomeApiBaseUrl?: string;
|
|
71
|
+
/** Override the cached remote config path. */
|
|
72
|
+
remoteConfigPath?: string;
|
|
73
|
+
/** Override the iOS SDK source root. */
|
|
74
|
+
iosSdkRoot?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface ManifestStep {
|
|
78
|
+
op: string;
|
|
79
|
+
platform?: "android" | "ios" | "all";
|
|
80
|
+
args?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface Manifest {
|
|
84
|
+
version: number;
|
|
85
|
+
targets?: Array<{
|
|
86
|
+
platform: "android" | "ios" | "all";
|
|
87
|
+
when?: { engine?: string };
|
|
88
|
+
}>;
|
|
89
|
+
steps: ManifestStep[];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Remote-assembled document: same executable shape as Manifest plus optional provenance. */
|
|
93
|
+
export interface AndroidIntegrationDocument extends Manifest {
|
|
94
|
+
meta?: {
|
|
95
|
+
sourceUrl?: string;
|
|
96
|
+
fetchedAt?: string;
|
|
97
|
+
mode?: string;
|
|
98
|
+
appId?: string;
|
|
99
|
+
channelType?: string;
|
|
100
|
+
endpointPath?: string;
|
|
101
|
+
authTypesFiltered?: string[];
|
|
102
|
+
[key: string]: unknown;
|
|
103
|
+
};
|
|
104
|
+
/** Raw TOPSDK `getSDKConfig` JSON envelope (`code` / `data` / …), same for Android or iOS callers. */
|
|
105
|
+
remote?: Record<string, unknown>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface StepResult {
|
|
109
|
+
ok: boolean;
|
|
110
|
+
/** Relative paths from project root that were touched or would be touched */
|
|
111
|
+
changedFiles: string[];
|
|
112
|
+
warnings: string[];
|
|
113
|
+
errors: string[];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface PipelineReport {
|
|
117
|
+
dryRun: boolean;
|
|
118
|
+
projectRoot: string;
|
|
119
|
+
stepsRun: number;
|
|
120
|
+
stepsSkipped: number;
|
|
121
|
+
results: StepResult[];
|
|
122
|
+
warnings: string[];
|
|
123
|
+
errors: string[];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface AndroidPlatformAdapter {
|
|
127
|
+
readonly id: "android";
|
|
128
|
+
detect(projectRoot: string, options?: AndroidDetectOptions): AndroidDetectResult;
|
|
129
|
+
}
|