@leonxin/meetgames 0.1.18 → 0.1.20
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/README.md +16 -6
- package/dist/android/detect.d.ts +6 -1
- package/dist/android/detect.d.ts.map +1 -1
- package/dist/android/detect.js +41 -17
- package/dist/android/detect.js.map +1 -1
- package/dist/android/gradle.d.ts.map +1 -1
- package/dist/android/gradle.js +8 -1
- package/dist/android/gradle.js.map +1 -1
- package/dist/android/meetSdkRemoteGradle.d.ts +1 -0
- package/dist/android/meetSdkRemoteGradle.d.ts.map +1 -1
- package/dist/android/meetSdkRemoteGradle.js +44 -21
- package/dist/android/meetSdkRemoteGradle.js.map +1 -1
- package/dist/cache.d.ts +16 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +21 -0
- package/dist/cache.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +52 -23
- package/dist/cli.js.map +1 -1
- package/dist/config/meetSdkDefaultConfig.d.ts +7 -11
- package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
- package/dist/config/meetSdkDefaultConfig.js +216 -53
- package/dist/config/meetSdkDefaultConfig.js.map +1 -1
- package/dist/config/meetSdkIosConfig.d.ts +4 -5
- package/dist/config/meetSdkIosConfig.d.ts.map +1 -1
- package/dist/config/meetSdkIosConfig.js +19 -19
- package/dist/config/meetSdkIosConfig.js.map +1 -1
- package/dist/contracts/types.d.ts +18 -0
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +18 -1
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/platform.js +1 -1
- package/dist/core/platform.js.map +1 -1
- package/dist/core/previewPatches.d.ts +2 -2
- package/dist/core/previewPatches.d.ts.map +1 -1
- package/dist/core/previewPatches.js +3 -3
- package/dist/core/previewPatches.js.map +1 -1
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +3 -1
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service.d.ts +6 -0
- package/dist/mcp/service.d.ts.map +1 -1
- package/dist/mcp/service.js +17 -9
- package/dist/mcp/service.js.map +1 -1
- package/dist/ops/handlers.d.ts.map +1 -1
- package/dist/ops/handlers.js +25 -3
- package/dist/ops/handlers.js.map +1 -1
- package/dist/remote/sdkHomeDownload.d.ts +4 -5
- package/dist/remote/sdkHomeDownload.d.ts.map +1 -1
- package/dist/remote/sdkHomeDownload.js +38 -12
- package/dist/remote/sdkHomeDownload.js.map +1 -1
- package/docs/API.md +13 -13
- package/docs/CLI.md +27 -13
- package/docs/INTEGRATION.md +7 -6
- package/package.json +1 -1
- package/src/android/detect.ts +47 -17
- package/src/android/gradle.ts +16 -1
- package/src/android/meetSdkRemoteGradle.ts +50 -22
- package/src/cache.ts +37 -0
- package/src/cli.ts +51 -21
- package/src/config/meetSdkDefaultConfig.ts +243 -59
- package/src/config/meetSdkIosConfig.ts +17 -21
- package/src/contracts/types.ts +21 -0
- package/src/core/doctor.ts +17 -1
- package/src/core/platform.ts +1 -1
- package/src/core/previewPatches.ts +3 -3
- package/src/core/workspace.ts +3 -1
- package/src/index.ts +5 -3
- package/src/mcp/server.ts +12 -7
- package/src/mcp/service.ts +30 -10
- package/src/ops/handlers.ts +27 -3
- package/src/remote/sdkHomeDownload.ts +48 -16
- package/config/meetsdk-android.json +0 -171
- package/config/meetsdk-ios.json +0 -15
- package/tests/assemble.test.ts +0 -12
- package/tests/doctor.test.ts +0 -131
- package/tests/downloadGoogleServicesJson.test.ts +0 -47
- package/tests/fetch-remote.test.ts +0 -23
- package/tests/fetchConfigOverrides.test.ts +0 -28
- package/tests/fetchConfigWrite.test.ts +0 -54
- package/tests/fixtures-hosts.test.ts +0 -78
- package/tests/gradle.test.ts +0 -33
- package/tests/integration-json.test.ts +0 -29
- package/tests/ios.codeUtils.test.ts +0 -23
- package/tests/ios.sdkBundle.test.ts +0 -21
- package/tests/loadManifest.test.ts +0 -15
- package/tests/manifest-xml.test.ts +0 -30
- package/tests/mcp.e2e.ts +0 -214
- package/tests/mcp.service.test.ts +0 -53
- package/tests/meetSdkRemoteConfig.test.ts +0 -482
- package/tests/meetSdkRemoteGradle.test.ts +0 -414
- package/tests/pipeline.android.test.ts +0 -149
- package/tests/pipeline.integration-json.test.ts +0 -58
- package/tests/pipeline.ios.test.ts +0 -609
- package/tests/pipeline.preview.patch.test.ts +0 -85
- package/tests/platformSelection.test.ts +0 -77
- package/tests/sdkHomeDownload.test.ts +0 -275
- package/tests/sdkVersionConfig.test.ts +0 -131
- package/tests/topsdk.test.ts +0 -53
- package/tests/topsdkDownloadSdkConfig.test.ts +0 -81
- package/tests/topsdkFeatureModules.test.ts +0 -116
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { topsdkMd5Base64Sign } from "../src/remote/topsdkSign.js";
|
|
3
|
-
import {
|
|
4
|
-
buildTopSdkDownloadSdkConfigUrl,
|
|
5
|
-
fetchTopSdkDownloadSdkConfig,
|
|
6
|
-
parseTopSdkApiErrorBody,
|
|
7
|
-
} from "../src/remote/topsdkDownloadSdkConfig.js";
|
|
8
|
-
|
|
9
|
-
describe("TOPSDK downloadSDKConfig client", () => {
|
|
10
|
-
afterEach(() => {
|
|
11
|
-
vi.unstubAllGlobals();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it("builds GET URL with appId, channelType, sign, and timestamp", () => {
|
|
15
|
-
const { url } = buildTopSdkDownloadSdkConfigUrl({
|
|
16
|
-
baseUrl: "https://test-api-sdk-gameplus.meetsocial.com:1157/",
|
|
17
|
-
appId: "791251136341225472",
|
|
18
|
-
appSecret: "test-secret",
|
|
19
|
-
channelType: "GOOGLE",
|
|
20
|
-
timestampMillis: 1700000000000,
|
|
21
|
-
});
|
|
22
|
-
const u = new URL(url);
|
|
23
|
-
expect(u.pathname).toContain("downloadSDKConfig");
|
|
24
|
-
expect(u.searchParams.get("appId")).toBe("791251136341225472");
|
|
25
|
-
expect(u.searchParams.get("channelType")).toBe("GOOGLE");
|
|
26
|
-
expect(u.searchParams.get("timestamp")).toBe("1700000000000");
|
|
27
|
-
expect(u.searchParams.get("sign")).toBe(topsdkMd5Base64Sign("791251136341225472", "test-secret", 1700000000000));
|
|
28
|
-
expect(u.searchParams.has("devicePlatform")).toBe(false);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("parseTopSdkApiErrorBody detects gp-sdk error envelope", () => {
|
|
32
|
-
expect(parseTopSdkApiErrorBody({ code: 4007, message: "secret error" })).toMatch(/secret error/);
|
|
33
|
-
expect(parseTopSdkApiErrorBody({ code: 200, data: {} })).toBeNull();
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("fetchTopSdkDownloadSdkConfig returns parsed JSON body and raw text", async () => {
|
|
37
|
-
const payload = {
|
|
38
|
-
packageName: "com.example.game",
|
|
39
|
-
topsdk: { channel: "GOOGLE", appId: "1", appSecret: "sec" },
|
|
40
|
-
sdkModules: { login: {}, payment: {}, analytics: {} },
|
|
41
|
-
};
|
|
42
|
-
const raw = JSON.stringify(payload, null, 2);
|
|
43
|
-
vi.stubGlobal(
|
|
44
|
-
"fetch",
|
|
45
|
-
vi.fn(async () => ({
|
|
46
|
-
ok: true,
|
|
47
|
-
status: 200,
|
|
48
|
-
text: async () => raw,
|
|
49
|
-
})) as unknown as typeof fetch
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
const { body, text } = await fetchTopSdkDownloadSdkConfig({
|
|
53
|
-
baseUrl: "https://example.com/",
|
|
54
|
-
appId: "1",
|
|
55
|
-
appSecret: "sec",
|
|
56
|
-
channelType: "GOOGLE",
|
|
57
|
-
});
|
|
58
|
-
expect(body).toEqual(payload);
|
|
59
|
-
expect(text).toBe(raw);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it("fetchTopSdkDownloadSdkConfig throws on API error body", async () => {
|
|
63
|
-
vi.stubGlobal(
|
|
64
|
-
"fetch",
|
|
65
|
-
vi.fn(async () => ({
|
|
66
|
-
ok: true,
|
|
67
|
-
status: 500,
|
|
68
|
-
text: async () => JSON.stringify({ code: 10000, message: "channel not found" }),
|
|
69
|
-
})) as unknown as typeof fetch
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
await expect(
|
|
73
|
-
fetchTopSdkDownloadSdkConfig({
|
|
74
|
-
baseUrl: "https://example.com/",
|
|
75
|
-
appId: "1",
|
|
76
|
-
appSecret: "sec",
|
|
77
|
-
channelType: "GOOGLE",
|
|
78
|
-
})
|
|
79
|
-
).rejects.toThrow(/channel not found/);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
TOPSDK_FEATURE_MODULES,
|
|
4
|
-
buildTopSdkFeatureImplementationLines,
|
|
5
|
-
isTopSdkFeatureModuleEnabled,
|
|
6
|
-
} from "../src/config/topsdkFeatureModules.js";
|
|
7
|
-
import { defaultSdkModules, type MeetSdkRemoteConfig } from "../src/config/meetSdkRemoteConfig.js";
|
|
8
|
-
|
|
9
|
-
const base = (sdk: MeetSdkRemoteConfig["sdkModules"]): MeetSdkRemoteConfig => ({
|
|
10
|
-
packageName: "com.example",
|
|
11
|
-
topsdk: {
|
|
12
|
-
channel: "GOOGLE",
|
|
13
|
-
appId: "a",
|
|
14
|
-
appSecret: "s",
|
|
15
|
-
version: "1",
|
|
16
|
-
groupId: "com.sino.topsdk",
|
|
17
|
-
repositories: [],
|
|
18
|
-
},
|
|
19
|
-
sdkModules: sdk,
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
describe("topsdkFeatureModules", () => {
|
|
23
|
-
it("maps googleIap to google-iap artifact", () => {
|
|
24
|
-
const row = TOPSDK_FEATURE_MODULES.find((m) => m.subKey === "googleIap");
|
|
25
|
-
expect(row?.topsdkArtifact).toBe("google-iap");
|
|
26
|
-
expect(row?.category).toBe("payment");
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("buildTopSdkFeatureImplementationLines only includes enabled sdkModules", () => {
|
|
30
|
-
const m = defaultSdkModules();
|
|
31
|
-
m.login.google = { googleClientId: "cid" };
|
|
32
|
-
m.payment.googleIap = { dependencies: [{ implementation: "$groupId:google-iap:$topsdk_version" }] };
|
|
33
|
-
const cfg = base(m);
|
|
34
|
-
const lines = buildTopSdkFeatureImplementationLines(cfg);
|
|
35
|
-
expect(lines.some((l) => l.includes(":google:"))).toBe(true);
|
|
36
|
-
expect(lines.some((l) => l.includes(":google-iap:"))).toBe(true);
|
|
37
|
-
expect(lines.some((l) => l.includes(":guest:"))).toBe(false);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("login.facebook credentials object enables facebook artifact", () => {
|
|
41
|
-
const m = defaultSdkModules();
|
|
42
|
-
m.login.facebook = { facebookAppId: "", fbLoginProtocolScheme: "", facebookClientToken: "" };
|
|
43
|
-
m.analytics.facebookdata = false;
|
|
44
|
-
const cfg = base(m);
|
|
45
|
-
const lines = buildTopSdkFeatureImplementationLines(cfg);
|
|
46
|
-
expect(lines.some((l) => l.includes(":facebook:"))).toBe(true);
|
|
47
|
-
expect(lines.some((l) => l.includes(":facebook-data:"))).toBe(false);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("login.facebook does not imply analytics facebook-data", () => {
|
|
51
|
-
const m = defaultSdkModules();
|
|
52
|
-
m.login.facebook = {
|
|
53
|
-
facebookAppId: "1",
|
|
54
|
-
fbLoginProtocolScheme: "fb1",
|
|
55
|
-
facebookClientToken: "t",
|
|
56
|
-
};
|
|
57
|
-
m.analytics.facebookdata = false;
|
|
58
|
-
const cfg = base(m);
|
|
59
|
-
const lines = buildTopSdkFeatureImplementationLines(cfg);
|
|
60
|
-
expect(lines.some((l) => l.includes(":facebook:"))).toBe(true);
|
|
61
|
-
expect(lines.some((l) => l.includes(":facebook-data:"))).toBe(false);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it("analytics.facebookdata enables facebook-data only", () => {
|
|
65
|
-
const m = defaultSdkModules();
|
|
66
|
-
m.login.facebook = false;
|
|
67
|
-
m.analytics.facebookdata = { dependencies: [{ implementation: "$groupId:facebook-data:$topsdk_version" }] };
|
|
68
|
-
const cfg = base(m);
|
|
69
|
-
const lines = buildTopSdkFeatureImplementationLines(cfg);
|
|
70
|
-
expect(lines.some((l) => l.includes(":facebook:"))).toBe(false);
|
|
71
|
-
expect(lines.some((l) => l.includes(":facebook-data:"))).toBe(true);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("analytics.firebase credentials enable firebase artifact", () => {
|
|
75
|
-
const m = defaultSdkModules();
|
|
76
|
-
m.analytics.firebase = {
|
|
77
|
-
firebase_file_url: "https://x/g.json",
|
|
78
|
-
repositories: ["google"],
|
|
79
|
-
classpath: "com.google.gms:google-services:4.4.4",
|
|
80
|
-
applyplugin: "com.google.gms.google-services",
|
|
81
|
-
};
|
|
82
|
-
const cfg = base(m);
|
|
83
|
-
expect(buildTopSdkFeatureImplementationLines(cfg).some((l) => l.includes(":firebase:"))).toBe(true);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it("analytics.adjust credentials enable adjust artifact", () => {
|
|
87
|
-
const m = defaultSdkModules();
|
|
88
|
-
m.analytics.adjust = { appId: "adj1" };
|
|
89
|
-
const cfg = base(m);
|
|
90
|
-
expect(buildTopSdkFeatureImplementationLines(cfg).some((l) => l.includes(":adjust:"))).toBe(true);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it("login.line credentials enable line artifact", () => {
|
|
94
|
-
const m = defaultSdkModules();
|
|
95
|
-
m.login.line = { clientId: "L" };
|
|
96
|
-
const cfg = base(m);
|
|
97
|
-
expect(buildTopSdkFeatureImplementationLines(cfg).some((l) => l.includes(":line:"))).toBe(true);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it("isTopSdkFeatureModuleEnabled reads sdkModules only", () => {
|
|
101
|
-
const row = TOPSDK_FEATURE_MODULES.find((m) => m.topsdkArtifact === "facebook-data")!;
|
|
102
|
-
const m = defaultSdkModules();
|
|
103
|
-
m.analytics.facebookdata = { dependencies: [{ implementation: "$groupId:facebook-data:$topsdk_version" }] };
|
|
104
|
-
expect(isTopSdkFeatureModuleEnabled(base(m), row)).toBe(true);
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
it("enables module only when subKey is present (key-based integrate)", () => {
|
|
108
|
-
const kakaoRow = TOPSDK_FEATURE_MODULES.find((m) => m.subKey === "kakao")!;
|
|
109
|
-
const m = defaultSdkModules();
|
|
110
|
-
m.login = { google: { googleClientId: "cid" } } as typeof m.login;
|
|
111
|
-
expect(isTopSdkFeatureModuleEnabled(base(m), kakaoRow)).toBe(false);
|
|
112
|
-
|
|
113
|
-
m.login.kakao = { clientId: "k", scheme: "s" };
|
|
114
|
-
expect(isTopSdkFeatureModuleEnabled(base(m), kakaoRow)).toBe(true);
|
|
115
|
-
});
|
|
116
|
-
});
|