@sitepong/fastnode 0.2.1 → 0.3.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.
- package/README.md +58 -1
- package/dist/actions/index.cjs +891 -72
- package/dist/actions/index.cjs.map +1 -1
- package/dist/actions/index.mjs +892 -73
- package/dist/actions/index.mjs.map +1 -1
- package/dist/apple-session-jUzBrql5.d.cts +122 -0
- package/dist/apple-session-jUzBrql5.d.ts +122 -0
- package/dist/cert/index.cjs +17868 -24
- package/dist/cert/index.cjs.map +1 -1
- package/dist/cert/index.d.cts +5 -4
- package/dist/cert/index.d.ts +5 -4
- package/dist/cert/index.mjs +17853 -7
- package/dist/cert/index.mjs.map +1 -1
- package/dist/{cert-e5GAgAPb.d.ts → cert-RvXmdMke.d.ts} +2 -2
- package/dist/{cert-uLLdb5a7.d.cts → cert-eOoxGMN1.d.cts} +2 -2
- package/dist/cli/index.cjs +1364 -78
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.cts +3 -2
- package/dist/cli/index.d.ts +3 -2
- package/dist/cli/index.mjs +1365 -79
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/index.cjs +480 -31
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +3 -2
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.mjs +480 -31
- package/dist/client/index.mjs.map +1 -1
- package/dist/deliver/index.cjs +334 -13
- package/dist/deliver/index.cjs.map +1 -1
- package/dist/deliver/index.d.cts +4 -3
- package/dist/deliver/index.d.ts +4 -3
- package/dist/deliver/index.mjs +330 -15
- package/dist/deliver/index.mjs.map +1 -1
- package/dist/{enums-B609j2rb.d.cts → enums-yXNVh3UI.d.cts} +8 -1
- package/dist/{enums-B609j2rb.d.ts → enums-yXNVh3UI.d.ts} +8 -1
- package/dist/gradle/index.cjs +222 -0
- package/dist/gradle/index.cjs.map +1 -0
- package/dist/gradle/index.d.cts +1 -0
- package/dist/gradle/index.d.ts +1 -0
- package/dist/gradle/index.mjs +217 -0
- package/dist/gradle/index.mjs.map +1 -0
- package/dist/gym/index.d.cts +2 -2
- package/dist/gym/index.d.ts +2 -2
- package/dist/index-8djTPW8O.d.ts +104 -0
- package/dist/{index-DrUpRXRG.d.cts → index-B6-MJpO4.d.cts} +1 -1
- package/dist/{index-Clyf4-lu.d.cts → index-BE7bwNff.d.cts} +1 -1
- package/dist/index-BGhV0gS-.d.ts +65 -0
- package/dist/index-BaNcf7jt.d.cts +201 -0
- package/dist/{index-Di4Ic0EE.d.ts → index-BvyZ4uiw.d.ts} +3 -3
- package/dist/{index-CEldrbyz.d.ts → index-C01Rkrir.d.ts} +2 -2
- package/dist/{index-jeI44Q5G.d.ts → index-C9mHBJED.d.ts} +1 -1
- package/dist/{index-BgHagzj1.d.cts → index-CAEiXVWd.d.ts} +9 -1
- package/dist/index-CBf0-NUQ.d.ts +201 -0
- package/dist/index-CXJlvmB4.d.cts +63 -0
- package/dist/index-CXJlvmB4.d.ts +63 -0
- package/dist/{index-BNP7Bpu5.d.ts → index-D1GHEM3c.d.ts} +32 -3
- package/dist/index-DFstwgGK.d.cts +65 -0
- package/dist/{index-DrCOh0Vh.d.cts → index-DGkgRnZp.d.cts} +2 -2
- package/dist/{index-CtydPNxA.d.cts → index-DLJso7Vs.d.cts} +32 -3
- package/dist/{index-BN0iWhuw.d.cts → index-DWOLZNlz.d.cts} +2 -2
- package/dist/{index-BjkOUQcQ.d.cts → index-DfkIz7i0.d.cts} +18 -4
- package/dist/{index-EKU_G1G5.d.ts → index-DjC_gmnL.d.ts} +18 -4
- package/dist/index-DnHQ2uT2.d.cts +104 -0
- package/dist/{index-CdfgEZwh.d.cts → index-DrmS802s.d.cts} +356 -130
- package/dist/index-Dv-Mek07.d.cts +84 -0
- package/dist/index-Dv-Mek07.d.ts +84 -0
- package/dist/{index-DHxi-QPC.d.cts → index-icIH5e5V.d.cts} +3 -3
- package/dist/{index-mddpvrRX.d.ts → index-laE3_wm9.d.cts} +9 -1
- package/dist/{index-BwwpAlk2.d.ts → index-lsuS2R1T.d.ts} +356 -130
- package/dist/{index-DImN9PWc.d.ts → index-mEEB7An6.d.ts} +1 -1
- package/dist/{index-C2YLoFVl.d.ts → index-rTZOdMRE.d.ts} +2 -2
- package/dist/index.cjs +20496 -217
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +278 -22
- package/dist/index.d.ts +278 -22
- package/dist/index.mjs +20489 -220
- package/dist/index.mjs.map +1 -1
- package/dist/lane/index.cjs +891 -72
- package/dist/lane/index.cjs.map +1 -1
- package/dist/lane/index.mjs +892 -73
- package/dist/lane/index.mjs.map +1 -1
- package/dist/match/index.d.cts +6 -5
- package/dist/match/index.d.ts +6 -5
- package/dist/pem/index.d.cts +4 -3
- package/dist/pem/index.d.ts +4 -3
- package/dist/pilot/index.cjs +8 -4
- package/dist/pilot/index.cjs.map +1 -1
- package/dist/pilot/index.d.cts +4 -3
- package/dist/pilot/index.d.ts +4 -3
- package/dist/pilot/index.mjs +10 -6
- package/dist/pilot/index.mjs.map +1 -1
- package/dist/playstore/index.cjs +207 -0
- package/dist/playstore/index.cjs.map +1 -0
- package/dist/playstore/index.d.cts +1 -0
- package/dist/playstore/index.d.ts +1 -0
- package/dist/playstore/index.mjs +203 -0
- package/dist/playstore/index.mjs.map +1 -0
- package/dist/precheck/index.d.cts +4 -3
- package/dist/precheck/index.d.ts +4 -3
- package/dist/privacy/index.cjs +207 -0
- package/dist/privacy/index.cjs.map +1 -0
- package/dist/privacy/index.d.cts +2 -0
- package/dist/privacy/index.d.ts +2 -0
- package/dist/privacy/index.mjs +195 -0
- package/dist/privacy/index.mjs.map +1 -0
- package/dist/produce/index.cjs +38 -18
- package/dist/produce/index.cjs.map +1 -1
- package/dist/produce/index.d.cts +4 -3
- package/dist/produce/index.d.ts +4 -3
- package/dist/produce/index.mjs +38 -19
- package/dist/produce/index.mjs.map +1 -1
- package/dist/review/index.cjs +141 -0
- package/dist/review/index.cjs.map +1 -0
- package/dist/review/index.d.cts +2 -0
- package/dist/review/index.d.ts +2 -0
- package/dist/review/index.mjs +137 -0
- package/dist/review/index.mjs.map +1 -0
- package/dist/sigh/index.d.cts +4 -3
- package/dist/sigh/index.d.ts +4 -3
- package/dist/xcode/index.cjs +1 -1
- package/dist/xcode/index.cjs.map +1 -1
- package/dist/xcode/index.mjs +1 -1
- package/dist/xcode/index.mjs.map +1 -1
- package/package.json +27 -1
- package/dist/index-BbY_H_f6.d.ts +0 -99
- package/dist/index-XsMsVc3O.d.cts +0 -99
|
@@ -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 };
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { A as AppStoreConnectClient, W as AppAssetLibraryRefDatumAttributes, X as AppAssetLibraryImageSpec } from './index-DrmS802s.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,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as CertResult } from './cert-
|
|
3
|
-
import { S as SighResult } from './index-
|
|
1
|
+
import { A as AppStoreConnectClient } from './index-lsuS2R1T.js';
|
|
2
|
+
import { a as CertResult } from './cert-RvXmdMke.js';
|
|
3
|
+
import { S as SighResult } from './index-C01Rkrir.js';
|
|
4
4
|
|
|
5
5
|
type StorageMode = "git" | "s3" | "local";
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { P as ProfileType } from './enums-
|
|
1
|
+
import { A as AppStoreConnectClient, P as Profile } from './index-lsuS2R1T.js';
|
|
2
|
+
import { P as ProfileType } from './enums-yXNVh3UI.js';
|
|
3
3
|
|
|
4
4
|
interface SighOptions {
|
|
5
5
|
client: AppStoreConnectClient;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as AppStoreConnectClient, j as Build } from './index-lsuS2R1T.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Shared types for the pilot module's upload backends.
|
|
@@ -15,6 +15,14 @@ interface PilotUploadOptions {
|
|
|
15
15
|
timeout?: number;
|
|
16
16
|
/** Stream callback for upload progress / log lines. */
|
|
17
17
|
onOutput?: (chunk: string) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Absolute path to an AppStoreInfo.plist ("asset description"). iTMSTransporter
|
|
20
|
+
* cannot run its software-analysis phase on Linux, so the descriptor must be
|
|
21
|
+
* generated on macOS (via xcodebuild's generateAppStoreInformation export
|
|
22
|
+
* option) and passed here via -assetDescription. Ignored by the altool backend
|
|
23
|
+
* (macOS analyzes the binary natively).
|
|
24
|
+
*/
|
|
25
|
+
assetDescriptionPath?: string;
|
|
18
26
|
/**
|
|
19
27
|
* Which backend to use. Defaults to "auto":
|
|
20
28
|
* - altool on macOS (requires Xcode CLI)
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { A as AppStoreConnectClient, W as AppAssetLibraryRefDatumAttributes, X as AppAssetLibraryImageSpec } from './index-lsuS2R1T.js';
|
|
2
|
+
import { l as AppAssetLibraryPlacementType, j as AppAssetLibraryAssetCategory, m as AppAssetLibraryAssetState, o as AppAssetLibraryFeature, b as Platform, R as ReleaseType } from './enums-yXNVh3UI.js';
|
|
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 };
|
|
@@ -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 };
|