@tamagui/native-ci 2.7.7 → 3.0.0-beta.637.1

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 (45) hide show
  1. package/dist/android-utils.mjs +62 -0
  2. package/dist/android-utils.mjs.map +1 -0
  3. package/dist/cache.mjs +54 -70
  4. package/dist/cache.mjs.map +1 -1
  5. package/dist/cli.mjs +378 -403
  6. package/dist/cli.mjs.map +1 -1
  7. package/dist/constants.mjs +3 -2
  8. package/dist/constants.mjs.map +1 -1
  9. package/dist/deps.mjs +52 -64
  10. package/dist/deps.mjs.map +1 -1
  11. package/dist/detox.mjs +220 -202
  12. package/dist/detox.mjs.map +1 -1
  13. package/dist/fingerprint.mjs +35 -33
  14. package/dist/fingerprint.mjs.map +1 -1
  15. package/dist/index.js +10 -10
  16. package/dist/index.mjs +10 -10
  17. package/dist/ios-utils.mjs +318 -0
  18. package/dist/ios-utils.mjs.map +1 -0
  19. package/dist/metro.mjs +137 -139
  20. package/dist/metro.mjs.map +1 -1
  21. package/dist/runner.mjs +62 -65
  22. package/dist/runner.mjs.map +1 -1
  23. package/package.json +4 -4
  24. package/src/cli.ts +3 -3
  25. package/src/constants.ts +1 -1
  26. package/src/detox.ts +1 -0
  27. package/src/index.ts +2 -2
  28. package/src/metro.ts +2 -2
  29. package/src/run-detox-android.ts +1 -1
  30. package/src/run-detox-ios.ts +1 -1
  31. package/types/{android.d.ts → android-utils.d.ts} +1 -1
  32. package/types/android-utils.d.ts.map +1 -0
  33. package/types/cli.d.ts +1 -1
  34. package/types/constants.d.ts +2 -2
  35. package/types/detox.d.ts.map +1 -1
  36. package/types/index.d.ts +2 -2
  37. package/types/index.d.ts.map +1 -1
  38. package/types/{ios.d.ts → ios-utils.d.ts} +1 -1
  39. package/types/ios-utils.d.ts.map +1 -0
  40. package/dist/index.js.map +0 -1
  41. package/dist/index.mjs.map +0 -1
  42. package/types/android.d.ts.map +0 -1
  43. package/types/ios.d.ts.map +0 -1
  44. /package/src/{android.ts → android-utils.ts} +0 -0
  45. /package/src/{ios.ts → ios-utils.ts} +0 -0
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["generateFingerprint","generatePreFingerprintHash","createCacheKey","saveFingerprintToKV","getFingerprintFromKV","saveCache","loadCache","setGitHubOutput","isGitHubActions","isCI","ensureIosDeps","ensureAndroidDeps","ensureMaestro","printDepsStatus","withMetro","runDetoxTests","ensureIOSFolder","ensureIOSApp","ensureBootedSimulator","ensureAppInstalled","getBootedSimulatorUDID","getMaestroBundleId","setupAndroidDevice","ensureAndroidFolder","chmodSync","mkdtempSync","rmSync","writeFileSync","tmpdir","join","HELP","createMaestroXcrunShim","binDir","xcrunPath","parseArgs","argv","args","options","projectRoot","process","cwd","config","recordLogs","retries","headless","prefix","githubOutput","json","help","i","length","arg","val","Number","parseInt","isNaN","startsWith","push","command","subcommand","slice","options2","validatePlatform","value","console","error","exit","getKVCredentials","url","env","KV_STORE_REDIS_REST_URL","token","KV_STORE_REDIS_REST_TOKEN","info","NATIVE_CI_FORCE_RUN","platform","chdir","exitCode","testFiles","flow","udid","bundleId","$","flowArg","udidArgs","debugDir","xcrunShimDir","previousPath","PATH","result","nothrow","recursive","force","iosExit","err","androidExit","success","hash","fingerprint","JSON","stringify","CACHE_FILE","iosResult","androidResult","iosFingerprint","androidFingerprint","cache","ios","android","iosChanged","androidChanged","timestamp","Date","toISOString","files","filter","Boolean","cacheKey","key","kv","message"],"sources":["../src/cli.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"cli.js","names":[],"sources":["cli.js"],"sourcesContent":["#!/usr/bin/env bun\nimport { generateFingerprint, generatePreFingerprintHash } from \"./fingerprint\";\nimport {\n createCacheKey,\n saveFingerprintToKV,\n getFingerprintFromKV,\n saveCache,\n loadCache\n} from \"./cache\";\nimport { setGitHubOutput, isGitHubActions, isCI } from \"./runner\";\nimport {\n ensureIosDeps,\n ensureAndroidDeps,\n ensureMaestro,\n printDepsStatus\n} from \"./deps\";\nimport { withMetro } from \"./metro\";\nimport { runDetoxTests } from \"./detox\";\nimport {\n ensureIOSFolder,\n ensureIOSApp,\n ensureBootedSimulator,\n ensureAppInstalled,\n getBootedSimulatorUDID,\n getMaestroBundleId\n} from \"./ios-utils\";\nimport { setupAndroidDevice, ensureAndroidFolder } from \"./android-utils\";\nimport { chmodSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nconst HELP = `\nnative-ci - Native CI/CD helpers for Expo apps\n\nCOMMANDS:\n\n Test Commands:\n test ios [options] Run iOS Detox tests\n test android [options] Run Android Detox tests\n test maestro [flow] Run Maestro tests\n test all Run all tests (iOS + Android)\n\n Dependency Commands:\n deps Show dependency status\n deps install Install missing dependencies\n deps install-ios Install iOS dependencies (macOS only)\n deps install-android Install Android dependencies\n deps install-maestro Install Maestro\n\n Fingerprint Commands:\n fingerprint <platform> Generate native build fingerprint\n fingerprint-test Test fingerprint caching locally\n pre-hash <files...> Generate quick pre-fingerprint hash\n cache-key <platform> <fp> Generate cache key from fingerprint\n\n KV Store Commands:\n kv-get <key> Get value from KV store\n kv-set <key> <value> Set value in KV store\n\nOPTIONS:\n --project-root <path> Project root directory (default: cwd)\n --config <name> Detox configuration name\n --record-logs <mode> Record logs: none, failing, all (default: all)\n --retries <n> Number of retries for flaky tests (default: 0)\n --headless Run in headless mode (Android only)\n --prefix <prefix> Cache key prefix (default: native-build)\n --github-output Output results for GitHub Actions\n --json Output as JSON\n --help Show this help message\n\nENVIRONMENT:\n KV_STORE_REDIS_REST_URL Redis REST API URL for fingerprint caching\n KV_STORE_REDIS_REST_TOKEN Redis REST API token\n\nEXAMPLES:\n native-ci test ios\n native-ci test android --headless\n native-ci test maestro\n native-ci deps\n native-ci deps install\n native-ci fingerprint ios\n native-ci fingerprint-test\n`;\nfunction createMaestroXcrunShim() {\n const binDir = mkdtempSync(join(tmpdir(), \"native-ci-maestro-\"));\n const xcrunPath = join(binDir, \"xcrun\");\n writeFileSync(\n xcrunPath,\n `#!/bin/sh\nif [ \"$1\" = \"devicectl\" ] && [ \"$2\" = \"--json-output\" ] && [ \"$4\" = \"list\" ] && [ \"$5\" = \"devices\" ]; then\n printf '{\"result\":{\"devices\":[]}}\\\\n' > \"$3\"\n exit 0\nfi\n\nexec /usr/bin/xcrun \"$@\"\n`\n );\n chmodSync(xcrunPath, 493);\n return binDir;\n}\nfunction parseArgs(argv) {\n const args2 = [];\n const options2 = {\n projectRoot: process.cwd(),\n config: \"\",\n recordLogs: \"all\",\n retries: 0,\n headless: false,\n prefix: \"native-build\",\n githubOutput: false,\n json: false,\n help: false\n };\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n if (arg === \"--project-root\" && argv[i + 1]) {\n options2.projectRoot = argv[++i];\n } else if (arg === \"--config\" && argv[i + 1]) {\n options2.config = argv[++i];\n } else if (arg === \"--record-logs\" && argv[i + 1]) {\n options2.recordLogs = argv[++i];\n } else if (arg === \"--retries\" && argv[i + 1]) {\n const val = Number.parseInt(argv[++i], 10);\n if (!Number.isNaN(val) && val >= 0) {\n options2.retries = val;\n }\n } else if (arg === \"--prefix\" && argv[i + 1]) {\n options2.prefix = argv[++i];\n } else if (arg === \"--github-output\") {\n options2.githubOutput = true;\n } else if (arg === \"--json\") {\n options2.json = true;\n } else if (arg === \"--help\" || arg === \"-h\") {\n options2.help = true;\n } else if (!arg.startsWith(\"-\")) {\n args2.push(arg);\n }\n i++;\n }\n return {\n command: args2[0] || \"\",\n subcommand: args2[1] || \"\",\n args: args2.slice(2),\n options: options2\n };\n}\nfunction validatePlatform(value) {\n if (value !== \"ios\" && value !== \"android\") {\n console.error('Error: platform must be \"ios\" or \"android\"');\n process.exit(1);\n }\n return value;\n}\nfunction getKVCredentials() {\n const url = process.env.KV_STORE_REDIS_REST_URL;\n const token = process.env.KV_STORE_REDIS_REST_TOKEN;\n if (!url || !token) {\n console.error(\"Error: KV_STORE_REDIS_REST_URL and KV_STORE_REDIS_REST_TOKEN required\");\n process.exit(1);\n }\n return { url, token };\n}\nconst { command, subcommand, args, options } = parseArgs(process.argv.slice(2));\nif (options.help || !command) {\n console.info(HELP);\n process.exit(options.help ? 0 : 1);\n}\ntry {\n switch (command) {\n // ========================================\n // Test Commands\n // ========================================\n case \"test\": {\n if (isCI() && !process.env.NATIVE_CI_FORCE_RUN) {\n console.info(\"Skipping native tests in CI (handled by separate workflow)\");\n console.info(\"Set NATIVE_CI_FORCE_RUN=1 to force run\");\n process.exit(0);\n }\n const platform = subcommand || \"ios\";\n if (platform === \"ios\") {\n ensureBootedSimulator();\n await ensureIosDeps();\n const config = options.config || \"ios.sim.debug\";\n console.info(\"=== iOS Detox Test Runner ===\");\n console.info(`Config: ${config}`);\n console.info(`Project root: ${options.projectRoot}`);\n process.chdir(options.projectRoot);\n await ensureIOSFolder();\n await ensureIOSApp(config);\n const exitCode = await withMetro(\"ios\", async () => {\n return runDetoxTests({\n config,\n projectRoot: options.projectRoot,\n recordLogs: options.recordLogs,\n retries: options.retries,\n testFiles: args.length > 0 ? args : void 0\n });\n });\n process.exit(exitCode);\n } else if (platform === \"android\") {\n await ensureAndroidDeps();\n const config = options.config || \"android.emu.debug\";\n console.info(\"=== Android Detox Test Runner ===\");\n console.info(`Config: ${config}`);\n console.info(`Project root: ${options.projectRoot}`);\n console.info(`Headless: ${options.headless}`);\n process.chdir(options.projectRoot);\n await ensureAndroidFolder();\n await setupAndroidDevice();\n const exitCode = await withMetro(\"android\", async () => {\n return runDetoxTests({\n config,\n projectRoot: options.projectRoot,\n recordLogs: options.recordLogs,\n retries: options.retries,\n headless: options.headless,\n testFiles: args.length > 0 ? args : void 0\n });\n });\n process.exit(exitCode);\n } else if (platform === \"maestro\") {\n ensureBootedSimulator();\n await ensureMaestro();\n const flow = args[0] || \"\";\n console.info(\"=== Maestro Test Runner ===\");\n console.info(`Flow: ${flow || \"all\"}`);\n console.info(`Project root: ${options.projectRoot}`);\n process.chdir(options.projectRoot);\n const udid = getBootedSimulatorUDID();\n const bundleId = getMaestroBundleId(options.projectRoot);\n await ensureAppInstalled({ projectRoot: options.projectRoot, bundleId, udid });\n const exitCode = await withMetro(\"ios\", async () => {\n const { $ } = await import(\"bun\");\n const flowArg = flow ? `./flows/${flow}` : \"./flows\";\n const udidArgs = [\"--udid\", udid];\n const debugDir = `${options.projectRoot}/.maestro-debug`;\n const xcrunShimDir = createMaestroXcrunShim();\n const previousPath = process.env.PATH;\n try {\n process.env.PATH = `${xcrunShimDir}:${previousPath ?? \"\"}`;\n const result = await $`maestro test ${flowArg} --exclude-tags=util --no-ansi --debug-output=${debugDir} ${udidArgs}`.nothrow();\n return result.exitCode;\n } finally {\n if (previousPath === void 0) {\n delete process.env.PATH;\n } else {\n process.env.PATH = previousPath;\n }\n rmSync(xcrunShimDir, { recursive: true, force: true });\n }\n });\n process.exit(exitCode);\n } else if (platform === \"all\") {\n ensureBootedSimulator();\n console.info(\"=== Running All Native Tests ===\\n\");\n await ensureIosDeps();\n console.info(\"\\n--- iOS Tests ---\\n\");\n process.chdir(options.projectRoot);\n await ensureIOSFolder();\n await ensureIOSApp(options.config || \"ios.sim.debug\");\n let iosExit = 0;\n try {\n iosExit = await withMetro(\"ios\", async () => {\n return runDetoxTests({\n config: options.config || \"ios.sim.debug\",\n projectRoot: options.projectRoot,\n recordLogs: options.recordLogs,\n retries: options.retries\n });\n });\n } catch (err) {\n console.error(\"iOS tests failed:\", err);\n iosExit = 1;\n }\n await ensureAndroidDeps();\n console.info(\"\\n--- Android Tests ---\\n\");\n await ensureAndroidFolder();\n await setupAndroidDevice();\n let androidExit = 0;\n try {\n androidExit = await withMetro(\"android\", async () => {\n return runDetoxTests({\n config: options.config || \"android.emu.debug\",\n projectRoot: options.projectRoot,\n recordLogs: options.recordLogs,\n retries: options.retries,\n headless: options.headless\n });\n });\n } catch (err) {\n console.error(\"Android tests failed:\", err);\n androidExit = 1;\n }\n const success = iosExit === 0 && androidExit === 0;\n console.info(`\n=== Test Results ===`);\n console.info(`iOS: ${iosExit === 0 ? \"PASSED\" : \"FAILED\"}`);\n console.info(`Android: ${androidExit === 0 ? \"PASSED\" : \"FAILED\"}`);\n process.exit(success ? 0 : 1);\n } else {\n console.error(`Unknown test platform: ${platform}`);\n console.info(\"Usage: native-ci test [ios|android|maestro|all]\");\n process.exit(1);\n }\n break;\n }\n // ========================================\n // Dependency Commands\n // ========================================\n case \"deps\": {\n if (!subcommand || subcommand === \"status\") {\n printDepsStatus();\n } else if (subcommand === \"install\") {\n console.info(\"Installing all dependencies...\\n\");\n await ensureIosDeps();\n await ensureMaestro();\n console.info(\"\\nAll dependencies installed!\");\n } else if (subcommand === \"install-ios\") {\n await ensureIosDeps();\n } else if (subcommand === \"install-android\") {\n await ensureAndroidDeps();\n } else if (subcommand === \"install-maestro\") {\n await ensureMaestro();\n } else {\n console.error(`Unknown deps subcommand: ${subcommand}`);\n process.exit(1);\n }\n break;\n }\n // ========================================\n // Fingerprint Commands\n // ========================================\n case \"fingerprint\": {\n const platform = validatePlatform(subcommand);\n const result = await generateFingerprint({\n platform,\n projectRoot: options.projectRoot\n });\n if (options.githubOutput || isGitHubActions()) {\n setGitHubOutput(\"fingerprint\", result.hash);\n setGitHubOutput(\n \"cache-key\",\n createCacheKey({\n platform,\n fingerprint: result.hash,\n prefix: options.prefix\n })\n );\n }\n if (options.json) {\n console.info(JSON.stringify(result, null, 2));\n } else {\n console.info(result.hash);\n }\n break;\n }\n case \"fingerprint-test\": {\n const CACHE_FILE = \".fingerprint-cache.json\";\n console.info(\"Generating fingerprints...\\n\");\n const iosResult = await generateFingerprint({\n platform: \"ios\",\n projectRoot: options.projectRoot\n });\n const androidResult = await generateFingerprint({\n platform: \"android\",\n projectRoot: options.projectRoot\n });\n const iosFingerprint = iosResult.hash;\n const androidFingerprint = androidResult.hash;\n console.info(\"Current fingerprints:\");\n console.info(` iOS: ${iosFingerprint}`);\n console.info(` Android: ${androidFingerprint}`);\n console.info(\"\");\n const cache = loadCache(CACHE_FILE);\n if (cache?.ios && cache?.android) {\n console.info(\"Previous fingerprints (from cache):\");\n console.info(` iOS: ${cache.ios}`);\n console.info(` Android: ${cache.android}`);\n console.info(\"\");\n const iosChanged = cache.ios !== iosFingerprint;\n const androidChanged = cache.android !== androidFingerprint;\n if (iosChanged || androidChanged) {\n console.info(\"Fingerprints changed!\");\n if (iosChanged)\n console.info(\" - iOS fingerprint changed (would trigger iOS rebuild)\");\n if (androidChanged)\n console.info(\n \" - Android fingerprint changed (would trigger Android rebuild)\"\n );\n } else {\n console.info(\"Fingerprints match - no rebuild needed\");\n }\n } else {\n console.info(\"No previous fingerprints cached.\");\n }\n saveCache(CACHE_FILE, {\n ios: iosFingerprint,\n android: androidFingerprint,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n console.info(`\nSaved fingerprints to ${CACHE_FILE}`);\n console.info(`\nTo test cache invalidation:\n 1. Add a native dependency: yarn add react-native-mmkv\n 2. Run this script again: native-ci fingerprint-test\n 3. Fingerprints should change!\n 4. Remove the dependency: yarn remove react-native-mmkv\n 5. Run this script again - fingerprints should match original\n`);\n break;\n }\n case \"pre-hash\": {\n const files = [subcommand, ...args].filter(Boolean);\n if (files.length === 0) {\n console.error(\"Error: at least one file required\");\n process.exit(1);\n }\n const hash = generatePreFingerprintHash(files, options.projectRoot);\n if (options.githubOutput || isGitHubActions()) {\n setGitHubOutput(\"pre-fingerprint-hash\", hash);\n }\n if (options.json) {\n console.info(JSON.stringify({ hash, files }, null, 2));\n } else {\n console.info(hash);\n }\n break;\n }\n case \"cache-key\": {\n const platform = validatePlatform(subcommand);\n const fingerprint = args[0];\n if (!fingerprint) {\n console.error(\"Error: fingerprint is required\");\n process.exit(1);\n }\n const cacheKey = createCacheKey({\n platform,\n fingerprint,\n prefix: options.prefix\n });\n if (options.githubOutput || isGitHubActions()) {\n setGitHubOutput(\"cache-key\", cacheKey);\n }\n console.info(cacheKey);\n break;\n }\n // ========================================\n // KV Store Commands\n // ========================================\n case \"kv-get\": {\n const key = subcommand;\n if (!key) {\n console.error(\"Error: key is required\");\n process.exit(1);\n }\n const kv = getKVCredentials();\n const value = await getFingerprintFromKV(kv, key);\n if (options.githubOutput || isGitHubActions()) {\n setGitHubOutput(\"value\", value || \"\");\n setGitHubOutput(\"found\", value ? \"true\" : \"false\");\n }\n if (value) {\n console.info(value);\n } else {\n process.exit(1);\n }\n break;\n }\n case \"kv-set\": {\n const key = subcommand;\n const value = args[0];\n if (!key || !value) {\n console.error(\"Error: key and value are required\");\n process.exit(1);\n }\n const kv = getKVCredentials();\n await saveFingerprintToKV(kv, key, value);\n console.info(\"OK\");\n break;\n }\n default:\n console.error(`Unknown command: ${command}`);\n console.info(HELP);\n process.exit(1);\n }\n} catch (error) {\n console.error(\"Error:\", error.message);\n process.exit(1);\n}\n//# sourceMappingURL=cli.js.map\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  const METRO_HOST = "127.0.0.1";
2
- const METRO_PORT = 8081;
2
+ const METRO_PORT = 9034;
3
3
  const METRO_URL = `http://${METRO_HOST}:${METRO_PORT}`;
4
4
  const DETOX_SERVER_PORT = 8099;
5
5
  const DEFAULT_METRO_WAIT_ATTEMPTS = 60;
6
6
  const DEFAULT_METRO_WAIT_INTERVAL_MS = 2e3;
7
- const DEFAULT_METRO_TIMEOUT_MS = DEFAULT_METRO_WAIT_ATTEMPTS * DEFAULT_METRO_WAIT_INTERVAL_MS;
7
+ const DEFAULT_METRO_TIMEOUT_MS = 60 * DEFAULT_METRO_WAIT_INTERVAL_MS;
8
8
  const DEFAULT_KV_TTL_SECONDS = 2592e3;
9
+
9
10
  export { DEFAULT_KV_TTL_SECONDS, DEFAULT_METRO_TIMEOUT_MS, DEFAULT_METRO_WAIT_ATTEMPTS, DEFAULT_METRO_WAIT_INTERVAL_MS, DETOX_SERVER_PORT, METRO_HOST, METRO_PORT, METRO_URL };
10
11
  //# sourceMappingURL=constants.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["METRO_HOST","METRO_PORT","METRO_URL","DETOX_SERVER_PORT","DEFAULT_METRO_WAIT_ATTEMPTS","DEFAULT_METRO_WAIT_INTERVAL_MS","DEFAULT_METRO_TIMEOUT_MS","DEFAULT_KV_TTL_SECONDS"],"sources":["../src/constants.ts"],"sourcesContent":[null],"mappings":"AAKO,MAAMA,UAAA,GAAa;AACnB,MAAMC,UAAA,GAAa;AACnB,MAAMC,SAAA,GAAY,UAAUF,UAAU,IAAIC,UAAU;AAGpD,MAAME,iBAAA,GAAoB;AAG1B,MAAMC,2BAAA,GAA8B;AACpC,MAAMC,8BAAA,GAAiC;AACvC,MAAMC,wBAAA,GACXF,2BAAA,GAA8BC,8BAAA;AAGzB,MAAME,sBAAA,GAAyB","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["constants.js"],"sourcesContent":["const METRO_HOST = \"127.0.0.1\";\nconst METRO_PORT = 9034;\nconst METRO_URL = `http://${METRO_HOST}:${METRO_PORT}`;\nconst DETOX_SERVER_PORT = 8099;\nconst DEFAULT_METRO_WAIT_ATTEMPTS = 60;\nconst DEFAULT_METRO_WAIT_INTERVAL_MS = 2e3;\nconst DEFAULT_METRO_TIMEOUT_MS = DEFAULT_METRO_WAIT_ATTEMPTS * DEFAULT_METRO_WAIT_INTERVAL_MS;\nconst DEFAULT_KV_TTL_SECONDS = 2592e3;\nexport {\n DEFAULT_KV_TTL_SECONDS,\n DEFAULT_METRO_TIMEOUT_MS,\n DEFAULT_METRO_WAIT_ATTEMPTS,\n DEFAULT_METRO_WAIT_INTERVAL_MS,\n DETOX_SERVER_PORT,\n METRO_HOST,\n METRO_PORT,\n METRO_URL\n};\n//# sourceMappingURL=constants.js.map\n"],"mappings":";AAAA,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,YAAY,UAAU,WAAW,GAAG;AAC1C,MAAM,oBAAoB;AAC1B,MAAM,8BAA8B;AACpC,MAAM,iCAAiC;AACvC,MAAM,gCAAyD;AAC/D,MAAM,yBAAyB"}
package/dist/deps.mjs CHANGED
@@ -1,80 +1,68 @@
1
1
  import { execSync, spawnSync } from "node:child_process";
2
2
  import { platform } from "node:os";
3
+
3
4
  function checkDeps() {
4
- return {
5
- bun: commandExists("bun"),
6
- detoxCli: commandExists("detox"),
7
- applesimutils: commandExists("applesimutils"),
8
- maestro: commandExists("maestro")
9
- };
5
+ return {
6
+ bun: commandExists("bun"),
7
+ detoxCli: commandExists("detox"),
8
+ applesimutils: commandExists("applesimutils"),
9
+ maestro: commandExists("maestro")
10
+ };
10
11
  }
11
12
  function commandExists(cmd) {
12
- const result = spawnSync("which", [cmd], {
13
- encoding: "utf-8"
14
- });
15
- return result.status === 0;
13
+ const result = spawnSync("which", [cmd], { encoding: "utf-8" });
14
+ return result.status === 0;
16
15
  }
17
16
  async function ensureIosDeps() {
18
- if (platform() !== "darwin") {
19
- console.info("iOS testing requires macOS");
20
- return;
21
- }
22
- const deps = checkDeps();
23
- if (!deps.bun) {
24
- console.info("Installing Bun...");
25
- execSync("curl -fsSL https://bun.sh/install | bash", {
26
- stdio: "inherit"
27
- });
28
- }
29
- if (!deps.detoxCli) {
30
- console.info("Installing Detox CLI...");
31
- execSync("npm install -g detox-cli", {
32
- stdio: "inherit"
33
- });
34
- }
35
- if (!deps.applesimutils) {
36
- console.info("Installing applesimutils...");
37
- execSync("brew tap wix/brew && brew install applesimutils", {
38
- stdio: "inherit"
39
- });
40
- }
41
- console.info("All iOS dependencies installed");
17
+ if (platform() !== "darwin") {
18
+ console.info("iOS testing requires macOS");
19
+ return;
20
+ }
21
+ const deps = checkDeps();
22
+ if (!deps.bun) {
23
+ console.info("Installing Bun...");
24
+ execSync("curl -fsSL https://bun.sh/install | bash", { stdio: "inherit" });
25
+ }
26
+ if (!deps.detoxCli) {
27
+ console.info("Installing Detox CLI...");
28
+ execSync("npm install -g detox-cli", { stdio: "inherit" });
29
+ }
30
+ if (!deps.applesimutils) {
31
+ console.info("Installing applesimutils...");
32
+ execSync("brew tap wix/brew && brew install applesimutils", { stdio: "inherit" });
33
+ }
34
+ console.info("All iOS dependencies installed");
42
35
  }
43
36
  async function ensureAndroidDeps() {
44
- const deps = checkDeps();
45
- if (!deps.bun) {
46
- console.info("Installing Bun...");
47
- execSync("curl -fsSL https://bun.sh/install | bash", {
48
- stdio: "inherit"
49
- });
50
- }
51
- if (!deps.detoxCli) {
52
- console.info("Installing Detox CLI...");
53
- execSync("npm install -g detox-cli", {
54
- stdio: "inherit"
55
- });
56
- }
57
- console.info("All Android dependencies installed");
37
+ const deps = checkDeps();
38
+ if (!deps.bun) {
39
+ console.info("Installing Bun...");
40
+ execSync("curl -fsSL https://bun.sh/install | bash", { stdio: "inherit" });
41
+ }
42
+ if (!deps.detoxCli) {
43
+ console.info("Installing Detox CLI...");
44
+ execSync("npm install -g detox-cli", { stdio: "inherit" });
45
+ }
46
+ console.info("All Android dependencies installed");
58
47
  }
59
48
  async function ensureMaestro() {
60
- const deps = checkDeps();
61
- if (deps.maestro) {
62
- console.info("Maestro is already installed");
63
- return;
64
- }
65
- console.info("Installing Maestro...");
66
- execSync('curl -Ls "https://get.maestro.mobile.dev" | bash', {
67
- stdio: "inherit"
68
- });
49
+ const deps = checkDeps();
50
+ if (deps.maestro) {
51
+ console.info("Maestro is already installed");
52
+ return;
53
+ }
54
+ console.info("Installing Maestro...");
55
+ execSync("curl -Ls \"https://get.maestro.mobile.dev\" | bash", { stdio: "inherit" });
69
56
  }
70
57
  function printDepsStatus() {
71
- const deps = checkDeps();
72
- const check = ok => ok ? "\u2713" : "\u2717";
73
- console.info("Dependency Status:");
74
- console.info(` ${check(deps.bun)} Bun`);
75
- console.info(` ${check(deps.detoxCli)} Detox CLI`);
76
- console.info(` ${check(deps.applesimutils)} applesimutils (macOS)`);
77
- console.info(` ${check(deps.maestro)} Maestro`);
58
+ const deps = checkDeps();
59
+ const check = (ok) => ok ? "✓" : "✗";
60
+ console.info("Dependency Status:");
61
+ console.info(` ${check(deps.bun)} Bun`);
62
+ console.info(` ${check(deps.detoxCli)} Detox CLI`);
63
+ console.info(` ${check(deps.applesimutils)} applesimutils (macOS)`);
64
+ console.info(` ${check(deps.maestro)} Maestro`);
78
65
  }
66
+
79
67
  export { checkDeps, ensureAndroidDeps, ensureIosDeps, ensureMaestro, printDepsStatus };
80
68
  //# sourceMappingURL=deps.mjs.map
package/dist/deps.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["execSync","spawnSync","platform","checkDeps","bun","commandExists","detoxCli","applesimutils","maestro","cmd","result","encoding","status","ensureIosDeps","console","info","deps","stdio","ensureAndroidDeps","ensureMaestro","printDepsStatus","check","ok"],"sources":["../src/deps.ts"],"sourcesContent":[null],"mappings":"AAMA,SAASA,QAAA,EAAUC,SAAA,QAAiB;AACpC,SAASC,QAAA,QAAgB;AAYlB,SAASC,UAAA,EAA6B;EAC3C,OAAO;IACLC,GAAA,EAAKC,aAAA,CAAc,KAAK;IACxBC,QAAA,EAAUD,aAAA,CAAc,OAAO;IAC/BE,aAAA,EAAeF,aAAA,CAAc,eAAe;IAC5CG,OAAA,EAASH,aAAA,CAAc,SAAS;EAClC;AACF;AAEA,SAASA,cAAcI,GAAA,EAAsB;EAC3C,MAAMC,MAAA,GAAST,SAAA,CAAU,SAAS,CAACQ,GAAG,GAAG;IAAEE,QAAA,EAAU;EAAQ,CAAC;EAC9D,OAAOD,MAAA,CAAOE,MAAA,KAAW;AAC3B;AAKA,eAAsBC,cAAA,EAA+B;EACnD,IAAIX,QAAA,CAAS,MAAM,UAAU;IAC3BY,OAAA,CAAQC,IAAA,CAAK,4BAA4B;IACzC;EACF;EAEA,MAAMC,IAAA,GAAOb,SAAA,CAAU;EAEvB,IAAI,CAACa,IAAA,CAAKZ,GAAA,EAAK;IACbU,OAAA,CAAQC,IAAA,CAAK,mBAAmB;IAChCf,QAAA,CAAS,4CAA4C;MAAEiB,KAAA,EAAO;IAAU,CAAC;EAC3E;EAEA,IAAI,CAACD,IAAA,CAAKV,QAAA,EAAU;IAClBQ,OAAA,CAAQC,IAAA,CAAK,yBAAyB;IACtCf,QAAA,CAAS,4BAA4B;MAAEiB,KAAA,EAAO;IAAU,CAAC;EAC3D;EAEA,IAAI,CAACD,IAAA,CAAKT,aAAA,EAAe;IACvBO,OAAA,CAAQC,IAAA,CAAK,6BAA6B;IAC1Cf,QAAA,CAAS,mDAAmD;MAAEiB,KAAA,EAAO;IAAU,CAAC;EAClF;EAEAH,OAAA,CAAQC,IAAA,CAAK,gCAAgC;AAC/C;AAKA,eAAsBG,kBAAA,EAAmC;EACvD,MAAMF,IAAA,GAAOb,SAAA,CAAU;EAEvB,IAAI,CAACa,IAAA,CAAKZ,GAAA,EAAK;IACbU,OAAA,CAAQC,IAAA,CAAK,mBAAmB;IAChCf,QAAA,CAAS,4CAA4C;MAAEiB,KAAA,EAAO;IAAU,CAAC;EAC3E;EAEA,IAAI,CAACD,IAAA,CAAKV,QAAA,EAAU;IAClBQ,OAAA,CAAQC,IAAA,CAAK,yBAAyB;IACtCf,QAAA,CAAS,4BAA4B;MAAEiB,KAAA,EAAO;IAAU,CAAC;EAC3D;EAEAH,OAAA,CAAQC,IAAA,CAAK,oCAAoC;AACnD;AAKA,eAAsBI,cAAA,EAA+B;EACnD,MAAMH,IAAA,GAAOb,SAAA,CAAU;EAEvB,IAAIa,IAAA,CAAKR,OAAA,EAAS;IAChBM,OAAA,CAAQC,IAAA,CAAK,8BAA8B;IAC3C;EACF;EAEAD,OAAA,CAAQC,IAAA,CAAK,uBAAuB;EACpCf,QAAA,CAAS,oDAAoD;IAAEiB,KAAA,EAAO;EAAU,CAAC;AACnF;AAKO,SAASG,gBAAA,EAAwB;EACtC,MAAMJ,IAAA,GAAOb,SAAA,CAAU;EACvB,MAAMkB,KAAA,GAASC,EAAA,IAAiBA,EAAA,GAAK,WAAM;EAE3CR,OAAA,CAAQC,IAAA,CAAK,oBAAoB;EACjCD,OAAA,CAAQC,IAAA,CAAK,KAAKM,KAAA,CAAML,IAAA,CAAKZ,GAAG,CAAC,MAAM;EACvCU,OAAA,CAAQC,IAAA,CAAK,KAAKM,KAAA,CAAML,IAAA,CAAKV,QAAQ,CAAC,YAAY;EAClDQ,OAAA,CAAQC,IAAA,CAAK,KAAKM,KAAA,CAAML,IAAA,CAAKT,aAAa,CAAC,wBAAwB;EACnEO,OAAA,CAAQC,IAAA,CAAK,KAAKM,KAAA,CAAML,IAAA,CAAKR,OAAO,CAAC,UAAU;AACjD","ignoreList":[]}
1
+ {"version":3,"file":"deps.js","names":[],"sources":["deps.js"],"sourcesContent":["import { execSync, spawnSync } from \"node:child_process\";\nimport { platform } from \"node:os\";\nfunction checkDeps() {\n return {\n bun: commandExists(\"bun\"),\n detoxCli: commandExists(\"detox\"),\n applesimutils: commandExists(\"applesimutils\"),\n maestro: commandExists(\"maestro\")\n };\n}\nfunction commandExists(cmd) {\n const result = spawnSync(\"which\", [cmd], { encoding: \"utf-8\" });\n return result.status === 0;\n}\nasync function ensureIosDeps() {\n if (platform() !== \"darwin\") {\n console.info(\"iOS testing requires macOS\");\n return;\n }\n const deps = checkDeps();\n if (!deps.bun) {\n console.info(\"Installing Bun...\");\n execSync(\"curl -fsSL https://bun.sh/install | bash\", { stdio: \"inherit\" });\n }\n if (!deps.detoxCli) {\n console.info(\"Installing Detox CLI...\");\n execSync(\"npm install -g detox-cli\", { stdio: \"inherit\" });\n }\n if (!deps.applesimutils) {\n console.info(\"Installing applesimutils...\");\n execSync(\"brew tap wix/brew && brew install applesimutils\", { stdio: \"inherit\" });\n }\n console.info(\"All iOS dependencies installed\");\n}\nasync function ensureAndroidDeps() {\n const deps = checkDeps();\n if (!deps.bun) {\n console.info(\"Installing Bun...\");\n execSync(\"curl -fsSL https://bun.sh/install | bash\", { stdio: \"inherit\" });\n }\n if (!deps.detoxCli) {\n console.info(\"Installing Detox CLI...\");\n execSync(\"npm install -g detox-cli\", { stdio: \"inherit\" });\n }\n console.info(\"All Android dependencies installed\");\n}\nasync function ensureMaestro() {\n const deps = checkDeps();\n if (deps.maestro) {\n console.info(\"Maestro is already installed\");\n return;\n }\n console.info(\"Installing Maestro...\");\n execSync('curl -Ls \"https://get.maestro.mobile.dev\" | bash', { stdio: \"inherit\" });\n}\nfunction printDepsStatus() {\n const deps = checkDeps();\n const check = (ok) => ok ? \"\\u2713\" : \"\\u2717\";\n console.info(\"Dependency Status:\");\n console.info(` ${check(deps.bun)} Bun`);\n console.info(` ${check(deps.detoxCli)} Detox CLI`);\n console.info(` ${check(deps.applesimutils)} applesimutils (macOS)`);\n console.info(` ${check(deps.maestro)} Maestro`);\n}\nexport {\n checkDeps,\n ensureAndroidDeps,\n ensureIosDeps,\n ensureMaestro,\n printDepsStatus\n};\n//# sourceMappingURL=deps.js.map\n"],"mappings":";;;;AAEA,SAAS,YAAY;CACnB,OAAO;EACL,KAAK,cAAc,KAAK;EACxB,UAAU,cAAc,OAAO;EAC/B,eAAe,cAAc,eAAe;EAC5C,SAAS,cAAc,SAAS;CAClC;AACF;AACA,SAAS,cAAc,KAAK;CAC1B,MAAM,SAAS,UAAU,SAAS,CAAC,GAAG,GAAG,EAAE,UAAU,QAAQ,CAAC;CAC9D,OAAO,OAAO,WAAW;AAC3B;AACA,eAAe,gBAAgB;CAC7B,IAAI,SAAS,MAAM,UAAU;EAC3B,QAAQ,KAAK,4BAA4B;EACzC;CACF;CACA,MAAM,OAAO,UAAU;CACvB,IAAI,CAAC,KAAK,KAAK;EACb,QAAQ,KAAK,mBAAmB;EAChC,SAAS,4CAA4C,EAAE,OAAO,UAAU,CAAC;CAC3E;CACA,IAAI,CAAC,KAAK,UAAU;EAClB,QAAQ,KAAK,yBAAyB;EACtC,SAAS,4BAA4B,EAAE,OAAO,UAAU,CAAC;CAC3D;CACA,IAAI,CAAC,KAAK,eAAe;EACvB,QAAQ,KAAK,6BAA6B;EAC1C,SAAS,mDAAmD,EAAE,OAAO,UAAU,CAAC;CAClF;CACA,QAAQ,KAAK,gCAAgC;AAC/C;AACA,eAAe,oBAAoB;CACjC,MAAM,OAAO,UAAU;CACvB,IAAI,CAAC,KAAK,KAAK;EACb,QAAQ,KAAK,mBAAmB;EAChC,SAAS,4CAA4C,EAAE,OAAO,UAAU,CAAC;CAC3E;CACA,IAAI,CAAC,KAAK,UAAU;EAClB,QAAQ,KAAK,yBAAyB;EACtC,SAAS,4BAA4B,EAAE,OAAO,UAAU,CAAC;CAC3D;CACA,QAAQ,KAAK,oCAAoC;AACnD;AACA,eAAe,gBAAgB;CAC7B,MAAM,OAAO,UAAU;CACvB,IAAI,KAAK,SAAS;EAChB,QAAQ,KAAK,8BAA8B;EAC3C;CACF;CACA,QAAQ,KAAK,uBAAuB;CACpC,SAAS,sDAAoD,EAAE,OAAO,UAAU,CAAC;AACnF;AACA,SAAS,kBAAkB;CACzB,MAAM,OAAO,UAAU;CACvB,MAAM,SAAS,OAAO,KAAK,MAAW;CACtC,QAAQ,KAAK,oBAAoB;CACjC,QAAQ,KAAK,KAAK,MAAM,KAAK,GAAG,EAAE,KAAK;CACvC,QAAQ,KAAK,KAAK,MAAM,KAAK,QAAQ,EAAE,WAAW;CAClD,QAAQ,KAAK,KAAK,MAAM,KAAK,aAAa,EAAE,uBAAuB;CACnE,QAAQ,KAAK,KAAK,MAAM,KAAK,OAAO,EAAE,SAAS;AACjD"}