@sitepong/fastnode 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 (162) hide show
  1. package/README.md +81 -0
  2. package/bin/fastnode.js +13 -0
  3. package/bin/fastnode.ts +5 -0
  4. package/dist/actions/index.cjs +7405 -0
  5. package/dist/actions/index.cjs.map +1 -0
  6. package/dist/actions/index.d.cts +15 -0
  7. package/dist/actions/index.d.ts +15 -0
  8. package/dist/actions/index.mjs +7377 -0
  9. package/dist/actions/index.mjs.map +1 -0
  10. package/dist/cert/index.cjs +219 -0
  11. package/dist/cert/index.cjs.map +1 -0
  12. package/dist/cert/index.d.cts +4 -0
  13. package/dist/cert/index.d.ts +4 -0
  14. package/dist/cert/index.mjs +191 -0
  15. package/dist/cert/index.mjs.map +1 -0
  16. package/dist/cert-BmJGtYtb.d.cts +27 -0
  17. package/dist/cert-owkOFNW8.d.ts +27 -0
  18. package/dist/cli/index.cjs +7998 -0
  19. package/dist/cli/index.cjs.map +1 -0
  20. package/dist/cli/index.d.cts +9 -0
  21. package/dist/cli/index.d.ts +9 -0
  22. package/dist/cli/index.mjs +7972 -0
  23. package/dist/cli/index.mjs.map +1 -0
  24. package/dist/client/index.cjs +2592 -0
  25. package/dist/client/index.cjs.map +1 -0
  26. package/dist/client/index.d.cts +2 -0
  27. package/dist/client/index.d.ts +2 -0
  28. package/dist/client/index.mjs +2582 -0
  29. package/dist/client/index.mjs.map +1 -0
  30. package/dist/context-CymLkfrS.d.cts +13 -0
  31. package/dist/context-CymLkfrS.d.ts +13 -0
  32. package/dist/core/index.cjs +281 -0
  33. package/dist/core/index.cjs.map +1 -0
  34. package/dist/core/index.d.cts +1 -0
  35. package/dist/core/index.d.ts +1 -0
  36. package/dist/core/index.mjs +254 -0
  37. package/dist/core/index.mjs.map +1 -0
  38. package/dist/deliver/index.cjs +328 -0
  39. package/dist/deliver/index.cjs.map +1 -0
  40. package/dist/deliver/index.d.cts +3 -0
  41. package/dist/deliver/index.d.ts +3 -0
  42. package/dist/deliver/index.mjs +322 -0
  43. package/dist/deliver/index.mjs.map +1 -0
  44. package/dist/enums-B609j2rb.d.cts +20 -0
  45. package/dist/enums-B609j2rb.d.ts +20 -0
  46. package/dist/frameit/index.cjs +247 -0
  47. package/dist/frameit/index.cjs.map +1 -0
  48. package/dist/frameit/index.d.cts +1 -0
  49. package/dist/frameit/index.d.ts +1 -0
  50. package/dist/frameit/index.mjs +242 -0
  51. package/dist/frameit/index.mjs.map +1 -0
  52. package/dist/gym/index.cjs +356 -0
  53. package/dist/gym/index.cjs.map +1 -0
  54. package/dist/gym/index.d.cts +2 -0
  55. package/dist/gym/index.d.ts +2 -0
  56. package/dist/gym/index.mjs +346 -0
  57. package/dist/gym/index.mjs.map +1 -0
  58. package/dist/index-1Vu2cRQ2.d.ts +99 -0
  59. package/dist/index-A5MimeQk.d.ts +72 -0
  60. package/dist/index-B0yhu_LZ.d.ts +76 -0
  61. package/dist/index-B9yXicrQ.d.ts +62 -0
  62. package/dist/index-BFdNOmPJ.d.cts +53 -0
  63. package/dist/index-BLubSlgK.d.cts +1513 -0
  64. package/dist/index-BN0ubxjZ.d.ts +70 -0
  65. package/dist/index-BQJIJlK7.d.cts +70 -0
  66. package/dist/index-BYonklf3.d.cts +84 -0
  67. package/dist/index-BYonklf3.d.ts +84 -0
  68. package/dist/index-BimqCmY8.d.cts +78 -0
  69. package/dist/index-BimqCmY8.d.ts +78 -0
  70. package/dist/index-BoU8qt8r.d.cts +59 -0
  71. package/dist/index-BoU8qt8r.d.ts +59 -0
  72. package/dist/index-C2yG3wXA.d.cts +95 -0
  73. package/dist/index-C2yG3wXA.d.ts +95 -0
  74. package/dist/index-CR3BFPIz.d.cts +77 -0
  75. package/dist/index-CR3BFPIz.d.ts +77 -0
  76. package/dist/index-CWNLnSOL.d.cts +99 -0
  77. package/dist/index-Cp6cjtd-.d.cts +65 -0
  78. package/dist/index-Cp6cjtd-.d.ts +65 -0
  79. package/dist/index-D1Izm7qt.d.ts +1513 -0
  80. package/dist/index-D5eihzwM.d.cts +76 -0
  81. package/dist/index-DImN9PWc.d.ts +155 -0
  82. package/dist/index-DfCUVJX1.d.cts +62 -0
  83. package/dist/index-DfirmFbC.d.ts +32 -0
  84. package/dist/index-DkvinY7_.d.ts +54 -0
  85. package/dist/index-DrUpRXRG.d.cts +155 -0
  86. package/dist/index-EcVvViW8.d.cts +72 -0
  87. package/dist/index-HRiaaX-Q.d.cts +54 -0
  88. package/dist/index-TfXqwuac.d.ts +53 -0
  89. package/dist/index-lt819Jgj.d.cts +32 -0
  90. package/dist/index.cjs +8464 -0
  91. package/dist/index.cjs.map +1 -0
  92. package/dist/index.d.cts +23 -0
  93. package/dist/index.d.ts +23 -0
  94. package/dist/index.mjs +8410 -0
  95. package/dist/index.mjs.map +1 -0
  96. package/dist/lane/index.cjs +7641 -0
  97. package/dist/lane/index.cjs.map +1 -0
  98. package/dist/lane/index.d.cts +51 -0
  99. package/dist/lane/index.d.ts +51 -0
  100. package/dist/lane/index.mjs +7603 -0
  101. package/dist/lane/index.mjs.map +1 -0
  102. package/dist/match/index.cjs +942 -0
  103. package/dist/match/index.cjs.map +1 -0
  104. package/dist/match/index.d.cts +5 -0
  105. package/dist/match/index.d.ts +5 -0
  106. package/dist/match/index.mjs +913 -0
  107. package/dist/match/index.mjs.map +1 -0
  108. package/dist/pem/index.cjs +195 -0
  109. package/dist/pem/index.cjs.map +1 -0
  110. package/dist/pem/index.d.cts +3 -0
  111. package/dist/pem/index.d.ts +3 -0
  112. package/dist/pem/index.mjs +170 -0
  113. package/dist/pem/index.mjs.map +1 -0
  114. package/dist/pilot/index.cjs +206 -0
  115. package/dist/pilot/index.cjs.map +1 -0
  116. package/dist/pilot/index.d.cts +3 -0
  117. package/dist/pilot/index.d.ts +3 -0
  118. package/dist/pilot/index.mjs +196 -0
  119. package/dist/pilot/index.mjs.map +1 -0
  120. package/dist/precheck/index.cjs +277 -0
  121. package/dist/precheck/index.cjs.map +1 -0
  122. package/dist/precheck/index.d.cts +3 -0
  123. package/dist/precheck/index.d.ts +3 -0
  124. package/dist/precheck/index.mjs +274 -0
  125. package/dist/precheck/index.mjs.map +1 -0
  126. package/dist/produce/index.cjs +200 -0
  127. package/dist/produce/index.cjs.map +1 -0
  128. package/dist/produce/index.d.cts +3 -0
  129. package/dist/produce/index.d.ts +3 -0
  130. package/dist/produce/index.mjs +191 -0
  131. package/dist/produce/index.mjs.map +1 -0
  132. package/dist/scan/index.cjs +187 -0
  133. package/dist/scan/index.cjs.map +1 -0
  134. package/dist/scan/index.d.cts +1 -0
  135. package/dist/scan/index.d.ts +1 -0
  136. package/dist/scan/index.mjs +183 -0
  137. package/dist/scan/index.mjs.map +1 -0
  138. package/dist/sigh/index.cjs +203 -0
  139. package/dist/sigh/index.cjs.map +1 -0
  140. package/dist/sigh/index.d.cts +3 -0
  141. package/dist/sigh/index.d.ts +3 -0
  142. package/dist/sigh/index.mjs +198 -0
  143. package/dist/sigh/index.mjs.map +1 -0
  144. package/dist/snapshot/index.cjs +448 -0
  145. package/dist/snapshot/index.cjs.map +1 -0
  146. package/dist/snapshot/index.d.cts +1 -0
  147. package/dist/snapshot/index.d.ts +1 -0
  148. package/dist/snapshot/index.mjs +438 -0
  149. package/dist/snapshot/index.mjs.map +1 -0
  150. package/dist/trainer/index.cjs +395 -0
  151. package/dist/trainer/index.cjs.map +1 -0
  152. package/dist/trainer/index.d.cts +1 -0
  153. package/dist/trainer/index.d.ts +1 -0
  154. package/dist/trainer/index.mjs +372 -0
  155. package/dist/trainer/index.mjs.map +1 -0
  156. package/dist/xcode/index.cjs +188 -0
  157. package/dist/xcode/index.cjs.map +1 -0
  158. package/dist/xcode/index.d.cts +1 -0
  159. package/dist/xcode/index.d.ts +1 -0
  160. package/dist/xcode/index.mjs +176 -0
  161. package/dist/xcode/index.mjs.map +1 -0
  162. package/package.json +223 -0
@@ -0,0 +1,70 @@
1
+ import { A as AppStoreConnectClient } from './index-D1Izm7qt.js';
2
+ import { a as CertResult } from './cert-owkOFNW8.js';
3
+ import { S as SighResult } from './index-TfXqwuac.js';
4
+
5
+ type StorageMode = "git" | "s3" | "local";
6
+
7
+ declare function encryptV2(data: Buffer, password: string): Buffer;
8
+ declare function decryptV2(data: Buffer, password: string): Buffer;
9
+ declare function decryptV1(data: Buffer, password: string): Buffer;
10
+ declare function decrypt(data: Buffer, password: string): Buffer;
11
+ declare function encrypt(data: Buffer, password: string): Buffer;
12
+ declare function decryptFiles(dir: string, password: string): Promise<void>;
13
+ declare function encryptFiles(dir: string, password: string): Promise<void>;
14
+
15
+ interface MatchOptions {
16
+ client: AppStoreConnectClient;
17
+ type: "development" | "appstore" | "adhoc" | "enterprise";
18
+ appIdentifiers: string[];
19
+ storageMode: StorageMode;
20
+ gitUrl?: string;
21
+ gitBranch?: string;
22
+ /** Path to an SSH private key file. */
23
+ gitPrivateKey?: string;
24
+ /** Raw SSH private key content (alternative to `gitPrivateKey`). */
25
+ gitPrivateKeyContent?: string;
26
+ /** HTTP Basic auth credentials for the git remote. */
27
+ gitBasicAuth?: {
28
+ user: string;
29
+ pass: string;
30
+ };
31
+ /** HTTP Bearer token for the git remote. */
32
+ gitBearerToken?: string;
33
+ /** Override the commit author name. */
34
+ gitUserName?: string;
35
+ /** Override the commit author email. */
36
+ gitUserEmail?: string;
37
+ /** Disable the default `--depth 1` shallow clone. */
38
+ shallowClone?: boolean;
39
+ s3Bucket?: string;
40
+ s3Region?: string;
41
+ localPath?: string;
42
+ password?: string;
43
+ readonly?: boolean;
44
+ force?: boolean;
45
+ keychainName?: string;
46
+ keychainPassword?: string;
47
+ teamId?: string;
48
+ platform?: "ios" | "macos" | "tvos" | "catalyst";
49
+ }
50
+ interface MatchResult {
51
+ certificates: CertResult[];
52
+ profiles: SighResult[];
53
+ }
54
+ declare function syncSigningAssets(options: MatchOptions): Promise<MatchResult>;
55
+
56
+ type index_MatchOptions = MatchOptions;
57
+ type index_MatchResult = MatchResult;
58
+ declare const index_decrypt: typeof decrypt;
59
+ declare const index_decryptFiles: typeof decryptFiles;
60
+ declare const index_decryptV1: typeof decryptV1;
61
+ declare const index_decryptV2: typeof decryptV2;
62
+ declare const index_encrypt: typeof encrypt;
63
+ declare const index_encryptFiles: typeof encryptFiles;
64
+ declare const index_encryptV2: typeof encryptV2;
65
+ declare const index_syncSigningAssets: typeof syncSigningAssets;
66
+ declare namespace index {
67
+ export { type index_MatchOptions as MatchOptions, type index_MatchResult as MatchResult, index_decrypt as decrypt, index_decryptFiles as decryptFiles, index_decryptV1 as decryptV1, index_decryptV2 as decryptV2, index_encrypt as encrypt, index_encryptFiles as encryptFiles, index_encryptV2 as encryptV2, index_syncSigningAssets as syncSigningAssets };
68
+ }
69
+
70
+ export { type MatchOptions as M, type MatchResult as a, encryptV2 as b, decryptV2 as c, decrypt as d, encrypt as e, decryptV1 as f, encryptFiles as g, decryptFiles as h, index as i, syncSigningAssets as s };
@@ -0,0 +1,70 @@
1
+ import { A as AppStoreConnectClient } from './index-BLubSlgK.cjs';
2
+ import { a as CertResult } from './cert-BmJGtYtb.cjs';
3
+ import { S as SighResult } from './index-BFdNOmPJ.cjs';
4
+
5
+ type StorageMode = "git" | "s3" | "local";
6
+
7
+ declare function encryptV2(data: Buffer, password: string): Buffer;
8
+ declare function decryptV2(data: Buffer, password: string): Buffer;
9
+ declare function decryptV1(data: Buffer, password: string): Buffer;
10
+ declare function decrypt(data: Buffer, password: string): Buffer;
11
+ declare function encrypt(data: Buffer, password: string): Buffer;
12
+ declare function decryptFiles(dir: string, password: string): Promise<void>;
13
+ declare function encryptFiles(dir: string, password: string): Promise<void>;
14
+
15
+ interface MatchOptions {
16
+ client: AppStoreConnectClient;
17
+ type: "development" | "appstore" | "adhoc" | "enterprise";
18
+ appIdentifiers: string[];
19
+ storageMode: StorageMode;
20
+ gitUrl?: string;
21
+ gitBranch?: string;
22
+ /** Path to an SSH private key file. */
23
+ gitPrivateKey?: string;
24
+ /** Raw SSH private key content (alternative to `gitPrivateKey`). */
25
+ gitPrivateKeyContent?: string;
26
+ /** HTTP Basic auth credentials for the git remote. */
27
+ gitBasicAuth?: {
28
+ user: string;
29
+ pass: string;
30
+ };
31
+ /** HTTP Bearer token for the git remote. */
32
+ gitBearerToken?: string;
33
+ /** Override the commit author name. */
34
+ gitUserName?: string;
35
+ /** Override the commit author email. */
36
+ gitUserEmail?: string;
37
+ /** Disable the default `--depth 1` shallow clone. */
38
+ shallowClone?: boolean;
39
+ s3Bucket?: string;
40
+ s3Region?: string;
41
+ localPath?: string;
42
+ password?: string;
43
+ readonly?: boolean;
44
+ force?: boolean;
45
+ keychainName?: string;
46
+ keychainPassword?: string;
47
+ teamId?: string;
48
+ platform?: "ios" | "macos" | "tvos" | "catalyst";
49
+ }
50
+ interface MatchResult {
51
+ certificates: CertResult[];
52
+ profiles: SighResult[];
53
+ }
54
+ declare function syncSigningAssets(options: MatchOptions): Promise<MatchResult>;
55
+
56
+ type index_MatchOptions = MatchOptions;
57
+ type index_MatchResult = MatchResult;
58
+ declare const index_decrypt: typeof decrypt;
59
+ declare const index_decryptFiles: typeof decryptFiles;
60
+ declare const index_decryptV1: typeof decryptV1;
61
+ declare const index_decryptV2: typeof decryptV2;
62
+ declare const index_encrypt: typeof encrypt;
63
+ declare const index_encryptFiles: typeof encryptFiles;
64
+ declare const index_encryptV2: typeof encryptV2;
65
+ declare const index_syncSigningAssets: typeof syncSigningAssets;
66
+ declare namespace index {
67
+ export { type index_MatchOptions as MatchOptions, type index_MatchResult as MatchResult, index_decrypt as decrypt, index_decryptFiles as decryptFiles, index_decryptV1 as decryptV1, index_decryptV2 as decryptV2, index_encrypt as encrypt, index_encryptFiles as encryptFiles, index_encryptV2 as encryptV2, index_syncSigningAssets as syncSigningAssets };
68
+ }
69
+
70
+ export { type MatchOptions as M, type MatchResult as a, encryptV2 as b, decryptV2 as c, decrypt as d, encrypt as e, decryptV1 as f, encryptFiles as g, decryptFiles as h, index as i, syncSigningAssets as s };
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Device frame definitions ported from Fastlane's `frameit/device_types.rb`.
3
+ *
4
+ * Each device mirrors Fastlane's `Device.new(id, name, priority, resolutions,
5
+ * ppi, color, platform)` declaration. Frame canvas dimensions and screen
6
+ * offsets are computed from the primary screen resolution, because Fastlane
7
+ * resolves those at runtime from the downloaded `offsets.json` in its frames
8
+ * repository — which is not bundled here.
9
+ *
10
+ * For modern edge-to-edge devices (post-2017 iPhones, Pixel 3+, recent Samsung),
11
+ * the frame adds a small 4–7% horizontal bezel. For bezeled devices, padding
12
+ * roughly follows the real chassis (~10% X, ~18% Y). These estimates mean
13
+ * `frameScreenshots` still composites sensibly, but they are not pixel-perfect
14
+ * reproductions of the real frame PNGs.
15
+ *
16
+ * Device names follow Fastlane's `formatted_name_without_apple`: the "Apple "
17
+ * prefix is stripped, as are parenthesised suffixes (e.g. "(3rd generation)").
18
+ */
19
+ interface DeviceFrame {
20
+ /** Fastlane device id (slug). Used for filename detection. */
21
+ id: string;
22
+ /** Human-readable device name (matches Fastlane's `formatted_name_without_apple`). */
23
+ name: string;
24
+ /** Priority (from Fastlane). Higher wins when multiple devices match. */
25
+ priority: number;
26
+ /** Frame canvas dimensions (computed). */
27
+ width: number;
28
+ height: number;
29
+ /** Primary screen resolution used for detection and compositing. */
30
+ screenWidth: number;
31
+ screenHeight: number;
32
+ /** All supported screen resolutions [width, height] for detection. */
33
+ screenResolutions: Array<[number, number]>;
34
+ /** Screen-within-frame offset in pixels. */
35
+ screenOffsetX: number;
36
+ screenOffsetY: number;
37
+ platform: "ios" | "android" | "mac";
38
+ /** Optional PPI from Fastlane. */
39
+ ppi?: number;
40
+ /** Default color from Fastlane. */
41
+ color?: string;
42
+ }
43
+ /**
44
+ * All devices from Fastlane's `frameit/device_types.rb` (66 entries) plus
45
+ * iPhone 15/16 models that Apple released after Fastlane's last update, and
46
+ * a couple of Samsung Galaxy S21 entries carried over from fastnode's
47
+ * pre-port list. Ordered descending by priority so `detectDevice*` picks the
48
+ * newest/highest priority device when multiple match.
49
+ */
50
+ declare const DEVICE_FRAMES: DeviceFrame[];
51
+ /**
52
+ * Match a device by screenshot pixel dimensions. Returns the highest-priority
53
+ * device whose resolution list contains `(width, height)` in either orientation.
54
+ */
55
+ declare function detectDeviceFromDimensions(width: number, height: number): DeviceFrame | null;
56
+ /**
57
+ * Match a device by filename substring. Mirrors Fastlane's
58
+ * `Device.detect_device`: a device matches if the filename contains either
59
+ * the formatted name or the slug id. Token separators `-`, `_`, and spaces
60
+ * are treated as equivalent, and `.` inside numeric suffixes (e.g. `12.9`)
61
+ * is optional. Returns the highest-priority match.
62
+ */
63
+ declare function detectDeviceFromFilename(filename: string): DeviceFrame | null;
64
+
65
+ interface FrameitOptions {
66
+ screenshotsPath: string;
67
+ outputPath?: string;
68
+ forceDeviceType?: string;
69
+ useDeviceOuterShadow?: boolean;
70
+ whiteBackground?: boolean;
71
+ }
72
+ declare function frameScreenshots(options: FrameitOptions): Promise<void>;
73
+
74
+ declare const index_DEVICE_FRAMES: typeof DEVICE_FRAMES;
75
+ type index_DeviceFrame = DeviceFrame;
76
+ type index_FrameitOptions = FrameitOptions;
77
+ declare const index_detectDeviceFromDimensions: typeof detectDeviceFromDimensions;
78
+ declare const index_detectDeviceFromFilename: typeof detectDeviceFromFilename;
79
+ declare const index_frameScreenshots: typeof frameScreenshots;
80
+ declare namespace index {
81
+ export { index_DEVICE_FRAMES as DEVICE_FRAMES, type index_DeviceFrame as DeviceFrame, type index_FrameitOptions as FrameitOptions, index_detectDeviceFromDimensions as detectDeviceFromDimensions, index_detectDeviceFromFilename as detectDeviceFromFilename, index_frameScreenshots as frameScreenshots };
82
+ }
83
+
84
+ export { DEVICE_FRAMES as D, type FrameitOptions as F, detectDeviceFromFilename as a, type DeviceFrame as b, detectDeviceFromDimensions as d, frameScreenshots as f, index as i };
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Device frame definitions ported from Fastlane's `frameit/device_types.rb`.
3
+ *
4
+ * Each device mirrors Fastlane's `Device.new(id, name, priority, resolutions,
5
+ * ppi, color, platform)` declaration. Frame canvas dimensions and screen
6
+ * offsets are computed from the primary screen resolution, because Fastlane
7
+ * resolves those at runtime from the downloaded `offsets.json` in its frames
8
+ * repository — which is not bundled here.
9
+ *
10
+ * For modern edge-to-edge devices (post-2017 iPhones, Pixel 3+, recent Samsung),
11
+ * the frame adds a small 4–7% horizontal bezel. For bezeled devices, padding
12
+ * roughly follows the real chassis (~10% X, ~18% Y). These estimates mean
13
+ * `frameScreenshots` still composites sensibly, but they are not pixel-perfect
14
+ * reproductions of the real frame PNGs.
15
+ *
16
+ * Device names follow Fastlane's `formatted_name_without_apple`: the "Apple "
17
+ * prefix is stripped, as are parenthesised suffixes (e.g. "(3rd generation)").
18
+ */
19
+ interface DeviceFrame {
20
+ /** Fastlane device id (slug). Used for filename detection. */
21
+ id: string;
22
+ /** Human-readable device name (matches Fastlane's `formatted_name_without_apple`). */
23
+ name: string;
24
+ /** Priority (from Fastlane). Higher wins when multiple devices match. */
25
+ priority: number;
26
+ /** Frame canvas dimensions (computed). */
27
+ width: number;
28
+ height: number;
29
+ /** Primary screen resolution used for detection and compositing. */
30
+ screenWidth: number;
31
+ screenHeight: number;
32
+ /** All supported screen resolutions [width, height] for detection. */
33
+ screenResolutions: Array<[number, number]>;
34
+ /** Screen-within-frame offset in pixels. */
35
+ screenOffsetX: number;
36
+ screenOffsetY: number;
37
+ platform: "ios" | "android" | "mac";
38
+ /** Optional PPI from Fastlane. */
39
+ ppi?: number;
40
+ /** Default color from Fastlane. */
41
+ color?: string;
42
+ }
43
+ /**
44
+ * All devices from Fastlane's `frameit/device_types.rb` (66 entries) plus
45
+ * iPhone 15/16 models that Apple released after Fastlane's last update, and
46
+ * a couple of Samsung Galaxy S21 entries carried over from fastnode's
47
+ * pre-port list. Ordered descending by priority so `detectDevice*` picks the
48
+ * newest/highest priority device when multiple match.
49
+ */
50
+ declare const DEVICE_FRAMES: DeviceFrame[];
51
+ /**
52
+ * Match a device by screenshot pixel dimensions. Returns the highest-priority
53
+ * device whose resolution list contains `(width, height)` in either orientation.
54
+ */
55
+ declare function detectDeviceFromDimensions(width: number, height: number): DeviceFrame | null;
56
+ /**
57
+ * Match a device by filename substring. Mirrors Fastlane's
58
+ * `Device.detect_device`: a device matches if the filename contains either
59
+ * the formatted name or the slug id. Token separators `-`, `_`, and spaces
60
+ * are treated as equivalent, and `.` inside numeric suffixes (e.g. `12.9`)
61
+ * is optional. Returns the highest-priority match.
62
+ */
63
+ declare function detectDeviceFromFilename(filename: string): DeviceFrame | null;
64
+
65
+ interface FrameitOptions {
66
+ screenshotsPath: string;
67
+ outputPath?: string;
68
+ forceDeviceType?: string;
69
+ useDeviceOuterShadow?: boolean;
70
+ whiteBackground?: boolean;
71
+ }
72
+ declare function frameScreenshots(options: FrameitOptions): Promise<void>;
73
+
74
+ declare const index_DEVICE_FRAMES: typeof DEVICE_FRAMES;
75
+ type index_DeviceFrame = DeviceFrame;
76
+ type index_FrameitOptions = FrameitOptions;
77
+ declare const index_detectDeviceFromDimensions: typeof detectDeviceFromDimensions;
78
+ declare const index_detectDeviceFromFilename: typeof detectDeviceFromFilename;
79
+ declare const index_frameScreenshots: typeof frameScreenshots;
80
+ declare namespace index {
81
+ export { index_DEVICE_FRAMES as DEVICE_FRAMES, type index_DeviceFrame as DeviceFrame, type index_FrameitOptions as FrameitOptions, index_detectDeviceFromDimensions as detectDeviceFromDimensions, index_detectDeviceFromFilename as detectDeviceFromFilename, index_frameScreenshots as frameScreenshots };
82
+ }
83
+
84
+ export { DEVICE_FRAMES as D, type FrameitOptions as F, detectDeviceFromFilename as a, type DeviceFrame as b, detectDeviceFromDimensions as d, frameScreenshots as f, index as i };
@@ -0,0 +1,78 @@
1
+ interface FailedTest {
2
+ target: string;
3
+ suite: string;
4
+ testCase: string;
5
+ onlyTestingArg: string;
6
+ }
7
+ declare function parseFailedTests(output: string): FailedTest[];
8
+
9
+ interface TestCommandOptions {
10
+ scheme?: string;
11
+ workspace?: string;
12
+ project?: string;
13
+ destination?: string;
14
+ devices?: string[];
15
+ testPlan?: string;
16
+ onlyTesting?: string[];
17
+ skipTesting?: string[];
18
+ configuration?: string;
19
+ derivedDataPath?: string;
20
+ resultBundlePath?: string;
21
+ codeCoverage?: boolean;
22
+ xcargs?: string;
23
+ clean?: boolean;
24
+ /** Enable `-parallel-testing-enabled YES`. */
25
+ parallelTesting?: boolean;
26
+ /** Sets `-parallel-testing-worker-count`. */
27
+ concurrentWorkers?: number;
28
+ /** Sets `-maximum-concurrent-test-simulator-destinations`. */
29
+ maxConcurrentSimulators?: number;
30
+ /** Explicitly disable concurrent destinations (`-disable-concurrent-destination-testing`). */
31
+ disableConcurrentTesting?: boolean;
32
+ addressSanitizer?: boolean;
33
+ threadSanitizer?: boolean;
34
+ undefinedBehaviorSanitizer?: boolean;
35
+ }
36
+ declare function buildTestCommand(options: TestCommandOptions): string[];
37
+
38
+ interface ScanOptions {
39
+ scheme?: string;
40
+ workspace?: string;
41
+ project?: string;
42
+ devices?: string[];
43
+ testPlan?: string;
44
+ onlyTesting?: string[];
45
+ skipTesting?: string[];
46
+ configuration?: string;
47
+ outputDirectory?: string;
48
+ clean?: boolean;
49
+ codeCoverage?: boolean;
50
+ derivedDataPath?: string;
51
+ resultBundlePath?: string;
52
+ maxRetries?: number;
53
+ xcargs?: string;
54
+ onOutput?: (chunk: string) => void;
55
+ }
56
+ interface TestResult {
57
+ success: boolean;
58
+ totalTests: number;
59
+ failures: number;
60
+ skipped: number;
61
+ retries: number;
62
+ duration: number;
63
+ reportPaths: string[];
64
+ output: string;
65
+ }
66
+ declare function runTests(options: ScanOptions): Promise<TestResult>;
67
+
68
+ type index_FailedTest = FailedTest;
69
+ type index_ScanOptions = ScanOptions;
70
+ type index_TestResult = TestResult;
71
+ declare const index_buildTestCommand: typeof buildTestCommand;
72
+ declare const index_parseFailedTests: typeof parseFailedTests;
73
+ declare const index_runTests: typeof runTests;
74
+ declare namespace index {
75
+ export { type index_FailedTest as FailedTest, type index_ScanOptions as ScanOptions, type index_TestResult as TestResult, index_buildTestCommand as buildTestCommand, index_parseFailedTests as parseFailedTests, index_runTests as runTests };
76
+ }
77
+
78
+ export { type FailedTest as F, type ScanOptions as S, type TestResult as T, buildTestCommand as b, index as i, parseFailedTests as p, runTests as r };
@@ -0,0 +1,78 @@
1
+ interface FailedTest {
2
+ target: string;
3
+ suite: string;
4
+ testCase: string;
5
+ onlyTestingArg: string;
6
+ }
7
+ declare function parseFailedTests(output: string): FailedTest[];
8
+
9
+ interface TestCommandOptions {
10
+ scheme?: string;
11
+ workspace?: string;
12
+ project?: string;
13
+ destination?: string;
14
+ devices?: string[];
15
+ testPlan?: string;
16
+ onlyTesting?: string[];
17
+ skipTesting?: string[];
18
+ configuration?: string;
19
+ derivedDataPath?: string;
20
+ resultBundlePath?: string;
21
+ codeCoverage?: boolean;
22
+ xcargs?: string;
23
+ clean?: boolean;
24
+ /** Enable `-parallel-testing-enabled YES`. */
25
+ parallelTesting?: boolean;
26
+ /** Sets `-parallel-testing-worker-count`. */
27
+ concurrentWorkers?: number;
28
+ /** Sets `-maximum-concurrent-test-simulator-destinations`. */
29
+ maxConcurrentSimulators?: number;
30
+ /** Explicitly disable concurrent destinations (`-disable-concurrent-destination-testing`). */
31
+ disableConcurrentTesting?: boolean;
32
+ addressSanitizer?: boolean;
33
+ threadSanitizer?: boolean;
34
+ undefinedBehaviorSanitizer?: boolean;
35
+ }
36
+ declare function buildTestCommand(options: TestCommandOptions): string[];
37
+
38
+ interface ScanOptions {
39
+ scheme?: string;
40
+ workspace?: string;
41
+ project?: string;
42
+ devices?: string[];
43
+ testPlan?: string;
44
+ onlyTesting?: string[];
45
+ skipTesting?: string[];
46
+ configuration?: string;
47
+ outputDirectory?: string;
48
+ clean?: boolean;
49
+ codeCoverage?: boolean;
50
+ derivedDataPath?: string;
51
+ resultBundlePath?: string;
52
+ maxRetries?: number;
53
+ xcargs?: string;
54
+ onOutput?: (chunk: string) => void;
55
+ }
56
+ interface TestResult {
57
+ success: boolean;
58
+ totalTests: number;
59
+ failures: number;
60
+ skipped: number;
61
+ retries: number;
62
+ duration: number;
63
+ reportPaths: string[];
64
+ output: string;
65
+ }
66
+ declare function runTests(options: ScanOptions): Promise<TestResult>;
67
+
68
+ type index_FailedTest = FailedTest;
69
+ type index_ScanOptions = ScanOptions;
70
+ type index_TestResult = TestResult;
71
+ declare const index_buildTestCommand: typeof buildTestCommand;
72
+ declare const index_parseFailedTests: typeof parseFailedTests;
73
+ declare const index_runTests: typeof runTests;
74
+ declare namespace index {
75
+ export { type index_FailedTest as FailedTest, type index_ScanOptions as ScanOptions, type index_TestResult as TestResult, index_buildTestCommand as buildTestCommand, index_parseFailedTests as parseFailedTests, index_runTests as runTests };
76
+ }
77
+
78
+ export { type FailedTest as F, type ScanOptions as S, type TestResult as T, buildTestCommand as b, index as i, parseFailedTests as p, runTests as r };
@@ -0,0 +1,59 @@
1
+ interface TrainerOptions {
2
+ path?: string;
3
+ outputDirectory?: string;
4
+ outputFilename?: string;
5
+ failBuildOnError?: boolean;
6
+ xcpretty?: boolean;
7
+ }
8
+ interface JUnitResult {
9
+ success: boolean;
10
+ totalTests: number;
11
+ failures: number;
12
+ skipped: number;
13
+ /** Total number of retried test attempts across all suites. */
14
+ retries: number;
15
+ numberOfRetries: number;
16
+ /** Count of unique tests after collapsing retries. */
17
+ numberOfTestsExcludingRetries: number;
18
+ /** Count of unique failing tests after collapsing retries (last attempt wins). */
19
+ numberOfFailuresExcludingRetries: number;
20
+ junitPath: string;
21
+ testSuites: TestSuite[];
22
+ }
23
+ interface TestSuite {
24
+ name: string;
25
+ tests: number;
26
+ failures: number;
27
+ time: number;
28
+ testCases: TestCase[];
29
+ }
30
+ interface TestCase {
31
+ name: string;
32
+ className: string;
33
+ time: number;
34
+ failure: string | null;
35
+ }
36
+ /**
37
+ * Parse test results from either .xcresult bundles or .plist files,
38
+ * generate JUnit XML, and return structured results.
39
+ *
40
+ * Mirrors Fastlane trainer's test_parser.rb logic.
41
+ */
42
+ declare function parseTestResults(options: TrainerOptions): Promise<JUnitResult>;
43
+ /**
44
+ * Generate a JUnit XML string from test suites.
45
+ * Mirrors Fastlane trainer's junit_generator.rb output format.
46
+ */
47
+ declare function generateJUnitXml(testSuites: TestSuite[]): string;
48
+
49
+ type index_JUnitResult = JUnitResult;
50
+ type index_TestCase = TestCase;
51
+ type index_TestSuite = TestSuite;
52
+ type index_TrainerOptions = TrainerOptions;
53
+ declare const index_generateJUnitXml: typeof generateJUnitXml;
54
+ declare const index_parseTestResults: typeof parseTestResults;
55
+ declare namespace index {
56
+ export { type index_JUnitResult as JUnitResult, type index_TestCase as TestCase, type index_TestSuite as TestSuite, type index_TrainerOptions as TrainerOptions, index_generateJUnitXml as generateJUnitXml, index_parseTestResults as parseTestResults };
57
+ }
58
+
59
+ export { type JUnitResult as J, type TrainerOptions as T, type TestSuite as a, type TestCase as b, generateJUnitXml as g, index as i, parseTestResults as p };
@@ -0,0 +1,59 @@
1
+ interface TrainerOptions {
2
+ path?: string;
3
+ outputDirectory?: string;
4
+ outputFilename?: string;
5
+ failBuildOnError?: boolean;
6
+ xcpretty?: boolean;
7
+ }
8
+ interface JUnitResult {
9
+ success: boolean;
10
+ totalTests: number;
11
+ failures: number;
12
+ skipped: number;
13
+ /** Total number of retried test attempts across all suites. */
14
+ retries: number;
15
+ numberOfRetries: number;
16
+ /** Count of unique tests after collapsing retries. */
17
+ numberOfTestsExcludingRetries: number;
18
+ /** Count of unique failing tests after collapsing retries (last attempt wins). */
19
+ numberOfFailuresExcludingRetries: number;
20
+ junitPath: string;
21
+ testSuites: TestSuite[];
22
+ }
23
+ interface TestSuite {
24
+ name: string;
25
+ tests: number;
26
+ failures: number;
27
+ time: number;
28
+ testCases: TestCase[];
29
+ }
30
+ interface TestCase {
31
+ name: string;
32
+ className: string;
33
+ time: number;
34
+ failure: string | null;
35
+ }
36
+ /**
37
+ * Parse test results from either .xcresult bundles or .plist files,
38
+ * generate JUnit XML, and return structured results.
39
+ *
40
+ * Mirrors Fastlane trainer's test_parser.rb logic.
41
+ */
42
+ declare function parseTestResults(options: TrainerOptions): Promise<JUnitResult>;
43
+ /**
44
+ * Generate a JUnit XML string from test suites.
45
+ * Mirrors Fastlane trainer's junit_generator.rb output format.
46
+ */
47
+ declare function generateJUnitXml(testSuites: TestSuite[]): string;
48
+
49
+ type index_JUnitResult = JUnitResult;
50
+ type index_TestCase = TestCase;
51
+ type index_TestSuite = TestSuite;
52
+ type index_TrainerOptions = TrainerOptions;
53
+ declare const index_generateJUnitXml: typeof generateJUnitXml;
54
+ declare const index_parseTestResults: typeof parseTestResults;
55
+ declare namespace index {
56
+ export { type index_JUnitResult as JUnitResult, type index_TestCase as TestCase, type index_TestSuite as TestSuite, type index_TrainerOptions as TrainerOptions, index_generateJUnitXml as generateJUnitXml, index_parseTestResults as parseTestResults };
57
+ }
58
+
59
+ export { type JUnitResult as J, type TrainerOptions as T, type TestSuite as a, type TestCase as b, generateJUnitXml as g, index as i, parseTestResults as p };
@@ -0,0 +1,95 @@
1
+ interface FastnodeConfig {
2
+ keyId?: string;
3
+ issuerId?: string;
4
+ privateKeyPath?: string;
5
+ teamId?: string;
6
+ bundleIdentifier?: string;
7
+ platform?: string;
8
+ }
9
+ declare function resolveConfig(_overrides?: Partial<FastnodeConfig>): FastnodeConfig;
10
+
11
+ declare class ItunesTransporter {
12
+ upload(options: {
13
+ packagePath: string;
14
+ apiKeyId?: string;
15
+ apiIssuerId?: string;
16
+ onOutput?: (chunk: string) => void;
17
+ }): Promise<{
18
+ success: boolean;
19
+ output: string;
20
+ }>;
21
+ verify(options: {
22
+ packagePath: string;
23
+ apiKeyId?: string;
24
+ apiIssuerId?: string;
25
+ }): Promise<{
26
+ success: boolean;
27
+ output: string;
28
+ }>;
29
+ private run;
30
+ }
31
+
32
+ interface IpaInfo {
33
+ bundleIdentifier: string;
34
+ bundleVersion: string;
35
+ bundleShortVersion: string;
36
+ appName: string;
37
+ minimumOSVersion: string;
38
+ }
39
+ declare function analyzeIpa(ipaPath: string): Promise<IpaInfo>;
40
+
41
+ interface ProvisioningProfileInfo {
42
+ uuid: string;
43
+ name: string;
44
+ appIdName: string;
45
+ teamIdentifier: string[];
46
+ teamName: string;
47
+ creationDate: Date;
48
+ expirationDate: Date;
49
+ certificates: Buffer[];
50
+ provisionedDevices: string[];
51
+ entitlements: Record<string, unknown>;
52
+ }
53
+ declare function parseProvisioningProfile(data: Buffer): Promise<ProvisioningProfileInfo>;
54
+
55
+ interface Simulator {
56
+ udid: string;
57
+ name: string;
58
+ deviceType: string;
59
+ runtime: string;
60
+ state: "Booted" | "Shutdown";
61
+ }
62
+ declare class SimulatorManager {
63
+ list(): Promise<Simulator[]>;
64
+ boot(udid: string): Promise<void>;
65
+ shutdown(udid: string): Promise<void>;
66
+ reset(udid: string): Promise<void>;
67
+ install(udid: string, appPath: string): Promise<void>;
68
+ findBestMatch(deviceName: string, runtime?: string): Promise<Simulator | null>;
69
+ }
70
+
71
+ declare class CredentialManager {
72
+ private serviceName;
73
+ constructor(serviceName?: string);
74
+ get(service: string, account: string): Promise<string | null>;
75
+ set(service: string, account: string, password: string): Promise<void>;
76
+ delete(service: string, account: string): Promise<void>;
77
+ }
78
+
79
+ type index_CredentialManager = CredentialManager;
80
+ declare const index_CredentialManager: typeof CredentialManager;
81
+ type index_FastnodeConfig = FastnodeConfig;
82
+ type index_IpaInfo = IpaInfo;
83
+ type index_ItunesTransporter = ItunesTransporter;
84
+ declare const index_ItunesTransporter: typeof ItunesTransporter;
85
+ type index_ProvisioningProfileInfo = ProvisioningProfileInfo;
86
+ type index_SimulatorManager = SimulatorManager;
87
+ declare const index_SimulatorManager: typeof SimulatorManager;
88
+ declare const index_analyzeIpa: typeof analyzeIpa;
89
+ declare const index_parseProvisioningProfile: typeof parseProvisioningProfile;
90
+ declare const index_resolveConfig: typeof resolveConfig;
91
+ declare namespace index {
92
+ export { index_CredentialManager as CredentialManager, type index_FastnodeConfig as FastnodeConfig, type index_IpaInfo as IpaInfo, index_ItunesTransporter as ItunesTransporter, type index_ProvisioningProfileInfo as ProvisioningProfileInfo, index_SimulatorManager as SimulatorManager, index_analyzeIpa as analyzeIpa, index_parseProvisioningProfile as parseProvisioningProfile, index_resolveConfig as resolveConfig };
93
+ }
94
+
95
+ export { CredentialManager as C, type FastnodeConfig as F, ItunesTransporter as I, type ProvisioningProfileInfo as P, SimulatorManager as S, analyzeIpa as a, type IpaInfo as b, index as i, parseProvisioningProfile as p, resolveConfig as r };