@limrun/api 0.39.6 → 0.39.8

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 (91) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/exec-client.d.mts +5 -0
  3. package/exec-client.d.mts.map +1 -1
  4. package/exec-client.d.ts +5 -0
  5. package/exec-client.d.ts.map +1 -1
  6. package/exec-client.js.map +1 -1
  7. package/exec-client.mjs.map +1 -1
  8. package/folder-sync.d.mts +11 -0
  9. package/folder-sync.d.mts.map +1 -1
  10. package/folder-sync.d.ts +11 -0
  11. package/folder-sync.d.ts.map +1 -1
  12. package/folder-sync.js +18 -8
  13. package/folder-sync.js.map +1 -1
  14. package/folder-sync.mjs +18 -8
  15. package/folder-sync.mjs.map +1 -1
  16. package/index.d.mts +1 -1
  17. package/index.d.mts.map +1 -1
  18. package/index.d.ts +1 -1
  19. package/index.d.ts.map +1 -1
  20. package/index.js.map +1 -1
  21. package/index.mjs.map +1 -1
  22. package/instance-client.d.mts +9 -2
  23. package/instance-client.d.mts.map +1 -1
  24. package/instance-client.d.ts +9 -2
  25. package/instance-client.d.ts.map +1 -1
  26. package/instance-client.js +3 -62
  27. package/instance-client.js.map +1 -1
  28. package/instance-client.mjs +3 -62
  29. package/instance-client.mjs.map +1 -1
  30. package/internal/android-basis-cache.d.mts +30 -0
  31. package/internal/android-basis-cache.d.mts.map +1 -0
  32. package/internal/android-basis-cache.d.ts +30 -0
  33. package/internal/android-basis-cache.d.ts.map +1 -0
  34. package/internal/android-basis-cache.js +102 -0
  35. package/internal/android-basis-cache.js.map +1 -0
  36. package/internal/android-basis-cache.mjs +98 -0
  37. package/internal/android-basis-cache.mjs.map +1 -0
  38. package/internal/download-file.d.mts +1 -1
  39. package/internal/download-file.d.mts.map +1 -1
  40. package/internal/download-file.d.ts +1 -1
  41. package/internal/download-file.d.ts.map +1 -1
  42. package/internal/download-file.js +11 -2
  43. package/internal/download-file.js.map +1 -1
  44. package/internal/download-file.mjs +11 -2
  45. package/internal/download-file.mjs.map +1 -1
  46. package/ios-client.d.mts +3 -1
  47. package/ios-client.d.mts.map +1 -1
  48. package/ios-client.d.ts +3 -1
  49. package/ios-client.d.ts.map +1 -1
  50. package/ios-client.js +3 -0
  51. package/ios-client.js.map +1 -1
  52. package/ios-client.mjs +3 -0
  53. package/ios-client.mjs.map +1 -1
  54. package/package.json +1 -1
  55. package/resources/assets-helpers.d.mts +6 -0
  56. package/resources/assets-helpers.d.mts.map +1 -1
  57. package/resources/assets-helpers.d.ts +6 -0
  58. package/resources/assets-helpers.d.ts.map +1 -1
  59. package/resources/assets-helpers.js +27 -1
  60. package/resources/assets-helpers.js.map +1 -1
  61. package/resources/assets-helpers.mjs +27 -1
  62. package/resources/assets-helpers.mjs.map +1 -1
  63. package/resources/index.d.mts +1 -1
  64. package/resources/index.d.mts.map +1 -1
  65. package/resources/index.d.ts +1 -1
  66. package/resources/index.d.ts.map +1 -1
  67. package/resources/index.js.map +1 -1
  68. package/resources/index.mjs.map +1 -1
  69. package/resources/xcode-instances-helpers.d.mts +32 -1
  70. package/resources/xcode-instances-helpers.d.mts.map +1 -1
  71. package/resources/xcode-instances-helpers.d.ts +32 -1
  72. package/resources/xcode-instances-helpers.d.ts.map +1 -1
  73. package/resources/xcode-instances-helpers.js +2 -0
  74. package/resources/xcode-instances-helpers.js.map +1 -1
  75. package/resources/xcode-instances-helpers.mjs +2 -0
  76. package/resources/xcode-instances-helpers.mjs.map +1 -1
  77. package/src/exec-client.ts +5 -0
  78. package/src/folder-sync.ts +30 -8
  79. package/src/index.ts +1 -0
  80. package/src/instance-client.ts +11 -86
  81. package/src/internal/android-basis-cache.ts +131 -0
  82. package/src/internal/download-file.ts +16 -2
  83. package/src/ios-client.ts +6 -0
  84. package/src/resources/assets-helpers.ts +38 -1
  85. package/src/resources/index.ts +1 -0
  86. package/src/resources/xcode-instances-helpers.ts +34 -0
  87. package/src/version.ts +1 -1
  88. package/version.d.mts +1 -1
  89. package/version.d.ts +1 -1
  90. package/version.js +1 -1
  91. package/version.mjs +1 -1
@@ -33,6 +33,13 @@ export interface AssetGetOrUploadParams {
33
33
  * Optional platform for the asset.
34
34
  */
35
35
  platform?: AssetPlatform;
36
+
37
+ /**
38
+ * Optional callback fired as upload bytes are handed to the network, for progress
39
+ * reporting. Not called when the server already has identical content (md5 match)
40
+ * and the upload is skipped.
41
+ */
42
+ onUploadProgress?: (uploadedBytes: number, totalBytes: number) => void;
36
43
  }
37
44
 
38
45
  export interface AssetGetOrUploadResponse {
@@ -45,6 +52,36 @@ export interface AssetGetOrUploadResponse {
45
52
  expiresAt?: string;
46
53
  }
47
54
 
55
+ /**
56
+ * Body init for the signed-URL PUT. Without a progress callback the buffer is sent
57
+ * directly. With one, the buffer is wrapped in a ReadableStream so the callback can
58
+ * fire as chunks are pulled onto the socket; the explicit Content-Length header set
59
+ * by the caller keeps the request non-chunked, which signed URLs require.
60
+ */
61
+ function uploadBodyInit(
62
+ data: Buffer,
63
+ onProgress?: (uploadedBytes: number, totalBytes: number) => void,
64
+ ): { body: NonNullable<RequestInit['body']>; duplex?: 'half' } {
65
+ if (!onProgress) {
66
+ return { body: data as unknown as NonNullable<RequestInit['body']> };
67
+ }
68
+ const chunkSize = 256 * 1024;
69
+ let sent = 0;
70
+ const stream = new ReadableStream<Uint8Array>({
71
+ pull(controller) {
72
+ if (sent >= data.length) {
73
+ controller.close();
74
+ return;
75
+ }
76
+ const chunk = data.subarray(sent, Math.min(sent + chunkSize, data.length));
77
+ sent += chunk.length;
78
+ controller.enqueue(chunk);
79
+ onProgress(sent, data.length);
80
+ },
81
+ });
82
+ return { body: stream as unknown as NonNullable<RequestInit['body']>, duplex: 'half' };
83
+ }
84
+
48
85
  export class Assets extends GeneratedAssets {
49
86
  async getOrUpload(
50
87
  body: AssetGetOrUploadParams,
@@ -78,7 +115,7 @@ export class Assets extends GeneratedAssets {
78
115
  'Content-Type': 'application/octet-stream',
79
116
  },
80
117
  method: 'PUT',
81
- body: data,
118
+ ...uploadBodyInit(data, body.onUploadProgress),
82
119
  });
83
120
  if (uploadResponse.status !== 200) {
84
121
  throw new Error(`Failed to upload asset: ${uploadResponse.status} ${await uploadResponse.text()}`);
@@ -47,6 +47,7 @@ export {
47
47
  type XcodeClient,
48
48
  type XcodeProjectConfig,
49
49
  type XcodeBuildOptions,
50
+ type XcodeGenConfig,
50
51
  type ReactNativeBuildConfig,
51
52
  type SimulatorAttachResult,
52
53
  type SimulatorStatus,
@@ -55,6 +55,8 @@ export type SyncOptions = {
55
55
  * Extra files to sync on every sync pass.
56
56
  */
57
57
  additionalFiles?: AdditionalFileSyncEntry[];
58
+ /** Called after every successful sync, including watch-triggered re-syncs. */
59
+ onSyncComplete?: FolderSyncOptions['onSyncComplete'];
58
60
  };
59
61
 
60
62
  export type SyncResult = {
@@ -80,6 +82,28 @@ export type XcodeProjectConfig = {
80
82
  configuration?: 'Debug' | 'Release';
81
83
  };
82
84
 
85
+ export type XcodeGenConfig = {
86
+ /**
87
+ * Relative path from the synced workspace root to the XcodeGen project
88
+ * spec file, like `xcodegen generate --spec`. Omit to use project.yml at
89
+ * the workspace root.
90
+ */
91
+ spec?: string;
92
+ /**
93
+ * Relative path from the synced workspace root to the directory the Xcode
94
+ * project is generated into, like `xcodegen generate --project`. Omit to
95
+ * generate into the spec file's directory.
96
+ */
97
+ project?: string;
98
+ /**
99
+ * Relative path from the synced workspace root to the project root
100
+ * directory that relative paths in the spec resolve against, like
101
+ * `xcodegen generate --project-root`. Omit to use the spec file's
102
+ * directory.
103
+ */
104
+ projectRoot?: string;
105
+ };
106
+
83
107
  export type XcodeSigningConfig = {
84
108
  certificateP12Base64?: string;
85
109
  certificatePassword?: string;
@@ -115,6 +139,14 @@ export type XcodeBuildOptions = {
115
139
  */
116
140
  testflight?: TestflightUploadConfig;
117
141
  reactNative?: ReactNativeBuildConfig;
142
+ /**
143
+ * Explicit XcodeGen inputs for server-side project generation. By default
144
+ * limbuild only generates from a project.yml it discovers, and only when
145
+ * the client did not sync the .xcodeproj itself. Setting either field
146
+ * forces generation with these paths, mirroring `xcodegen generate
147
+ * --spec/--project` run at the synced workspace root.
148
+ */
149
+ xcodegen?: XcodeGenConfig;
118
150
  buildSettings?: Record<string, string>;
119
151
  };
120
152
 
@@ -615,6 +647,7 @@ export class XcodeInstances extends GeneratedXcodeInstances {
615
647
  // the default skip behavior.
616
648
  syncSymlinks: true,
617
649
  ...(additionalFiles ? { additionalFiles } : {}),
650
+ ...(opts?.onSyncComplete ? { onSyncComplete: opts.onSyncComplete } : {}),
618
651
  };
619
652
 
620
653
  const result = await syncFolderImpl(localCodePath, codeSyncOpts);
@@ -638,6 +671,7 @@ export class XcodeInstances extends GeneratedXcodeInstances {
638
671
  const request: ExecRequest = {
639
672
  command: 'xcodebuild',
640
673
  ...(settings && { xcodebuild: settings }),
674
+ ...(options?.xcodegen && { xcodegen: options.xcodegen }),
641
675
  ...(options?.reactNative && { reactNative: options.reactNative }),
642
676
  ...(options?.signing && { signing: options.signing }),
643
677
  ...(options?.testflight && { testflight: options.testflight }),
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.39.6'; // x-release-please-version
1
+ export const VERSION = '0.39.8'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.39.6";
1
+ export declare const VERSION = "0.39.8";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.39.6";
1
+ export declare const VERSION = "0.39.8";
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.39.6'; // x-release-please-version
4
+ exports.VERSION = '0.39.8'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.39.6'; // x-release-please-version
1
+ export const VERSION = '0.39.8'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map