@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.
Files changed (109) hide show
  1. package/README.md +16 -6
  2. package/dist/android/detect.d.ts +6 -1
  3. package/dist/android/detect.d.ts.map +1 -1
  4. package/dist/android/detect.js +41 -17
  5. package/dist/android/detect.js.map +1 -1
  6. package/dist/android/gradle.d.ts.map +1 -1
  7. package/dist/android/gradle.js +8 -1
  8. package/dist/android/gradle.js.map +1 -1
  9. package/dist/android/meetSdkRemoteGradle.d.ts +1 -0
  10. package/dist/android/meetSdkRemoteGradle.d.ts.map +1 -1
  11. package/dist/android/meetSdkRemoteGradle.js +44 -21
  12. package/dist/android/meetSdkRemoteGradle.js.map +1 -1
  13. package/dist/cache.d.ts +16 -0
  14. package/dist/cache.d.ts.map +1 -1
  15. package/dist/cache.js +21 -0
  16. package/dist/cache.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +52 -23
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config/meetSdkDefaultConfig.d.ts +7 -11
  21. package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
  22. package/dist/config/meetSdkDefaultConfig.js +216 -53
  23. package/dist/config/meetSdkDefaultConfig.js.map +1 -1
  24. package/dist/config/meetSdkIosConfig.d.ts +4 -5
  25. package/dist/config/meetSdkIosConfig.d.ts.map +1 -1
  26. package/dist/config/meetSdkIosConfig.js +19 -19
  27. package/dist/config/meetSdkIosConfig.js.map +1 -1
  28. package/dist/contracts/types.d.ts +18 -0
  29. package/dist/contracts/types.d.ts.map +1 -1
  30. package/dist/core/doctor.d.ts.map +1 -1
  31. package/dist/core/doctor.js +18 -1
  32. package/dist/core/doctor.js.map +1 -1
  33. package/dist/core/platform.js +1 -1
  34. package/dist/core/platform.js.map +1 -1
  35. package/dist/core/previewPatches.d.ts +2 -2
  36. package/dist/core/previewPatches.d.ts.map +1 -1
  37. package/dist/core/previewPatches.js +3 -3
  38. package/dist/core/previewPatches.js.map +1 -1
  39. package/dist/core/workspace.d.ts.map +1 -1
  40. package/dist/core/workspace.js +3 -1
  41. package/dist/core/workspace.js.map +1 -1
  42. package/dist/index.d.ts +4 -4
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +4 -4
  45. package/dist/index.js.map +1 -1
  46. package/dist/mcp/server.d.ts.map +1 -1
  47. package/dist/mcp/server.js +12 -7
  48. package/dist/mcp/server.js.map +1 -1
  49. package/dist/mcp/service.d.ts +6 -0
  50. package/dist/mcp/service.d.ts.map +1 -1
  51. package/dist/mcp/service.js +17 -9
  52. package/dist/mcp/service.js.map +1 -1
  53. package/dist/ops/handlers.d.ts.map +1 -1
  54. package/dist/ops/handlers.js +25 -3
  55. package/dist/ops/handlers.js.map +1 -1
  56. package/dist/remote/sdkHomeDownload.d.ts +4 -5
  57. package/dist/remote/sdkHomeDownload.d.ts.map +1 -1
  58. package/dist/remote/sdkHomeDownload.js +38 -12
  59. package/dist/remote/sdkHomeDownload.js.map +1 -1
  60. package/docs/API.md +13 -13
  61. package/docs/CLI.md +27 -13
  62. package/docs/INTEGRATION.md +7 -6
  63. package/package.json +1 -1
  64. package/src/android/detect.ts +47 -17
  65. package/src/android/gradle.ts +16 -1
  66. package/src/android/meetSdkRemoteGradle.ts +50 -22
  67. package/src/cache.ts +37 -0
  68. package/src/cli.ts +51 -21
  69. package/src/config/meetSdkDefaultConfig.ts +243 -59
  70. package/src/config/meetSdkIosConfig.ts +17 -21
  71. package/src/contracts/types.ts +21 -0
  72. package/src/core/doctor.ts +17 -1
  73. package/src/core/platform.ts +1 -1
  74. package/src/core/previewPatches.ts +3 -3
  75. package/src/core/workspace.ts +3 -1
  76. package/src/index.ts +5 -3
  77. package/src/mcp/server.ts +12 -7
  78. package/src/mcp/service.ts +30 -10
  79. package/src/ops/handlers.ts +27 -3
  80. package/src/remote/sdkHomeDownload.ts +48 -16
  81. package/config/meetsdk-android.json +0 -171
  82. package/config/meetsdk-ios.json +0 -15
  83. package/tests/assemble.test.ts +0 -12
  84. package/tests/doctor.test.ts +0 -131
  85. package/tests/downloadGoogleServicesJson.test.ts +0 -47
  86. package/tests/fetch-remote.test.ts +0 -23
  87. package/tests/fetchConfigOverrides.test.ts +0 -28
  88. package/tests/fetchConfigWrite.test.ts +0 -54
  89. package/tests/fixtures-hosts.test.ts +0 -78
  90. package/tests/gradle.test.ts +0 -33
  91. package/tests/integration-json.test.ts +0 -29
  92. package/tests/ios.codeUtils.test.ts +0 -23
  93. package/tests/ios.sdkBundle.test.ts +0 -21
  94. package/tests/loadManifest.test.ts +0 -15
  95. package/tests/manifest-xml.test.ts +0 -30
  96. package/tests/mcp.e2e.ts +0 -214
  97. package/tests/mcp.service.test.ts +0 -53
  98. package/tests/meetSdkRemoteConfig.test.ts +0 -482
  99. package/tests/meetSdkRemoteGradle.test.ts +0 -414
  100. package/tests/pipeline.android.test.ts +0 -149
  101. package/tests/pipeline.integration-json.test.ts +0 -58
  102. package/tests/pipeline.ios.test.ts +0 -609
  103. package/tests/pipeline.preview.patch.test.ts +0 -85
  104. package/tests/platformSelection.test.ts +0 -77
  105. package/tests/sdkHomeDownload.test.ts +0 -275
  106. package/tests/sdkVersionConfig.test.ts +0 -131
  107. package/tests/topsdk.test.ts +0 -53
  108. package/tests/topsdkDownloadSdkConfig.test.ts +0 -81
  109. 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
- });