@limrun/api 0.50.0 → 0.51.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 (45) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/mise-tools.d.mts +0 -2
  3. package/mise-tools.d.mts.map +1 -1
  4. package/mise-tools.d.ts +0 -2
  5. package/mise-tools.d.ts.map +1 -1
  6. package/mise-tools.js +0 -46
  7. package/mise-tools.js.map +1 -1
  8. package/mise-tools.mjs +0 -44
  9. package/mise-tools.mjs.map +1 -1
  10. package/package.json +1 -2
  11. package/resources/android-instances.d.mts +25 -4
  12. package/resources/android-instances.d.mts.map +1 -1
  13. package/resources/android-instances.d.ts +25 -4
  14. package/resources/android-instances.d.ts.map +1 -1
  15. package/resources/gradle-instances-helpers.d.mts +4 -0
  16. package/resources/gradle-instances-helpers.d.mts.map +1 -1
  17. package/resources/gradle-instances-helpers.d.ts +4 -0
  18. package/resources/gradle-instances-helpers.d.ts.map +1 -1
  19. package/resources/gradle-instances-helpers.js +5 -2
  20. package/resources/gradle-instances-helpers.js.map +1 -1
  21. package/resources/gradle-instances-helpers.mjs +5 -2
  22. package/resources/gradle-instances-helpers.mjs.map +1 -1
  23. package/resources/gradle-instances.d.mts +25 -4
  24. package/resources/gradle-instances.d.mts.map +1 -1
  25. package/resources/gradle-instances.d.ts +25 -4
  26. package/resources/gradle-instances.d.ts.map +1 -1
  27. package/resources/ios-instances.d.mts +25 -4
  28. package/resources/ios-instances.d.mts.map +1 -1
  29. package/resources/ios-instances.d.ts +25 -4
  30. package/resources/ios-instances.d.ts.map +1 -1
  31. package/resources/xcode-instances.d.mts +25 -4
  32. package/resources/xcode-instances.d.mts.map +1 -1
  33. package/resources/xcode-instances.d.ts +25 -4
  34. package/resources/xcode-instances.d.ts.map +1 -1
  35. package/src/mise-tools.ts +0 -42
  36. package/src/resources/android-instances.ts +28 -4
  37. package/src/resources/gradle-instances-helpers.ts +9 -2
  38. package/src/resources/gradle-instances.ts +28 -4
  39. package/src/resources/ios-instances.ts +28 -4
  40. package/src/resources/xcode-instances.ts +28 -4
  41. package/src/version.ts +1 -1
  42. package/version.d.mts +1 -1
  43. package/version.d.ts +1 -1
  44. package/version.js +1 -1
  45. package/version.mjs +1 -1
@@ -89,6 +89,10 @@ export declare namespace GradleInstanceCreateParams {
89
89
  };
90
90
  }
91
91
  interface Spec {
92
+ /**
93
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
94
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
95
+ */
92
96
  clues?: Array<Spec.Clue>;
93
97
  /**
94
98
  * After how many minutes should the instance be terminated. Example values 1m,
@@ -111,7 +115,7 @@ export declare namespace GradleInstanceCreateParams {
111
115
  jurisdiction?: 'us' | 'eu' | 'as';
112
116
  /**
113
117
  * Where the instance will be created. If not given, the region is decided based on
114
- * scheduling clues (client IP) and availability.
118
+ * scheduling clues (client location or IP) and availability.
115
119
  *
116
120
  * A region is a preference, not a hard pin: the request always overflows to every
117
121
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -119,8 +123,8 @@ export declare namespace GradleInstanceCreateParams {
119
123
  * Accepted values:
120
124
  *
121
125
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
122
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
123
- * are ignored when a region is given.
126
+ * remaining regions in order of proximity to it. Location clues are ignored
127
+ * when a specific region is given.
124
128
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
125
129
  * their listed order, then the remaining regions by proximity to the first
126
130
  * member.
@@ -132,8 +136,25 @@ export declare namespace GradleInstanceCreateParams {
132
136
  }
133
137
  namespace Spec {
134
138
  interface Clue {
135
- kind: 'ClientIP';
139
+ kind: 'ClientIP' | 'ClientLocation';
136
140
  clientIp?: string;
141
+ /**
142
+ * Required for ClientLocation. Both coordinates must be finite and within their
143
+ * ranges. This location takes precedence over ClientIP.
144
+ */
145
+ clientLocation?: Clue.ClientLocation;
146
+ }
147
+ namespace Clue {
148
+ interface ClientLocation {
149
+ /**
150
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
151
+ */
152
+ latitude: number;
153
+ /**
154
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
155
+ */
156
+ longitude: number;
157
+ }
137
158
  }
138
159
  }
139
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gradle-instances.d.ts","sourceRoot":"","sources":["../src/resources/gradle-instances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gradle-instances.d.ts","sourceRoot":"","sources":["../src/resources/gradle-instances.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,10 @@ export declare namespace IosInstanceCreateParams {
117
117
  };
118
118
  }
119
119
  interface Spec {
120
+ /**
121
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
122
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
123
+ */
120
124
  clues?: Array<Spec.Clue>;
121
125
  /**
122
126
  * Keeps this app in the foreground after it is first observed there. This does not
@@ -151,7 +155,7 @@ export declare namespace IosInstanceCreateParams {
151
155
  model?: 'iphone' | 'ipad' | 'watch';
152
156
  /**
153
157
  * Where the instance will be created. If not given, the region is decided based on
154
- * scheduling clues (client IP) and availability.
158
+ * scheduling clues (client location or IP) and availability.
155
159
  *
156
160
  * A region is a preference, not a hard pin: the request always overflows to every
157
161
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -159,8 +163,8 @@ export declare namespace IosInstanceCreateParams {
159
163
  * Accepted values:
160
164
  *
161
165
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
162
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
163
- * are ignored when a region is given.
166
+ * remaining regions in order of proximity to it. Location clues are ignored
167
+ * when a specific region is given.
164
168
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
165
169
  * their listed order, then the remaining regions by proximity to the first
166
170
  * member.
@@ -173,8 +177,25 @@ export declare namespace IosInstanceCreateParams {
173
177
  }
174
178
  namespace Spec {
175
179
  interface Clue {
176
- kind: 'ClientIP';
180
+ kind: 'ClientIP' | 'ClientLocation';
177
181
  clientIp?: string;
182
+ /**
183
+ * Required for ClientLocation. Both coordinates must be finite and within their
184
+ * ranges. This location takes precedence over ClientIP.
185
+ */
186
+ clientLocation?: Clue.ClientLocation;
187
+ }
188
+ namespace Clue {
189
+ interface ClientLocation {
190
+ /**
191
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
192
+ */
193
+ latitude: number;
194
+ /**
195
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
196
+ */
197
+ longitude: number;
198
+ }
178
199
  }
179
200
  interface InitialAsset {
180
201
  kind: 'App' | 'Keychain';
@@ -1 +1 @@
1
- {"version":3,"file":"ios-instances.d.mts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios-instances.d.mts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,10 @@ export declare namespace IosInstanceCreateParams {
117
117
  };
118
118
  }
119
119
  interface Spec {
120
+ /**
121
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
122
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
123
+ */
120
124
  clues?: Array<Spec.Clue>;
121
125
  /**
122
126
  * Keeps this app in the foreground after it is first observed there. This does not
@@ -151,7 +155,7 @@ export declare namespace IosInstanceCreateParams {
151
155
  model?: 'iphone' | 'ipad' | 'watch';
152
156
  /**
153
157
  * Where the instance will be created. If not given, the region is decided based on
154
- * scheduling clues (client IP) and availability.
158
+ * scheduling clues (client location or IP) and availability.
155
159
  *
156
160
  * A region is a preference, not a hard pin: the request always overflows to every
157
161
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -159,8 +163,8 @@ export declare namespace IosInstanceCreateParams {
159
163
  * Accepted values:
160
164
  *
161
165
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
162
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
163
- * are ignored when a region is given.
166
+ * remaining regions in order of proximity to it. Location clues are ignored
167
+ * when a specific region is given.
164
168
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
165
169
  * their listed order, then the remaining regions by proximity to the first
166
170
  * member.
@@ -173,8 +177,25 @@ export declare namespace IosInstanceCreateParams {
173
177
  }
174
178
  namespace Spec {
175
179
  interface Clue {
176
- kind: 'ClientIP';
180
+ kind: 'ClientIP' | 'ClientLocation';
177
181
  clientIp?: string;
182
+ /**
183
+ * Required for ClientLocation. Both coordinates must be finite and within their
184
+ * ranges. This location takes precedence over ClientIP.
185
+ */
186
+ clientLocation?: Clue.ClientLocation;
187
+ }
188
+ namespace Clue {
189
+ interface ClientLocation {
190
+ /**
191
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
192
+ */
193
+ latitude: number;
194
+ /**
195
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
196
+ */
197
+ longitude: number;
198
+ }
178
199
  }
179
200
  interface InitialAsset {
180
201
  kind: 'App' | 'Keychain';
@@ -1 +1 @@
1
- {"version":3,"file":"ios-instances.d.ts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios-instances.d.ts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,10 @@ export declare namespace XcodeInstanceCreateParams {
89
89
  };
90
90
  }
91
91
  interface Spec {
92
+ /**
93
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
94
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
95
+ */
92
96
  clues?: Array<Spec.Clue>;
93
97
  /**
94
98
  * After how many minutes should the instance be terminated. Example values 1m,
@@ -112,7 +116,7 @@ export declare namespace XcodeInstanceCreateParams {
112
116
  jurisdiction?: 'us' | 'eu' | 'as';
113
117
  /**
114
118
  * Where the instance will be created. If not given, the region is decided based on
115
- * scheduling clues (client IP) and availability.
119
+ * scheduling clues (client location or IP) and availability.
116
120
  *
117
121
  * A region is a preference, not a hard pin: the request always overflows to every
118
122
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -120,8 +124,8 @@ export declare namespace XcodeInstanceCreateParams {
120
124
  * Accepted values:
121
125
  *
122
126
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
123
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
124
- * are ignored when a region is given.
127
+ * remaining regions in order of proximity to it. Location clues are ignored
128
+ * when a specific region is given.
125
129
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
126
130
  * their listed order, then the remaining regions by proximity to the first
127
131
  * member.
@@ -133,8 +137,25 @@ export declare namespace XcodeInstanceCreateParams {
133
137
  }
134
138
  namespace Spec {
135
139
  interface Clue {
136
- kind: 'ClientIP';
140
+ kind: 'ClientIP' | 'ClientLocation';
137
141
  clientIp?: string;
142
+ /**
143
+ * Required for ClientLocation. Both coordinates must be finite and within their
144
+ * ranges. This location takes precedence over ClientIP.
145
+ */
146
+ clientLocation?: Clue.ClientLocation;
147
+ }
148
+ namespace Clue {
149
+ interface ClientLocation {
150
+ /**
151
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
152
+ */
153
+ latitude: number;
154
+ /**
155
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
156
+ */
157
+ longitude: number;
158
+ }
138
159
  }
139
160
  }
140
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xcode-instances.d.mts","sourceRoot":"","sources":["../src/resources/xcode-instances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xcode-instances.d.mts","sourceRoot":"","sources":["../src/resources/xcode-instances.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,10 @@ export declare namespace XcodeInstanceCreateParams {
89
89
  };
90
90
  }
91
91
  interface Spec {
92
+ /**
93
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
94
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
95
+ */
92
96
  clues?: Array<Spec.Clue>;
93
97
  /**
94
98
  * After how many minutes should the instance be terminated. Example values 1m,
@@ -112,7 +116,7 @@ export declare namespace XcodeInstanceCreateParams {
112
116
  jurisdiction?: 'us' | 'eu' | 'as';
113
117
  /**
114
118
  * Where the instance will be created. If not given, the region is decided based on
115
- * scheduling clues (client IP) and availability.
119
+ * scheduling clues (client location or IP) and availability.
116
120
  *
117
121
  * A region is a preference, not a hard pin: the request always overflows to every
118
122
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -120,8 +124,8 @@ export declare namespace XcodeInstanceCreateParams {
120
124
  * Accepted values:
121
125
  *
122
126
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
123
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
124
- * are ignored when a region is given.
127
+ * remaining regions in order of proximity to it. Location clues are ignored
128
+ * when a specific region is given.
125
129
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
126
130
  * their listed order, then the remaining regions by proximity to the first
127
131
  * member.
@@ -133,8 +137,25 @@ export declare namespace XcodeInstanceCreateParams {
133
137
  }
134
138
  namespace Spec {
135
139
  interface Clue {
136
- kind: 'ClientIP';
140
+ kind: 'ClientIP' | 'ClientLocation';
137
141
  clientIp?: string;
142
+ /**
143
+ * Required for ClientLocation. Both coordinates must be finite and within their
144
+ * ranges. This location takes precedence over ClientIP.
145
+ */
146
+ clientLocation?: Clue.ClientLocation;
147
+ }
148
+ namespace Clue {
149
+ interface ClientLocation {
150
+ /**
151
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
152
+ */
153
+ latitude: number;
154
+ /**
155
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
156
+ */
157
+ longitude: number;
158
+ }
138
159
  }
139
160
  }
140
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xcode-instances.d.ts","sourceRoot":"","sources":["../src/resources/xcode-instances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xcode-instances.d.ts","sourceRoot":"","sources":["../src/resources/xcode-instances.ts"],"names":[],"mappings":"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"}
package/src/mise-tools.ts CHANGED
@@ -1,7 +1,3 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import { parse, stringify, type TomlTable } from 'smol-toml';
4
-
5
1
  export function parseToolRequests(requests: string[]): Record<string, string> {
6
2
  const tools: Record<string, string> = {};
7
3
  for (const request of requests) {
@@ -15,41 +11,3 @@ export function parseToolRequests(requests: string[]): Record<string, string> {
15
11
  }
16
12
  return tools;
17
13
  }
18
-
19
- async function readConfig(file: string): Promise<TomlTable> {
20
- try {
21
- return parse(await fs.readFile(file, 'utf8'));
22
- } catch (error) {
23
- if ((error as NodeJS.ErrnoException).code === 'ENOENT') return {};
24
- throw new Error(`Cannot read mise configuration ${file}: ${String(error)}`);
25
- }
26
- }
27
-
28
- /** Save requested tool versions in the project configuration. */
29
- export async function writeMiseTools(directory: string, tools: Record<string, string>): Promise<string> {
30
- let file = path.join(directory, 'mise.toml');
31
- // Update the highest-precedence existing file in this directory.
32
- for (const name of ['mise.toml', '.mise.toml', 'mise.local.toml', '.mise.local.toml']) {
33
- const candidate = path.join(directory, name);
34
- try {
35
- await fs.access(candidate);
36
- file = candidate;
37
- } catch (error) {
38
- if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error;
39
- }
40
- }
41
- const config = await readConfig(file);
42
- const existing = config['tools'];
43
- if (existing !== undefined && (!existing || typeof existing !== 'object' || Array.isArray(existing)))
44
- throw new Error(`Expected [tools] in ${file}.`);
45
- config['tools'] = { ...(existing as TomlTable | undefined), ...tools };
46
- await fs.mkdir(path.dirname(file), { recursive: true });
47
- const temporary = `${file}.${process.pid}.tmp`;
48
- try {
49
- await fs.writeFile(temporary, stringify(config), { mode: 0o600, flag: 'wx' });
50
- await fs.rename(temporary, file);
51
- } finally {
52
- await fs.rm(temporary, { force: true });
53
- }
54
- return file;
55
- }
@@ -170,6 +170,10 @@ export namespace AndroidInstanceCreateParams {
170
170
  }
171
171
 
172
172
  export interface Spec {
173
+ /**
174
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
175
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
176
+ */
173
177
  clues?: Array<Spec.Clue>;
174
178
 
175
179
  /**
@@ -204,7 +208,7 @@ export namespace AndroidInstanceCreateParams {
204
208
 
205
209
  /**
206
210
  * Where the instance will be created. If not given, the region is decided based on
207
- * scheduling clues (client IP) and availability.
211
+ * scheduling clues (client location or IP) and availability.
208
212
  *
209
213
  * A region is a preference, not a hard pin: the request always overflows to every
210
214
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -212,8 +216,8 @@ export namespace AndroidInstanceCreateParams {
212
216
  * Accepted values:
213
217
  *
214
218
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
215
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
216
- * are ignored when a region is given.
219
+ * remaining regions in order of proximity to it. Location clues are ignored
220
+ * when a specific region is given.
217
221
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
218
222
  * their listed order, then the remaining regions by proximity to the first
219
223
  * member.
@@ -228,16 +232,36 @@ export namespace AndroidInstanceCreateParams {
228
232
 
229
233
  export namespace Spec {
230
234
  export interface Clue {
231
- kind: 'ClientIP' | 'OSVersion';
235
+ kind: 'ClientIP' | 'ClientLocation' | 'OSVersion';
232
236
 
233
237
  clientIp?: string;
234
238
 
239
+ /**
240
+ * Required for ClientLocation. Both coordinates must be finite and within their
241
+ * ranges. This location takes precedence over ClientIP.
242
+ */
243
+ clientLocation?: Clue.ClientLocation;
244
+
235
245
  /**
236
246
  * The major version of Android, e.g. "14" or "15".
237
247
  */
238
248
  osVersion?: string;
239
249
  }
240
250
 
251
+ export namespace Clue {
252
+ export interface ClientLocation {
253
+ /**
254
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
255
+ */
256
+ latitude: number;
257
+
258
+ /**
259
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
260
+ */
261
+ longitude: number;
262
+ }
263
+ }
264
+
241
265
  export interface InitialAsset {
242
266
  kind: 'App' | 'Configuration';
243
267
 
@@ -34,6 +34,10 @@ export type GradleCreateClientParams = { logLevel?: LogLevel } & (
34
34
  );
35
35
 
36
36
  export type GradleSyncOptions = {
37
+ /** Keep watching the source tree and sync changes. Defaults to false. */
38
+ watch?: boolean;
39
+ /** Called after the initial sync and each successful watch-triggered sync. */
40
+ onSyncComplete?: FolderSyncOptions['onSyncComplete'];
37
41
  /** Extra files to sync to paths relative to the remote workspace. */
38
42
  additionalFiles?: FolderSyncOptions['additionalFiles'];
39
43
  /**
@@ -183,12 +187,12 @@ class GradleInstancesHelpers extends GradleInstances {
183
187
  ...(opts?.include ? { include: opts.include } : {}),
184
188
  }),
185
189
  basisCacheDir,
186
- // Gradle builds are one-shot; no dev-loop watch like xcode.
187
- watch: false,
190
+ watch: opts?.watch ?? false,
188
191
  launchMode: 'ForegroundIfRunning',
189
192
  log,
190
193
  syncSymlinks: true,
191
194
  ...(opts?.additionalFiles && { additionalFiles: opts.additionalFiles }),
195
+ ...(opts?.onSyncComplete && { onSyncComplete: opts.onSyncComplete }),
192
196
  };
193
197
 
194
198
  const result = await syncFolderImpl(localCodePath, codeSyncOpts);
@@ -196,6 +200,9 @@ class GradleInstancesHelpers extends GradleInstances {
196
200
  if (result.bytesSent !== undefined) {
197
201
  out.bytesSent = result.bytesSent;
198
202
  }
203
+ if (result.stopWatching) {
204
+ out.stopWatching = result.stopWatching;
205
+ }
199
206
  return out;
200
207
  },
201
208
 
@@ -134,6 +134,10 @@ export namespace GradleInstanceCreateParams {
134
134
  }
135
135
 
136
136
  export interface Spec {
137
+ /**
138
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
139
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
140
+ */
137
141
  clues?: Array<Spec.Clue>;
138
142
 
139
143
  /**
@@ -160,7 +164,7 @@ export namespace GradleInstanceCreateParams {
160
164
 
161
165
  /**
162
166
  * Where the instance will be created. If not given, the region is decided based on
163
- * scheduling clues (client IP) and availability.
167
+ * scheduling clues (client location or IP) and availability.
164
168
  *
165
169
  * A region is a preference, not a hard pin: the request always overflows to every
166
170
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -168,8 +172,8 @@ export namespace GradleInstanceCreateParams {
168
172
  * Accepted values:
169
173
  *
170
174
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
171
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
172
- * are ignored when a region is given.
175
+ * remaining regions in order of proximity to it. Location clues are ignored
176
+ * when a specific region is given.
173
177
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
174
178
  * their listed order, then the remaining regions by proximity to the first
175
179
  * member.
@@ -182,9 +186,29 @@ export namespace GradleInstanceCreateParams {
182
186
 
183
187
  export namespace Spec {
184
188
  export interface Clue {
185
- kind: 'ClientIP';
189
+ kind: 'ClientIP' | 'ClientLocation';
186
190
 
187
191
  clientIp?: string;
192
+
193
+ /**
194
+ * Required for ClientLocation. Both coordinates must be finite and within their
195
+ * ranges. This location takes precedence over ClientIP.
196
+ */
197
+ clientLocation?: Clue.ClientLocation;
198
+ }
199
+
200
+ export namespace Clue {
201
+ export interface ClientLocation {
202
+ /**
203
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
204
+ */
205
+ latitude: number;
206
+
207
+ /**
208
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
209
+ */
210
+ longitude: number;
211
+ }
188
212
  }
189
213
  }
190
214
  }
@@ -168,6 +168,10 @@ export namespace IosInstanceCreateParams {
168
168
  }
169
169
 
170
170
  export interface Spec {
171
+ /**
172
+ * ClientLocation takes precedence over ClientIP regardless of clue order. Without
173
+ * either clue, routing uses Cloudflare visitor coordinates, then its client IP.
174
+ */
171
175
  clues?: Array<Spec.Clue>;
172
176
 
173
177
  /**
@@ -209,7 +213,7 @@ export namespace IosInstanceCreateParams {
209
213
 
210
214
  /**
211
215
  * Where the instance will be created. If not given, the region is decided based on
212
- * scheduling clues (client IP) and availability.
216
+ * scheduling clues (client location or IP) and availability.
213
217
  *
214
218
  * A region is a preference, not a hard pin: the request always overflows to every
215
219
  * other available region, ordered by proximity, when the preferred ones are full.
@@ -217,8 +221,8 @@ export namespace IosInstanceCreateParams {
217
221
  * Accepted values:
218
222
  *
219
223
  * - A specific region name (e.g. "us-west1"). It is tried first, then the
220
- * remaining regions in order of proximity to it. Scheduling clues (client IP)
221
- * are ignored when a region is given.
224
+ * remaining regions in order of proximity to it. Location clues are ignored
225
+ * when a specific region is given.
222
226
  * - A region group name (e.g. "us", "eu"). Its member regions are tried first in
223
227
  * their listed order, then the remaining regions by proximity to the first
224
228
  * member.
@@ -233,9 +237,29 @@ export namespace IosInstanceCreateParams {
233
237
 
234
238
  export namespace Spec {
235
239
  export interface Clue {
236
- kind: 'ClientIP';
240
+ kind: 'ClientIP' | 'ClientLocation';
237
241
 
238
242
  clientIp?: string;
243
+
244
+ /**
245
+ * Required for ClientLocation. Both coordinates must be finite and within their
246
+ * ranges. This location takes precedence over ClientIP.
247
+ */
248
+ clientLocation?: Clue.ClientLocation;
249
+ }
250
+
251
+ export namespace Clue {
252
+ export interface ClientLocation {
253
+ /**
254
+ * Latitude in decimal degrees, from -90 to 90 inclusive. Zero is valid.
255
+ */
256
+ latitude: number;
257
+
258
+ /**
259
+ * Longitude in decimal degrees, from -180 to 180 inclusive. Zero is valid.
260
+ */
261
+ longitude: number;
262
+ }
239
263
  }
240
264
 
241
265
  export interface InitialAsset {