@sitepong/fastnode 0.2.2 → 0.3.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 (126) hide show
  1. package/README.md +64 -1
  2. package/dist/actions/index.cjs +928 -54
  3. package/dist/actions/index.cjs.map +1 -1
  4. package/dist/actions/index.mjs +930 -56
  5. package/dist/actions/index.mjs.map +1 -1
  6. package/dist/apple-session-jUzBrql5.d.cts +122 -0
  7. package/dist/apple-session-jUzBrql5.d.ts +122 -0
  8. package/dist/cert/index.cjs +782 -736
  9. package/dist/cert/index.cjs.map +1 -1
  10. package/dist/cert/index.d.cts +5 -4
  11. package/dist/cert/index.d.ts +5 -4
  12. package/dist/cert/index.mjs +782 -737
  13. package/dist/cert/index.mjs.map +1 -1
  14. package/dist/{cert-Ddl7FpFT.d.ts → cert-ClacRx9y.d.ts} +2 -2
  15. package/dist/{cert-FehieKeb.d.cts → cert-DffLKURp.d.cts} +2 -2
  16. package/dist/cli/index.cjs +1408 -60
  17. package/dist/cli/index.cjs.map +1 -1
  18. package/dist/cli/index.d.cts +3 -2
  19. package/dist/cli/index.d.ts +3 -2
  20. package/dist/cli/index.mjs +1410 -62
  21. package/dist/cli/index.mjs.map +1 -1
  22. package/dist/client/index.cjs +519 -31
  23. package/dist/client/index.cjs.map +1 -1
  24. package/dist/client/index.d.cts +3 -2
  25. package/dist/client/index.d.ts +3 -2
  26. package/dist/client/index.mjs +514 -32
  27. package/dist/client/index.mjs.map +1 -1
  28. package/dist/deliver/index.cjs +334 -13
  29. package/dist/deliver/index.cjs.map +1 -1
  30. package/dist/deliver/index.d.cts +4 -3
  31. package/dist/deliver/index.d.ts +4 -3
  32. package/dist/deliver/index.mjs +330 -15
  33. package/dist/deliver/index.mjs.map +1 -1
  34. package/dist/{enums-B609j2rb.d.cts → enums-yXNVh3UI.d.cts} +8 -1
  35. package/dist/{enums-B609j2rb.d.ts → enums-yXNVh3UI.d.ts} +8 -1
  36. package/dist/gradle/index.cjs +222 -0
  37. package/dist/gradle/index.cjs.map +1 -0
  38. package/dist/gradle/index.d.cts +1 -0
  39. package/dist/gradle/index.d.ts +1 -0
  40. package/dist/gradle/index.mjs +217 -0
  41. package/dist/gradle/index.mjs.map +1 -0
  42. package/dist/gym/index.d.cts +2 -2
  43. package/dist/gym/index.d.ts +2 -2
  44. package/dist/index-8djTPW8O.d.ts +104 -0
  45. package/dist/{index-Bk1Gd-qE.d.cts → index-925_Ov7X.d.cts} +2 -2
  46. package/dist/{index-DrUpRXRG.d.cts → index-B6-MJpO4.d.cts} +1 -1
  47. package/dist/index-BGhV0gS-.d.ts +65 -0
  48. package/dist/{index-OelCoOth.d.cts → index-BbVQzSV1.d.cts} +18 -4
  49. package/dist/index-BhGaVlK1.d.cts +201 -0
  50. package/dist/{index-CtPyeMLH.d.ts → index-C-EEYXSE.d.ts} +18 -4
  51. package/dist/{index-CNHf7I4v.d.cts → index-C18cijCd.d.ts} +32 -3
  52. package/dist/{index-DFni8oZt.d.ts → index-CBM5XZKC.d.ts} +2 -2
  53. package/dist/index-CXJlvmB4.d.cts +63 -0
  54. package/dist/index-CXJlvmB4.d.ts +63 -0
  55. package/dist/{index-BKUapQP2.d.cts → index-CemR3UI9.d.ts} +356 -124
  56. package/dist/{index-DI1ZHr-3.d.ts → index-CmcFPn_G.d.cts} +9 -1
  57. package/dist/{index-CCtYhPN9.d.ts → index-CpGV1f0L.d.cts} +356 -124
  58. package/dist/{index-B8FOfxOw.d.ts → index-D9YQQ3FM.d.ts} +2 -2
  59. package/dist/index-DFstwgGK.d.cts +65 -0
  60. package/dist/{index-YcKz4aRS.d.ts → index-Dkf5sH1E.d.ts} +1 -1
  61. package/dist/index-DnHQ2uT2.d.cts +104 -0
  62. package/dist/index-Dv-Mek07.d.cts +84 -0
  63. package/dist/index-Dv-Mek07.d.ts +84 -0
  64. package/dist/{index-BICa8odo.d.cts → index-N6eV5yym.d.ts} +9 -1
  65. package/dist/{index-oVyLLIEK.d.cts → index-O3EMrd5s.d.cts} +3 -3
  66. package/dist/{index-DZoPGCbE.d.ts → index-Ol0RtbQA.d.ts} +3 -3
  67. package/dist/{index-CplRWSUc.d.ts → index-_24DRp3a.d.cts} +32 -3
  68. package/dist/{index-BZWmOTWE.d.cts → index-isT08RuY.d.cts} +2 -2
  69. package/dist/{index-DImN9PWc.d.ts → index-mEEB7An6.d.ts} +1 -1
  70. package/dist/{index-D13sn8DO.d.cts → index-on573dnO.d.cts} +1 -1
  71. package/dist/index-s2PigtDM.d.ts +201 -0
  72. package/dist/index.cjs +3425 -955
  73. package/dist/index.cjs.map +1 -1
  74. package/dist/index.d.cts +237 -14
  75. package/dist/index.d.ts +237 -14
  76. package/dist/index.mjs +3417 -958
  77. package/dist/index.mjs.map +1 -1
  78. package/dist/lane/index.cjs +928 -54
  79. package/dist/lane/index.cjs.map +1 -1
  80. package/dist/lane/index.mjs +930 -56
  81. package/dist/lane/index.mjs.map +1 -1
  82. package/dist/match/index.d.cts +6 -5
  83. package/dist/match/index.d.ts +6 -5
  84. package/dist/pem/index.d.cts +4 -3
  85. package/dist/pem/index.d.ts +4 -3
  86. package/dist/pilot/index.cjs +8 -4
  87. package/dist/pilot/index.cjs.map +1 -1
  88. package/dist/pilot/index.d.cts +4 -3
  89. package/dist/pilot/index.d.ts +4 -3
  90. package/dist/pilot/index.mjs +10 -6
  91. package/dist/pilot/index.mjs.map +1 -1
  92. package/dist/playstore/index.cjs +207 -0
  93. package/dist/playstore/index.cjs.map +1 -0
  94. package/dist/playstore/index.d.cts +1 -0
  95. package/dist/playstore/index.d.ts +1 -0
  96. package/dist/playstore/index.mjs +203 -0
  97. package/dist/playstore/index.mjs.map +1 -0
  98. package/dist/precheck/index.d.cts +4 -3
  99. package/dist/precheck/index.d.ts +4 -3
  100. package/dist/privacy/index.cjs +207 -0
  101. package/dist/privacy/index.cjs.map +1 -0
  102. package/dist/privacy/index.d.cts +2 -0
  103. package/dist/privacy/index.d.ts +2 -0
  104. package/dist/privacy/index.mjs +195 -0
  105. package/dist/privacy/index.mjs.map +1 -0
  106. package/dist/produce/index.cjs +32 -0
  107. package/dist/produce/index.cjs.map +1 -1
  108. package/dist/produce/index.d.cts +4 -3
  109. package/dist/produce/index.d.ts +4 -3
  110. package/dist/produce/index.mjs +32 -1
  111. package/dist/produce/index.mjs.map +1 -1
  112. package/dist/review/index.cjs +141 -0
  113. package/dist/review/index.cjs.map +1 -0
  114. package/dist/review/index.d.cts +2 -0
  115. package/dist/review/index.d.ts +2 -0
  116. package/dist/review/index.mjs +137 -0
  117. package/dist/review/index.mjs.map +1 -0
  118. package/dist/sigh/index.d.cts +4 -3
  119. package/dist/sigh/index.d.ts +4 -3
  120. package/dist/xcode/index.cjs +1 -1
  121. package/dist/xcode/index.cjs.map +1 -1
  122. package/dist/xcode/index.mjs +1 -1
  123. package/dist/xcode/index.mjs.map +1 -1
  124. package/package.json +27 -1
  125. package/dist/index-B9QeTpQK.d.cts +0 -99
  126. package/dist/index-xykpq6Lz.d.ts +0 -99
@@ -1,5 +1,5 @@
1
- import { a as AppStoreConnectClient } from './index-BKUapQP2.cjs';
2
- import { C as CertificateType } from './enums-B609j2rb.cjs';
1
+ import { A as AppStoreConnectClient } from './index-CpGV1f0L.cjs';
2
+ import { C as CertificateType } from './enums-yXNVh3UI.cjs';
3
3
 
4
4
  type PushCertKind = "development" | "production" | "website" | "voip" | "passbook";
5
5
  interface PemOptions {
@@ -1,4 +1,4 @@
1
- import { E as ExportMethod } from './enums-B609j2rb.cjs';
1
+ import { E as ExportMethod } from './enums-yXNVh3UI.cjs';
2
2
 
3
3
  interface DetectedValues {
4
4
  workspace: string | null;
@@ -0,0 +1,65 @@
1
+ import { A as AppleSession } from './apple-session-jUzBrql5.js';
2
+
3
+ /**
4
+ * App Review rejections: what App Review said, from the Resolution Center.
5
+ * Port of Spaceship's ResolutionCenterThread / ResolutionCenterMessage /
6
+ * ReviewRejection models (connect_api/tunes).
7
+ *
8
+ * Like App Privacy, this is not in the public App Store Connect API — with an
9
+ * API key, /v1/resolutionCenterThreads answers "resource does not exist".
10
+ * Spaceship reaches it through its Tunes client, whose host is
11
+ * appstoreconnect.apple.com/iris/, i.e. an Apple ID session. So does this.
12
+ */
13
+
14
+ interface RejectionReason {
15
+ section?: string;
16
+ description?: string;
17
+ code?: string;
18
+ }
19
+ interface ResolutionMessage {
20
+ id: string;
21
+ createdDate: string | null;
22
+ from: string | null;
23
+ /** The message as App Review wrote it, HTML reduced to text. */
24
+ body: string;
25
+ reasons: RejectionReason[];
26
+ }
27
+ interface ResolutionThread {
28
+ id: string;
29
+ threadType: string | null;
30
+ state: string | null;
31
+ createdDate: string | null;
32
+ messages: ResolutionMessage[];
33
+ }
34
+ interface SubmissionReview {
35
+ submissionId: string;
36
+ state: string;
37
+ submittedDate: string | null;
38
+ threads: ResolutionThread[];
39
+ }
40
+ /** App Review writes HTML; keep paragraphs and list items, drop the markup. */
41
+ declare function htmlToText(html: string | null | undefined): string;
42
+ /** The messages in one thread, each with the guideline reasons App Review attached. */
43
+ declare function getThreadMessages(session: AppleSession, threadId: string): Promise<ResolutionMessage[]>;
44
+ /**
45
+ * Every review submission for the app that App Review has answered, with its
46
+ * Resolution Center threads and messages. `onlyOpen` keeps the ones still
47
+ * waiting on the developer (UNRESOLVED_ISSUES).
48
+ */
49
+ declare function getReviewFeedback(session: AppleSession, appId: string, opts?: {
50
+ onlyOpen?: boolean;
51
+ onLog?: (m: string) => void;
52
+ }): Promise<SubmissionReview[]>;
53
+
54
+ type index_RejectionReason = RejectionReason;
55
+ type index_ResolutionMessage = ResolutionMessage;
56
+ type index_ResolutionThread = ResolutionThread;
57
+ type index_SubmissionReview = SubmissionReview;
58
+ declare const index_getReviewFeedback: typeof getReviewFeedback;
59
+ declare const index_getThreadMessages: typeof getThreadMessages;
60
+ declare const index_htmlToText: typeof htmlToText;
61
+ declare namespace index {
62
+ export { type index_RejectionReason as RejectionReason, type index_ResolutionMessage as ResolutionMessage, type index_ResolutionThread as ResolutionThread, type index_SubmissionReview as SubmissionReview, index_getReviewFeedback as getReviewFeedback, index_getThreadMessages as getThreadMessages, index_htmlToText as htmlToText };
63
+ }
64
+
65
+ export { type RejectionReason as R, type SubmissionReview as S, type ResolutionMessage as a, type ResolutionThread as b, getReviewFeedback as c, getThreadMessages as g, htmlToText as h, index as i };
@@ -1,5 +1,5 @@
1
- import { a as AppStoreConnectClient, q as CapabilitySettingInput, B as BundleId, p as BundleIdCapability, j as App } from './index-BKUapQP2.cjs';
2
- import { B as BundleIdPlatform, d as CapabilityType } from './enums-B609j2rb.cjs';
1
+ import { A as AppStoreConnectClient, a8 as PortalClient, p as CapabilitySettingInput, B as BundleId, o as BundleIdCapability, i as App } from './index-CpGV1f0L.cjs';
2
+ import { B as BundleIdPlatform, d as CapabilityType } from './enums-yXNVh3UI.cjs';
3
3
 
4
4
  interface ProduceOptions {
5
5
  client: AppStoreConnectClient;
@@ -10,6 +10,11 @@ interface ProduceOptions {
10
10
  primaryLocale?: string;
11
11
  companyName?: string;
12
12
  enableServices?: CapabilityType[];
13
+ appGroups?: Array<{
14
+ name: string;
15
+ identifier: string;
16
+ }>;
17
+ portalClient?: PortalClient;
13
18
  }
14
19
  /**
15
20
  * Map from Fastlane's `produce` service name → App Store Connect
@@ -58,11 +63,20 @@ declare function enableServices(options: {
58
63
  */
59
64
  services: string[] | Record<string, string | boolean>;
60
65
  }): Promise<void>;
66
+ declare function associateAppGroups(options: {
67
+ portalClient: PortalClient;
68
+ bundleIdId: string;
69
+ appGroups: Array<{
70
+ name: string;
71
+ identifier: string;
72
+ }>;
73
+ }): Promise<void>;
61
74
  declare function createApp(options: ProduceOptions): Promise<App>;
62
75
 
63
76
  type index_ProduceOptions = ProduceOptions;
64
77
  declare const index_SERVICE_NAME_TO_CAPABILITY: typeof SERVICE_NAME_TO_CAPABILITY;
65
78
  declare const index_addCapability: typeof addCapability;
79
+ declare const index_associateAppGroups: typeof associateAppGroups;
66
80
  declare const index_buildCapabilitySettings: typeof buildCapabilitySettings;
67
81
  declare const index_createApp: typeof createApp;
68
82
  declare const index_enableServices: typeof enableServices;
@@ -70,7 +84,7 @@ declare const index_listCapabilities: typeof listCapabilities;
70
84
  declare const index_registerBundleId: typeof registerBundleId;
71
85
  declare const index_removeCapability: typeof removeCapability;
72
86
  declare namespace index {
73
- export { type index_ProduceOptions as ProduceOptions, index_SERVICE_NAME_TO_CAPABILITY as SERVICE_NAME_TO_CAPABILITY, index_addCapability as addCapability, index_buildCapabilitySettings as buildCapabilitySettings, index_createApp as createApp, index_enableServices as enableServices, index_listCapabilities as listCapabilities, index_registerBundleId as registerBundleId, index_removeCapability as removeCapability };
87
+ export { type index_ProduceOptions as ProduceOptions, index_SERVICE_NAME_TO_CAPABILITY as SERVICE_NAME_TO_CAPABILITY, index_addCapability as addCapability, index_associateAppGroups as associateAppGroups, index_buildCapabilitySettings as buildCapabilitySettings, index_createApp as createApp, index_enableServices as enableServices, index_listCapabilities as listCapabilities, index_registerBundleId as registerBundleId, index_removeCapability as removeCapability };
74
88
  }
75
89
 
76
- export { type ProduceOptions as P, SERVICE_NAME_TO_CAPABILITY as S, addCapability as a, buildCapabilitySettings as b, removeCapability as c, createApp as d, enableServices as e, index as i, listCapabilities as l, registerBundleId as r };
90
+ export { type ProduceOptions as P, SERVICE_NAME_TO_CAPABILITY as S, addCapability as a, buildCapabilitySettings as b, removeCapability as c, associateAppGroups as d, enableServices as e, createApp as f, index as i, listCapabilities as l, registerBundleId as r };
@@ -0,0 +1,201 @@
1
+ import { A as AppStoreConnectClient, W as AppAssetLibraryRefDatumAttributes, X as AppAssetLibraryImageSpec } from './index-CpGV1f0L.cjs';
2
+ import { l as AppAssetLibraryPlacementType, j as AppAssetLibraryAssetCategory, m as AppAssetLibraryAssetState, o as AppAssetLibraryFeature, b as Platform, R as ReleaseType } from './enums-yXNVh3UI.cjs';
3
+
4
+ interface LocalizedMetadata {
5
+ locale: string;
6
+ description?: string;
7
+ keywords?: string;
8
+ releaseNotes?: string;
9
+ supportUrl?: string;
10
+ marketingUrl?: string;
11
+ promotionalText?: string;
12
+ name?: string;
13
+ subtitle?: string;
14
+ privacyUrl?: string;
15
+ }
16
+ /**
17
+ * Review information submitted to App Store Connect for App Review.
18
+ * Mirrors Fastlane deliver's `review_first_name`, `review_last_name`,
19
+ * etc. (upload_metadata.rb lines 45-51), mapping to ASC's
20
+ * `appStoreReviewDetails` attribute names.
21
+ */
22
+ interface ReviewInformation {
23
+ firstName?: string;
24
+ lastName?: string;
25
+ phoneNumber?: string;
26
+ emailAddress?: string;
27
+ demoUser?: string;
28
+ demoPassword?: string;
29
+ notes?: string;
30
+ }
31
+ interface MetadataSet {
32
+ localizations: LocalizedMetadata[];
33
+ copyright?: string;
34
+ /** Typed review information extracted from `review_information/`. */
35
+ reviewInformation?: ReviewInformation;
36
+ /** Raw review information map, including any unrecognised filenames. */
37
+ reviewInfo?: Record<string, string>;
38
+ }
39
+ declare function loadMetadata(metadataPath: string): Promise<MetadataSet>;
40
+
41
+ /**
42
+ * Folder name under `<assetsPath>/<locale>/` → what gets placed there.
43
+ *
44
+ * assets/en-US/screenshots/01-home.png APP_SCREENSHOT (group from image size)
45
+ * assets/en-US/screenshots/IPHONE_DUO/01.png APP_SCREENSHOT in an explicit group
46
+ * assets/en-US/previews/IPHONE_…_PROFILE/a.mp4 APP_PREVIEW (videos need the group folder
47
+ * unless the type has a single group)
48
+ * assets/en-US/header/hero.png PRODUCT_PAGE_HEADER_ASSET
49
+ * assets/en-US/search_results/card.png APP_STORE_SEARCH_RESULTS_ASSET
50
+ */
51
+ declare const ASSET_FOLDERS: Record<string, AppAssetLibraryPlacementType>;
52
+ declare function categoryFor(placementType: AppAssetLibraryPlacementType): AppAssetLibraryAssetCategory;
53
+ declare function readImageSize(data: Buffer): {
54
+ width: number;
55
+ height: number;
56
+ alpha?: boolean;
57
+ } | null;
58
+ /**
59
+ * Which placement groups an image of this size can go into, read from
60
+ * Apple's reference data (never hard-coded — new devices appear there first).
61
+ */
62
+ declare function resolveImageGroups(refData: AppAssetLibraryRefDatumAttributes, feature: AppAssetLibraryFeature, placementType: AppAssetLibraryPlacementType, size: {
63
+ width: number;
64
+ height: number;
65
+ }): {
66
+ groups: string[];
67
+ spec?: AppAssetLibraryImageSpec;
68
+ };
69
+ interface UploadedAsset {
70
+ kind: "image" | "video";
71
+ id: string;
72
+ state: AppAssetLibraryAssetState;
73
+ reused: boolean;
74
+ }
75
+ /**
76
+ * Upload one file into the app's asset library and wait until it can be
77
+ * placed. A file already in the library (same content hash in its reference
78
+ * name) is reused instead of uploaded again.
79
+ */
80
+ declare function uploadLibraryAsset(options: {
81
+ client: AppStoreConnectClient;
82
+ libraryId: string;
83
+ filePath: string;
84
+ category: AppAssetLibraryAssetCategory;
85
+ referenceName?: string;
86
+ previewFrameTimeCode?: string;
87
+ pollIntervalMs?: number;
88
+ timeoutMs?: number;
89
+ log?: (line: string) => void;
90
+ }): Promise<UploadedAsset>;
91
+ interface PlaceAssetsResult {
92
+ uploaded: number;
93
+ reused: number;
94
+ placed: number;
95
+ removed: number;
96
+ warnings: string[];
97
+ }
98
+ /**
99
+ * Upload a folder of screenshots, previews and creative assets (product page
100
+ * header, search results) into the app's asset library and place them on each
101
+ * App Store version localization. See ASSET_FOLDERS for the layout.
102
+ *
103
+ * With `overwrite`, existing placements of each (type, group) we upload into
104
+ * are removed first, so the folder becomes the source of truth. Without it,
105
+ * new placements are added and files already placed are left alone.
106
+ */
107
+ declare function uploadAssetLibrary(options: {
108
+ client: AppStoreConnectClient;
109
+ appId: string;
110
+ versionId: string;
111
+ assetsPath: string;
112
+ overwrite?: boolean;
113
+ /** Override the folder → placement type map (e.g. screenshots-only from a legacy screenshots path). */
114
+ folders?: Record<string, AppAssetLibraryPlacementType>;
115
+ /** Treat files directly under `<locale>/` as this placement type (legacy screenshots layout). */
116
+ rootPlacementType?: AppAssetLibraryPlacementType;
117
+ log?: (line: string) => void;
118
+ }): Promise<PlaceAssetsResult>;
119
+
120
+ interface DeliverOptions {
121
+ client: AppStoreConnectClient;
122
+ bundleIdentifier: string;
123
+ appVersion?: string;
124
+ platform?: Platform;
125
+ ipaPath?: string;
126
+ pkgPath?: string;
127
+ metadataPath?: string;
128
+ screenshotsPath?: string;
129
+ submitForReview?: boolean;
130
+ automaticRelease?: boolean;
131
+ releaseType?: ReleaseType;
132
+ skipBinaryUpload?: boolean;
133
+ skipMetadata?: boolean;
134
+ skipScreenshots?: boolean;
135
+ /**
136
+ * App Asset Library folder: `<locale>/{screenshots,previews,header,search_results}/…`.
137
+ * Places screenshots, previews and creative assets (product page header,
138
+ * search results) on the version. See ASSET_FOLDERS.
139
+ */
140
+ assetsPath?: string;
141
+ /** Route `screenshotsPath` through the asset library instead of the deprecated screenshot sets. */
142
+ useAssetLibrary?: boolean;
143
+ /** Replace existing placements in each slot we upload into (fastlane's overwrite_screenshots). */
144
+ overwriteAssets?: boolean;
145
+ skipAssets?: boolean;
146
+ force?: boolean;
147
+ apiKeyId?: string;
148
+ apiIssuerId?: string;
149
+ apiPrivateKey?: string;
150
+ copyright?: string;
151
+ onOutput?: (chunk: string) => void;
152
+ }
153
+ interface DeliverResult {
154
+ appId: string;
155
+ versionId: string;
156
+ submitted: boolean;
157
+ }
158
+ declare function uploadToAppStore(options: DeliverOptions): Promise<DeliverResult>;
159
+ declare function submitForReview(options: {
160
+ client: AppStoreConnectClient;
161
+ appId: string;
162
+ versionId: string;
163
+ }): Promise<void>;
164
+ declare function uploadMetadata(options: {
165
+ client: AppStoreConnectClient;
166
+ appId: string;
167
+ versionId: string;
168
+ metadataPath: string;
169
+ }): Promise<void>;
170
+ /**
171
+ * Legacy screenshot-set upload. Apple deprecated screenshot sets in ASC API
172
+ * 4.5.1 — prefer `uploadAssetLibrary` (or `useAssetLibrary: true`).
173
+ */
174
+ declare function uploadScreenshots(options: {
175
+ client: AppStoreConnectClient;
176
+ versionId: string;
177
+ screenshotsPath: string;
178
+ }): Promise<void>;
179
+
180
+ declare const index_ASSET_FOLDERS: typeof ASSET_FOLDERS;
181
+ type index_DeliverOptions = DeliverOptions;
182
+ type index_DeliverResult = DeliverResult;
183
+ type index_LocalizedMetadata = LocalizedMetadata;
184
+ type index_MetadataSet = MetadataSet;
185
+ type index_PlaceAssetsResult = PlaceAssetsResult;
186
+ type index_UploadedAsset = UploadedAsset;
187
+ declare const index_categoryFor: typeof categoryFor;
188
+ declare const index_loadMetadata: typeof loadMetadata;
189
+ declare const index_readImageSize: typeof readImageSize;
190
+ declare const index_resolveImageGroups: typeof resolveImageGroups;
191
+ declare const index_submitForReview: typeof submitForReview;
192
+ declare const index_uploadAssetLibrary: typeof uploadAssetLibrary;
193
+ declare const index_uploadLibraryAsset: typeof uploadLibraryAsset;
194
+ declare const index_uploadMetadata: typeof uploadMetadata;
195
+ declare const index_uploadScreenshots: typeof uploadScreenshots;
196
+ declare const index_uploadToAppStore: typeof uploadToAppStore;
197
+ declare namespace index {
198
+ export { index_ASSET_FOLDERS as ASSET_FOLDERS, type index_DeliverOptions as DeliverOptions, type index_DeliverResult as DeliverResult, type index_LocalizedMetadata as LocalizedMetadata, type index_MetadataSet as MetadataSet, type index_PlaceAssetsResult as PlaceAssetsResult, type index_UploadedAsset as UploadedAsset, index_categoryFor as categoryFor, index_loadMetadata as loadMetadata, index_readImageSize as readImageSize, index_resolveImageGroups as resolveImageGroups, index_submitForReview as submitForReview, index_uploadAssetLibrary as uploadAssetLibrary, index_uploadLibraryAsset as uploadLibraryAsset, index_uploadMetadata as uploadMetadata, index_uploadScreenshots as uploadScreenshots, index_uploadToAppStore as uploadToAppStore };
199
+ }
200
+
201
+ export { ASSET_FOLDERS as A, type DeliverOptions as D, type LocalizedMetadata as L, type MetadataSet as M, type PlaceAssetsResult as P, type UploadedAsset as U, type DeliverResult as a, uploadMetadata as b, uploadScreenshots as c, uploadAssetLibrary as d, uploadLibraryAsset as e, readImageSize as f, categoryFor as g, index as i, loadMetadata as l, resolveImageGroups as r, submitForReview as s, uploadToAppStore as u };
@@ -1,5 +1,5 @@
1
- import { a as AppStoreConnectClient, q as CapabilitySettingInput, B as BundleId, p as BundleIdCapability, j as App } from './index-CCtYhPN9.js';
2
- import { B as BundleIdPlatform, d as CapabilityType } from './enums-B609j2rb.js';
1
+ import { A as AppStoreConnectClient, a8 as PortalClient, p as CapabilitySettingInput, B as BundleId, o as BundleIdCapability, i as App } from './index-CemR3UI9.js';
2
+ import { B as BundleIdPlatform, d as CapabilityType } from './enums-yXNVh3UI.js';
3
3
 
4
4
  interface ProduceOptions {
5
5
  client: AppStoreConnectClient;
@@ -10,6 +10,11 @@ interface ProduceOptions {
10
10
  primaryLocale?: string;
11
11
  companyName?: string;
12
12
  enableServices?: CapabilityType[];
13
+ appGroups?: Array<{
14
+ name: string;
15
+ identifier: string;
16
+ }>;
17
+ portalClient?: PortalClient;
13
18
  }
14
19
  /**
15
20
  * Map from Fastlane's `produce` service name → App Store Connect
@@ -58,11 +63,20 @@ declare function enableServices(options: {
58
63
  */
59
64
  services: string[] | Record<string, string | boolean>;
60
65
  }): Promise<void>;
66
+ declare function associateAppGroups(options: {
67
+ portalClient: PortalClient;
68
+ bundleIdId: string;
69
+ appGroups: Array<{
70
+ name: string;
71
+ identifier: string;
72
+ }>;
73
+ }): Promise<void>;
61
74
  declare function createApp(options: ProduceOptions): Promise<App>;
62
75
 
63
76
  type index_ProduceOptions = ProduceOptions;
64
77
  declare const index_SERVICE_NAME_TO_CAPABILITY: typeof SERVICE_NAME_TO_CAPABILITY;
65
78
  declare const index_addCapability: typeof addCapability;
79
+ declare const index_associateAppGroups: typeof associateAppGroups;
66
80
  declare const index_buildCapabilitySettings: typeof buildCapabilitySettings;
67
81
  declare const index_createApp: typeof createApp;
68
82
  declare const index_enableServices: typeof enableServices;
@@ -70,7 +84,7 @@ declare const index_listCapabilities: typeof listCapabilities;
70
84
  declare const index_registerBundleId: typeof registerBundleId;
71
85
  declare const index_removeCapability: typeof removeCapability;
72
86
  declare namespace index {
73
- export { type index_ProduceOptions as ProduceOptions, index_SERVICE_NAME_TO_CAPABILITY as SERVICE_NAME_TO_CAPABILITY, index_addCapability as addCapability, index_buildCapabilitySettings as buildCapabilitySettings, index_createApp as createApp, index_enableServices as enableServices, index_listCapabilities as listCapabilities, index_registerBundleId as registerBundleId, index_removeCapability as removeCapability };
87
+ export { type index_ProduceOptions as ProduceOptions, index_SERVICE_NAME_TO_CAPABILITY as SERVICE_NAME_TO_CAPABILITY, index_addCapability as addCapability, index_associateAppGroups as associateAppGroups, index_buildCapabilitySettings as buildCapabilitySettings, index_createApp as createApp, index_enableServices as enableServices, index_listCapabilities as listCapabilities, index_registerBundleId as registerBundleId, index_removeCapability as removeCapability };
74
88
  }
75
89
 
76
- export { type ProduceOptions as P, SERVICE_NAME_TO_CAPABILITY as S, addCapability as a, buildCapabilitySettings as b, removeCapability as c, createApp as d, enableServices as e, index as i, listCapabilities as l, registerBundleId as r };
90
+ export { type ProduceOptions as P, SERVICE_NAME_TO_CAPABILITY as S, addCapability as a, buildCapabilitySettings as b, removeCapability as c, associateAppGroups as d, enableServices as e, createApp as f, index as i, listCapabilities as l, registerBundleId as r };
@@ -1,4 +1,4 @@
1
- import { C as CertOptions, a as CertResult, c as createCertificate, d as downloadCertificate, f as findValidCertificates, r as revokeCertificate, b as revokeExpiredCertificates } from './cert-FehieKeb.cjs';
1
+ import { C as CertOptions, a as CertResult, c as createCertificate, d as downloadCertificate, f as findValidCertificates, r as revokeCertificate, b as revokeExpiredCertificates } from './cert-ClacRx9y.js';
2
2
 
3
3
  /**
4
4
  * Generate EC P-256 CSR — used by App Store Connect API (JWT auth).
@@ -43,7 +43,35 @@ interface BundleP12Options {
43
43
  */
44
44
  declare function bundleP12(options: BundleP12Options): Buffer;
45
45
 
46
+ /**
47
+ * Certificate expiry extraction — reads the notAfter date (and serial) out of
48
+ * an uploaded signing certificate WITHOUT any native tooling, so it runs the
49
+ * same on a Linux API host as on a macOS build runner.
50
+ *
51
+ * Accepts the three shapes users actually upload for a distribution identity:
52
+ * - a PKCS#12 (.p12) bundle (cert + key), which needs the export password
53
+ * - a DER-encoded X.509 certificate (.cer)
54
+ * - a PEM-encoded certificate
55
+ * plus the base64-of-any-of-those that the dashboard sends over the wire.
56
+ *
57
+ * Everything is best-effort: a parse failure returns null so a bad/omitted
58
+ * password never blocks saving a credential — we simply don't learn the date.
59
+ */
60
+ interface CertExpiryInfo {
61
+ /** ISO-8601 notAfter (expiry) instant. */
62
+ notAfter: string;
63
+ /** Uppercase hex serial number, or null when unavailable. */
64
+ serialHex: string | null;
65
+ }
66
+ /**
67
+ * Parse a certificate's expiry from base64 material. `password` is only used
68
+ * (and only needed) when the material is a .p12. Returns null when nothing
69
+ * parseable is found.
70
+ */
71
+ declare function parseCertificateExpiry(base64: string, password?: string | null): CertExpiryInfo | null;
72
+
46
73
  type index_BundleP12Options = BundleP12Options;
74
+ type index_CertExpiryInfo = CertExpiryInfo;
47
75
  declare const index_CertOptions: typeof CertOptions;
48
76
  declare const index_CertResult: typeof CertResult;
49
77
  declare const index_bundleP12: typeof bundleP12;
@@ -52,10 +80,11 @@ declare const index_downloadCertificate: typeof downloadCertificate;
52
80
  declare const index_findValidCertificates: typeof findValidCertificates;
53
81
  declare const index_generateCSR: typeof generateCSR;
54
82
  declare const index_generateRSACSR: typeof generateRSACSR;
83
+ declare const index_parseCertificateExpiry: typeof parseCertificateExpiry;
55
84
  declare const index_revokeCertificate: typeof revokeCertificate;
56
85
  declare const index_revokeExpiredCertificates: typeof revokeExpiredCertificates;
57
86
  declare namespace index {
58
- export { type index_BundleP12Options as BundleP12Options, index_CertOptions as CertOptions, index_CertResult as CertResult, index_bundleP12 as bundleP12, index_createCertificate as createCertificate, index_downloadCertificate as downloadCertificate, index_findValidCertificates as findValidCertificates, index_generateCSR as generateCSR, index_generateRSACSR as generateRSACSR, index_revokeCertificate as revokeCertificate, index_revokeExpiredCertificates as revokeExpiredCertificates };
87
+ export { type index_BundleP12Options as BundleP12Options, type index_CertExpiryInfo as CertExpiryInfo, index_CertOptions as CertOptions, index_CertResult as CertResult, index_bundleP12 as bundleP12, index_createCertificate as createCertificate, index_downloadCertificate as downloadCertificate, index_findValidCertificates as findValidCertificates, index_generateCSR as generateCSR, index_generateRSACSR as generateRSACSR, index_parseCertificateExpiry as parseCertificateExpiry, index_revokeCertificate as revokeCertificate, index_revokeExpiredCertificates as revokeExpiredCertificates };
59
88
  }
60
89
 
61
- export { type BundleP12Options as B, generateRSACSR as a, bundleP12 as b, generateCSR as g, index as i };
90
+ export { type BundleP12Options as B, type CertExpiryInfo as C, generateRSACSR as a, bundleP12 as b, generateCSR as g, index as i, parseCertificateExpiry as p };
@@ -1,5 +1,5 @@
1
- import { a as AppStoreConnectClient } from './index-CCtYhPN9.js';
2
- import { C as CertificateType } from './enums-B609j2rb.js';
1
+ import { A as AppStoreConnectClient } from './index-CemR3UI9.js';
2
+ import { C as CertificateType } from './enums-yXNVh3UI.js';
3
3
 
4
4
  type PushCertKind = "development" | "production" | "website" | "voip" | "passbook";
5
5
  interface PemOptions {
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Google Play Developer API v3 uploader — the Android-side equivalent of
3
+ * `pilot` (TestFlight). Uses a service-account JSON to mint an OAuth2 access
4
+ * token (scope androidpublisher), then drives the Edits → upload → track →
5
+ * commit flow against the Android Publisher REST API.
6
+ */
7
+ type PlayTrack = "internal" | "alpha" | "beta" | "production";
8
+ interface PlayUploadOptions {
9
+ packageName: string;
10
+ /** Raw service-account JSON string (with client_email + private_key). */
11
+ serviceAccountJson: string;
12
+ /** Path to the .aab or .apk artifact to upload. */
13
+ artifactPath: string;
14
+ track: PlayTrack;
15
+ releaseNotes?: string;
16
+ releaseName?: string;
17
+ onProgress?: (msg: string) => void;
18
+ }
19
+ interface PlayUploadResult {
20
+ success: true;
21
+ versionCode: number;
22
+ track: PlayTrack;
23
+ }
24
+ /**
25
+ * Error thrown for any Play upload failure, carrying the HTTP status (if any)
26
+ * so callers/`classifyPlayError` can decide whether to retry.
27
+ */
28
+ declare class PlayApiError extends Error {
29
+ readonly status?: number;
30
+ constructor(message: string, status?: number);
31
+ }
32
+ /**
33
+ * Upload an artifact (.aab or .apk) to a Google Play track and roll it out.
34
+ *
35
+ * Flow:
36
+ * 1. Create an edit.
37
+ * 2. Upload the bundle/apk bytes, capturing the returned versionCode.
38
+ * 3. Assign that versionCode to the requested track (status "completed").
39
+ * 4. Commit the edit.
40
+ * 5. On any failure, delete the edit (best effort) and throw.
41
+ */
42
+ declare function uploadToPlay(options: PlayUploadOptions): Promise<PlayUploadResult>;
43
+ /**
44
+ * Classify a Play upload failure into transient vs. fatal — mirrors
45
+ * pilot/classify.ts. HTTP 429/5xx and network-level errors are transient
46
+ * (safe to retry); 4xx (auth, invalid bundle, version conflict) are fatal.
47
+ */
48
+ declare function classifyPlayError(err: unknown): {
49
+ transient: boolean;
50
+ };
51
+
52
+ type index_PlayApiError = PlayApiError;
53
+ declare const index_PlayApiError: typeof PlayApiError;
54
+ type index_PlayTrack = PlayTrack;
55
+ type index_PlayUploadOptions = PlayUploadOptions;
56
+ type index_PlayUploadResult = PlayUploadResult;
57
+ declare const index_classifyPlayError: typeof classifyPlayError;
58
+ declare const index_uploadToPlay: typeof uploadToPlay;
59
+ declare namespace index {
60
+ export { index_PlayApiError as PlayApiError, type index_PlayTrack as PlayTrack, type index_PlayUploadOptions as PlayUploadOptions, type index_PlayUploadResult as PlayUploadResult, index_classifyPlayError as classifyPlayError, index_uploadToPlay as uploadToPlay };
61
+ }
62
+
63
+ export { type PlayTrack as P, type PlayUploadOptions as a, type PlayUploadResult as b, PlayApiError as c, classifyPlayError as d, index as i, uploadToPlay as u };
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Google Play Developer API v3 uploader — the Android-side equivalent of
3
+ * `pilot` (TestFlight). Uses a service-account JSON to mint an OAuth2 access
4
+ * token (scope androidpublisher), then drives the Edits → upload → track →
5
+ * commit flow against the Android Publisher REST API.
6
+ */
7
+ type PlayTrack = "internal" | "alpha" | "beta" | "production";
8
+ interface PlayUploadOptions {
9
+ packageName: string;
10
+ /** Raw service-account JSON string (with client_email + private_key). */
11
+ serviceAccountJson: string;
12
+ /** Path to the .aab or .apk artifact to upload. */
13
+ artifactPath: string;
14
+ track: PlayTrack;
15
+ releaseNotes?: string;
16
+ releaseName?: string;
17
+ onProgress?: (msg: string) => void;
18
+ }
19
+ interface PlayUploadResult {
20
+ success: true;
21
+ versionCode: number;
22
+ track: PlayTrack;
23
+ }
24
+ /**
25
+ * Error thrown for any Play upload failure, carrying the HTTP status (if any)
26
+ * so callers/`classifyPlayError` can decide whether to retry.
27
+ */
28
+ declare class PlayApiError extends Error {
29
+ readonly status?: number;
30
+ constructor(message: string, status?: number);
31
+ }
32
+ /**
33
+ * Upload an artifact (.aab or .apk) to a Google Play track and roll it out.
34
+ *
35
+ * Flow:
36
+ * 1. Create an edit.
37
+ * 2. Upload the bundle/apk bytes, capturing the returned versionCode.
38
+ * 3. Assign that versionCode to the requested track (status "completed").
39
+ * 4. Commit the edit.
40
+ * 5. On any failure, delete the edit (best effort) and throw.
41
+ */
42
+ declare function uploadToPlay(options: PlayUploadOptions): Promise<PlayUploadResult>;
43
+ /**
44
+ * Classify a Play upload failure into transient vs. fatal — mirrors
45
+ * pilot/classify.ts. HTTP 429/5xx and network-level errors are transient
46
+ * (safe to retry); 4xx (auth, invalid bundle, version conflict) are fatal.
47
+ */
48
+ declare function classifyPlayError(err: unknown): {
49
+ transient: boolean;
50
+ };
51
+
52
+ type index_PlayApiError = PlayApiError;
53
+ declare const index_PlayApiError: typeof PlayApiError;
54
+ type index_PlayTrack = PlayTrack;
55
+ type index_PlayUploadOptions = PlayUploadOptions;
56
+ type index_PlayUploadResult = PlayUploadResult;
57
+ declare const index_classifyPlayError: typeof classifyPlayError;
58
+ declare const index_uploadToPlay: typeof uploadToPlay;
59
+ declare namespace index {
60
+ export { index_PlayApiError as PlayApiError, type index_PlayTrack as PlayTrack, type index_PlayUploadOptions as PlayUploadOptions, type index_PlayUploadResult as PlayUploadResult, index_classifyPlayError as classifyPlayError, index_uploadToPlay as uploadToPlay };
61
+ }
62
+
63
+ export { type PlayTrack as P, type PlayUploadOptions as a, type PlayUploadResult as b, PlayApiError as c, classifyPlayError as d, index as i, uploadToPlay as u };