@limrun/api 0.49.3 → 0.50.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 (104) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/exec-client.d.mts +25 -1
  3. package/exec-client.d.mts.map +1 -1
  4. package/exec-client.d.ts +25 -1
  5. package/exec-client.d.ts.map +1 -1
  6. package/exec-client.js +362 -197
  7. package/exec-client.js.map +1 -1
  8. package/exec-client.mjs +361 -197
  9. package/exec-client.mjs.map +1 -1
  10. package/folder-sync-ignore.d.mts +15 -12
  11. package/folder-sync-ignore.d.mts.map +1 -1
  12. package/folder-sync-ignore.d.ts +15 -12
  13. package/folder-sync-ignore.d.ts.map +1 -1
  14. package/folder-sync-ignore.js +16 -19
  15. package/folder-sync-ignore.js.map +1 -1
  16. package/folder-sync-ignore.mjs +16 -19
  17. package/folder-sync-ignore.mjs.map +1 -1
  18. package/index.d.mts +1 -1
  19. package/index.d.mts.map +1 -1
  20. package/index.d.ts +1 -1
  21. package/index.d.ts.map +1 -1
  22. package/index.js.map +1 -1
  23. package/index.mjs.map +1 -1
  24. package/instance-client.d.mts +11 -0
  25. package/instance-client.d.mts.map +1 -1
  26. package/instance-client.d.ts +11 -0
  27. package/instance-client.d.ts.map +1 -1
  28. package/instance-client.js +10 -1
  29. package/instance-client.js.map +1 -1
  30. package/instance-client.mjs +7 -0
  31. package/instance-client.mjs.map +1 -1
  32. package/ios-client.d.mts +2 -33
  33. package/ios-client.d.mts.map +1 -1
  34. package/ios-client.d.ts +2 -33
  35. package/ios-client.d.ts.map +1 -1
  36. package/ios-client.js +8 -99
  37. package/ios-client.js.map +1 -1
  38. package/ios-client.mjs +4 -95
  39. package/ios-client.mjs.map +1 -1
  40. package/log-stream.d.mts +35 -0
  41. package/log-stream.d.mts.map +1 -0
  42. package/log-stream.d.ts +35 -0
  43. package/log-stream.d.ts.map +1 -0
  44. package/log-stream.js +103 -0
  45. package/log-stream.js.map +1 -0
  46. package/log-stream.mjs +99 -0
  47. package/log-stream.mjs.map +1 -0
  48. package/logcat-process.d.mts +40 -0
  49. package/logcat-process.d.mts.map +1 -0
  50. package/logcat-process.d.ts +40 -0
  51. package/logcat-process.d.ts.map +1 -0
  52. package/logcat-process.js +122 -0
  53. package/logcat-process.js.map +1 -0
  54. package/logcat-process.mjs +118 -0
  55. package/logcat-process.mjs.map +1 -0
  56. package/mise-tools.d.mts +2 -0
  57. package/mise-tools.d.mts.map +1 -0
  58. package/mise-tools.d.ts +2 -0
  59. package/mise-tools.d.ts.map +1 -0
  60. package/mise-tools.js +17 -0
  61. package/mise-tools.js.map +1 -0
  62. package/mise-tools.mjs +14 -0
  63. package/mise-tools.mjs.map +1 -0
  64. package/package.json +31 -1
  65. package/resources/daemon-client-shared.d.mts +11 -0
  66. package/resources/daemon-client-shared.d.mts.map +1 -1
  67. package/resources/daemon-client-shared.d.ts +11 -0
  68. package/resources/daemon-client-shared.d.ts.map +1 -1
  69. package/resources/daemon-client-shared.js +23 -0
  70. package/resources/daemon-client-shared.js.map +1 -1
  71. package/resources/daemon-client-shared.mjs +22 -0
  72. package/resources/daemon-client-shared.mjs.map +1 -1
  73. package/resources/gradle-instances-helpers.d.mts +12 -2
  74. package/resources/gradle-instances-helpers.d.mts.map +1 -1
  75. package/resources/gradle-instances-helpers.d.ts +12 -2
  76. package/resources/gradle-instances-helpers.d.ts.map +1 -1
  77. package/resources/gradle-instances-helpers.js +6 -0
  78. package/resources/gradle-instances-helpers.js.map +1 -1
  79. package/resources/gradle-instances-helpers.mjs +8 -2
  80. package/resources/gradle-instances-helpers.mjs.map +1 -1
  81. package/resources/xcode-instances-helpers.d.mts +6 -15
  82. package/resources/xcode-instances-helpers.d.mts.map +1 -1
  83. package/resources/xcode-instances-helpers.d.ts +6 -15
  84. package/resources/xcode-instances-helpers.d.ts.map +1 -1
  85. package/resources/xcode-instances-helpers.js +3 -18
  86. package/resources/xcode-instances-helpers.js.map +1 -1
  87. package/resources/xcode-instances-helpers.mjs +5 -20
  88. package/resources/xcode-instances-helpers.mjs.map +1 -1
  89. package/src/exec-client.ts +404 -198
  90. package/src/folder-sync-ignore.ts +21 -21
  91. package/src/index.ts +1 -0
  92. package/src/instance-client.ts +16 -0
  93. package/src/ios-client.ts +4 -129
  94. package/src/log-stream.ts +132 -0
  95. package/src/logcat-process.ts +151 -0
  96. package/src/mise-tools.ts +13 -0
  97. package/src/resources/daemon-client-shared.ts +33 -0
  98. package/src/resources/gradle-instances-helpers.ts +23 -0
  99. package/src/resources/xcode-instances-helpers.ts +13 -33
  100. package/src/version.ts +1 -1
  101. package/version.d.mts +1 -1
  102. package/version.d.ts +1 -1
  103. package/version.js +1 -1
  104. package/version.mjs +1 -1
@@ -4,16 +4,22 @@ import { RequestOptions } from '../internal/request-options';
4
4
  import { path } from '../internal/utils/path';
5
5
  import {
6
6
  exec,
7
+ observeExecLogs,
7
8
  type ExecChildProcess,
9
+ type ExecLogOptions,
10
+ type ExecLogResult,
8
11
  type GradleBuildExecRequest,
9
12
  type GradlePlaystoreConfig,
10
13
  type GradleReactNativeConfig,
11
14
  type GradleSigningConfig,
12
15
  type WebhookConfig,
13
16
  } from '../exec-client';
17
+ export type { ExecLogOptions, ExecLogResult } from '../exec-client';
14
18
  import { syncFolder as syncFolderImpl, type FolderSyncOptions } from '../folder-sync';
15
19
  import { createIgnoreFn } from '../folder-sync-ignore';
16
20
  import {
21
+ createBuildRun,
22
+ type BuildRunOptions,
17
23
  createDaemonLogger,
18
24
  deriveBasisCache,
19
25
  mintAssetUploadUrls,
@@ -28,6 +34,8 @@ export type GradleCreateClientParams = { logLevel?: LogLevel } & (
28
34
  );
29
35
 
30
36
  export type GradleSyncOptions = {
37
+ /** Extra files to sync to paths relative to the remote workspace. */
38
+ additionalFiles?: FolderSyncOptions['additionalFiles'];
31
39
  /**
32
40
  * Directory for the client-side folder-sync cache.
33
41
  * Defaults to a temporary directory under the OS temp directory.
@@ -48,6 +56,8 @@ export type GradleSyncOptions = {
48
56
  };
49
57
 
50
58
  export type GradleBuildOptions = {
59
+ /** Extra KEY=VALUE entries shared by all build phases; sandbox paths remain managed. */
60
+ env?: string[];
51
61
  /**
52
62
  * Gradle tasks to run. Omit for the server default (assembleDebug, or
53
63
  * bundleRelease when signing is set).
@@ -82,9 +92,14 @@ export type GradleBuildOptions = {
82
92
  playstore?: GradlePlaystoreConfig;
83
93
  };
84
94
 
95
+ export type GradleRunOptions = BuildRunOptions;
96
+
85
97
  export type GradleClient = {
86
98
  sync(localCodePath: string, opts?: GradleSyncOptions): Promise<SyncResult>;
87
99
  gradlebuild(options?: GradleBuildOptions): ExecChildProcess;
100
+ run(commandLine: string, options?: GradleRunOptions): ExecChildProcess;
101
+ /** Replay an existing build's logs, optionally following it to completion. */
102
+ observeBuildLogs(execId: string, options?: ExecLogOptions): Promise<ExecLogResult>;
88
103
  };
89
104
 
90
105
  // Machine-local or regenerable files that must never reach the build
@@ -173,6 +188,7 @@ class GradleInstancesHelpers extends GradleInstances {
173
188
  launchMode: 'ForegroundIfRunning',
174
189
  log,
175
190
  syncSymlinks: true,
191
+ ...(opts?.additionalFiles && { additionalFiles: opts.additionalFiles }),
176
192
  };
177
193
 
178
194
  const result = await syncFolderImpl(localCodePath, codeSyncOpts);
@@ -183,9 +199,12 @@ class GradleInstancesHelpers extends GradleInstances {
183
199
  return out;
184
200
  },
185
201
 
202
+ run: createBuildRun({ apiUrl, token, log }),
203
+
186
204
  gradlebuild(options?: GradleBuildOptions): ExecChildProcess {
187
205
  const request: GradleBuildExecRequest = {
188
206
  command: 'gradlebuild',
207
+ ...(options?.env?.length && { env: options.env }),
189
208
  ...(options?.tasks?.length && { tasks: options.tasks }),
190
209
  ...(options?.projectPath && { projectPath: options.projectPath }),
191
210
  ...(options?.reactNative && { reactNative: options.reactNative }),
@@ -213,6 +232,10 @@ class GradleInstancesHelpers extends GradleInstances {
213
232
 
214
233
  return exec(request, { apiUrl, token, log });
215
234
  },
235
+
236
+ observeBuildLogs(execId: string, options?: ExecLogOptions): Promise<ExecLogResult> {
237
+ return observeExecLogs(execId, { apiUrl, token, log, ...options });
238
+ },
216
239
  };
217
240
  }
218
241
  }
@@ -16,14 +16,17 @@ import {
16
16
  } from '../xcode-cache';
17
17
  import {
18
18
  exec,
19
+ observeExecLogs,
19
20
  type AppStoreUploadConfig,
20
21
  type ExecChildProcess,
22
+ type ExecLogOptions,
23
+ type ExecLogResult,
21
24
  type ExecRequest,
22
25
  type WebhookConfig,
23
26
  type XctestEvent,
24
27
  } from '../exec-client';
25
28
 
26
- export type { AppStoreUploadConfig, WebhookConfig } from '../exec-client';
29
+ export type { AppStoreUploadConfig, ExecLogOptions, ExecLogResult, WebhookConfig } from '../exec-client';
27
30
  import {
28
31
  syncFolder as syncFolderImpl,
29
32
  type AdditionalFileSyncEntry,
@@ -31,6 +34,8 @@ import {
31
34
  } from '../folder-sync';
32
35
  import { createIgnoreFn } from '../folder-sync-ignore';
33
36
  import {
37
+ createBuildRun,
38
+ type BuildRunOptions,
34
39
  createDaemonLogger,
35
40
  deriveBasisCache,
36
41
  mintAssetUploadUrls,
@@ -88,18 +93,7 @@ export type SyncOptions = {
88
93
  onSyncComplete?: FolderSyncOptions['onSyncComplete'];
89
94
  };
90
95
 
91
- export type XcodeRunOptions = {
92
- /** Working directory relative to the synced workspace root. Defaults to ".". */
93
- cwd?: string;
94
- /**
95
- * Ordered KEY=VALUE entries added to limbuild's curated sandbox
96
- * environment. Server-managed variables (PATH, HOME, ...) cannot be
97
- * overridden; when a key repeats, the last entry wins.
98
- */
99
- env?: string[];
100
- /** Server-side timeout in seconds. Defaults to 3600; maximum 21600. */
101
- timeoutSeconds?: number;
102
- };
96
+ export type XcodeRunOptions = BuildRunOptions;
103
97
  export type XcodeProjectConfig = {
104
98
  workspace?: string;
105
99
  project?: string;
@@ -517,6 +511,9 @@ export type XcodeClient = {
517
511
  */
518
512
  xcodebuild: (settings?: XcodeProjectConfig, options?: XcodeBuildOptions) => ExecChildProcess;
519
513
 
514
+ /** Replay an existing build's logs, optionally following it to completion. */
515
+ observeBuildLogs: (execId: string, options?: ExecLogOptions) => Promise<ExecLogResult>;
516
+
520
517
  /**
521
518
  * Run a one-shot shell command in the synced workspace.
522
519
  * Output and the remote exit code are streamed through the returned process.
@@ -1049,26 +1046,9 @@ export class XcodeInstances extends GeneratedXcodeInstances {
1049
1046
  return exec(request, execOptions);
1050
1047
  },
1051
1048
 
1052
- run(commandLine: string, options?: XcodeRunOptions): ExecChildProcess {
1053
- if (commandLine.trim() === '') {
1054
- throw new Error('commandLine must not be empty');
1055
- }
1056
- if (
1057
- options?.timeoutSeconds !== undefined &&
1058
- (!Number.isInteger(options.timeoutSeconds) ||
1059
- options.timeoutSeconds < 1 ||
1060
- options.timeoutSeconds > 21600)
1061
- ) {
1062
- throw new Error('timeoutSeconds must be an integer between 1 and 21600');
1063
- }
1064
- const request: ExecRequest = {
1065
- command: 'run',
1066
- commandLine,
1067
- cwd: options?.cwd ?? '.',
1068
- ...(options?.env && { env: options.env }),
1069
- ...(options?.timeoutSeconds !== undefined && { timeoutSeconds: options.timeoutSeconds }),
1070
- };
1071
- return exec(request, { apiUrl, token, log });
1049
+ run: createBuildRun({ apiUrl, token, log }),
1050
+ observeBuildLogs(execId: string, options?: ExecLogOptions): Promise<ExecLogResult> {
1051
+ return observeExecLogs(execId, { apiUrl, token, log, ...options });
1072
1052
  },
1073
1053
 
1074
1054
  async getSimulator(): Promise<SimulatorStatus> {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.49.3'; // x-release-please-version
1
+ export const VERSION = '0.50.1'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.49.3";
1
+ export declare const VERSION = "0.50.1";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.49.3";
1
+ export declare const VERSION = "0.50.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.49.3'; // x-release-please-version
4
+ exports.VERSION = '0.50.1'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.49.3'; // x-release-please-version
1
+ export const VERSION = '0.50.1'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map