@limrun/cli 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.
Files changed (180) hide show
  1. package/README.md +670 -0
  2. package/bin/dev.js +16 -0
  3. package/bin/run.js +8 -0
  4. package/dist/base-command.d.ts +17 -0
  5. package/dist/base-command.d.ts.map +1 -0
  6. package/dist/base-command.js +111 -0
  7. package/dist/base-command.js.map +1 -0
  8. package/dist/commands/build.d.ts +20 -0
  9. package/dist/commands/build.d.ts.map +1 -0
  10. package/dist/commands/build.js +83 -0
  11. package/dist/commands/build.js.map +1 -0
  12. package/dist/commands/connect/android.d.ts +15 -0
  13. package/dist/commands/connect/android.d.ts.map +1 -0
  14. package/dist/commands/connect/android.js +80 -0
  15. package/dist/commands/connect/android.js.map +1 -0
  16. package/dist/commands/delete/android.d.ts +14 -0
  17. package/dist/commands/delete/android.d.ts.map +1 -0
  18. package/dist/commands/delete/android.js +22 -0
  19. package/dist/commands/delete/android.js.map +1 -0
  20. package/dist/commands/delete/asset.d.ts +14 -0
  21. package/dist/commands/delete/asset.d.ts.map +1 -0
  22. package/dist/commands/delete/asset.js +22 -0
  23. package/dist/commands/delete/asset.js.map +1 -0
  24. package/dist/commands/delete/index.d.ts +14 -0
  25. package/dist/commands/delete/index.d.ts.map +1 -0
  26. package/dist/commands/delete/index.js +47 -0
  27. package/dist/commands/delete/index.js.map +1 -0
  28. package/dist/commands/delete/ios.d.ts +14 -0
  29. package/dist/commands/delete/ios.d.ts.map +1 -0
  30. package/dist/commands/delete/ios.js +24 -0
  31. package/dist/commands/delete/ios.js.map +1 -0
  32. package/dist/commands/delete/xcode.d.ts +14 -0
  33. package/dist/commands/delete/xcode.d.ts.map +1 -0
  34. package/dist/commands/delete/xcode.js +22 -0
  35. package/dist/commands/delete/xcode.js.map +1 -0
  36. package/dist/commands/exec/element-tree.d.ts +14 -0
  37. package/dist/commands/exec/element-tree.d.ts.map +1 -0
  38. package/dist/commands/exec/element-tree.js +51 -0
  39. package/dist/commands/exec/element-tree.js.map +1 -0
  40. package/dist/commands/exec/install-app.d.ts +16 -0
  41. package/dist/commands/exec/install-app.d.ts.map +1 -0
  42. package/dist/commands/exec/install-app.js +75 -0
  43. package/dist/commands/exec/install-app.js.map +1 -0
  44. package/dist/commands/exec/launch-app.d.ts +16 -0
  45. package/dist/commands/exec/launch-app.d.ts.map +1 -0
  46. package/dist/commands/exec/launch-app.js +49 -0
  47. package/dist/commands/exec/launch-app.js.map +1 -0
  48. package/dist/commands/exec/list-apps.d.ts +14 -0
  49. package/dist/commands/exec/list-apps.d.ts.map +1 -0
  50. package/dist/commands/exec/list-apps.js +45 -0
  51. package/dist/commands/exec/list-apps.js.map +1 -0
  52. package/dist/commands/exec/log.d.ts +17 -0
  53. package/dist/commands/exec/log.d.ts.map +1 -0
  54. package/dist/commands/exec/log.js +80 -0
  55. package/dist/commands/exec/log.js.map +1 -0
  56. package/dist/commands/exec/open-url.d.ts +15 -0
  57. package/dist/commands/exec/open-url.d.ts.map +1 -0
  58. package/dist/commands/exec/open-url.js +35 -0
  59. package/dist/commands/exec/open-url.js.map +1 -0
  60. package/dist/commands/exec/press-key.d.ts +16 -0
  61. package/dist/commands/exec/press-key.d.ts.map +1 -0
  62. package/dist/commands/exec/press-key.js +41 -0
  63. package/dist/commands/exec/press-key.js.map +1 -0
  64. package/dist/commands/exec/record.d.ts +17 -0
  65. package/dist/commands/exec/record.d.ts.map +1 -0
  66. package/dist/commands/exec/record.js +78 -0
  67. package/dist/commands/exec/record.js.map +1 -0
  68. package/dist/commands/exec/screenshot.d.ts +15 -0
  69. package/dist/commands/exec/screenshot.d.ts.map +1 -0
  70. package/dist/commands/exec/screenshot.js +65 -0
  71. package/dist/commands/exec/screenshot.js.map +1 -0
  72. package/dist/commands/exec/scroll.d.ts +16 -0
  73. package/dist/commands/exec/scroll.d.ts.map +1 -0
  74. package/dist/commands/exec/scroll.js +50 -0
  75. package/dist/commands/exec/scroll.js.map +1 -0
  76. package/dist/commands/exec/tap-element.d.ts +18 -0
  77. package/dist/commands/exec/tap-element.d.ts.map +1 -0
  78. package/dist/commands/exec/tap-element.js +91 -0
  79. package/dist/commands/exec/tap-element.js.map +1 -0
  80. package/dist/commands/exec/tap.d.ts +22 -0
  81. package/dist/commands/exec/tap.d.ts.map +1 -0
  82. package/dist/commands/exec/tap.js +41 -0
  83. package/dist/commands/exec/tap.js.map +1 -0
  84. package/dist/commands/exec/terminate-app.d.ts +15 -0
  85. package/dist/commands/exec/terminate-app.d.ts.map +1 -0
  86. package/dist/commands/exec/terminate-app.js +39 -0
  87. package/dist/commands/exec/terminate-app.js.map +1 -0
  88. package/dist/commands/exec/type.d.ts +16 -0
  89. package/dist/commands/exec/type.d.ts.map +1 -0
  90. package/dist/commands/exec/type.js +43 -0
  91. package/dist/commands/exec/type.js.map +1 -0
  92. package/dist/commands/get/android.d.ts +19 -0
  93. package/dist/commands/get/android.d.ts.map +1 -0
  94. package/dist/commands/get/android.js +69 -0
  95. package/dist/commands/get/android.js.map +1 -0
  96. package/dist/commands/get/asset.d.ts +18 -0
  97. package/dist/commands/get/asset.d.ts.map +1 -0
  98. package/dist/commands/get/asset.js +74 -0
  99. package/dist/commands/get/asset.js.map +1 -0
  100. package/dist/commands/get/ios.d.ts +19 -0
  101. package/dist/commands/get/ios.d.ts.map +1 -0
  102. package/dist/commands/get/ios.js +69 -0
  103. package/dist/commands/get/ios.js.map +1 -0
  104. package/dist/commands/get/xcode.d.ts +17 -0
  105. package/dist/commands/get/xcode.d.ts.map +1 -0
  106. package/dist/commands/get/xcode.js +65 -0
  107. package/dist/commands/get/xcode.js.map +1 -0
  108. package/dist/commands/login.d.ts +7 -0
  109. package/dist/commands/login.d.ts.map +1 -0
  110. package/dist/commands/login.js +18 -0
  111. package/dist/commands/login.js.map +1 -0
  112. package/dist/commands/logout.d.ts +7 -0
  113. package/dist/commands/logout.d.ts.map +1 -0
  114. package/dist/commands/logout.js +14 -0
  115. package/dist/commands/logout.js.map +1 -0
  116. package/dist/commands/pull.d.ts +16 -0
  117. package/dist/commands/pull.d.ts.map +1 -0
  118. package/dist/commands/pull.js +71 -0
  119. package/dist/commands/pull.js.map +1 -0
  120. package/dist/commands/push.d.ts +15 -0
  121. package/dist/commands/push.d.ts.map +1 -0
  122. package/dist/commands/push.js +40 -0
  123. package/dist/commands/push.js.map +1 -0
  124. package/dist/commands/run/android.d.ts +24 -0
  125. package/dist/commands/run/android.d.ts.map +1 -0
  126. package/dist/commands/run/android.js +183 -0
  127. package/dist/commands/run/android.js.map +1 -0
  128. package/dist/commands/run/ios.d.ts +23 -0
  129. package/dist/commands/run/ios.d.ts.map +1 -0
  130. package/dist/commands/run/ios.js +129 -0
  131. package/dist/commands/run/ios.js.map +1 -0
  132. package/dist/commands/run/xcode.d.ts +19 -0
  133. package/dist/commands/run/xcode.d.ts.map +1 -0
  134. package/dist/commands/run/xcode.js +81 -0
  135. package/dist/commands/run/xcode.js.map +1 -0
  136. package/dist/commands/session/start.d.ts +15 -0
  137. package/dist/commands/session/start.d.ts.map +1 -0
  138. package/dist/commands/session/start.js +97 -0
  139. package/dist/commands/session/start.js.map +1 -0
  140. package/dist/commands/session/status.d.ts +11 -0
  141. package/dist/commands/session/status.d.ts.map +1 -0
  142. package/dist/commands/session/status.js +64 -0
  143. package/dist/commands/session/status.js.map +1 -0
  144. package/dist/commands/session/stop.d.ts +15 -0
  145. package/dist/commands/session/stop.d.ts.map +1 -0
  146. package/dist/commands/session/stop.js +67 -0
  147. package/dist/commands/session/stop.js.map +1 -0
  148. package/dist/commands/sync.d.ts +19 -0
  149. package/dist/commands/sync.d.ts.map +1 -0
  150. package/dist/commands/sync.js +80 -0
  151. package/dist/commands/sync.js.map +1 -0
  152. package/dist/index.d.ts +2 -0
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.js +6 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/lib/auth.d.ts +2 -0
  157. package/dist/lib/auth.d.ts.map +1 -0
  158. package/dist/lib/auth.js +60 -0
  159. package/dist/lib/auth.js.map +1 -0
  160. package/dist/lib/config.d.ts +21 -0
  161. package/dist/lib/config.d.ts.map +1 -0
  162. package/dist/lib/config.js +101 -0
  163. package/dist/lib/config.js.map +1 -0
  164. package/dist/lib/daemon-client.d.ts +9 -0
  165. package/dist/lib/daemon-client.d.ts.map +1 -0
  166. package/dist/lib/daemon-client.js +81 -0
  167. package/dist/lib/daemon-client.js.map +1 -0
  168. package/dist/lib/daemon.d.ts +40 -0
  169. package/dist/lib/daemon.d.ts.map +1 -0
  170. package/dist/lib/daemon.js +427 -0
  171. package/dist/lib/daemon.js.map +1 -0
  172. package/dist/lib/formatting.d.ts +3 -0
  173. package/dist/lib/formatting.d.ts.map +1 -0
  174. package/dist/lib/formatting.js +31 -0
  175. package/dist/lib/formatting.js.map +1 -0
  176. package/dist/lib/instance-client-factory.d.ts +23 -0
  177. package/dist/lib/instance-client-factory.d.ts.map +1 -0
  178. package/dist/lib/instance-client-factory.js +62 -0
  179. package/dist/lib/instance-client-factory.js.map +1 -0
  180. package/package.json +55 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BaseCommand = void 0;
37
+ const core_1 = require("@oclif/core");
38
+ const api_1 = __importStar(require("@limrun/api"));
39
+ const config_1 = require("./lib/config");
40
+ const auth_1 = require("./lib/auth");
41
+ const formatting_1 = require("./lib/formatting");
42
+ const VERSION = require('../package.json').version;
43
+ class BaseCommand extends core_1.Command {
44
+ get client() {
45
+ if (!this._client) {
46
+ const config = (0, config_1.readConfig)();
47
+ const flags = this.parsedFlags;
48
+ const apiKey = flags?.['api-key'] || config.apiKey;
49
+ const baseURL = config.apiEndpoint;
50
+ if (!apiKey) {
51
+ this.error('Not authenticated. Run `lim login` first, or provide --api-key.');
52
+ }
53
+ this._client = new api_1.default({ apiKey: apiKey, baseURL });
54
+ }
55
+ return this._client;
56
+ }
57
+ get parsedFlags() {
58
+ return this._parsedFlags;
59
+ }
60
+ setParsedFlags(flags) {
61
+ this._parsedFlags = flags;
62
+ }
63
+ async withAuth(fn) {
64
+ try {
65
+ return await fn();
66
+ }
67
+ catch (err) {
68
+ if (err instanceof api_1.AuthenticationError) {
69
+ const config = (0, config_1.readConfig)();
70
+ this.log('Session expired. Logging in...');
71
+ await (0, auth_1.login)(config.consoleEndpoint, VERSION);
72
+ this.log('You are logged in now.');
73
+ // Reset client so it picks up the new key
74
+ this._client = undefined;
75
+ return fn();
76
+ }
77
+ throw err;
78
+ }
79
+ }
80
+ outputTable(headers, rows) {
81
+ const flags = this.parsedFlags;
82
+ if (flags?.json) {
83
+ const objects = rows.map((row) => {
84
+ const obj = {};
85
+ headers.forEach((h, i) => {
86
+ obj[h.toLowerCase().replace(/\s+/g, '_')] = row[i] || '';
87
+ });
88
+ return obj;
89
+ });
90
+ this.log(JSON.stringify(objects, null, 2));
91
+ }
92
+ else {
93
+ this.log((0, formatting_1.renderTable)(headers, rows));
94
+ }
95
+ }
96
+ outputJson(data) {
97
+ this.log(JSON.stringify(data, null, 2));
98
+ }
99
+ }
100
+ exports.BaseCommand = BaseCommand;
101
+ BaseCommand.baseFlags = {
102
+ 'api-key': core_1.Flags.string({
103
+ description: 'API key for authentication',
104
+ env: 'LIM_API_KEY',
105
+ }),
106
+ json: core_1.Flags.boolean({
107
+ description: 'Output as JSON',
108
+ default: false,
109
+ }),
110
+ };
111
+ //# sourceMappingURL=base-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-command.js","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../base-command';
2
+ export default class Build extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ scheme: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ project: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ upload: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ private resolveXcodeClientFromIosInstance;
19
+ }
20
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,OAAO,SAAuC;IACrD,MAAM,CAAC,WAAW,SAE0E;IAE5F,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;;;;MAMV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA0CZ,iCAAiC;CA4BhD"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../base-command");
5
+ const instance_client_factory_1 = require("../lib/instance-client-factory");
6
+ const config_1 = require("../lib/config");
7
+ class Build extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { args, flags } = await this.parse(Build);
10
+ this.setParsedFlags(flags);
11
+ await this.withAuth(async () => {
12
+ const xcodeClient = await this.resolveXcodeClientFromIosInstance(args.id);
13
+ const settings = {};
14
+ if (flags.scheme)
15
+ settings.scheme = flags.scheme;
16
+ if (flags.workspace)
17
+ settings.workspace = flags.workspace;
18
+ if (flags.project)
19
+ settings.project = flags.project;
20
+ const options = {};
21
+ if (flags.upload) {
22
+ options.upload = { assetName: flags.upload };
23
+ }
24
+ this.log('Starting xcodebuild...');
25
+ const proc = xcodeClient.xcodebuild(Object.keys(settings).length > 0 ? settings : undefined, Object.keys(options).length > 0 ? options : undefined);
26
+ proc.stdout.on('data', (chunk) => {
27
+ process.stdout.write(chunk);
28
+ });
29
+ proc.stderr.on('data', (chunk) => {
30
+ process.stderr.write(chunk);
31
+ });
32
+ const result = await proc;
33
+ if (result.exitCode !== 0) {
34
+ this.error(`xcodebuild failed with exit code ${result.exitCode}`, { exit: result.exitCode });
35
+ }
36
+ this.log(`\nBuild succeeded (exit code ${result.exitCode})`);
37
+ });
38
+ }
39
+ async resolveXcodeClientFromIosInstance(id) {
40
+ const type = (0, instance_client_factory_1.detectInstanceType)(id).toString();
41
+ if (type === 'ios') {
42
+ const instance = await this.client.iosInstances.get(id);
43
+ let sandboxUrl = instance.status.sandbox?.xcode?.url;
44
+ let token = instance.status.token;
45
+ if (!sandboxUrl) {
46
+ const cached = (0, config_1.loadInstanceCache)(id);
47
+ if (cached?.sandboxXcodeUrl) {
48
+ sandboxUrl = cached.sandboxXcodeUrl;
49
+ token = cached.token || token;
50
+ }
51
+ }
52
+ if (!sandboxUrl) {
53
+ this.error(`iOS instance ${id} does not have a Xcode sandbox. Create it with: lim run ios --xcode`);
54
+ }
55
+ return this.client.xcodeInstances.createClient({
56
+ apiUrl: sandboxUrl,
57
+ token,
58
+ });
59
+ }
60
+ const instance = await this.client.xcodeInstances.get(id);
61
+ return this.client.xcodeInstances.createClient({ instance });
62
+ }
63
+ }
64
+ Build.summary = 'Run xcodebuild on a Xcode sandbox';
65
+ Build.description = 'Triggers a remote xcodebuild with streaming output. ' +
66
+ 'Works with both standalone Xcode instances and iOS instances that have --xcode enabled.';
67
+ Build.examples = [
68
+ '<%= config.bin %> build <xcode-instance-ID>',
69
+ '<%= config.bin %> build <ios-instance-ID> --scheme MyApp',
70
+ '<%= config.bin %> build <xcode-instance-ID> --scheme MyApp --workspace MyApp.xcworkspace',
71
+ ];
72
+ Build.args = {
73
+ id: core_1.Args.string({ description: 'Xcode or iOS instance ID', required: true }),
74
+ };
75
+ Build.flags = {
76
+ ...base_command_1.BaseCommand.baseFlags,
77
+ scheme: core_1.Flags.string({ description: 'Xcode scheme' }),
78
+ workspace: core_1.Flags.string({ description: 'Xcode workspace file' }),
79
+ project: core_1.Flags.string({ description: 'Xcode project file' }),
80
+ upload: core_1.Flags.string({ description: 'Upload build artifact as asset with this name' }),
81
+ };
82
+ exports.default = Build;
83
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class ConnectAndroid extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'adb-path': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../src/commands/connect/android.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAC,OAAO,SAA4D;IAC1E,MAAM,CAAC,QAAQ,WAA8C;IAE7D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmC3B"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const core_1 = require("@oclif/core");
37
+ const base_command_1 = require("../../base-command");
38
+ class ConnectAndroid extends base_command_1.BaseCommand {
39
+ async run() {
40
+ const { args, flags } = await this.parse(ConnectAndroid);
41
+ this.setParsedFlags(flags);
42
+ await this.withAuth(async () => {
43
+ const instance = await this.client.androidInstances.get(args.id);
44
+ if (!instance.status.apiUrl) {
45
+ this.error(`Instance ${args.id} does not have an apiUrl. Is it ready?`);
46
+ }
47
+ const { createInstanceClient } = await Promise.resolve().then(() => __importStar(require('@limrun/api')));
48
+ const instanceClient = await createInstanceClient({
49
+ apiUrl: instance.status.apiUrl,
50
+ adbUrl: instance.status.adbWebSocketUrl,
51
+ token: instance.status.token,
52
+ });
53
+ const tunnel = await instanceClient.startAdbTunnel();
54
+ this.log('Tunnel started. Press Ctrl+C to stop.');
55
+ await new Promise((resolve) => {
56
+ const keepAlive = setInterval(() => { }, 1 << 30);
57
+ const shutdown = () => {
58
+ clearInterval(keepAlive);
59
+ this.log('Stopping tunnel...');
60
+ resolve();
61
+ };
62
+ process.on('SIGINT', shutdown);
63
+ process.on('SIGTERM', shutdown);
64
+ });
65
+ tunnel.close();
66
+ instanceClient.disconnect();
67
+ });
68
+ }
69
+ }
70
+ ConnectAndroid.summary = 'Connect to an existing Android instance via ADB tunnel';
71
+ ConnectAndroid.examples = ['<%= config.bin %> connect android <ID>'];
72
+ ConnectAndroid.args = {
73
+ id: core_1.Args.string({ description: 'Android instance ID', required: true }),
74
+ };
75
+ ConnectAndroid.flags = {
76
+ ...base_command_1.BaseCommand.baseFlags,
77
+ 'adb-path': core_1.Flags.string({ description: 'Path to adb binary', default: 'adb' }),
78
+ };
79
+ exports.default = ConnectAndroid;
80
+ //# sourceMappingURL=android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android.js","sourceRoot":"","sources":["../../../src/commands/connect/android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAA0C;AAC1C,qDAAiD;AAEjD,MAAqB,cAAe,SAAQ,0BAAW;IAarD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC;gBAChD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;gBAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe;gBACvC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;aAC7B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YAElD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACpB,aAAa,CAAC,SAAS,CAAC,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC/B,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;;AA9CM,sBAAO,GAAG,wDAAwD,CAAC;AACnE,uBAAQ,GAAG,CAAC,wCAAwC,CAAC,CAAC;AAEtD,mBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACxE,CAAC;AAEK,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,UAAU,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;CAChF,CAAC;kBAXiB,cAAc"}
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class DeleteAndroid extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/android.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,OAAO,SAAgC;IAC9C,MAAM,CAAC,QAAQ,WAA6C;IAE5D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ class DeleteAndroid extends base_command_1.BaseCommand {
6
+ async run() {
7
+ const { args, flags } = await this.parse(DeleteAndroid);
8
+ this.setParsedFlags(flags);
9
+ await this.withAuth(async () => {
10
+ await this.client.androidInstances.delete(args.id);
11
+ this.log(`Deleted Android instance: ${args.id}`);
12
+ });
13
+ }
14
+ }
15
+ DeleteAndroid.summary = 'Delete an Android instance';
16
+ DeleteAndroid.examples = ['<%= config.bin %> delete android <ID>'];
17
+ DeleteAndroid.args = {
18
+ id: core_1.Args.string({ description: 'Instance ID to delete', required: true }),
19
+ };
20
+ DeleteAndroid.flags = { ...base_command_1.BaseCommand.baseFlags };
21
+ exports.default = DeleteAndroid;
22
+ //# sourceMappingURL=android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android.js","sourceRoot":"","sources":["../../../src/commands/delete/android.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,aAAc,SAAQ,0BAAW;IAUpD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;;AAjBM,qBAAO,GAAG,4BAA4B,CAAC;AACvC,sBAAQ,GAAG,CAAC,uCAAuC,CAAC,CAAC;AAErD,kBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC1E,CAAC;AAEK,mBAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBARzB,aAAa"}
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class DeleteAsset extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/asset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,OAAO,SAAqB;IACnC,MAAM,CAAC,QAAQ,WAA2C;IAE1D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ class DeleteAsset extends base_command_1.BaseCommand {
6
+ async run() {
7
+ const { args, flags } = await this.parse(DeleteAsset);
8
+ this.setParsedFlags(flags);
9
+ await this.withAuth(async () => {
10
+ await this.client.assets.delete(args.id);
11
+ this.log(`Deleted asset: ${args.id}`);
12
+ });
13
+ }
14
+ }
15
+ DeleteAsset.summary = 'Delete an asset';
16
+ DeleteAsset.examples = ['<%= config.bin %> delete asset <ID>'];
17
+ DeleteAsset.args = {
18
+ id: core_1.Args.string({ description: 'Asset ID to delete', required: true }),
19
+ };
20
+ DeleteAsset.flags = { ...base_command_1.BaseCommand.baseFlags };
21
+ exports.default = DeleteAsset;
22
+ //# sourceMappingURL=asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../../src/commands/delete/asset.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,WAAY,SAAQ,0BAAW;IAUlD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;;AAjBM,mBAAO,GAAG,iBAAiB,CAAC;AAC5B,oBAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAC;AAEnD,gBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACvE,CAAC;AAEK,iBAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBARzB,WAAW"}
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class Delete extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,OAAO,SAAgE;IAC9E,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgC3B"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const config_1 = require("../../lib/config");
6
+ class Delete extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { args, flags } = await this.parse(Delete);
9
+ this.setParsedFlags(flags);
10
+ const prefix = args.id.split('_')[0];
11
+ await this.withAuth(async () => {
12
+ switch (prefix) {
13
+ case 'android':
14
+ await this.client.androidInstances.delete(args.id);
15
+ this.log(`Deleted Android instance: ${args.id}`);
16
+ break;
17
+ case 'ios':
18
+ await this.client.iosInstances.delete(args.id);
19
+ (0, config_1.clearInstanceCache)(args.id);
20
+ this.log(`Deleted iOS instance: ${args.id}`);
21
+ break;
22
+ case 'xcode':
23
+ await this.client.xcodeInstances.delete(args.id);
24
+ this.log(`Deleted Xcode instance: ${args.id}`);
25
+ break;
26
+ case 'asset':
27
+ await this.client.assets.delete(args.id);
28
+ this.log(`Deleted asset: ${args.id}`);
29
+ break;
30
+ default:
31
+ this.error(`Unknown resource type for ID "${args.id}". Expected prefix: android_, ios_, xcode_, or asset_`);
32
+ }
33
+ });
34
+ }
35
+ }
36
+ Delete.summary = 'Delete a resource by ID (auto-detects type from ID prefix)';
37
+ Delete.examples = [
38
+ '<%= config.bin %> delete android_abc123',
39
+ '<%= config.bin %> delete ios_abc123',
40
+ '<%= config.bin %> delete xcode_abc123',
41
+ ];
42
+ Delete.args = {
43
+ id: core_1.Args.string({ description: 'Resource ID to delete', required: true }),
44
+ };
45
+ Delete.flags = { ...base_command_1.BaseCommand.baseFlags };
46
+ exports.default = Delete;
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/delete/index.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AACjD,6CAAsD;AAEtD,MAAqB,MAAO,SAAQ,0BAAW;IAc7C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,SAAS;oBACZ,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnD,IAAI,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,KAAK;oBACR,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/C,IAAA,2BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjD,IAAI,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,OAAO;oBACV,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzC,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtC,MAAM;gBACR;oBACE,IAAI,CAAC,KAAK,CACR,iCAAiC,IAAI,CAAC,EAAE,uDAAuD,CAChG,CAAC;YACN,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA5CM,cAAO,GAAG,4DAA4D,CAAC;AACvE,eAAQ,GAAG;IAChB,yCAAyC;IACzC,qCAAqC;IACrC,uCAAuC;CACxC,CAAC;AAEK,WAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC1E,CAAC;AAEK,YAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBAZzB,MAAM"}
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class DeleteIos extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=ios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/ios.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAA4B;IAC1C,MAAM,CAAC,QAAQ,WAAyC;IAExD,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAU3B"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const config_1 = require("../../lib/config");
6
+ class DeleteIos extends base_command_1.BaseCommand {
7
+ async run() {
8
+ const { args, flags } = await this.parse(DeleteIos);
9
+ this.setParsedFlags(flags);
10
+ await this.withAuth(async () => {
11
+ await this.client.iosInstances.delete(args.id);
12
+ (0, config_1.clearInstanceCache)(args.id);
13
+ this.log(`Deleted iOS instance: ${args.id}`);
14
+ });
15
+ }
16
+ }
17
+ DeleteIos.summary = 'Delete an iOS instance';
18
+ DeleteIos.examples = ['<%= config.bin %> delete ios <ID>'];
19
+ DeleteIos.args = {
20
+ id: core_1.Args.string({ description: 'Instance ID to delete', required: true }),
21
+ };
22
+ DeleteIos.flags = { ...base_command_1.BaseCommand.baseFlags };
23
+ exports.default = DeleteIos;
24
+ //# sourceMappingURL=ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios.js","sourceRoot":"","sources":["../../../src/commands/delete/ios.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AACjD,6CAAsD;AAEtD,MAAqB,SAAU,SAAQ,0BAAW;IAUhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAA,2BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;;AAlBM,iBAAO,GAAG,wBAAwB,CAAC;AACnC,kBAAQ,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAEjD,cAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC1E,CAAC;AAEK,eAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBARzB,SAAS"}
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class DeleteXcode extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=xcode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xcode.d.ts","sourceRoot":"","sources":["../../../src/commands/delete/xcode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,OAAO,SAA6B;IAC3C,MAAM,CAAC,QAAQ,WAA2C;IAE1D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ class DeleteXcode extends base_command_1.BaseCommand {
6
+ async run() {
7
+ const { args, flags } = await this.parse(DeleteXcode);
8
+ this.setParsedFlags(flags);
9
+ await this.withAuth(async () => {
10
+ await this.client.xcodeInstances.delete(args.id);
11
+ this.log(`Deleted Xcode instance: ${args.id}`);
12
+ });
13
+ }
14
+ }
15
+ DeleteXcode.summary = 'Delete a Xcode instance';
16
+ DeleteXcode.examples = ['<%= config.bin %> delete xcode <ID>'];
17
+ DeleteXcode.args = {
18
+ id: core_1.Args.string({ description: 'Instance ID to delete', required: true }),
19
+ };
20
+ DeleteXcode.flags = { ...base_command_1.BaseCommand.baseFlags };
21
+ exports.default = DeleteXcode;
22
+ //# sourceMappingURL=xcode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xcode.js","sourceRoot":"","sources":["../../../src/commands/delete/xcode.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,WAAY,SAAQ,0BAAW;IAUlD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;;AAjBM,mBAAO,GAAG,yBAAyB,CAAC;AACpC,oBAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAC;AAEnD,gBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC1E,CAAC;AAEK,iBAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,SAAS,EAAE,CAAC;kBARzB,WAAW"}
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class ExecElementTree extends BaseCommand {
3
+ static summary: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=element-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-tree.d.ts","sourceRoot":"","sources":["../../../src/commands/exec/element-tree.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,MAAM,CAAC,OAAO,SAAqD;IACnE,MAAM,CAAC,QAAQ,WAAyD;IAExE,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAAgC;IAEtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgC3B"}