@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.
- package/README.md +120 -0
- package/bundled/android/sample.txt +1 -0
- package/dist/android/adapter.d.ts +3 -0
- package/dist/android/adapter.d.ts.map +1 -0
- package/dist/android/adapter.js +8 -0
- package/dist/android/adapter.js.map +1 -0
- package/dist/android/assembleIntegrationJson.d.ts +8 -0
- package/dist/android/assembleIntegrationJson.d.ts.map +1 -0
- package/dist/android/assembleIntegrationJson.js +31 -0
- package/dist/android/assembleIntegrationJson.js.map +1 -0
- package/dist/android/detect.d.ts +11 -0
- package/dist/android/detect.d.ts.map +1 -0
- package/dist/android/detect.js +87 -0
- package/dist/android/detect.js.map +1 -0
- package/dist/android/downloadGoogleServicesJson.d.ts +20 -0
- package/dist/android/downloadGoogleServicesJson.d.ts.map +1 -0
- package/dist/android/downloadGoogleServicesJson.js +43 -0
- package/dist/android/downloadGoogleServicesJson.js.map +1 -0
- package/dist/android/fetchRemoteConfig.d.ts +5 -0
- package/dist/android/fetchRemoteConfig.d.ts.map +1 -0
- package/dist/android/fetchRemoteConfig.js +24 -0
- package/dist/android/fetchRemoteConfig.js.map +1 -0
- package/dist/android/gradle.d.ts +30 -0
- package/dist/android/gradle.d.ts.map +1 -0
- package/dist/android/gradle.js +87 -0
- package/dist/android/gradle.js.map +1 -0
- package/dist/android/manifest.d.ts +10 -0
- package/dist/android/manifest.d.ts.map +1 -0
- package/dist/android/manifest.js +45 -0
- package/dist/android/manifest.js.map +1 -0
- package/dist/android/meetSdkRemoteGradle.d.ts +86 -0
- package/dist/android/meetSdkRemoteGradle.d.ts.map +1 -0
- package/dist/android/meetSdkRemoteGradle.js +479 -0
- package/dist/android/meetSdkRemoteGradle.js.map +1 -0
- package/dist/android/snapchatManifestPlaceholders.d.ts +15 -0
- package/dist/android/snapchatManifestPlaceholders.d.ts.map +1 -0
- package/dist/android/snapchatManifestPlaceholders.js +53 -0
- package/dist/android/snapchatManifestPlaceholders.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +291 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/fetchConfigWrite.d.ts +10 -0
- package/dist/config/fetchConfigWrite.d.ts.map +1 -0
- package/dist/config/fetchConfigWrite.js +21 -0
- package/dist/config/fetchConfigWrite.js.map +1 -0
- package/dist/config/loadAndroidIntegration.d.ts +4 -0
- package/dist/config/loadAndroidIntegration.d.ts.map +1 -0
- package/dist/config/loadAndroidIntegration.js +34 -0
- package/dist/config/loadAndroidIntegration.js.map +1 -0
- package/dist/config/loadManifest.d.ts +3 -0
- package/dist/config/loadManifest.d.ts.map +1 -0
- package/dist/config/loadManifest.js +33 -0
- package/dist/config/loadManifest.js.map +1 -0
- package/dist/config/meetSdkDefaultConfig.d.ts +5 -0
- package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -0
- package/dist/config/meetSdkDefaultConfig.js +15 -0
- package/dist/config/meetSdkDefaultConfig.js.map +1 -0
- package/dist/config/meetSdkRemoteConfig.d.ts +240 -0
- package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -0
- package/dist/config/meetSdkRemoteConfig.js +892 -0
- package/dist/config/meetSdkRemoteConfig.js.map +1 -0
- package/dist/config/topsdkFeatureModules.d.ts +19 -0
- package/dist/config/topsdkFeatureModules.d.ts.map +1 -0
- package/dist/config/topsdkFeatureModules.js +47 -0
- package/dist/config/topsdkFeatureModules.js.map +1 -0
- package/dist/contracts/types.d.ts +95 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +2 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/core/engine.d.ts +3 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +18 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/patch.d.ts +2 -0
- package/dist/core/patch.d.ts.map +1 -0
- package/dist/core/patch.js +61 -0
- package/dist/core/patch.js.map +1 -0
- package/dist/core/pipeline.d.ts +12 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +102 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/previewPatches.d.ts +8 -0
- package/dist/core/previewPatches.d.ts.map +1 -0
- package/dist/core/previewPatches.js +25 -0
- package/dist/core/previewPatches.js.map +1 -0
- package/dist/core/reporter.d.ts +3 -0
- package/dist/core/reporter.d.ts.map +1 -0
- package/dist/core/reporter.js +24 -0
- package/dist/core/reporter.js.map +1 -0
- package/dist/core/resolveFetchChannelType.d.ts +27 -0
- package/dist/core/resolveFetchChannelType.d.ts.map +1 -0
- package/dist/core/resolveFetchChannelType.js +54 -0
- package/dist/core/resolveFetchChannelType.js.map +1 -0
- package/dist/core/workspace.d.ts +5 -0
- package/dist/core/workspace.d.ts.map +1 -0
- package/dist/core/workspace.js +24 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/entry.d.ts +3 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +7 -0
- package/dist/entry.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/ios/channelConfig.d.ts +7 -0
- package/dist/ios/channelConfig.d.ts.map +1 -0
- package/dist/ios/channelConfig.js +51 -0
- package/dist/ios/channelConfig.js.map +1 -0
- package/dist/ios/codeUtils.d.ts +15 -0
- package/dist/ios/codeUtils.d.ts.map +1 -0
- package/dist/ios/codeUtils.js +166 -0
- package/dist/ios/codeUtils.js.map +1 -0
- package/dist/ios/detect.d.ts +3 -0
- package/dist/ios/detect.d.ts.map +1 -0
- package/dist/ios/detect.js +65 -0
- package/dist/ios/detect.js.map +1 -0
- package/dist/ios/fileManager.d.ts +12 -0
- package/dist/ios/fileManager.d.ts.map +1 -0
- package/dist/ios/fileManager.js +46 -0
- package/dist/ios/fileManager.js.map +1 -0
- package/dist/ios/infoPlist.d.ts +11 -0
- package/dist/ios/infoPlist.d.ts.map +1 -0
- package/dist/ios/infoPlist.js +48 -0
- package/dist/ios/infoPlist.js.map +1 -0
- package/dist/ios/integrate.d.ts +12 -0
- package/dist/ios/integrate.d.ts.map +1 -0
- package/dist/ios/integrate.js +263 -0
- package/dist/ios/integrate.js.map +1 -0
- package/dist/ios/pbxprojEditor.d.ts +20 -0
- package/dist/ios/pbxprojEditor.d.ts.map +1 -0
- package/dist/ios/pbxprojEditor.js +198 -0
- package/dist/ios/pbxprojEditor.js.map +1 -0
- package/dist/ios/pluginConfig.d.ts +6 -0
- package/dist/ios/pluginConfig.d.ts.map +1 -0
- package/dist/ios/pluginConfig.js +64 -0
- package/dist/ios/pluginConfig.js.map +1 -0
- package/dist/ios/reserved.d.ts +4 -0
- package/dist/ios/reserved.d.ts.map +1 -0
- package/dist/ios/reserved.js +6 -0
- package/dist/ios/reserved.js.map +1 -0
- package/dist/ios/sdkBundle.d.ts +7 -0
- package/dist/ios/sdkBundle.d.ts.map +1 -0
- package/dist/ios/sdkBundle.js +30 -0
- package/dist/ios/sdkBundle.js.map +1 -0
- package/dist/ios/template.d.ts +3 -0
- package/dist/ios/template.d.ts.map +1 -0
- package/dist/ios/template.js +24 -0
- package/dist/ios/template.js.map +1 -0
- package/dist/ios/types.d.ts +43 -0
- package/dist/ios/types.d.ts.map +1 -0
- package/dist/ios/types.js +11 -0
- package/dist/ios/types.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +139 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/service.d.ts +49 -0
- package/dist/mcp/service.d.ts.map +1 -0
- package/dist/mcp/service.js +113 -0
- package/dist/mcp/service.js.map +1 -0
- package/dist/mcp-entry.d.ts +3 -0
- package/dist/mcp-entry.d.ts.map +1 -0
- package/dist/mcp-entry.js +7 -0
- package/dist/mcp-entry.js.map +1 -0
- package/dist/ops/fileStore.d.ts +17 -0
- package/dist/ops/fileStore.d.ts.map +1 -0
- package/dist/ops/fileStore.js +55 -0
- package/dist/ops/fileStore.js.map +1 -0
- package/dist/ops/handlers.d.ts +10 -0
- package/dist/ops/handlers.d.ts.map +1 -0
- package/dist/ops/handlers.js +268 -0
- package/dist/ops/handlers.js.map +1 -0
- package/dist/platforms/android/adapter.d.ts +3 -0
- package/dist/platforms/android/adapter.d.ts.map +1 -0
- package/dist/platforms/android/adapter.js +8 -0
- package/dist/platforms/android/adapter.js.map +1 -0
- package/dist/platforms/android/detect.d.ts +3 -0
- package/dist/platforms/android/detect.d.ts.map +1 -0
- package/dist/platforms/android/detect.js +79 -0
- package/dist/platforms/android/detect.js.map +1 -0
- package/dist/platforms/android/gradle.d.ts +30 -0
- package/dist/platforms/android/gradle.d.ts.map +1 -0
- package/dist/platforms/android/gradle.js +83 -0
- package/dist/platforms/android/gradle.js.map +1 -0
- package/dist/platforms/android/manifest.d.ts +7 -0
- package/dist/platforms/android/manifest.d.ts.map +1 -0
- package/dist/platforms/android/manifest.js +24 -0
- package/dist/platforms/android/manifest.js.map +1 -0
- package/dist/platforms/ios/adapter.d.ts +3 -0
- package/dist/platforms/ios/adapter.d.ts.map +1 -0
- package/dist/platforms/ios/adapter.js +8 -0
- package/dist/platforms/ios/adapter.js.map +1 -0
- package/dist/platforms/ios/detect.d.ts +8 -0
- package/dist/platforms/ios/detect.d.ts.map +1 -0
- package/dist/platforms/ios/detect.js +67 -0
- package/dist/platforms/ios/detect.js.map +1 -0
- package/dist/platforms/ios/plist.d.ts +11 -0
- package/dist/platforms/ios/plist.d.ts.map +1 -0
- package/dist/platforms/ios/plist.js +24 -0
- package/dist/platforms/ios/plist.js.map +1 -0
- package/dist/platforms/ios/podfile.d.ts +7 -0
- package/dist/platforms/ios/podfile.d.ts.map +1 -0
- package/dist/platforms/ios/podfile.js +15 -0
- package/dist/platforms/ios/podfile.js.map +1 -0
- package/dist/remote/fetchJson.d.ts +5 -0
- package/dist/remote/fetchJson.d.ts.map +1 -0
- package/dist/remote/fetchJson.js +24 -0
- package/dist/remote/fetchJson.js.map +1 -0
- package/dist/remote/topsdkDownloadSdkConfig.d.ts +23 -0
- package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -0
- package/dist/remote/topsdkDownloadSdkConfig.js +56 -0
- package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -0
- package/dist/remote/topsdkGetSdkConfig.d.ts +46 -0
- package/dist/remote/topsdkGetSdkConfig.d.ts.map +1 -0
- package/dist/remote/topsdkGetSdkConfig.js +95 -0
- package/dist/remote/topsdkGetSdkConfig.js.map +1 -0
- package/dist/remote/topsdkSign.d.ts +6 -0
- package/dist/remote/topsdkSign.d.ts.map +1 -0
- package/dist/remote/topsdkSign.js +10 -0
- package/dist/remote/topsdkSign.js.map +1 -0
- package/docs/ANDROID.md +133 -0
- package/docs/API.md +47 -0
- package/docs/CURSOR-MCP-SETUP.md +72 -0
- package/docs/MCP-SKILL.md +63 -0
- package/docs/README.md +12 -0
- package/docs/api/downloadSDKConfig.md +96 -0
- package/docs/api/getChannelConfig-meetgames.md +106 -0
- package/docs/api/getSDKConfig.md +38 -0
- package/docs//346/212/200/346/234/257/346/226/271/346/241/210/350/260/203/347/240/224.md +329 -0
- package/docs//351/234/200/346/261/202/346/226/207/346/241/243.md +320 -0
- package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +123 -0
- package/fixtures/meetsdk-remote-config.download-shape.json +20 -0
- package/fixtures/meetsdk-remote-config.mock.json +69 -0
- package/fixtures/recipes/android-default.fixture.yaml +15 -0
- package/fixtures/recipes/android-integration.fixture.json +29 -0
- package/fixtures/topsdk-config-reference.json +39 -0
- package/meetsdk-android.json +151 -0
- package/package.json +61 -0
- package/recipes/android-default.yaml +15 -0
- package/recipes/integrate-default.yaml +16 -0
- package/recipes/ios-default.yaml +5 -0
- package/schema/android-integration.schema.json +65 -0
- package/schema/manifest.schema.json +45 -0
- package/schema/meetsdk-remote-config.schema.json +45 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse `sdkModules.login.snapchat.redirect` (from getSDKConfig / downloadSDKConfig)
|
|
3
|
+
* into Gradle `addManifestPlaceholders` keys used by TOPSDK Android SDK.
|
|
4
|
+
*/
|
|
5
|
+
export function parseSnapchatRedirectForManifestPlaceholders(redirect) {
|
|
6
|
+
const trimmed = redirect.trim();
|
|
7
|
+
if (!trimmed)
|
|
8
|
+
return null;
|
|
9
|
+
try {
|
|
10
|
+
if (/^https?:\/\//i.test(trimmed)) {
|
|
11
|
+
const u = new URL(trimmed);
|
|
12
|
+
const scheme = u.protocol.replace(/:$/, "");
|
|
13
|
+
const host = u.hostname;
|
|
14
|
+
let path = u.pathname.replace(/^\//, "");
|
|
15
|
+
if (u.search)
|
|
16
|
+
path = path ? `${path}${u.search}` : u.search.replace(/^\?/, "");
|
|
17
|
+
return { scheme, host, path };
|
|
18
|
+
}
|
|
19
|
+
const custom = trimmed.match(/^([^:/]+):\/\/([^/]+)(?:\/(.*))?$/);
|
|
20
|
+
if (custom) {
|
|
21
|
+
return {
|
|
22
|
+
scheme: custom[1],
|
|
23
|
+
host: custom[2],
|
|
24
|
+
path: (custom[3] ?? "").replace(/^\//, ""),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
function escapeGroovyDoubleQuotedInner(value) {
|
|
34
|
+
return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
35
|
+
}
|
|
36
|
+
/** Gradle line inside `defaultConfig`, same indent as `resValue`. */
|
|
37
|
+
export function buildSnapchatManifestPlaceholdersLine(parts) {
|
|
38
|
+
const scheme = escapeGroovyDoubleQuotedInner(parts.scheme);
|
|
39
|
+
const host = escapeGroovyDoubleQuotedInner(parts.host);
|
|
40
|
+
const path = escapeGroovyDoubleQuotedInner(parts.path);
|
|
41
|
+
return ` addManifestPlaceholders([snapchat_scheme: "${scheme}", snapchat_host: "${host}", snapchat_path: "${path}"])`;
|
|
42
|
+
}
|
|
43
|
+
export function lineHasSnapchatManifestPlaceholders(line) {
|
|
44
|
+
const t = line.trim();
|
|
45
|
+
return /addManifestPlaceholders\s*\(/.test(t) && /snapchat_scheme/.test(t);
|
|
46
|
+
}
|
|
47
|
+
export function removeSnapchatManifestPlaceholderLines(blockText) {
|
|
48
|
+
return blockText
|
|
49
|
+
.split("\n")
|
|
50
|
+
.filter((line) => !lineHasSnapchatManifestPlaceholders(line))
|
|
51
|
+
.join("\n");
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=snapchatManifestPlaceholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapchatManifestPlaceholders.js","sourceRoot":"","sources":["../../src/android/snapchatManifestPlaceholders.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,UAAU,4CAA4C,CAC1D,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,IAAI,CAAC;QACH,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC;YACxB,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,CAAC,MAAM;gBAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/E,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBACjB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;aAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAa;IAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,qCAAqC,CAAC,KAAuC;IAC3F,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,sDAAsD,MAAM,sBAAsB,IAAI,sBAAsB,IAAI,KAAK,CAAC;AAC/H,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAAY;IAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,SAAiB;IACtE,OAAO,SAAS;SACb,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAwTA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B1C"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { loadManifestFile } from "./config/loadManifest.js";
|
|
4
|
+
import { buildWorkspaceContext, resolvePackageRoot } from "./core/workspace.js";
|
|
5
|
+
import { runPipeline } from "./core/pipeline.js";
|
|
6
|
+
import { clearPreviewPatchFilesIfTargetInside } from "./core/previewPatches.js";
|
|
7
|
+
import { printReport } from "./core/reporter.js";
|
|
8
|
+
import { defaultTopSdkBaseUrl, fetchTopSdkDownloadSdkConfig } from "./remote/topsdkDownloadSdkConfig.js";
|
|
9
|
+
import { validateDownloadSdkConfigForWrite, writeDownloadSdkConfigRaw, } from "./config/fetchConfigWrite.js";
|
|
10
|
+
import { MEETSDK_REMOTE_CONFIG_FILENAME, readMeetSdkRemoteChannel, tryParseAsMeetSdkRemoteConfig, } from "./config/meetSdkRemoteConfig.js";
|
|
11
|
+
import { MEETSDK_ANDROID_DEFAULTS_FILENAME } from "./config/meetSdkDefaultConfig.js";
|
|
12
|
+
const EXIT = {
|
|
13
|
+
OK: 0,
|
|
14
|
+
INVALID_ARGS: 2,
|
|
15
|
+
PROJECT_ERROR: 3,
|
|
16
|
+
CONFIG_ERROR: 4,
|
|
17
|
+
PIPELINE_ERROR: 5,
|
|
18
|
+
NETWORK_ERROR: 6,
|
|
19
|
+
};
|
|
20
|
+
function fail(message, code) {
|
|
21
|
+
console.error(`[meetgames] ERROR: ${message}`);
|
|
22
|
+
process.exit(code);
|
|
23
|
+
}
|
|
24
|
+
function printHelp() {
|
|
25
|
+
console.log(`
|
|
26
|
+
meetgames — Android-first integration CLI (TypeScript)
|
|
27
|
+
|
|
28
|
+
Usage:
|
|
29
|
+
meetgames integrate [--project-root <path>] [--dry-run] [--verbose] [--patch-file <path>]
|
|
30
|
+
meetgames fetch-config [--app-id ID] [--channel-type TYPE] [--env prod|pre|test] [--project-root <path>] [--verbose]
|
|
31
|
+
meetgames setup [--app-id ID] [--channel-type TYPE] [--env prod|pre|test] [--project-root <path>] [--dry-run] [--verbose] [--patch-file <path>]
|
|
32
|
+
meetgames doctor [--project-root <path>] [--verbose]
|
|
33
|
+
|
|
34
|
+
Notes:
|
|
35
|
+
- Source code is TypeScript only; published bin runs compiled output under dist/.
|
|
36
|
+
- iOS: copies frameworks to topSDK/, edits project.pbxproj & Info.plist, injects AppDelegate (.m/.mm) when present (topsdk-tool-ios parity).
|
|
37
|
+
- fetch-config calls TOPSDK downloadSDKConfig and writes the response body unchanged to <project-root>/meetsdk-remote-config.json (integrate merges meetsdk-android.json in memory only).
|
|
38
|
+
- setup runs fetch-config then integrate in one process (same flags as both subcommands).
|
|
39
|
+
- integrate uses recipes/integrate-default.yaml (Android + iOS steps; skips undetected platforms).
|
|
40
|
+
- iOS SDK is read from bundled/ios-sdk/ in the tool package (native iOS only).
|
|
41
|
+
- integrate reads local meetsdk-remote-config.json; appId/appSecret come from that file, not CLI flags.
|
|
42
|
+
- When analytics.firebase is enabled, downloads google-services.json to {detected app module}/google-services.json (or JSON path/name).
|
|
43
|
+
- fetch-config writes to <project-root>/meetsdk-remote-config.json.
|
|
44
|
+
- fetch-config requires --channel-type (or channel in local meetsdk-remote-config.json / TOPSDK_CHANNEL_TYPE); not inferred from Android/iOS detection.
|
|
45
|
+
- Recipe op gradle.applyMeetSdkRemoteConfig reads meetsdk-remote-config.json and writes TOPSDK marker blocks to root + app build.gradle (same idea as sdk-integration-agent gradleEditor).
|
|
46
|
+
|
|
47
|
+
Options (global where noted):
|
|
48
|
+
--project-root Host project directory (default: cwd); also sets fetch-config cache write location
|
|
49
|
+
--app-id fetch-config override; default reads topsdk.appId from meetsdk-remote-config.json
|
|
50
|
+
--channel-type fetch-config: channelType query param for downloadSDKConfig (required unless channel in local file or TOPSDK_CHANNEL_TYPE)
|
|
51
|
+
--auth-type 已忽略(downloadSDKConfig 不需要 authType);保留参数仅为兼容旧脚本
|
|
52
|
+
--env fetch-config: prod(正式服,默认)| pre | test(开发调试)
|
|
53
|
+
TOPSDK_API_BASE_URL fetch-config: 覆盖 API 根地址(如 http://localhost:18080/ 联调本机 console)
|
|
54
|
+
--dry-run integrate: compute changes and patch preview without writing files (default is write to disk)
|
|
55
|
+
--report-file Write JSON report to path
|
|
56
|
+
--patch-file integrate: write unified diff to this path (works with --dry-run). If under <pkg>/test-projects/_preview/, all existing files in that dir are removed first so only the latest patch remains.
|
|
57
|
+
--verbose Verbose logs and full patch preview
|
|
58
|
+
|
|
59
|
+
Subcommand notes:
|
|
60
|
+
- integrate defaults to writing files; use --dry-run for CI preview / diff-only.
|
|
61
|
+
- setup: step 1 always writes meetsdk-remote-config.json; step 2 honors --dry-run / --patch-file / --report-file.
|
|
62
|
+
- fetch-config ignores --dry-run, --report-file, --patch-file (shared parser only).
|
|
63
|
+
`);
|
|
64
|
+
}
|
|
65
|
+
function parseArgv(argv) {
|
|
66
|
+
const out = {
|
|
67
|
+
command: "",
|
|
68
|
+
projectRoot: process.cwd(),
|
|
69
|
+
dryRun: false,
|
|
70
|
+
verbose: false,
|
|
71
|
+
reportFile: "",
|
|
72
|
+
patchFile: "",
|
|
73
|
+
help: false,
|
|
74
|
+
topsdkEnv: "prod",
|
|
75
|
+
topsdkAppId: "",
|
|
76
|
+
topsdkAppSecret: "",
|
|
77
|
+
topsdkChannelType: "",
|
|
78
|
+
topsdkPackageName: "",
|
|
79
|
+
topsdkAuthTypes: [],
|
|
80
|
+
};
|
|
81
|
+
const rest = argv.slice(2);
|
|
82
|
+
if (!rest.length || (rest[0]?.startsWith("-") ?? false)) {
|
|
83
|
+
out.help = true;
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
out.command = rest[0] ?? "";
|
|
87
|
+
for (let i = 1; i < rest.length; i += 1) {
|
|
88
|
+
const t = rest[i];
|
|
89
|
+
if (t === "--help" || t === "-h") {
|
|
90
|
+
out.help = true;
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
if (t === "--verbose") {
|
|
94
|
+
out.verbose = true;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (t === "--dry-run") {
|
|
98
|
+
out.dryRun = true;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (t === "--project-root") {
|
|
102
|
+
out.projectRoot = path.resolve(rest[i + 1] ?? "");
|
|
103
|
+
i += 1;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (t === "--env") {
|
|
107
|
+
const v = (rest[i + 1] ?? "").toLowerCase();
|
|
108
|
+
i += 1;
|
|
109
|
+
if (v === "prod" || v === "pre" || v === "test")
|
|
110
|
+
out.topsdkEnv = v;
|
|
111
|
+
else
|
|
112
|
+
fail(`invalid --env (use prod, pre, or test): ${v}`, EXIT.INVALID_ARGS);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (t === "--app-id") {
|
|
116
|
+
out.topsdkAppId = rest[i + 1] ?? "";
|
|
117
|
+
i += 1;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (t === "--channel-type") {
|
|
121
|
+
out.topsdkChannelType = rest[i + 1] ?? "";
|
|
122
|
+
i += 1;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (t === "--auth-type") {
|
|
126
|
+
out.topsdkAuthTypes.push(rest[i + 1] ?? "");
|
|
127
|
+
i += 1;
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (t === "--report-file") {
|
|
131
|
+
out.reportFile = path.resolve(rest[i + 1] ?? "");
|
|
132
|
+
i += 1;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (t === "--patch-file") {
|
|
136
|
+
out.patchFile = path.resolve(rest[i + 1] ?? "");
|
|
137
|
+
i += 1;
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
fail(`unsupported argument: ${t}`, EXIT.INVALID_ARGS);
|
|
141
|
+
}
|
|
142
|
+
return out;
|
|
143
|
+
}
|
|
144
|
+
const DEFAULT_MANIFEST = "recipes/integrate-default.yaml";
|
|
145
|
+
function cmdDoctor(parsed) {
|
|
146
|
+
const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot());
|
|
147
|
+
const summary = {
|
|
148
|
+
projectRoot: ctx.projectRoot,
|
|
149
|
+
packageRoot: ctx.packageRoot,
|
|
150
|
+
engine: ctx.engine,
|
|
151
|
+
android: ctx.android,
|
|
152
|
+
ios: ctx.ios,
|
|
153
|
+
iosReserved: ctx.iosReserved,
|
|
154
|
+
};
|
|
155
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
156
|
+
}
|
|
157
|
+
/** 固定缓存路径:宿主工程根目录下的 meetsdk-remote-config.json */
|
|
158
|
+
function meetSdkRemoteConfigCachePath(projectRoot) {
|
|
159
|
+
return path.join(projectRoot, MEETSDK_REMOTE_CONFIG_FILENAME);
|
|
160
|
+
}
|
|
161
|
+
function readLocalMeetSdkRemoteConfig(projectRoot) {
|
|
162
|
+
const configPath = meetSdkRemoteConfigCachePath(projectRoot);
|
|
163
|
+
if (!fs.existsSync(configPath))
|
|
164
|
+
return null;
|
|
165
|
+
try {
|
|
166
|
+
return tryParseAsMeetSdkRemoteConfig(JSON.parse(fs.readFileSync(configPath, "utf8")));
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async function cmdFetchConfig(parsed) {
|
|
173
|
+
const out = meetSdkRemoteConfigCachePath(parsed.projectRoot);
|
|
174
|
+
const localConfig = readLocalMeetSdkRemoteConfig(parsed.projectRoot);
|
|
175
|
+
const appId = parsed.topsdkAppId || localConfig?.topsdk.appId || process.env.TOPSDK_APP_ID || "";
|
|
176
|
+
const channelType = parsed.topsdkChannelType ||
|
|
177
|
+
(localConfig ? readMeetSdkRemoteChannel(localConfig) : "") ||
|
|
178
|
+
process.env.TOPSDK_CHANNEL_TYPE ||
|
|
179
|
+
"";
|
|
180
|
+
if (parsed.topsdkAuthTypes.length > 0 || process.env.TOPSDK_AUTH_TYPES) {
|
|
181
|
+
console.warn("[meetgames] note: --auth-type / TOPSDK_AUTH_TYPES are ignored; fetch-config uses downloadSDKConfig.");
|
|
182
|
+
}
|
|
183
|
+
if (!appId || !channelType) {
|
|
184
|
+
fail(`fetch-config requires --app-id and --channel-type (or ${MEETSDK_REMOTE_CONFIG_FILENAME} / TOPSDK_APP_ID / TOPSDK_CHANNEL_TYPE).`, EXIT.INVALID_ARGS);
|
|
185
|
+
}
|
|
186
|
+
const baseUrl = process.env.TOPSDK_API_BASE_URL?.trim() || defaultTopSdkBaseUrl(parsed.topsdkEnv);
|
|
187
|
+
let body;
|
|
188
|
+
let requestUrl;
|
|
189
|
+
let rawText;
|
|
190
|
+
try {
|
|
191
|
+
const res = await fetchTopSdkDownloadSdkConfig({
|
|
192
|
+
baseUrl,
|
|
193
|
+
appId,
|
|
194
|
+
channelType,
|
|
195
|
+
});
|
|
196
|
+
body = res.body;
|
|
197
|
+
requestUrl = res.url;
|
|
198
|
+
rawText = res.text;
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
fail(e instanceof Error ? e.message : String(e), EXIT.NETWORK_ERROR);
|
|
202
|
+
}
|
|
203
|
+
const validation = validateDownloadSdkConfigForWrite(body);
|
|
204
|
+
if (!validation) {
|
|
205
|
+
fail(`downloadSDKConfig response is not a valid ${MEETSDK_REMOTE_CONFIG_FILENAME} document (GET ${requestUrl})`, EXIT.CONFIG_ERROR);
|
|
206
|
+
}
|
|
207
|
+
for (const warning of validation.warnings) {
|
|
208
|
+
console.warn(`[meetgames] warning: ${warning}`);
|
|
209
|
+
}
|
|
210
|
+
if (parsed.verbose && !validation.parsed.topsdk.version) {
|
|
211
|
+
console.warn(`[meetgames] note: downloadSDKConfig has no topsdk.version; integrate merges built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} at integrate time only.`);
|
|
212
|
+
}
|
|
213
|
+
writeDownloadSdkConfigRaw(out, rawText);
|
|
214
|
+
console.log(`[meetgames] wrote ${MEETSDK_REMOTE_CONFIG_FILENAME} (downloadSDKConfig response, unmodified): ${out}`);
|
|
215
|
+
if (parsed.verbose) {
|
|
216
|
+
console.log(`[meetgames] GET ${requestUrl}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async function cmdIntegrate(parsed) {
|
|
220
|
+
const manifestPath = path.join(resolvePackageRoot(), DEFAULT_MANIFEST);
|
|
221
|
+
if (!fs.existsSync(manifestPath)) {
|
|
222
|
+
fail(`config file not found: ${manifestPath}`, EXIT.PROJECT_ERROR);
|
|
223
|
+
}
|
|
224
|
+
let manifest;
|
|
225
|
+
try {
|
|
226
|
+
manifest = loadManifestFile(manifestPath);
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
fail(e instanceof Error ? e.message : String(e), EXIT.CONFIG_ERROR);
|
|
230
|
+
}
|
|
231
|
+
const ctx = buildWorkspaceContext(parsed.projectRoot, resolvePackageRoot());
|
|
232
|
+
const { report, patch, binaryCopies } = await runPipeline(ctx, manifest, { dryRun: parsed.dryRun });
|
|
233
|
+
printReport(report, patch, parsed.verbose);
|
|
234
|
+
if (binaryCopies.length) {
|
|
235
|
+
console.log("[meetgames] planned binary copies:");
|
|
236
|
+
for (const c of binaryCopies) {
|
|
237
|
+
console.log(` ${c.fromAbs} -> ${path.join(ctx.projectRoot, c.relTo)}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (parsed.reportFile) {
|
|
241
|
+
fs.mkdirSync(path.dirname(parsed.reportFile), { recursive: true });
|
|
242
|
+
fs.writeFileSync(parsed.reportFile, JSON.stringify({ ...report, binaryCopies }, null, 2), "utf8");
|
|
243
|
+
}
|
|
244
|
+
if (parsed.patchFile) {
|
|
245
|
+
const patchAbs = path.resolve(parsed.patchFile);
|
|
246
|
+
clearPreviewPatchFilesIfTargetInside(resolvePackageRoot(), patchAbs);
|
|
247
|
+
fs.mkdirSync(path.dirname(patchAbs), { recursive: true });
|
|
248
|
+
fs.writeFileSync(patchAbs, patch || "# no text changes\n", "utf8");
|
|
249
|
+
console.log(`[meetgames] wrote patch file: ${patchAbs}`);
|
|
250
|
+
}
|
|
251
|
+
if (report.errors.length) {
|
|
252
|
+
process.exit(EXIT.PIPELINE_ERROR);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
async function cmdSetup(parsed) {
|
|
256
|
+
console.log("[meetgames] setup: fetching remote config…");
|
|
257
|
+
await cmdFetchConfig(parsed);
|
|
258
|
+
console.log("[meetgames] setup: integrating project…");
|
|
259
|
+
await cmdIntegrate(parsed);
|
|
260
|
+
}
|
|
261
|
+
export async function main() {
|
|
262
|
+
const parsed = parseArgv(process.argv);
|
|
263
|
+
if (parsed.help) {
|
|
264
|
+
printHelp();
|
|
265
|
+
process.exit(EXIT.OK);
|
|
266
|
+
}
|
|
267
|
+
if (!parsed.command) {
|
|
268
|
+
printHelp();
|
|
269
|
+
process.exit(EXIT.INVALID_ARGS);
|
|
270
|
+
}
|
|
271
|
+
if (!fs.existsSync(parsed.projectRoot) || !fs.statSync(parsed.projectRoot).isDirectory()) {
|
|
272
|
+
fail("project root does not exist or is not a directory", EXIT.INVALID_ARGS);
|
|
273
|
+
}
|
|
274
|
+
switch (parsed.command) {
|
|
275
|
+
case "doctor":
|
|
276
|
+
cmdDoctor(parsed);
|
|
277
|
+
break;
|
|
278
|
+
case "integrate":
|
|
279
|
+
await cmdIntegrate(parsed);
|
|
280
|
+
break;
|
|
281
|
+
case "fetch-config":
|
|
282
|
+
await cmdFetchConfig(parsed);
|
|
283
|
+
break;
|
|
284
|
+
case "setup":
|
|
285
|
+
await cmdSetup(parsed);
|
|
286
|
+
break;
|
|
287
|
+
default:
|
|
288
|
+
fail(`unknown command: ${parsed.command}`, EXIT.INVALID_ARGS);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MeetSdkRemoteConfig } from "./meetSdkRemoteConfig.js";
|
|
2
|
+
export interface FetchConfigWriteValidation {
|
|
3
|
+
parsed: MeetSdkRemoteConfig;
|
|
4
|
+
warnings: string[];
|
|
5
|
+
}
|
|
6
|
+
/** Shape check only; does not normalize or merge meetsdk-android.json. */
|
|
7
|
+
export declare function validateDownloadSdkConfigForWrite(body: unknown): FetchConfigWriteValidation | null;
|
|
8
|
+
/** Write gp-sdk response bytes as-is (no normalize / no meetsdk-android merge). */
|
|
9
|
+
export declare function writeDownloadSdkConfigRaw(outPath: string, rawText: string): void;
|
|
10
|
+
//# sourceMappingURL=fetchConfigWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchConfigWrite.d.ts","sourceRoot":"","sources":["../../src/config/fetchConfigWrite.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,0EAA0E;AAC1E,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,OAAO,GAAG,0BAA0B,GAAG,IAAI,CASlG;AAED,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { tryParseAsMeetSdkRemoteConfig, validateMeetSdkRemoteConfig, } from "./meetSdkRemoteConfig.js";
|
|
4
|
+
/** Shape check only; does not normalize or merge meetsdk-android.json. */
|
|
5
|
+
export function validateDownloadSdkConfigForWrite(body) {
|
|
6
|
+
const parsed = tryParseAsMeetSdkRemoteConfig(body);
|
|
7
|
+
if (!parsed)
|
|
8
|
+
return null;
|
|
9
|
+
const warnings = [];
|
|
10
|
+
const validation = validateMeetSdkRemoteConfig(parsed);
|
|
11
|
+
if (!validation.ok) {
|
|
12
|
+
warnings.push(`remote-config missing or empty fields: ${validation.missing.join(", ")}`);
|
|
13
|
+
}
|
|
14
|
+
return { parsed, warnings };
|
|
15
|
+
}
|
|
16
|
+
/** Write gp-sdk response bytes as-is (no normalize / no meetsdk-android merge). */
|
|
17
|
+
export function writeDownloadSdkConfigRaw(outPath, rawText) {
|
|
18
|
+
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
19
|
+
fs.writeFileSync(outPath, rawText, "utf8");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=fetchConfigWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchConfigWrite.js","sourceRoot":"","sources":["../../src/config/fetchConfigWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAE5B,MAAM,0BAA0B,CAAC;AAOlC,0EAA0E;AAC1E,MAAM,UAAU,iCAAiC,CAAC,IAAa;IAC7D,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,OAAe;IACxE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AndroidIntegrationDocument } from "../contracts/types.js";
|
|
2
|
+
export declare function parseAndroidIntegrationJson(data: unknown): AndroidIntegrationDocument;
|
|
3
|
+
export declare function loadAndroidIntegrationFile(filePath: string): AndroidIntegrationDocument;
|
|
4
|
+
//# sourceMappingURL=loadAndroidIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadAndroidIntegration.d.ts","sourceRoot":"","sources":["../../src/config/loadAndroidIntegration.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAoBxE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG,0BAA0B,CASrF;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,0BAA0B,CAIvF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const Ajv = require("ajv");
|
|
7
|
+
const addFormats = require("ajv-formats");
|
|
8
|
+
const ajv = new Ajv({ allErrors: true, strict: true });
|
|
9
|
+
addFormats(ajv);
|
|
10
|
+
let validateCached;
|
|
11
|
+
function getValidator() {
|
|
12
|
+
if (validateCached)
|
|
13
|
+
return validateCached;
|
|
14
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
const schemaPath = path.join(here, "..", "..", "schema", "android-integration.schema.json");
|
|
16
|
+
const raw = JSON.parse(fs.readFileSync(schemaPath, "utf8"));
|
|
17
|
+
validateCached = ajv.compile(raw);
|
|
18
|
+
return validateCached;
|
|
19
|
+
}
|
|
20
|
+
export function parseAndroidIntegrationJson(data) {
|
|
21
|
+
const validate = getValidator();
|
|
22
|
+
if (!validate(data)) {
|
|
23
|
+
const msg = validate.errors?.map((e) => `${e.instancePath} ${e.message}`).join("; ") ||
|
|
24
|
+
"invalid android integration json";
|
|
25
|
+
throw new Error(`Android integration validation failed: ${msg}`);
|
|
26
|
+
}
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
export function loadAndroidIntegrationFile(filePath) {
|
|
30
|
+
const text = fs.readFileSync(filePath, "utf8");
|
|
31
|
+
const data = JSON.parse(text);
|
|
32
|
+
return parseAndroidIntegrationJson(data);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=loadAndroidIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadAndroidIntegration.js","sourceRoot":"","sources":["../../src/config/loadAndroidIntegration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAiC,OAAO,CAAC,KAAK,CAAiC,CAAC;AACzF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAA0D,CAAC;AAEnG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,UAAU,CAAC,GAAG,CAAC,CAAC;AAEhB,IAAI,cAAsF,CAAC;AAE3F,SAAS,YAAY;IACnB,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAW,CAAC;IACtE,cAAc,GAAG,GAAG,CAAC,OAAO,CAA6B,GAAG,CAAC,CAAC;IAC9D,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAa;IACvD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GACP,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACrF,kCAAkC,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAkC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadManifest.d.ts","sourceRoot":"","sources":["../../src/config/loadManifest.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAoBtD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAa3D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import yaml from "js-yaml";
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const Ajv = require("ajv");
|
|
8
|
+
const addFormats = require("ajv-formats");
|
|
9
|
+
const ajv = new Ajv({ allErrors: true, strict: true });
|
|
10
|
+
addFormats(ajv);
|
|
11
|
+
let validateCached;
|
|
12
|
+
function getValidator() {
|
|
13
|
+
if (validateCached)
|
|
14
|
+
return validateCached;
|
|
15
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
const schemaPath = path.join(here, "..", "..", "schema", "manifest.schema.json");
|
|
17
|
+
const raw = JSON.parse(fs.readFileSync(schemaPath, "utf8"));
|
|
18
|
+
validateCached = ajv.compile(raw);
|
|
19
|
+
return validateCached;
|
|
20
|
+
}
|
|
21
|
+
export function loadManifestFile(filePath) {
|
|
22
|
+
const text = fs.readFileSync(filePath, "utf8");
|
|
23
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
24
|
+
const data = ext === ".yaml" || ext === ".yml" ? yaml.load(text) : JSON.parse(text);
|
|
25
|
+
const validate = getValidator();
|
|
26
|
+
if (!validate(data)) {
|
|
27
|
+
const msg = validate.errors?.map((e) => `${e.instancePath} ${e.message}`).join("; ") ||
|
|
28
|
+
"invalid manifest";
|
|
29
|
+
throw new Error(`Manifest validation failed: ${msg}`);
|
|
30
|
+
}
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=loadManifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadManifest.js","sourceRoot":"","sources":["../../src/config/loadManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,IAAI,MAAM,SAAS,CAAC;AAG3B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAiC,OAAO,CAAC,KAAK,CAAiC,CAAC;AACzF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAA0D,CAAC;AAEnG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,UAAU,CAAC,GAAG,CAAC,CAAC;AAEhB,IAAI,cAAoE,CAAC;AAEzE,SAAS,YAAY;IACnB,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAW,CAAC;IACtE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAW,GAAG,CAAC,CAAC;IAC5C,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,IAAI,GACR,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GACP,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACrF,kBAAkB,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAgB,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type MeetSdkDefaultConfig } from "./meetSdkRemoteConfig.js";
|
|
2
|
+
/** Built-in Android SDK defaults (version, repos, per-plugin dependencies). */
|
|
3
|
+
export declare const MEETSDK_ANDROID_DEFAULTS_FILENAME = "meetsdk-android.json";
|
|
4
|
+
export declare function loadBuiltInMeetSdkDefaultConfig(): MeetSdkDefaultConfig;
|
|
5
|
+
//# sourceMappingURL=meetSdkDefaultConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meetSdkDefaultConfig.d.ts","sourceRoot":"","sources":["../../src/config/meetSdkDefaultConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErG,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,yBAAyB,CAAC;AAMxE,wBAAgB,+BAA+B,IAAI,oBAAoB,CAOtE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { tryParseAsMeetSdkDefaultConfig } from "./meetSdkRemoteConfig.js";
|
|
4
|
+
/** Built-in Android SDK defaults (version, repos, per-plugin dependencies). */
|
|
5
|
+
export const MEETSDK_ANDROID_DEFAULTS_FILENAME = "meetsdk-android.json";
|
|
6
|
+
const defaultConfigPath = fileURLToPath(new URL(`../../${MEETSDK_ANDROID_DEFAULTS_FILENAME}`, import.meta.url));
|
|
7
|
+
export function loadBuiltInMeetSdkDefaultConfig() {
|
|
8
|
+
const raw = JSON.parse(fs.readFileSync(defaultConfigPath, "utf8"));
|
|
9
|
+
const parsed = tryParseAsMeetSdkDefaultConfig(raw);
|
|
10
|
+
if (!parsed) {
|
|
11
|
+
throw new Error(`built-in ${MEETSDK_ANDROID_DEFAULTS_FILENAME} is not a valid MeetSdk default config`);
|
|
12
|
+
}
|
|
13
|
+
return parsed;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=meetSdkDefaultConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meetSdkDefaultConfig.js","sourceRoot":"","sources":["../../src/config/meetSdkDefaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,8BAA8B,EAA6B,MAAM,0BAA0B,CAAC;AAErG,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAExE,MAAM,iBAAiB,GAAG,aAAa,CACrC,IAAI,GAAG,CAAC,SAAS,iCAAiC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACvE,CAAC;AAEF,MAAM,UAAU,+BAA+B;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAY,CAAC;IAC9E,MAAM,MAAM,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,YAAY,iCAAiC,wCAAwC,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|