@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.
- package/README.md +81 -0
- package/bin/fastnode.js +13 -0
- package/bin/fastnode.ts +5 -0
- package/dist/actions/index.cjs +7405 -0
- package/dist/actions/index.cjs.map +1 -0
- package/dist/actions/index.d.cts +15 -0
- package/dist/actions/index.d.ts +15 -0
- package/dist/actions/index.mjs +7377 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/cert/index.cjs +219 -0
- package/dist/cert/index.cjs.map +1 -0
- package/dist/cert/index.d.cts +4 -0
- package/dist/cert/index.d.ts +4 -0
- package/dist/cert/index.mjs +191 -0
- package/dist/cert/index.mjs.map +1 -0
- package/dist/cert-BmJGtYtb.d.cts +27 -0
- package/dist/cert-owkOFNW8.d.ts +27 -0
- package/dist/cli/index.cjs +7998 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +9 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.mjs +7972 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/client/index.cjs +2592 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +2 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.mjs +2582 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/context-CymLkfrS.d.cts +13 -0
- package/dist/context-CymLkfrS.d.ts +13 -0
- package/dist/core/index.cjs +281 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.mjs +254 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/deliver/index.cjs +328 -0
- package/dist/deliver/index.cjs.map +1 -0
- package/dist/deliver/index.d.cts +3 -0
- package/dist/deliver/index.d.ts +3 -0
- package/dist/deliver/index.mjs +322 -0
- package/dist/deliver/index.mjs.map +1 -0
- package/dist/enums-B609j2rb.d.cts +20 -0
- package/dist/enums-B609j2rb.d.ts +20 -0
- package/dist/frameit/index.cjs +247 -0
- package/dist/frameit/index.cjs.map +1 -0
- package/dist/frameit/index.d.cts +1 -0
- package/dist/frameit/index.d.ts +1 -0
- package/dist/frameit/index.mjs +242 -0
- package/dist/frameit/index.mjs.map +1 -0
- package/dist/gym/index.cjs +356 -0
- package/dist/gym/index.cjs.map +1 -0
- package/dist/gym/index.d.cts +2 -0
- package/dist/gym/index.d.ts +2 -0
- package/dist/gym/index.mjs +346 -0
- package/dist/gym/index.mjs.map +1 -0
- package/dist/index-1Vu2cRQ2.d.ts +99 -0
- package/dist/index-A5MimeQk.d.ts +72 -0
- package/dist/index-B0yhu_LZ.d.ts +76 -0
- package/dist/index-B9yXicrQ.d.ts +62 -0
- package/dist/index-BFdNOmPJ.d.cts +53 -0
- package/dist/index-BLubSlgK.d.cts +1513 -0
- package/dist/index-BN0ubxjZ.d.ts +70 -0
- package/dist/index-BQJIJlK7.d.cts +70 -0
- package/dist/index-BYonklf3.d.cts +84 -0
- package/dist/index-BYonklf3.d.ts +84 -0
- package/dist/index-BimqCmY8.d.cts +78 -0
- package/dist/index-BimqCmY8.d.ts +78 -0
- package/dist/index-BoU8qt8r.d.cts +59 -0
- package/dist/index-BoU8qt8r.d.ts +59 -0
- package/dist/index-C2yG3wXA.d.cts +95 -0
- package/dist/index-C2yG3wXA.d.ts +95 -0
- package/dist/index-CR3BFPIz.d.cts +77 -0
- package/dist/index-CR3BFPIz.d.ts +77 -0
- package/dist/index-CWNLnSOL.d.cts +99 -0
- package/dist/index-Cp6cjtd-.d.cts +65 -0
- package/dist/index-Cp6cjtd-.d.ts +65 -0
- package/dist/index-D1Izm7qt.d.ts +1513 -0
- package/dist/index-D5eihzwM.d.cts +76 -0
- package/dist/index-DImN9PWc.d.ts +155 -0
- package/dist/index-DfCUVJX1.d.cts +62 -0
- package/dist/index-DfirmFbC.d.ts +32 -0
- package/dist/index-DkvinY7_.d.ts +54 -0
- package/dist/index-DrUpRXRG.d.cts +155 -0
- package/dist/index-EcVvViW8.d.cts +72 -0
- package/dist/index-HRiaaX-Q.d.cts +54 -0
- package/dist/index-TfXqwuac.d.ts +53 -0
- package/dist/index-lt819Jgj.d.cts +32 -0
- package/dist/index.cjs +8464 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +23 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.mjs +8410 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lane/index.cjs +7641 -0
- package/dist/lane/index.cjs.map +1 -0
- package/dist/lane/index.d.cts +51 -0
- package/dist/lane/index.d.ts +51 -0
- package/dist/lane/index.mjs +7603 -0
- package/dist/lane/index.mjs.map +1 -0
- package/dist/match/index.cjs +942 -0
- package/dist/match/index.cjs.map +1 -0
- package/dist/match/index.d.cts +5 -0
- package/dist/match/index.d.ts +5 -0
- package/dist/match/index.mjs +913 -0
- package/dist/match/index.mjs.map +1 -0
- package/dist/pem/index.cjs +195 -0
- package/dist/pem/index.cjs.map +1 -0
- package/dist/pem/index.d.cts +3 -0
- package/dist/pem/index.d.ts +3 -0
- package/dist/pem/index.mjs +170 -0
- package/dist/pem/index.mjs.map +1 -0
- package/dist/pilot/index.cjs +206 -0
- package/dist/pilot/index.cjs.map +1 -0
- package/dist/pilot/index.d.cts +3 -0
- package/dist/pilot/index.d.ts +3 -0
- package/dist/pilot/index.mjs +196 -0
- package/dist/pilot/index.mjs.map +1 -0
- package/dist/precheck/index.cjs +277 -0
- package/dist/precheck/index.cjs.map +1 -0
- package/dist/precheck/index.d.cts +3 -0
- package/dist/precheck/index.d.ts +3 -0
- package/dist/precheck/index.mjs +274 -0
- package/dist/precheck/index.mjs.map +1 -0
- package/dist/produce/index.cjs +200 -0
- package/dist/produce/index.cjs.map +1 -0
- package/dist/produce/index.d.cts +3 -0
- package/dist/produce/index.d.ts +3 -0
- package/dist/produce/index.mjs +191 -0
- package/dist/produce/index.mjs.map +1 -0
- package/dist/scan/index.cjs +187 -0
- package/dist/scan/index.cjs.map +1 -0
- package/dist/scan/index.d.cts +1 -0
- package/dist/scan/index.d.ts +1 -0
- package/dist/scan/index.mjs +183 -0
- package/dist/scan/index.mjs.map +1 -0
- package/dist/sigh/index.cjs +203 -0
- package/dist/sigh/index.cjs.map +1 -0
- package/dist/sigh/index.d.cts +3 -0
- package/dist/sigh/index.d.ts +3 -0
- package/dist/sigh/index.mjs +198 -0
- package/dist/sigh/index.mjs.map +1 -0
- package/dist/snapshot/index.cjs +448 -0
- package/dist/snapshot/index.cjs.map +1 -0
- package/dist/snapshot/index.d.cts +1 -0
- package/dist/snapshot/index.d.ts +1 -0
- package/dist/snapshot/index.mjs +438 -0
- package/dist/snapshot/index.mjs.map +1 -0
- package/dist/trainer/index.cjs +395 -0
- package/dist/trainer/index.cjs.map +1 -0
- package/dist/trainer/index.d.cts +1 -0
- package/dist/trainer/index.d.ts +1 -0
- package/dist/trainer/index.mjs +372 -0
- package/dist/trainer/index.mjs.map +1 -0
- package/dist/xcode/index.cjs +188 -0
- package/dist/xcode/index.cjs.map +1 -0
- package/dist/xcode/index.d.cts +1 -0
- package/dist/xcode/index.d.ts +1 -0
- package/dist/xcode/index.mjs +176 -0
- package/dist/xcode/index.mjs.map +1 -0
- package/package.json +223 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/auth.ts","../../src/client/srp.ts","../../src/client/apple-session.ts","../../src/client/request.ts","../../src/resources/certificates.ts","../../src/resources/profiles.ts","../../src/resources/bundle-ids.ts","../../src/resources/devices.ts","../../src/resources/apps.ts","../../src/resources/builds.ts","../../src/resources/beta-groups.ts","../../src/resources/capabilities.ts","../../src/resources/app-store-versions.ts","../../src/resources/app-screenshots.ts","../../src/resources/review-submissions.ts","../../src/resources/app-info.ts","../../src/resources/app-info-localizations.ts","../../src/resources/app-store-review-details.ts","../../src/resources/beta-testers.ts","../../src/resources/beta-app-review-submissions.ts","../../src/resources/beta-app-review-details.ts","../../src/resources/beta-invitations.ts","../../src/resources/beta-licenses.ts","../../src/resources/app-previews.ts","../../src/resources/app-preview-sets.ts","../../src/resources/app-prices.ts","../../src/resources/territories.ts","../../src/resources/age-rating-declarations.ts","../../src/resources/app-categories.ts","../../src/resources/app-encryption-declarations.ts","../../src/resources/idfa-declarations.ts","../../src/resources/pre-release-versions.ts","../../src/resources/review-submission-items.ts","../../src/resources/users.ts","../../src/resources/user-invitations.ts","../../src/resources/in-app-purchases.ts","../../src/resources/game-center-detail.ts","../../src/resources/xcode-metrics.ts","../../src/client/portal.ts","../../src/client/index.ts"],"names":["createHash","detail","id"],"mappings":"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","file":"index.mjs","sourcesContent":["import { SignJWT, importPKCS8 } from \"jose\";\n\nexport interface TokenConfig {\n keyId: string;\n /** Issuer ID. When absent, the key is treated as an individual key (sub='user'). */\n issuerId?: string;\n privateKey: string;\n enterprise?: boolean;\n duration?: number;\n}\n\nconst MAX_TOKEN_DURATION = 1200;\nconst DEFAULT_TOKEN_DURATION = 500;\n\nexport class TokenManager {\n private config: TokenConfig;\n private currentToken: string | null = null;\n private expiresAt = 0;\n\n constructor(config: TokenConfig) {\n this.config = config;\n }\n\n async getToken(): Promise<string> {\n const now = Math.floor(Date.now() / 1000);\n if (this.currentToken && now < this.expiresAt - 30) {\n return this.currentToken;\n }\n return this.refresh();\n }\n\n async refresh(): Promise<string> {\n const duration = Math.min(\n this.config.duration ?? DEFAULT_TOKEN_DURATION,\n MAX_TOKEN_DURATION\n );\n const audience = this.config.enterprise\n ? \"apple-developer-enterprise-v1\"\n : \"appstoreconnect-v1\";\n\n const key = await importPKCS8(this.config.privateKey, \"ES256\");\n const now = Math.floor(Date.now() / 1000);\n\n // Mirror Fastlane's Spaceship::ConnectAPI::Token#refresh! behavior:\n // when issuerId is provided → set `iss`; otherwise treat as individual key\n // and set `sub: 'user'`.\n // https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests#4313913\n let jwt = new SignJWT(this.config.issuerId ? {} : { sub: \"user\" })\n .setProtectedHeader({\n alg: \"ES256\",\n kid: this.config.keyId,\n typ: \"JWT\",\n })\n .setIssuedAt(now - 60)\n .setExpirationTime(now + duration)\n .setAudience(audience);\n\n if (this.config.issuerId) {\n jwt = jwt.setIssuer(this.config.issuerId);\n }\n\n this.currentToken = await jwt.sign(key);\n\n this.expiresAt = now + duration;\n return this.currentToken;\n }\n\n invalidate(): void {\n this.currentToken = null;\n this.expiresAt = 0;\n }\n}\n","/**\n * SRP (Secure Remote Password) implementation\n * 1:1 port of the fastlane-sirp Ruby gem\n * Used for Apple ID authentication\n */\n\nimport { createHash, randomBytes, pbkdf2Sync } from \"node:crypto\";\n\n// ── RFC 5054 SRP Group Parameters ──────────────────────────────────────────\n\n// Copied exactly from fastlane-sirp parameters.rb (2048-bit group)\nconst N_2048 = BigInt(\n \"0x\" +\n \"AC6BDB41324A9A9BF166DE5E1389582FAF72B6651987EE07FC3192943DB56050\" +\n \"A37329CBB4A099ED8193E0757767A13DD52312AB4B03310DCD7F48A9DA04FD50\" +\n \"E8083969EDB767B0CF6095179A163AB3661A05FBD5FAAAE82918A9962F0B93B8\" +\n \"55F97993EC975EEAA80D740ADBF4FF747359D041D5C33EA71D281E446B14773B\" +\n \"CA97B43A23FB801676BD207A436C6481F1D2B9078717461A5B9D32E688F87748\" +\n \"544523B524B0D57D5EA77A2775D2ECFA032CFBDBF52FB3786160279004E57AE6\" +\n \"AF874E7303CE53299CCC041C7BC308D82A5698F3A8D0C38271AE35F8E9DBFBB\" +\n \"694B5C803D89F7AE435DE236D525F54759B65E372FCD68EF20FA7111F9E4AFF73\"\n);\nconst g_2048 = 2n;\n\n// ── Utility Functions ──────────────────────────────────────────────────────\n\nfunction numToHex(num: bigint): string {\n let hex = num.toString(16);\n if (hex.length % 2 !== 0) hex = \"0\" + hex;\n return hex.toLowerCase();\n}\n\nfunction hexToBytes(hex: string): Buffer {\n return Buffer.from(hex, \"hex\");\n}\n\nfunction shaHex(h: string, algorithm: string): string {\n return createHash(algorithm).update(hexToBytes(h)).digest(\"hex\");\n}\n\nfunction shaStr(s: string, algorithm: string): string {\n return createHash(algorithm).update(s).digest(\"hex\");\n}\n\nfunction modExp(base: bigint, exp: bigint, mod: bigint): bigint {\n if (mod === 1n) return 0n;\n let result = 1n;\n base = base % mod;\n while (exp > 0n) {\n if (exp % 2n === 1n) {\n result = (result * base) % mod;\n }\n exp = exp / 2n;\n base = (base * base) % mod;\n }\n return result;\n}\n\nfunction H(algorithm: string, n: bigint, ...args: (bigint | string | undefined)[]): bigint {\n const nHex = numToHex(n);\n // Must match Ruby: nlen = 2 * ((('%x' % [n]).length * 4 + 7) >> 3)\n // Use floor division (>>3), NOT ceiling\n const nlen = 2 * (((nHex.length * 4 + 7) >> 3));\n\n let hashin = \"\";\n for (const s of args) {\n if (s === undefined) continue;\n const shex = typeof s === \"string\" ? s : numToHex(s);\n if (shex.length > nlen) {\n throw new Error(\"Bit width does not match - client uses different prime\");\n }\n hashin += \"0\".repeat(nlen - shex.length) + shex;\n }\n\n const hashed = shaHex(hashin, algorithm);\n return BigInt(\"0x\" + hashed) % n;\n}\n\n// ── SRP Client ─────────────────────────────────────────────────────────────\n\nexport class SRPClient {\n private N: bigint;\n private g: bigint;\n private hashAlg: string;\n private k: bigint;\n private a: bigint;\n A: string;\n private S: string | null = null;\n private K: string | null = null;\n M: string | null = null;\n H_AMK: string | null = null;\n\n constructor(group: number = 2048) {\n if (group !== 2048) throw new Error(\"Only 2048-bit group is supported\");\n this.N = N_2048;\n this.g = g_2048;\n this.hashAlg = \"sha256\";\n this.k = H(this.hashAlg, this.N, this.N, this.g);\n // Generate random 'a'\n this.a = BigInt(\"0x\" + randomBytes(256).toString(\"hex\"));\n // Compute A = g^a mod N\n this.A = numToHex(modExp(this.g, this.a, this.N));\n }\n\n startAuthentication(): string {\n return this.A;\n }\n\n processChallenge(\n username: string,\n password: string, // hex-encoded encrypted password\n xsalt: string, // hex\n xbb: string, // hex\n isPasswordEncrypted: boolean = false\n ): string | false {\n const bb = BigInt(\"0x\" + xbb);\n\n // SRP-6a safety check\n if (bb % this.N === 0n) return false;\n\n let x: bigint;\n if (isPasswordEncrypted) {\n x = this.calcXHex(password, xsalt);\n } else {\n x = this.calcX(username, password, xsalt);\n }\n\n const u = H(this.hashAlg, this.N, this.A, xbb);\n if (u === 0n) return false;\n\n // S = (B - k * g^x) ^ (a + u*x) mod N\n const gx = modExp(this.g, x, this.N);\n let base = (bb - this.k * gx) % this.N;\n if (base < 0n) base += this.N;\n const exp = this.a + x * u;\n this.S = numToHex(modExp(base, exp, this.N));\n this.K = shaHex(this.S, this.hashAlg);\n\n // M = H(H(N) xor H(g), H(I), s, A, B, K)\n const hxor = H(this.hashAlg, this.N, this.N) ^ H(this.hashAlg, this.N, this.g);\n const buf =\n numToHex(hxor) +\n shaStr(username, this.hashAlg) +\n xsalt +\n this.A +\n xbb +\n this.K;\n const bytes = hexToBytes(buf);\n this.M = createHash(this.hashAlg).update(bytes).digest(\"hex\");\n\n // H_AMK = H(A, M, K)\n const amkBytes = hexToBytes(this.A + this.M + this.K);\n this.H_AMK = numToHex(\n BigInt(\"0x\" + createHash(this.hashAlg).update(amkBytes).digest(\"hex\"))\n );\n\n return this.M;\n }\n\n private calcX(username: string, password: string, xsalt: string): bigint {\n const spad = xsalt.length % 2 !== 0 ? \"0\" : \"\";\n const inner = shaStr(`${username}:${password}`, this.hashAlg);\n return BigInt(\"0x\" + shaHex(spad + xsalt + inner, this.hashAlg));\n }\n\n private calcXHex(xpassword: string, xsalt: string): bigint {\n // calc_x_hex: sha_hex(xsalt + sha_hex(\":\" hex + xpassword), hash)\n const colonHex = \":\".charCodeAt(0).toString(16);\n const inner = shaHex(colonHex + xpassword, this.hashAlg);\n return BigInt(\"0x\" + shaHex(xsalt + inner, this.hashAlg));\n }\n}\n\n// ── Apple PBKDF2 password derivation ───────────────────────────────────────\n\nexport function applePbkdf2(\n password: string,\n salt: Buffer,\n iterations: number,\n keyLength: number,\n protocol: string\n): Buffer {\n if (![\"s2k\", \"s2k_fo\"].includes(protocol)) {\n throw new Error(`Unsupported protocol '${protocol}' for pbkdf2`);\n }\n\n // First hash the password with SHA-256\n let passwordBytes: Buffer | string = createHash(\"sha256\").update(password).digest();\n\n if (protocol === \"s2k_fo\") {\n // Legacy: convert to hex string\n passwordBytes = passwordBytes.toString(\"hex\");\n }\n\n return pbkdf2Sync(passwordBytes, salt, iterations, keyLength, \"sha256\");\n}\n","/**\n * Apple ID Session Authentication\n * 1:1 port of Fastlane Spaceship client.rb + two_step_or_factor_client.rb\n *\n * Flow: SIRP auth → handle 2FA → olympus session → done\n */\n\nimport { createHash } from \"node:crypto\";\nimport { createInterface } from \"node:readline\";\nimport { SRPClient, applePbkdf2 } from \"./srp.js\";\n\nconst AUTH_BASE = \"https://idmsa.apple.com/appleauth/auth\";\nconst OLYMPUS_SESSION = \"https://appstoreconnect.apple.com/olympus/v1/session\";\nconst WIDGET_KEY_URL = \"https://appstoreconnect.apple.com/olympus/v1/app/config?hostname=itunesconnect.apple.com\";\n\nexport interface AppleSessionConfig {\n email: string;\n password: string;\n onLog?: (msg: string) => void;\n onPrompt?: (msg: string) => Promise<string>;\n}\n\nexport interface ContractMessage {\n id: string;\n group: string;\n subject: string;\n message: string;\n}\n\nexport interface AppleSession {\n cookies: Record<string, string>;\n sessionId: string;\n scnt: string;\n serviceKey: string;\n userEmail: string;\n teamId?: string;\n pendingAgreements: ContractMessage[];\n}\n\n/** Thrown when an Apple Developer Program agreement needs to be accepted */\nexport class ProgramLicenseAgreementError extends Error {\n constructor(message: string, public agreements: ContractMessage[]) {\n super(message);\n this.name = \"ProgramLicenseAgreementError\";\n }\n}\n\n/**\n * Check a portal API response for agreement/license errors.\n * Throws ProgramLicenseAgreementError if detected.\n * Call this after any portal API call. Mirrors Spaceship::Client#handle_itc_response.\n */\nexport function checkPortalResponse(body: any, session?: AppleSession): void {\n if (!body || typeof body !== \"object\") return;\n\n // Result code 4100 = membership not eligible (often due to pending agreement)\n if (body.resultCode === 4100) {\n const userMsg = body.userString ?? \"The selected team does not have an eligible program membership.\";\n const agreements = session?.pendingAgreements ?? [];\n if (agreements.length > 0) {\n throw new ProgramLicenseAgreementError(\n `${userMsg}\\n\\n⚠ Pending agreement: ${agreements[0].subject}\\n` +\n `${agreements[0].message.replace(/<[^>]+>/g, \"\")}\\n\\n` +\n `Please accept the agreement at https://developer.apple.com/account before continuing.`,\n agreements\n );\n }\n throw new Error(userMsg);\n }\n\n // Explicit license agreement mention\n if ((body.userString ?? \"\").includes(\"Program License Agreement\")) {\n throw new ProgramLicenseAgreementError(\n `${body.userString} Please manually log into your Apple Developer account to review and accept the updated agreement.`,\n session?.pendingAgreements ?? []\n );\n }\n\n // Generic error with result code\n if (body.resultCode && body.resultCode !== 0) {\n const msg = body.userString || body.resultString || `Portal API error (code ${body.resultCode})`;\n throw new Error(msg);\n }\n}\n\n// ── Main Login (mirrors Spaceship::Client#send_shared_login_request) ───────\n\nexport async function loginWithAppleId(config: AppleSessionConfig): Promise<AppleSession> {\n const log = config.onLog ?? console.log;\n const promptFn = config.onPrompt ?? defaultPrompt;\n\n log(\"Fetching Apple service key...\");\n const serviceKey = await fetchServiceKey();\n\n // Get initial cookies + hashcash from signin page\n const initRes = await fetch(`${AUTH_BASE}/signin?widgetKey=${serviceKey}`, {\n headers: { \"User-Agent\": \"Spaceship 2.225.0\" },\n });\n const initCookies = parseCookies(initRes.headers);\n\n const hcBits = initRes.headers.get(\"X-Apple-HC-Bits\");\n const hcChallenge = initRes.headers.get(\"X-Apple-HC-Challenge\");\n let hashcash: string | undefined;\n if (hcBits && hcChallenge) {\n log(\"Computing hashcash...\");\n hashcash = computeHashcash(parseInt(hcBits, 10), hcChallenge);\n }\n\n // Build cookie string with DES quoting workaround (from Fastlane)\n const cookieStr = Object.entries(initCookies)\n .map(([k, v]) => k.startsWith(\"DES\") ? `${k}=\"${v}\"` : `${k}=${v}`)\n .join(\"; \");\n\n // Do SIRP auth\n log(\"Starting SIRP Apple ID login...\");\n const response = await doSirp(config.email, config.password, serviceKey, cookieStr, hashcash);\n\n const session: AppleSession = {\n cookies: { ...initCookies, ...response.cookies },\n sessionId: response.sessionId,\n scnt: response.scnt,\n serviceKey,\n userEmail: config.email,\n pendingAgreements: [],\n };\n\n if (response.status === 403) {\n throw new Error(`Invalid username and password combination. Used '${config.email}' as the username.`);\n } else if (response.status === 200) {\n log(\"Login successful.\");\n await fetchOlympusSession(session);\n } else if (response.status === 409) {\n await handleTwoStepOrFactor(session, log, promptFn);\n await fetchOlympusSession(session);\n } else if (response.status === 412) {\n throw new Error(\"Need to acknowledge Apple's Apple ID and Privacy statement. Please manually log into https://appleid.apple.com.\");\n } else {\n throw new Error(`Unexpected login response (${response.status}): ${JSON.stringify(response.body).slice(0, 500)}`);\n }\n\n // Check for pending agreements (mirrors fetch_program_license_agreement_messages)\n const agreements = await fetchContractMessages(session);\n if (agreements.length > 0) {\n for (const msg of agreements) {\n log(`⚠ ${msg.subject}: ${msg.message.replace(/<[^>]+>/g, \"\")}`);\n }\n }\n session.pendingAgreements = agreements;\n\n log(`Logged in as ${session.userEmail}`);\n return session;\n}\n\n// ── SIRP Auth (1:1 port of Spaceship::Client#do_sirp) ──────────────────────\n\nasync function doSirp(\n user: string, password: string, serviceKey: string, cookieStr: string, hashcash?: string\n): Promise<{ status: number; body: any; cookies: Record<string, string>; sessionId: string; scnt: string }> {\n const client = new SRPClient(2048);\n const A = client.startAuthentication();\n const aBase64 = Buffer.from(A, \"hex\").toString(\"base64\");\n\n const baseHeaders: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"X-Apple-Widget-Key\": serviceKey,\n Accept: \"application/json, text/javascript\",\n };\n if (cookieStr) baseHeaders[\"Cookie\"] = cookieStr;\n\n // Step 1: signin/init\n const initRes = await fetch(`${AUTH_BASE}/signin/init`, {\n method: \"POST\",\n headers: baseHeaders,\n body: JSON.stringify({ a: aBase64, accountName: user, protocols: [\"s2k\", \"s2k_fo\"] }),\n redirect: \"manual\",\n });\n const initBody = await initRes.json() as any;\n if (initBody.serviceErrors) throw new Error(`Apple auth error: ${JSON.stringify(initBody.serviceErrors)}`);\n\n const { iteration: iterations, salt: saltB64, b: bB64, c, protocol } = initBody;\n const salt = Buffer.from(saltB64, \"base64\");\n const b = Buffer.from(bB64, \"base64\");\n\n // Derive password (mirrors Spaceship::Client#pbkdf2)\n const encryptedPassword = applePbkdf2(password, salt, iterations, 32, protocol);\n\n // Process SRP challenge\n const m1 = client.processChallenge(user, encryptedPassword.toString(\"hex\"), salt.toString(\"hex\"), b.toString(\"hex\"), true);\n if (m1 === false) throw new Error(\"Error processing SIRP challenge\");\n const m2 = client.H_AMK;\n\n // Step 2: signin/complete\n const completeHeaders = { ...baseHeaders };\n if (hashcash) completeHeaders[\"X-Apple-HC\"] = hashcash;\n\n const completeRes = await fetch(`${AUTH_BASE}/signin/complete?isRememberMeEnabled=false`, {\n method: \"POST\",\n headers: completeHeaders,\n body: JSON.stringify({\n accountName: user,\n c,\n m1: Buffer.from(m1, \"hex\").toString(\"base64\"),\n m2: m2 ? Buffer.from(m2, \"hex\").toString(\"base64\") : \"\",\n rememberMe: false,\n }),\n redirect: \"manual\",\n });\n\n let body: any;\n try { body = await completeRes.json(); } catch { body = \"\"; }\n\n return {\n status: completeRes.status,\n body,\n cookies: parseCookies(completeRes.headers),\n sessionId: completeRes.headers.get(\"x-apple-id-session-id\") ?? \"\",\n scnt: completeRes.headers.get(\"scnt\") ?? \"\",\n };\n}\n\n// ── 2FA (mirrors two_step_or_factor_client.rb) ─────────────────────────────\n\nasync function handleTwoStepOrFactor(\n session: AppleSession, log: (msg: string) => void, promptFn: (msg: string) => Promise<string>\n): Promise<void> {\n const r = await fetch(`${AUTH_BASE}`, { headers: buildAuthHeaders(session) });\n const body = await r.json() as any;\n\n if (body.trustedDevices?.length > 0) {\n await handleTwoStep(session, body, log, promptFn);\n } else if (body.trustedPhoneNumbers?.length > 0) {\n await handleTwoFactor(session, body, log, promptFn);\n } else {\n throw new Error(\"2FA required but no trusted devices or phone numbers found.\");\n }\n}\n\nasync function handleTwoFactor(\n session: AppleSession, authBody: any, log: (msg: string) => void, promptFn: (msg: string) => Promise<string>\n): Promise<void> {\n log(\"Two-factor Authentication (6 digit code) is enabled for this account\");\n const codeLength = authBody.securityCode?.length ?? 6;\n const phones: any[] = authBody.trustedPhoneNumbers ?? [];\n const noTrusted = authBody.noTrustedDevices === true;\n\n let codeType: string;\n let reqBody: string;\n\n if (noTrusted && phones.length === 1) {\n const phone = phones[0];\n log(`Code automatically sent to ${phone.numberWithDialCode}`);\n const code = await promptFn(`Please enter the ${codeLength} digit code you received at ${phone.numberWithDialCode}: `);\n codeType = \"phone\";\n reqBody = JSON.stringify({ securityCode: { code }, phoneNumber: { id: phone.id }, mode: phone.pushMode ?? \"sms\" });\n } else if (noTrusted) {\n const phone = await choosePhone(phones, log, promptFn);\n await requestPhoneCode(session, phone);\n log(`Successfully requested text message to ${phone.numberWithDialCode}`);\n const code = await promptFn(`Please enter the ${codeLength} digit code: `);\n codeType = \"phone\";\n reqBody = JSON.stringify({ securityCode: { code }, phoneNumber: { id: phone.id }, mode: phone.pushMode ?? \"sms\" });\n } else {\n log(\"(Input 'sms' to escape this prompt and select a trusted phone number to send the code as a text message)\");\n const input = await promptFn(`Please enter the ${codeLength} digit code: `);\n if (input.toLowerCase() === \"sms\") {\n const phone = await choosePhone(phones, log, promptFn);\n await requestPhoneCode(session, phone);\n const code = await promptFn(`Please enter the ${codeLength} digit code sent to ${phone.numberWithDialCode}: `);\n codeType = \"phone\";\n reqBody = JSON.stringify({ securityCode: { code }, phoneNumber: { id: phone.id }, mode: phone.pushMode ?? \"sms\" });\n } else {\n codeType = \"trusteddevice\";\n reqBody = JSON.stringify({ securityCode: { code: input } });\n }\n }\n\n log(\"Requesting session...\");\n const verifyRes = await fetch(`${AUTH_BASE}/verify/${codeType}/securitycode`, {\n method: \"POST\",\n headers: { ...buildAuthHeaders(session), \"Content-Type\": \"application/json\" },\n body: reqBody,\n });\n if (!verifyRes.ok) {\n const err = await verifyRes.json().catch(() => ({})) as any;\n const msgs = (err?.service_errors ?? err?.serviceErrors ?? []).map((e: any) => e.message).filter(Boolean);\n throw new Error(msgs.join(\"; \") || `Verification failed (${verifyRes.status})`);\n }\n Object.assign(session.cookies, parseCookies(verifyRes.headers));\n await trustSession(session);\n}\n\nasync function handleTwoStep(\n session: AppleSession, authBody: any, log: (msg: string) => void, promptFn: (msg: string) => Promise<string>\n): Promise<void> {\n log(\"Two-step Verification (4 digit code) is enabled for this account\");\n const devices: any[] = authBody.trustedDevices ?? [];\n log(\"Please select a trusted device:\");\n for (let i = 0; i < devices.length; i++) {\n log(` ${i + 1}. ${devices[i].name}\\t${devices[i].modelName ?? \"SMS\"}\\t(${devices[i].id})`);\n }\n const choice = await promptFn(\"Enter device number: \");\n const device = devices[Math.max(0, parseInt(choice, 10) - 1)] ?? devices[0];\n\n await fetch(`${AUTH_BASE}/verify/device/${device.id}/securitycode`, { method: \"PUT\", headers: buildAuthHeaders(session) });\n log(\"Successfully requested notification\");\n const code = await promptFn(\"Please enter the 4 digit code: \");\n\n const verifyRes = await fetch(`${AUTH_BASE}/verify/phone/securitycode`, {\n method: \"POST\",\n headers: { ...buildAuthHeaders(session), \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ phoneNumber: { id: device.id }, securityCode: { code }, mode: \"sms\" }),\n });\n if (!verifyRes.ok) throw new Error(\"Incorrect verification code.\");\n Object.assign(session.cookies, parseCookies(verifyRes.headers));\n await trustSession(session);\n}\n\n// ── Helpers ────────────────────────────────────────────────────────────────\n\nasync function choosePhone(phones: any[], log: (msg: string) => void, promptFn: (msg: string) => Promise<string>) {\n log(\"Please select a trusted phone number:\");\n for (let i = 0; i < phones.length; i++) log(` ${i + 1}. ${phones[i].numberWithDialCode}`);\n const choice = await promptFn(\"Enter number: \");\n return phones[Math.max(0, parseInt(choice, 10) - 1)] ?? phones[0];\n}\n\nasync function requestPhoneCode(session: AppleSession, phone: any): Promise<void> {\n await fetch(`${AUTH_BASE}/verify/phone`, {\n method: \"PUT\",\n headers: { ...buildAuthHeaders(session), \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ phoneNumber: { id: phone.id }, mode: phone.pushMode ?? \"sms\" }),\n });\n}\n\nasync function trustSession(session: AppleSession): Promise<void> {\n const r = await fetch(`${AUTH_BASE}/2sv/trust`, { headers: buildAuthHeaders(session) });\n Object.assign(session.cookies, parseCookies(r.headers));\n}\n\nasync function fetchOlympusSession(session: AppleSession): Promise<void> {\n const cookieStr = Object.entries(session.cookies).map(([k, v]) => `${k}=${v}`).join(\"; \");\n const res = await fetch(OLYMPUS_SESSION, { headers: { Cookie: cookieStr, Accept: \"application/json\" } });\n if (res.ok) {\n const body = await res.json() as any;\n if (body?.user?.emailAddress) session.userEmail = body.user.emailAddress;\n if (body?.provider?.providerId) session.teamId = String(body.provider.providerId);\n }\n}\n\n// ── Contract Messages (mirrors fetch_program_license_agreement_messages) ────\n\nasync function fetchContractMessages(session: AppleSession): Promise<ContractMessage[]> {\n const cookieStr = Object.entries(session.cookies).map(([k, v]) => `${k}=${v}`).join(\"; \");\n try {\n const res = await fetch(\"https://appstoreconnect.apple.com/olympus/v1/contractMessages\", {\n headers: { Cookie: cookieStr, Accept: \"application/json\" },\n });\n if (!res.ok) return [];\n const body = await res.json() as any[];\n return (body ?? []).map((m: any) => ({\n id: m.id ?? \"\",\n group: m.group ?? \"\",\n subject: m.subject ?? \"\",\n message: m.message ?? \"\",\n }));\n } catch {\n return [];\n }\n}\n\nasync function fetchServiceKey(): Promise<string> {\n const res = await fetch(WIDGET_KEY_URL);\n const body = await res.json() as any;\n if (!body?.authServiceKey) throw new Error(\"Could not fetch Apple service key\");\n return body.authServiceKey as string;\n}\n\nfunction buildAuthHeaders(session: AppleSession): Record<string, string> {\n const h: Record<string, string> = { \"X-Apple-Widget-Key\": session.serviceKey, Accept: \"application/json\" };\n if (session.sessionId) h[\"X-Apple-Id-Session-Id\"] = session.sessionId;\n if (session.scnt) h[\"scnt\"] = session.scnt;\n const c = Object.entries(session.cookies).map(([k, v]) => `${k}=${v}`).join(\"; \");\n if (c) h[\"Cookie\"] = c;\n return h;\n}\n\nfunction parseCookies(headers: Headers): Record<string, string> {\n const cookies: Record<string, string> = {};\n for (const raw of headers.getSetCookie?.() ?? []) {\n const m = raw.match(/^([^=]+)=([^;]*)/);\n if (m) cookies[m[1]] = m[2];\n }\n return cookies;\n}\n\nfunction computeHashcash(bits: number, challenge: string): string {\n const date = new Date().toISOString().replace(/[-:T]/g, \"\").slice(0, 12);\n let counter = 0;\n while (true) {\n const stamp = `1:${bits}:${date}:${challenge}::${counter.toString(36)}:`;\n const hash = createHash(\"sha1\").update(stamp).digest();\n let zeroBits = 0;\n for (const byte of hash) {\n if (byte === 0) { zeroBits += 8; } else { zeroBits += Math.clz32(byte) - 24; break; }\n if (zeroBits >= bits) break;\n }\n if (zeroBits >= bits) return stamp;\n counter++;\n }\n}\n\nasync function defaultPrompt(message: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((r) => { rl.question(message, (a) => { rl.close(); r(a.trim()); }); });\n}\n","import type { TokenManager } from \"./auth.js\";\nimport { ProgramLicenseAgreementError } from \"./apple-session.js\";\nimport type {\n JsonApiErrorResponse,\n JsonApiListResponse,\n JsonApiResponse,\n ListParams,\n RequestOptions,\n} from \"./types.js\";\n\nconst PRODUCTION_BASE = \"https://api.appstoreconnect.apple.com\";\nconst ENTERPRISE_BASE = \"https://api.enterprise.developer.apple.com\";\n\nconst MAX_RETRIES = 5;\nconst INITIAL_BACKOFF_MS = 1000;\nconst MAX_BACKOFF_MS = 60_000;\n/** Fastlane's TooManyRequestsError gives up after 3600s cumulative backoff. */\nconst MAX_RATE_LIMIT_BACKOFF_MS = 3_600_000;\n\nexport class AppStoreConnectError extends Error {\n constructor(\n message: string,\n public status: number,\n public errors: JsonApiErrorResponse[\"errors\"] = []\n ) {\n super(message);\n this.name = \"AppStoreConnectError\";\n }\n}\n\nexport class RateLimitError extends AppStoreConnectError {\n constructor(public retryAfter: number) {\n super(`Rate limited. Retry after ${retryAfter}s`, 429);\n this.name = \"RateLimitError\";\n }\n}\n\nexport class RequestClient {\n private baseUrl: string;\n private tokenManager: TokenManager;\n\n constructor(tokenManager: TokenManager, enterprise = false) {\n this.tokenManager = tokenManager;\n this.baseUrl = enterprise ? ENTERPRISE_BASE : PRODUCTION_BASE;\n }\n\n async request<T>(path: string, options: RequestOptions = {}): Promise<T> {\n const { method = \"GET\", body, params, headers: extraHeaders } = options;\n\n let url = `${this.baseUrl}${path}`;\n if (params) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n searchParams.set(key, value.join(\",\"));\n } else {\n searchParams.set(key, String(value));\n }\n }\n const qs = searchParams.toString();\n if (qs) url += `?${qs}`;\n }\n\n let lastError: Error | null = null;\n // Soft-cumulative backoff for 429 that doubles on each hit, mirroring\n // Fastlane's Spaceship::ConnectAPI::APIClient#with_asc_retry 429 handler:\n // `Kernel.sleep(backoff); backoff *= 2`, giving up past 3600s.\n let rateLimitBackoffMs = INITIAL_BACKOFF_MS;\n\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n const token = await this.tokenManager.getToken();\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n ...extraHeaders,\n };\n\n const res = await fetch(url, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (res.ok) {\n if (res.status === 204) return undefined as T;\n return (await res.json()) as T;\n }\n\n // Handle 401 — refresh token and retry once\n if (res.status === 401 && attempt === 0) {\n this.tokenManager.invalidate();\n continue;\n }\n\n // Handle 429 — rate limit. Prefer server's Retry-After header when\n // provided, otherwise fall back to Fastlane's doubling backoff.\n if (res.status === 429) {\n if (rateLimitBackoffMs > MAX_RATE_LIMIT_BACKOFF_MS) {\n throw new RateLimitError(Math.floor(rateLimitBackoffMs / 1000));\n }\n const retryAfterHeader = res.headers.get(\"Retry-After\");\n const sleepMs = retryAfterHeader\n ? parseInt(retryAfterHeader, 10) * 1000\n : rateLimitBackoffMs;\n await sleep(sleepMs);\n rateLimitBackoffMs *= 2;\n continue;\n }\n\n // Parse error body early so we can inspect it for 403/502 special cases.\n const errorBody = await res.json().catch(() => null);\n const errors = (errorBody as JsonApiErrorResponse)?.errors || [];\n\n // Handle 403 — detect missing/expired program license agreement.\n // Mirrors api_client.rb's ProgramLicenseAgreementUpdated branch.\n if (res.status === 403) {\n const firstCode = errors[0]?.code;\n if (firstCode === \"FORBIDDEN.REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED\") {\n const detail =\n errors.map((e) => e.detail || e.title).join(\"; \") ||\n \"Required agreements are missing or expired.\";\n throw new ProgramLicenseAgreementError(\n `${detail} Please manually log into your Apple Developer account to review and accept the updated agreement.`,\n []\n );\n }\n }\n\n // Handle 502 — special-case \"Could not process this request\" retry.\n // Mirrors api_client.rb's BadGatewayError branch (issue fastlane#19264).\n if (res.status === 502 && attempt < MAX_RETRIES) {\n const bodyText = errorBody ? JSON.stringify(errorBody) : \"\";\n if (bodyText.includes(\"Could not process this request\")) {\n const backoff = Math.min(\n INITIAL_BACKOFF_MS * Math.pow(2, attempt),\n MAX_BACKOFF_MS\n );\n await sleep(backoff + Math.random() * 500);\n continue;\n }\n }\n\n // Handle 5xx — retry with exponential backoff\n if (res.status >= 500 && attempt < MAX_RETRIES) {\n const backoff = Math.min(\n INITIAL_BACKOFF_MS * Math.pow(2, attempt),\n MAX_BACKOFF_MS\n );\n await sleep(backoff + Math.random() * 500);\n continue;\n }\n\n const detail = errors.map((e) => e.detail || e.title).join(\"; \") || `HTTP ${res.status}`;\n\n lastError = new AppStoreConnectError(detail, res.status, errors);\n break;\n }\n\n throw lastError || new Error(\"Request failed after retries\");\n }\n\n async get<T>(path: string, params?: Record<string, string | string[] | number | undefined>): Promise<T> {\n return this.request<T>(path, { method: \"GET\", params });\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"POST\", body });\n }\n\n async patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(path, { method: \"PATCH\", body });\n }\n\n async delete(path: string): Promise<void> {\n await this.request(path, { method: \"DELETE\" });\n }\n\n // Build query params from ListParams\n buildListParams(params: ListParams): Record<string, string | undefined> {\n const result: Record<string, string | undefined> = {};\n\n if (params.filter) {\n for (const [key, value] of Object.entries(params.filter)) {\n result[`filter[${key}]`] = Array.isArray(value) ? value.join(\",\") : value;\n }\n }\n\n if (params.include) {\n result[\"include\"] = params.include;\n }\n\n if (params.fields) {\n for (const [key, value] of Object.entries(params.fields)) {\n result[`fields[${key}]`] = value;\n }\n }\n\n if (params.limit !== undefined) {\n result[\"limit\"] = String(params.limit);\n }\n\n if (params.sort) {\n result[\"sort\"] = params.sort;\n }\n\n if (params.cursor) {\n // ASC uses page[after] for cursor pagination\n result[\"page[after]\"] = params.cursor;\n }\n\n return result;\n }\n\n async list<T>(path: string, params: ListParams = {}): Promise<JsonApiListResponse<T>> {\n const queryParams = this.buildListParams(params);\n return this.get<JsonApiListResponse<T>>(path, queryParams);\n }\n\n async *paginate<T>(path: string, params: ListParams = {}): AsyncGenerator<T, void, undefined> {\n let cursor: string | undefined = params.cursor;\n\n while (true) {\n const response = await this.list<T>(path, { ...params, cursor });\n\n for (const item of response.data) {\n yield item;\n }\n\n // Check for next page\n const nextLink = response.links?.next;\n if (!nextLink) break;\n\n // Extract cursor from next link\n const nextUrl = new URL(nextLink);\n cursor = nextUrl.searchParams.get(\"page[after]\") || undefined;\n if (!cursor) break;\n }\n }\n\n async all<T>(path: string, params: ListParams = {}): Promise<T[]> {\n const results: T[] = [];\n for await (const item of this.paginate<T>(path, params)) {\n results.push(item);\n }\n return results;\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiListResponse, JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { Certificate } from \"../types/certificate.js\";\nimport type { CertificateType } from \"../types/enums.js\";\n\nexport class CertificatesResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n certificateType?: CertificateType | CertificateType[];\n serialNumber?: string;\n displayName?: string;\n id?: string | string[];\n };\n fields?: string[];\n limit?: number;\n sort?: string;\n }): Promise<Certificate[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = { certificates: params.fields.join(\",\") };\n }\n return this.http.all<Certificate>(\"/v1/certificates\", listParams);\n }\n\n async get(id: string): Promise<Certificate> {\n const response = await this.http.get<JsonApiResponse<Certificate>>(\n `/v1/certificates/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n certificateType: CertificateType;\n csrContent: string;\n }): Promise<Certificate> {\n const response = await this.http.post<JsonApiResponse<Certificate>>(\n \"/v1/certificates\",\n {\n data: {\n type: \"certificates\",\n attributes: {\n certificateType: params.certificateType,\n csrContent: params.csrContent,\n },\n },\n }\n );\n return response.data;\n }\n\n async revoke(id: string): Promise<void> {\n await this.http.delete(`/v1/certificates/${id}`);\n }\n\n async *paginate(params?: {\n filter?: {\n certificateType?: CertificateType | CertificateType[];\n };\n limit?: number;\n }): AsyncGenerator<Certificate> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n limit: params?.limit ?? 200,\n };\n yield* this.http.paginate<Certificate>(\"/v1/certificates\", listParams);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { Profile } from \"../types/profile.js\";\nimport type { Certificate } from \"../types/certificate.js\";\nimport type { Device } from \"../types/device.js\";\nimport type { BundleId } from \"../types/bundle-id.js\";\nimport type { ProfileType, ProfileState } from \"../types/enums.js\";\n\nexport class ProfilesResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n profileType?: ProfileType | ProfileType[];\n profileState?: ProfileState;\n name?: string;\n id?: string | string[];\n };\n include?: string;\n fields?: { profiles?: string[]; certificates?: string[]; devices?: string[]; bundleIds?: string[] };\n limit?: number;\n sort?: string;\n }): Promise<Profile[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = {};\n for (const [key, value] of Object.entries(params.fields)) {\n if (value) listParams.fields[key] = value.join(\",\");\n }\n }\n return this.http.all<Profile>(\"/v1/profiles\", listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<Profile> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<Profile>>(\n `/v1/profiles/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async create(params: {\n name: string;\n profileType: ProfileType;\n bundleIdId: string;\n certificateIds: string[];\n deviceIds?: string[];\n }): Promise<Profile> {\n const relationships: Record<string, unknown> = {\n bundleId: {\n data: { type: \"bundleIds\", id: params.bundleIdId },\n },\n certificates: {\n data: params.certificateIds.map((id) => ({\n type: \"certificates\",\n id,\n })),\n },\n };\n\n if (params.deviceIds && params.deviceIds.length > 0) {\n relationships.devices = {\n data: params.deviceIds.map((id) => ({\n type: \"devices\",\n id,\n })),\n };\n }\n\n const response = await this.http.post<JsonApiResponse<Profile>>(\n \"/v1/profiles\",\n {\n data: {\n type: \"profiles\",\n attributes: {\n name: params.name,\n profileType: params.profileType,\n },\n relationships,\n },\n }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/profiles/${id}`);\n }\n\n async getCertificates(profileId: string): Promise<Certificate[]> {\n return this.http.all<Certificate>(\n `/v1/profiles/${profileId}/certificates`\n );\n }\n\n async getDevices(profileId: string): Promise<Device[]> {\n return this.http.all<Device>(`/v1/profiles/${profileId}/devices`);\n }\n\n async getBundleId(profileId: string): Promise<BundleId> {\n const response = await this.http.get<JsonApiResponse<BundleId>>(\n `/v1/profiles/${profileId}/bundleId`\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { BundleId } from \"../types/bundle-id.js\";\nimport type { BundleIdCapability } from \"../types/capability.js\";\nimport type { BundleIdPlatform } from \"../types/enums.js\";\n\nexport class BundleIdsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n identifier?: string;\n name?: string;\n platform?: BundleIdPlatform;\n seedId?: string;\n id?: string | string[];\n };\n include?: string;\n fields?: { bundleIds?: string[]; bundleIdCapabilities?: string[] };\n limit?: number;\n sort?: string;\n }): Promise<BundleId[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = {};\n for (const [key, value] of Object.entries(params.fields)) {\n if (value) listParams.fields[key] = value.join(\",\");\n }\n }\n return this.http.all<BundleId>(\"/v1/bundleIds\", listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<BundleId> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<BundleId>>(\n `/v1/bundleIds/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async create(params: {\n identifier: string;\n name: string;\n platform: BundleIdPlatform;\n seedId?: string;\n }): Promise<BundleId> {\n const attributes: Record<string, unknown> = {\n identifier: params.identifier,\n name: params.name,\n platform: params.platform,\n };\n if (params.seedId) attributes.seedId = params.seedId;\n\n const response = await this.http.post<JsonApiResponse<BundleId>>(\n \"/v1/bundleIds\",\n {\n data: {\n type: \"bundleIds\",\n attributes,\n },\n }\n );\n return response.data;\n }\n\n async find(identifier: string): Promise<BundleId | null> {\n const results = await this.list({\n filter: { identifier },\n limit: 1,\n });\n return results[0] ?? null;\n }\n\n async getCapabilities(bundleIdId: string): Promise<BundleIdCapability[]> {\n return this.http.all<BundleIdCapability>(\n `/v1/bundleIds/${bundleIdId}/bundleIdCapabilities`\n );\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { Device } from \"../types/device.js\";\nimport type { DeviceStatus, Platform } from \"../types/enums.js\";\n\nexport class DevicesResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n name?: string;\n platform?: Platform | Platform[];\n status?: DeviceStatus;\n udid?: string;\n id?: string | string[];\n };\n fields?: string[];\n limit?: number;\n sort?: string;\n }): Promise<Device[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = { devices: params.fields.join(\",\") };\n }\n return this.http.all<Device>(\"/v1/devices\", listParams);\n }\n\n async get(id: string): Promise<Device> {\n const response = await this.http.get<JsonApiResponse<Device>>(\n `/v1/devices/${id}`\n );\n return response.data;\n }\n\n async register(params: {\n name: string;\n platform: Platform;\n udid: string;\n }): Promise<Device> {\n const response = await this.http.post<JsonApiResponse<Device>>(\n \"/v1/devices\",\n {\n data: {\n type: \"devices\",\n attributes: {\n name: params.name,\n platform: params.platform,\n udid: params.udid,\n },\n },\n }\n );\n return response.data;\n }\n\n async update(\n id: string,\n params: { name?: string; status?: DeviceStatus }\n ): Promise<Device> {\n const response = await this.http.patch<JsonApiResponse<Device>>(\n `/v1/devices/${id}`,\n {\n data: {\n type: \"devices\",\n id,\n attributes: params,\n },\n }\n );\n return response.data;\n }\n\n async findByUdid(udid: string): Promise<Device | null> {\n const results = await this.list({ filter: { udid }, limit: 1 });\n return results[0] ?? null;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { App } from \"../types/app.js\";\n\nexport class AppsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n bundleId?: string;\n name?: string;\n sku?: string;\n id?: string | string[];\n };\n include?: string;\n fields?: { apps?: string[] };\n limit?: number;\n sort?: string;\n }): Promise<App[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = {};\n for (const [key, value] of Object.entries(params.fields)) {\n if (value) listParams.fields[key] = value.join(\",\");\n }\n }\n return this.http.all<App>(\"/v1/apps\", listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<App> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<App>>(\n `/v1/apps/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async findByBundleId(bundleId: string): Promise<App | null> {\n const results = await this.list({\n filter: { bundleId },\n limit: 1,\n });\n return results[0] ?? null;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiListResponse, JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type {\n Build,\n BetaBuildLocalization,\n BuildBetaDetail,\n PreReleaseVersion,\n} from \"../types/build.js\";\n\nexport class BuildsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n app?: string;\n version?: string;\n processingState?: string;\n \"preReleaseVersion.version\"?: string;\n expired?: string;\n id?: string | string[];\n };\n include?: string;\n fields?: { builds?: string[] };\n limit?: number;\n sort?: string;\n }): Promise<Build[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = {};\n for (const [key, value] of Object.entries(params.fields)) {\n if (value) listParams.fields[key] = value.join(\",\");\n }\n }\n return this.http.all<Build>(\"/v1/builds\", listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<Build> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<Build>>(\n `/v1/builds/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async getBetaDetail(buildId: string): Promise<BuildBetaDetail> {\n const response = await this.http.get<JsonApiResponse<BuildBetaDetail>>(\n `/v1/builds/${buildId}/buildBetaDetail`\n );\n return response.data;\n }\n\n async getLocalizations(buildId: string): Promise<BetaBuildLocalization[]> {\n return this.http.all<BetaBuildLocalization>(\n `/v1/builds/${buildId}/betaBuildLocalizations`\n );\n }\n\n async createLocalization(params: {\n buildId: string;\n locale: string;\n whatsNew: string;\n }): Promise<BetaBuildLocalization> {\n const response = await this.http.post<\n JsonApiResponse<BetaBuildLocalization>\n >(\"/v1/betaBuildLocalizations\", {\n data: {\n type: \"betaBuildLocalizations\",\n attributes: {\n locale: params.locale,\n whatsNew: params.whatsNew,\n },\n relationships: {\n build: {\n data: { type: \"builds\", id: params.buildId },\n },\n },\n },\n });\n return response.data;\n }\n\n async updateLocalization(\n localizationId: string,\n params: { whatsNew: string }\n ): Promise<BetaBuildLocalization> {\n const response = await this.http.patch<\n JsonApiResponse<BetaBuildLocalization>\n >(`/v1/betaBuildLocalizations/${localizationId}`, {\n data: {\n type: \"betaBuildLocalizations\",\n id: localizationId,\n attributes: {\n whatsNew: params.whatsNew,\n },\n },\n });\n return response.data;\n }\n\n async getPreReleaseVersion(buildId: string): Promise<PreReleaseVersion | null> {\n try {\n const response = await this.http.get<JsonApiResponse<PreReleaseVersion>>(\n `/v1/builds/${buildId}/preReleaseVersion`\n );\n return response.data;\n } catch {\n return null;\n }\n }\n\n async submitForBetaReview(buildId: string): Promise<void> {\n await this.http.post(\"/v1/betaAppReviewSubmissions\", {\n data: {\n type: \"betaAppReviewSubmissions\",\n relationships: {\n build: {\n data: { type: \"builds\", id: buildId },\n },\n },\n },\n });\n }\n\n async expireBuild(buildId: string): Promise<void> {\n await this.http.patch(`/v1/builds/${buildId}`, {\n data: {\n type: \"builds\",\n id: buildId,\n attributes: {\n expired: true,\n },\n },\n });\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { BetaGroup } from \"../types/build.js\";\n\nexport class BetaGroupsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n app?: string;\n name?: string;\n isInternalGroup?: string;\n id?: string | string[];\n };\n fields?: string[];\n limit?: number;\n sort?: string;\n }): Promise<BetaGroup[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n if (params?.fields) {\n listParams.fields = { betaGroups: params.fields.join(\",\") };\n }\n return this.http.all<BetaGroup>(\"/v1/betaGroups\", listParams);\n }\n\n async get(id: string): Promise<BetaGroup> {\n const response = await this.http.get<JsonApiResponse<BetaGroup>>(\n `/v1/betaGroups/${id}`\n );\n return response.data;\n }\n\n async listForApp(appId: string): Promise<BetaGroup[]> {\n return this.http.all<BetaGroup>(`/v1/apps/${appId}/betaGroups`);\n }\n\n async addBuilds(groupId: string, buildIds: string[]): Promise<void> {\n await this.http.post(`/v1/betaGroups/${groupId}/relationships/builds`, {\n data: buildIds.map((id) => ({ type: \"builds\", id })),\n });\n }\n\n async removeBuilds(groupId: string, buildIds: string[]): Promise<void> {\n await this.http.request(\n `/v1/betaGroups/${groupId}/relationships/builds`,\n {\n method: \"DELETE\",\n body: {\n data: buildIds.map((id) => ({ type: \"builds\", id })),\n },\n }\n );\n }\n\n async findByName(appId: string, name: string): Promise<BetaGroup | null> {\n const groups = await this.listForApp(appId);\n return groups.find((g) => g.attributes.name === name) ?? null;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse } from \"../client/types.js\";\nimport type {\n BundleIdCapability,\n CapabilitySettingInput,\n} from \"../types/capability.js\";\nimport type { CapabilityType } from \"../types/enums.js\";\n\nexport class CapabilitiesResource {\n constructor(private http: RequestClient) {}\n\n async listForBundleId(bundleIdId: string): Promise<BundleIdCapability[]> {\n return this.http.all<BundleIdCapability>(\n `/v1/bundleIds/${bundleIdId}/bundleIdCapabilities`\n );\n }\n\n async enable(params: {\n bundleIdId: string;\n capabilityType: CapabilityType;\n settings?: CapabilitySettingInput[];\n }): Promise<BundleIdCapability> {\n const attributes: Record<string, unknown> = {\n capabilityType: params.capabilityType,\n };\n if (params.settings) {\n attributes.settings = params.settings;\n }\n\n const response = await this.http.post<\n JsonApiResponse<BundleIdCapability>\n >(\"/v1/bundleIdCapabilities\", {\n data: {\n type: \"bundleIdCapabilities\",\n attributes,\n relationships: {\n bundleId: {\n data: { type: \"bundleIds\", id: params.bundleIdId },\n },\n },\n },\n });\n return response.data;\n }\n\n async update(\n capabilityId: string,\n params: {\n capabilityType: CapabilityType;\n settings?: CapabilitySettingInput[];\n }\n ): Promise<BundleIdCapability> {\n const attributes: Record<string, unknown> = {\n capabilityType: params.capabilityType,\n };\n if (params.settings) {\n attributes.settings = params.settings;\n }\n\n const response = await this.http.patch<\n JsonApiResponse<BundleIdCapability>\n >(`/v1/bundleIdCapabilities/${capabilityId}`, {\n data: {\n type: \"bundleIdCapabilities\",\n id: capabilityId,\n attributes,\n },\n });\n return response.data;\n }\n\n async disable(capabilityId: string): Promise<void> {\n await this.http.delete(`/v1/bundleIdCapabilities/${capabilityId}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse, ListParams } from \"../client/types.js\";\nimport type { AppStoreVersionState, Platform, ReleaseType } from \"../types/enums.js\";\n\nexport interface AppStoreVersion {\n id: string;\n type: \"appStoreVersions\";\n attributes: {\n platform: Platform;\n versionString: string;\n appStoreState: AppStoreVersionState;\n copyright: string | null;\n releaseType: ReleaseType | null;\n earliestReleaseDate: string | null;\n downloadable: boolean;\n createdDate: string;\n };\n relationships?: {\n app?: { data: { type: \"apps\"; id: string } };\n build?: { data: { type: \"builds\"; id: string } | null };\n appStoreVersionLocalizations?: {\n data: Array<{ type: \"appStoreVersionLocalizations\"; id: string }>;\n };\n };\n}\n\nexport interface AppStoreVersionLocalization {\n id: string;\n type: \"appStoreVersionLocalizations\";\n attributes: {\n description: string | null;\n locale: string;\n keywords: string | null;\n marketingUrl: string | null;\n promotionalText: string | null;\n supportUrl: string | null;\n whatsNew: string | null;\n };\n}\n\nexport class AppStoreVersionsResource {\n constructor(private http: RequestClient) {}\n\n async listForApp(\n appId: string,\n params?: {\n filter?: { appStoreState?: AppStoreVersionState | AppStoreVersionState[]; platform?: Platform };\n include?: string;\n limit?: number;\n }\n ): Promise<AppStoreVersion[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n };\n return this.http.all<AppStoreVersion>(\n `/v1/apps/${appId}/appStoreVersions`,\n listParams\n );\n }\n\n async get(id: string, params?: { include?: string }): Promise<AppStoreVersion> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<AppStoreVersion>>(\n `/v1/appStoreVersions/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async create(params: {\n appId: string;\n versionString: string;\n platform: Platform;\n releaseType?: ReleaseType;\n earliestReleaseDate?: string;\n copyright?: string;\n }): Promise<AppStoreVersion> {\n const attributes: Record<string, unknown> = {\n versionString: params.versionString,\n platform: params.platform,\n };\n if (params.releaseType) attributes.releaseType = params.releaseType;\n if (params.earliestReleaseDate) attributes.earliestReleaseDate = params.earliestReleaseDate;\n if (params.copyright) attributes.copyright = params.copyright;\n\n const response = await this.http.post<JsonApiResponse<AppStoreVersion>>(\n \"/v1/appStoreVersions\",\n {\n data: {\n type: \"appStoreVersions\",\n attributes,\n relationships: {\n app: {\n data: { type: \"apps\", id: params.appId },\n },\n },\n },\n }\n );\n return response.data;\n }\n\n async update(\n id: string,\n params: {\n versionString?: string;\n copyright?: string;\n releaseType?: ReleaseType;\n earliestReleaseDate?: string | null;\n }\n ): Promise<AppStoreVersion> {\n const response = await this.http.patch<JsonApiResponse<AppStoreVersion>>(\n `/v1/appStoreVersions/${id}`,\n {\n data: {\n type: \"appStoreVersions\",\n id,\n attributes: params,\n },\n }\n );\n return response.data;\n }\n\n async setBuild(versionId: string, buildId: string): Promise<void> {\n await this.http.patch(`/v1/appStoreVersions/${versionId}/relationships/build`, {\n data: { type: \"builds\", id: buildId },\n });\n }\n\n async getLocalizations(versionId: string): Promise<AppStoreVersionLocalization[]> {\n return this.http.all<AppStoreVersionLocalization>(\n `/v1/appStoreVersions/${versionId}/appStoreVersionLocalizations`\n );\n }\n\n async createLocalization(params: {\n versionId: string;\n locale: string;\n description?: string;\n keywords?: string;\n marketingUrl?: string;\n promotionalText?: string;\n supportUrl?: string;\n whatsNew?: string;\n }): Promise<AppStoreVersionLocalization> {\n const { versionId, ...attributes } = params;\n const response = await this.http.post<\n JsonApiResponse<AppStoreVersionLocalization>\n >(\"/v1/appStoreVersionLocalizations\", {\n data: {\n type: \"appStoreVersionLocalizations\",\n attributes,\n relationships: {\n appStoreVersion: {\n data: { type: \"appStoreVersions\", id: versionId },\n },\n },\n },\n });\n return response.data;\n }\n\n async updateLocalization(\n localizationId: string,\n params: {\n description?: string;\n keywords?: string;\n marketingUrl?: string;\n promotionalText?: string;\n supportUrl?: string;\n whatsNew?: string;\n }\n ): Promise<AppStoreVersionLocalization> {\n const response = await this.http.patch<\n JsonApiResponse<AppStoreVersionLocalization>\n >(`/v1/appStoreVersionLocalizations/${localizationId}`, {\n data: {\n type: \"appStoreVersionLocalizations\",\n id: localizationId,\n attributes: params,\n },\n });\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse } from \"../client/types.js\";\n\nexport interface AppScreenshotSet {\n id: string;\n type: \"appScreenshotSets\";\n attributes: {\n screenshotDisplayType: string;\n };\n}\n\nexport interface AppScreenshot {\n id: string;\n type: \"appScreenshots\";\n attributes: {\n fileSize: number;\n fileName: string;\n sourceFileChecksum: string | null;\n imageAsset: {\n templateUrl: string;\n width: number;\n height: number;\n } | null;\n assetToken: string | null;\n assetType: string | null;\n uploadOperations: UploadOperation[] | null;\n assetDeliveryState: {\n state: string;\n errors: unknown[];\n } | null;\n };\n}\n\nexport interface UploadOperation {\n method: string;\n url: string;\n length: number;\n offset: number;\n requestHeaders: Array<{ name: string; value: string }>;\n}\n\nexport class AppScreenshotsResource {\n constructor(private http: RequestClient) {}\n\n async listSetsForLocalization(\n localizationId: string\n ): Promise<AppScreenshotSet[]> {\n return this.http.all<AppScreenshotSet>(\n `/v1/appStoreVersionLocalizations/${localizationId}/appScreenshotSets`\n );\n }\n\n async createSet(params: {\n localizationId: string;\n screenshotDisplayType: string;\n }): Promise<AppScreenshotSet> {\n const response = await this.http.post<\n JsonApiResponse<AppScreenshotSet>\n >(\"/v1/appScreenshotSets\", {\n data: {\n type: \"appScreenshotSets\",\n attributes: {\n screenshotDisplayType: params.screenshotDisplayType,\n },\n relationships: {\n appStoreVersionLocalization: {\n data: {\n type: \"appStoreVersionLocalizations\",\n id: params.localizationId,\n },\n },\n },\n },\n });\n return response.data;\n }\n\n async listScreenshots(setId: string): Promise<AppScreenshot[]> {\n return this.http.all<AppScreenshot>(\n `/v1/appScreenshotSets/${setId}/appScreenshots`\n );\n }\n\n async reserveScreenshot(params: {\n setId: string;\n fileName: string;\n fileSize: number;\n }): Promise<AppScreenshot> {\n const response = await this.http.post<\n JsonApiResponse<AppScreenshot>\n >(\"/v1/appScreenshots\", {\n data: {\n type: \"appScreenshots\",\n attributes: {\n fileName: params.fileName,\n fileSize: params.fileSize,\n },\n relationships: {\n appScreenshotSet: {\n data: { type: \"appScreenshotSets\", id: params.setId },\n },\n },\n },\n });\n return response.data;\n }\n\n async commitScreenshot(\n screenshotId: string,\n params: { sourceFileChecksum: string; uploaded: boolean }\n ): Promise<AppScreenshot> {\n const response = await this.http.patch<\n JsonApiResponse<AppScreenshot>\n >(`/v1/appScreenshots/${screenshotId}`, {\n data: {\n type: \"appScreenshots\",\n id: screenshotId,\n attributes: {\n sourceFileChecksum: params.sourceFileChecksum,\n uploaded: params.uploaded,\n },\n },\n });\n return response.data;\n }\n\n async deleteScreenshot(screenshotId: string): Promise<void> {\n await this.http.delete(`/v1/appScreenshots/${screenshotId}`);\n }\n\n async deleteSet(setId: string): Promise<void> {\n await this.http.delete(`/v1/appScreenshotSets/${setId}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResponse } from \"../client/types.js\";\n\nexport interface ReviewSubmission {\n id: string;\n type: \"reviewSubmissions\";\n attributes: {\n state: string;\n submittedDate: string | null;\n platform: string;\n };\n}\n\nexport interface AppStoreVersionSubmission {\n id: string;\n type: \"appStoreVersionSubmissions\";\n}\n\nexport class ReviewSubmissionsResource {\n constructor(private http: RequestClient) {}\n\n async submitVersion(versionId: string): Promise<AppStoreVersionSubmission> {\n const response = await this.http.post<\n JsonApiResponse<AppStoreVersionSubmission>\n >(\"/v1/appStoreVersionSubmissions\", {\n data: {\n type: \"appStoreVersionSubmissions\",\n relationships: {\n appStoreVersion: {\n data: { type: \"appStoreVersions\", id: versionId },\n },\n },\n },\n });\n return response.data;\n }\n\n async createReviewSubmission(params: {\n appId: string;\n platform: string;\n }): Promise<ReviewSubmission> {\n const response = await this.http.post<\n JsonApiResponse<ReviewSubmission>\n >(\"/v1/reviewSubmissions\", {\n data: {\n type: \"reviewSubmissions\",\n attributes: {\n platform: params.platform,\n },\n relationships: {\n app: {\n data: { type: \"apps\", id: params.appId },\n },\n },\n },\n });\n return response.data;\n }\n\n async confirmReviewSubmission(submissionId: string): Promise<ReviewSubmission> {\n const response = await this.http.patch<\n JsonApiResponse<ReviewSubmission>\n >(`/v1/reviewSubmissions/${submissionId}`, {\n data: {\n type: \"reviewSubmissions\",\n id: submissionId,\n attributes: {\n submitted: true,\n },\n },\n });\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\n/**\n * App Info is the metadata container that holds an app's categories, age\n * ratings, and localisations for a single submission cycle. Ported from\n * `spaceship/connect_api/models/app_info.rb`.\n */\nexport interface AppInfoAttributes {\n appStoreState?: string | null;\n state?: string | null;\n appStoreAgeRating?: string | null;\n brazilAgeRating?: string | null;\n kidsAgeBand?: string | null;\n}\n\nexport type AppInfo = JsonApiResource<\"appInfos\", AppInfoAttributes>;\n\nexport class AppInfosResource {\n constructor(private http: RequestClient) {}\n\n async listForApp(appId: string, params?: {\n include?: string;\n limit?: number;\n }): Promise<AppInfo[]> {\n const listParams: ListParams = {\n limit: params?.limit ?? 200,\n include: params?.include,\n };\n return this.http.all<AppInfo>(`/v1/apps/${appId}/appInfos`, listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<AppInfo> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<AppInfo>>(\n `/v1/appInfos/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async update(\n id: string,\n relationships?: Record<string, { type: string; id: string } | null>\n ): Promise<AppInfo> {\n const response = await this.http.patch<JsonApiResponse<AppInfo>>(\n `/v1/appInfos/${id}`,\n {\n data: {\n type: \"appInfos\",\n id,\n ...(relationships\n ? {\n relationships: Object.fromEntries(\n Object.entries(relationships).map(([k, v]) => [k, { data: v }])\n ),\n }\n : {}),\n },\n }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/appInfos/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface AppInfoLocalizationAttributes {\n locale: string;\n name?: string | null;\n subtitle?: string | null;\n privacyPolicyUrl?: string | null;\n privacyChoicesUrl?: string | null;\n privacyPolicyText?: string | null;\n}\n\nexport type AppInfoLocalization = JsonApiResource<\n \"appInfoLocalizations\",\n AppInfoLocalizationAttributes\n>;\n\nexport class AppInfoLocalizationsResource {\n constructor(private http: RequestClient) {}\n\n async listForAppInfo(appInfoId: string, params?: {\n limit?: number;\n }): Promise<AppInfoLocalization[]> {\n const listParams: ListParams = {\n limit: params?.limit ?? 200,\n };\n return this.http.all<AppInfoLocalization>(\n `/v1/appInfos/${appInfoId}/appInfoLocalizations`,\n listParams\n );\n }\n\n async get(id: string): Promise<AppInfoLocalization> {\n const response = await this.http.get<JsonApiResponse<AppInfoLocalization>>(\n `/v1/appInfoLocalizations/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n appInfoId: string;\n attributes: AppInfoLocalizationAttributes;\n }): Promise<AppInfoLocalization> {\n const response = await this.http.post<JsonApiResponse<AppInfoLocalization>>(\n \"/v1/appInfoLocalizations\",\n {\n data: {\n type: \"appInfoLocalizations\",\n attributes: params.attributes,\n relationships: {\n appInfo: { data: { type: \"appInfos\", id: params.appInfoId } },\n },\n },\n }\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<AppInfoLocalizationAttributes>\n ): Promise<AppInfoLocalization> {\n const response = await this.http.patch<JsonApiResponse<AppInfoLocalization>>(\n `/v1/appInfoLocalizations/${id}`,\n { data: { type: \"appInfoLocalizations\", id, attributes } }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/appInfoLocalizations/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport interface AppStoreReviewDetailAttributes {\n contactFirstName?: string | null;\n contactLastName?: string | null;\n contactPhone?: string | null;\n contactEmail?: string | null;\n demoAccountName?: string | null;\n demoAccountPassword?: string | null;\n demoAccountRequired?: boolean | null;\n notes?: string | null;\n}\n\nexport type AppStoreReviewDetail = JsonApiResource<\n \"appStoreReviewDetails\",\n AppStoreReviewDetailAttributes\n>;\n\nexport class AppStoreReviewDetailsResource {\n constructor(private http: RequestClient) {}\n\n async getForAppStoreVersion(\n appStoreVersionId: string\n ): Promise<AppStoreReviewDetail> {\n const response = await this.http.get<\n JsonApiResponse<AppStoreReviewDetail>\n >(`/v1/appStoreVersions/${appStoreVersionId}/appStoreReviewDetail`);\n return response.data;\n }\n\n async get(id: string): Promise<AppStoreReviewDetail> {\n const response = await this.http.get<\n JsonApiResponse<AppStoreReviewDetail>\n >(`/v1/appStoreReviewDetails/${id}`);\n return response.data;\n }\n\n async create(params: {\n appStoreVersionId: string;\n attributes: AppStoreReviewDetailAttributes;\n }): Promise<AppStoreReviewDetail> {\n const response = await this.http.post<\n JsonApiResponse<AppStoreReviewDetail>\n >(\"/v1/appStoreReviewDetails\", {\n data: {\n type: \"appStoreReviewDetails\",\n attributes: params.attributes,\n relationships: {\n appStoreVersion: {\n data: { type: \"appStoreVersions\", id: params.appStoreVersionId },\n },\n },\n },\n });\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<AppStoreReviewDetailAttributes>\n ): Promise<AppStoreReviewDetail> {\n const response = await this.http.patch<\n JsonApiResponse<AppStoreReviewDetail>\n >(`/v1/appStoreReviewDetails/${id}`, {\n data: { type: \"appStoreReviewDetails\", id, attributes },\n });\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface BetaTesterAttributes {\n firstName?: string | null;\n lastName?: string | null;\n email: string;\n inviteType?: \"EMAIL\" | \"PUBLIC_LINK\" | null;\n state?: string | null;\n}\n\nexport type BetaTester = JsonApiResource<\"betaTesters\", BetaTesterAttributes>;\n\nexport class BetaTestersResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n email?: string;\n firstName?: string;\n lastName?: string;\n inviteType?: string;\n apps?: string | string[];\n betaGroups?: string | string[];\n };\n include?: string;\n limit?: number;\n sort?: string;\n }): Promise<BetaTester[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n return this.http.all<BetaTester>(\"/v1/betaTesters\", listParams);\n }\n\n async get(id: string): Promise<BetaTester> {\n const response = await this.http.get<JsonApiResponse<BetaTester>>(\n `/v1/betaTesters/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n email: string;\n firstName?: string;\n lastName?: string;\n betaGroupIds?: string[];\n appIds?: string[];\n }): Promise<BetaTester> {\n const attributes: BetaTesterAttributes = {\n email: params.email,\n firstName: params.firstName,\n lastName: params.lastName,\n };\n const relationships: Record<string, { data: Array<{ type: string; id: string }> }> = {};\n if (params.betaGroupIds?.length) {\n relationships.betaGroups = {\n data: params.betaGroupIds.map((id) => ({ type: \"betaGroups\", id })),\n };\n }\n if (params.appIds?.length) {\n relationships.apps = {\n data: params.appIds.map((id) => ({ type: \"apps\", id })),\n };\n }\n const response = await this.http.post<JsonApiResponse<BetaTester>>(\n \"/v1/betaTesters\",\n {\n data: {\n type: \"betaTesters\",\n attributes,\n ...(Object.keys(relationships).length ? { relationships } : {}),\n },\n }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/betaTesters/${id}`);\n }\n\n async findByEmail(email: string): Promise<BetaTester | null> {\n const results = await this.list({ filter: { email }, limit: 1 });\n return results[0] ?? null;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface BetaAppReviewSubmissionAttributes {\n betaReviewState?: string | null;\n submittedDate?: string | null;\n}\n\nexport type BetaAppReviewSubmission = JsonApiResource<\n \"betaAppReviewSubmissions\",\n BetaAppReviewSubmissionAttributes\n>;\n\nexport class BetaAppReviewSubmissionsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: { build?: string | string[]; betaReviewState?: string };\n limit?: number;\n }): Promise<BetaAppReviewSubmission[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n limit: params?.limit ?? 200,\n };\n return this.http.all<BetaAppReviewSubmission>(\n \"/v1/betaAppReviewSubmissions\",\n listParams\n );\n }\n\n async get(id: string): Promise<BetaAppReviewSubmission> {\n const response = await this.http.get<JsonApiResponse<BetaAppReviewSubmission>>(\n `/v1/betaAppReviewSubmissions/${id}`\n );\n return response.data;\n }\n\n async create(buildId: string): Promise<BetaAppReviewSubmission> {\n const response = await this.http.post<JsonApiResponse<BetaAppReviewSubmission>>(\n \"/v1/betaAppReviewSubmissions\",\n {\n data: {\n type: \"betaAppReviewSubmissions\",\n relationships: {\n build: { data: { type: \"builds\", id: buildId } },\n },\n },\n }\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport interface BetaAppReviewDetailAttributes {\n contactFirstName?: string | null;\n contactLastName?: string | null;\n contactPhone?: string | null;\n contactEmail?: string | null;\n demoAccountName?: string | null;\n demoAccountPassword?: string | null;\n demoAccountRequired?: boolean | null;\n notes?: string | null;\n}\n\nexport type BetaAppReviewDetail = JsonApiResource<\n \"betaAppReviewDetails\",\n BetaAppReviewDetailAttributes\n>;\n\nexport class BetaAppReviewDetailsResource {\n constructor(private http: RequestClient) {}\n\n async getForApp(appId: string): Promise<BetaAppReviewDetail> {\n const response = await this.http.get<JsonApiResponse<BetaAppReviewDetail>>(\n `/v1/apps/${appId}/betaAppReviewDetail`\n );\n return response.data;\n }\n\n async get(id: string): Promise<BetaAppReviewDetail> {\n const response = await this.http.get<JsonApiResponse<BetaAppReviewDetail>>(\n `/v1/betaAppReviewDetails/${id}`\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<BetaAppReviewDetailAttributes>\n ): Promise<BetaAppReviewDetail> {\n const response = await this.http.patch<JsonApiResponse<BetaAppReviewDetail>>(\n `/v1/betaAppReviewDetails/${id}`,\n { data: { type: \"betaAppReviewDetails\", id, attributes } }\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport type InvitationType = \"EMAIL\" | \"PUBLIC_LINK\";\n\nexport interface BetaTesterInvitationAttributes {\n // Write-only resource: no stored attributes, just a creation side-effect.\n [key: string]: unknown;\n}\n\nexport type BetaTesterInvitation = JsonApiResource<\n \"betaTesterInvitations\",\n BetaTesterInvitationAttributes\n>;\n\nexport class BetaInvitationsResource {\n constructor(private http: RequestClient) {}\n\n /** Send a TestFlight invitation email for an existing tester + app. */\n async send(params: {\n appId: string;\n betaTesterId: string;\n }): Promise<BetaTesterInvitation> {\n const response = await this.http.post<JsonApiResponse<BetaTesterInvitation>>(\n \"/v1/betaTesterInvitations\",\n {\n data: {\n type: \"betaTesterInvitations\",\n relationships: {\n app: { data: { type: \"apps\", id: params.appId } },\n betaTester: { data: { type: \"betaTesters\", id: params.betaTesterId } },\n },\n },\n }\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface BetaLicenseAgreementAttributes {\n agreementText?: string | null;\n}\n\nexport type BetaLicenseAgreement = JsonApiResource<\n \"betaLicenseAgreements\",\n BetaLicenseAgreementAttributes\n>;\n\nexport class BetaLicensesResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: { limit?: number }): Promise<BetaLicenseAgreement[]> {\n const listParams: ListParams = {\n limit: params?.limit ?? 200,\n };\n return this.http.all<BetaLicenseAgreement>(\n \"/v1/betaLicenseAgreements\",\n listParams\n );\n }\n\n async get(id: string): Promise<BetaLicenseAgreement> {\n const response = await this.http.get<JsonApiResponse<BetaLicenseAgreement>>(\n `/v1/betaLicenseAgreements/${id}`\n );\n return response.data;\n }\n\n async getForApp(appId: string): Promise<BetaLicenseAgreement> {\n const response = await this.http.get<JsonApiResponse<BetaLicenseAgreement>>(\n `/v1/apps/${appId}/betaLicenseAgreement`\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<BetaLicenseAgreementAttributes>\n ): Promise<BetaLicenseAgreement> {\n const response = await this.http.patch<\n JsonApiResponse<BetaLicenseAgreement>\n >(`/v1/betaLicenseAgreements/${id}`, {\n data: { type: \"betaLicenseAgreements\", id, attributes },\n });\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport interface AppPreviewAttributes {\n fileSize?: number | null;\n fileName?: string | null;\n sourceFileChecksum?: string | null;\n previewFrameTimeCode?: string | null;\n mimeType?: string | null;\n videoUrl?: string | null;\n previewImage?: { templateUrl?: string; width?: number; height?: number } | null;\n uploadOperations?: unknown[] | null;\n assetDeliveryState?: { state?: string } | null;\n uploaded?: boolean | null;\n}\n\nexport type AppPreview = JsonApiResource<\"appPreviews\", AppPreviewAttributes>;\n\nexport class AppPreviewsResource {\n constructor(private http: RequestClient) {}\n\n async get(id: string): Promise<AppPreview> {\n const response = await this.http.get<JsonApiResponse<AppPreview>>(\n `/v1/appPreviews/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n appPreviewSetId: string;\n fileSize: number;\n fileName: string;\n previewFrameTimeCode?: string;\n mimeType?: string;\n }): Promise<AppPreview> {\n const { appPreviewSetId, ...rest } = params;\n const response = await this.http.post<JsonApiResponse<AppPreview>>(\n \"/v1/appPreviews\",\n {\n data: {\n type: \"appPreviews\",\n attributes: rest,\n relationships: {\n appPreviewSet: {\n data: { type: \"appPreviewSets\", id: appPreviewSetId },\n },\n },\n },\n }\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: { uploaded?: boolean; sourceFileChecksum?: string; previewFrameTimeCode?: string }\n ): Promise<AppPreview> {\n const response = await this.http.patch<JsonApiResponse<AppPreview>>(\n `/v1/appPreviews/${id}`,\n { data: { type: \"appPreviews\", id, attributes } }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/appPreviews/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface AppPreviewSetAttributes {\n previewType?: string | null;\n}\n\nexport type AppPreviewSet = JsonApiResource<\n \"appPreviewSets\",\n AppPreviewSetAttributes\n>;\n\nexport class AppPreviewSetsResource {\n constructor(private http: RequestClient) {}\n\n async listForLocalization(\n localizationId: string,\n params?: { limit?: number; include?: string }\n ): Promise<AppPreviewSet[]> {\n const listParams: ListParams = {\n limit: params?.limit ?? 200,\n include: params?.include,\n };\n return this.http.all<AppPreviewSet>(\n `/v1/appStoreVersionLocalizations/${localizationId}/appPreviewSets`,\n listParams\n );\n }\n\n async get(id: string, params?: { include?: string }): Promise<AppPreviewSet> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<AppPreviewSet>>(\n `/v1/appPreviewSets/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async create(params: {\n appStoreVersionLocalizationId: string;\n previewType: string;\n }): Promise<AppPreviewSet> {\n const response = await this.http.post<JsonApiResponse<AppPreviewSet>>(\n \"/v1/appPreviewSets\",\n {\n data: {\n type: \"appPreviewSets\",\n attributes: { previewType: params.previewType },\n relationships: {\n appStoreVersionLocalization: {\n data: {\n type: \"appStoreVersionLocalizations\",\n id: params.appStoreVersionLocalizationId,\n },\n },\n },\n },\n }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/appPreviewSets/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface AppPriceAttributes {\n startDate?: string | null;\n}\n\nexport type AppPrice = JsonApiResource<\"appPrices\", AppPriceAttributes>;\n\nexport class AppPricesResource {\n constructor(private http: RequestClient) {}\n\n async listForApp(appId: string, params?: {\n include?: string;\n limit?: number;\n }): Promise<AppPrice[]> {\n const listParams: ListParams = {\n limit: params?.limit ?? 200,\n include: params?.include,\n };\n return this.http.all<AppPrice>(`/v1/apps/${appId}/prices`, listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<AppPrice> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<AppPrice>>(\n `/v1/appPrices/${id}`,\n queryParams\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface TerritoryAttributes {\n currency?: string | null;\n}\n\nexport type Territory = JsonApiResource<\"territories\", TerritoryAttributes>;\n\nexport class TerritoriesResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: { limit?: number }): Promise<Territory[]> {\n const listParams: ListParams = {\n limit: params?.limit ?? 200,\n };\n return this.http.all<Territory>(\"/v1/territories\", listParams);\n }\n\n async get(id: string): Promise<Territory> {\n const response = await this.http.get<JsonApiResponse<Territory>>(\n `/v1/territories/${id}`\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport interface AgeRatingDeclarationAttributes {\n alcoholTobaccoOrDrugUseOrReferences?: string | null;\n contests?: string | null;\n gamblingSimulated?: string | null;\n medicalOrTreatmentInformation?: string | null;\n profanityOrCrudeHumor?: string | null;\n sexualContentGraphicAndNudity?: string | null;\n sexualContentOrNudity?: string | null;\n horrorOrFearThemes?: string | null;\n matureOrSuggestiveThemes?: string | null;\n unrestrictedWebAccess?: boolean | null;\n gamblingAndContests?: boolean | null;\n gambling?: string | null;\n violenceCartoonOrFantasy?: string | null;\n violenceRealistic?: string | null;\n violenceRealisticProlongedGraphicOrSadistic?: string | null;\n kidsAgeBand?: string | null;\n seventeenPlus?: boolean | null;\n}\n\nexport type AgeRatingDeclaration = JsonApiResource<\n \"ageRatingDeclarations\",\n AgeRatingDeclarationAttributes\n>;\n\nexport class AgeRatingDeclarationsResource {\n constructor(private http: RequestClient) {}\n\n async get(id: string): Promise<AgeRatingDeclaration> {\n const response = await this.http.get<JsonApiResponse<AgeRatingDeclaration>>(\n `/v1/ageRatingDeclarations/${id}`\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<AgeRatingDeclarationAttributes>\n ): Promise<AgeRatingDeclaration> {\n const response = await this.http.patch<\n JsonApiResponse<AgeRatingDeclaration>\n >(`/v1/ageRatingDeclarations/${id}`, {\n data: { type: \"ageRatingDeclarations\", id, attributes },\n });\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface AppCategoryAttributes {\n platforms?: string[] | null;\n}\n\nexport type AppCategory = JsonApiResource<\"appCategories\", AppCategoryAttributes>;\n\nexport class AppCategoriesResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: { platforms?: string };\n include?: string;\n limit?: number;\n }): Promise<AppCategory[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n };\n return this.http.all<AppCategory>(\"/v1/appCategories\", listParams);\n }\n\n async get(id: string, params?: { include?: string }): Promise<AppCategory> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<AppCategory>>(\n `/v1/appCategories/${id}`,\n queryParams\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface AppEncryptionDeclarationAttributes {\n appEncryptionDeclarationState?: string | null;\n createdDate?: string | null;\n codeValue?: string | null;\n usesEncryption?: boolean | null;\n exempt?: boolean | null;\n containsProprietaryCryptography?: boolean | null;\n containsThirdPartyCryptography?: boolean | null;\n availableOnFrenchStore?: boolean | null;\n platform?: string | null;\n uploadedDate?: string | null;\n documentUrl?: string | null;\n documentName?: string | null;\n documentType?: string | null;\n}\n\nexport type AppEncryptionDeclaration = JsonApiResource<\n \"appEncryptionDeclarations\",\n AppEncryptionDeclarationAttributes\n>;\n\nexport class AppEncryptionDeclarationsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: { app?: string; platform?: string };\n limit?: number;\n }): Promise<AppEncryptionDeclaration[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n limit: params?.limit ?? 200,\n };\n return this.http.all<AppEncryptionDeclaration>(\n \"/v1/appEncryptionDeclarations\",\n listParams\n );\n }\n\n async get(id: string): Promise<AppEncryptionDeclaration> {\n const response = await this.http.get<\n JsonApiResponse<AppEncryptionDeclaration>\n >(`/v1/appEncryptionDeclarations/${id}`);\n return response.data;\n }\n\n async assignToBuild(params: {\n declarationId: string;\n buildIds: string[];\n }): Promise<void> {\n await this.http.post(\n `/v1/appEncryptionDeclarations/${params.declarationId}/relationships/builds`,\n { data: params.buildIds.map((id) => ({ type: \"builds\", id })) }\n );\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport interface IdfaDeclarationAttributes {\n honorsLimitedAdTracking?: boolean | null;\n servesAds?: boolean | null;\n attributesActionWithPreviousAd?: boolean | null;\n attributesAppInstallationToPreviousAd?: boolean | null;\n}\n\nexport type IdfaDeclaration = JsonApiResource<\n \"idfaDeclarations\",\n IdfaDeclarationAttributes\n>;\n\nexport class IdfaDeclarationsResource {\n constructor(private http: RequestClient) {}\n\n async getForAppStoreVersion(\n appStoreVersionId: string\n ): Promise<IdfaDeclaration> {\n const response = await this.http.get<JsonApiResponse<IdfaDeclaration>>(\n `/v1/appStoreVersions/${appStoreVersionId}/idfaDeclaration`\n );\n return response.data;\n }\n\n async get(id: string): Promise<IdfaDeclaration> {\n const response = await this.http.get<JsonApiResponse<IdfaDeclaration>>(\n `/v1/idfaDeclarations/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n appStoreVersionId: string;\n attributes: IdfaDeclarationAttributes;\n }): Promise<IdfaDeclaration> {\n const response = await this.http.post<JsonApiResponse<IdfaDeclaration>>(\n \"/v1/idfaDeclarations\",\n {\n data: {\n type: \"idfaDeclarations\",\n attributes: params.attributes,\n relationships: {\n appStoreVersion: {\n data: { type: \"appStoreVersions\", id: params.appStoreVersionId },\n },\n },\n },\n }\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<IdfaDeclarationAttributes>\n ): Promise<IdfaDeclaration> {\n const response = await this.http.patch<JsonApiResponse<IdfaDeclaration>>(\n `/v1/idfaDeclarations/${id}`,\n { data: { type: \"idfaDeclarations\", id, attributes } }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/idfaDeclarations/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface PreReleaseVersionAttributes {\n version?: string | null;\n platform?: string | null;\n}\n\nexport type PreReleaseVersion = JsonApiResource<\n \"preReleaseVersions\",\n PreReleaseVersionAttributes\n>;\n\nexport class PreReleaseVersionsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: {\n app?: string;\n version?: string;\n platform?: string;\n \"builds.expired\"?: string;\n \"builds.processingState\"?: string;\n \"builds.version\"?: string;\n };\n include?: string;\n limit?: number;\n sort?: string;\n }): Promise<PreReleaseVersion[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n return this.http.all<PreReleaseVersion>(\n \"/v1/preReleaseVersions\",\n listParams\n );\n }\n\n async get(\n id: string,\n params?: { include?: string }\n ): Promise<PreReleaseVersion> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<PreReleaseVersion>>(\n `/v1/preReleaseVersions/${id}`,\n queryParams\n );\n return response.data;\n }\n\n async findByVersion(params: {\n appId: string;\n version: string;\n platform?: string;\n }): Promise<PreReleaseVersion | null> {\n const filter: Record<string, string> = {\n app: params.appId,\n version: params.version,\n };\n if (params.platform) filter.platform = params.platform;\n const results = await this.list({ filter, limit: 1 });\n return results[0] ?? null;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface ReviewSubmissionItemAttributes {\n state?: string | null;\n removed?: boolean | null;\n ready?: boolean | null;\n}\n\nexport type ReviewSubmissionItem = JsonApiResource<\n \"reviewSubmissionItems\",\n ReviewSubmissionItemAttributes\n>;\n\nexport class ReviewSubmissionItemsResource {\n constructor(private http: RequestClient) {}\n\n async listForSubmission(\n reviewSubmissionId: string,\n params?: { include?: string; limit?: number }\n ): Promise<ReviewSubmissionItem[]> {\n const listParams: ListParams = {\n include: params?.include,\n limit: params?.limit ?? 200,\n };\n return this.http.all<ReviewSubmissionItem>(\n `/v1/reviewSubmissions/${reviewSubmissionId}/items`,\n listParams\n );\n }\n\n async get(id: string): Promise<ReviewSubmissionItem> {\n const response = await this.http.get<JsonApiResponse<ReviewSubmissionItem>>(\n `/v1/reviewSubmissionItems/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n reviewSubmissionId: string;\n appStoreVersionId?: string;\n appCustomProductPageVersionId?: string;\n appStoreVersionExperimentId?: string;\n }): Promise<ReviewSubmissionItem> {\n const relationships: Record<string, { data: { type: string; id: string } }> = {\n reviewSubmission: {\n data: { type: \"reviewSubmissions\", id: params.reviewSubmissionId },\n },\n };\n if (params.appStoreVersionId) {\n relationships.appStoreVersion = {\n data: { type: \"appStoreVersions\", id: params.appStoreVersionId },\n };\n }\n if (params.appCustomProductPageVersionId) {\n relationships.appCustomProductPageVersion = {\n data: {\n type: \"appCustomProductPageVersions\",\n id: params.appCustomProductPageVersionId,\n },\n };\n }\n if (params.appStoreVersionExperimentId) {\n relationships.appStoreVersionExperiment = {\n data: {\n type: \"appStoreVersionExperiments\",\n id: params.appStoreVersionExperimentId,\n },\n };\n }\n const response = await this.http.post<JsonApiResponse<ReviewSubmissionItem>>(\n \"/v1/reviewSubmissionItems\",\n {\n data: {\n type: \"reviewSubmissionItems\",\n relationships,\n },\n }\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: { removed?: boolean }\n ): Promise<ReviewSubmissionItem> {\n const response = await this.http.patch<JsonApiResponse<ReviewSubmissionItem>>(\n `/v1/reviewSubmissionItems/${id}`,\n { data: { type: \"reviewSubmissionItems\", id, attributes } }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/reviewSubmissionItems/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface UserAttributes {\n username?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n roles?: string[] | null;\n allAppsVisible?: boolean | null;\n provisioningAllowed?: boolean | null;\n}\n\nexport type User = JsonApiResource<\"users\", UserAttributes>;\n\nexport class UsersResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: { username?: string; roles?: string | string[] };\n include?: string;\n limit?: number;\n sort?: string;\n }): Promise<User[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n return this.http.all<User>(\"/v1/users\", listParams);\n }\n\n async get(id: string): Promise<User> {\n const response = await this.http.get<JsonApiResponse<User>>(`/v1/users/${id}`);\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<UserAttributes>,\n visibleAppIds?: string[]\n ): Promise<User> {\n const relationships = visibleAppIds\n ? {\n visibleApps: {\n data: visibleAppIds.map((id) => ({ type: \"apps\", id })),\n },\n }\n : undefined;\n const response = await this.http.patch<JsonApiResponse<User>>(\n `/v1/users/${id}`,\n {\n data: {\n type: \"users\",\n id,\n attributes,\n ...(relationships ? { relationships } : {}),\n },\n }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/users/${id}`);\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface UserInvitationAttributes {\n email: string;\n firstName?: string | null;\n lastName?: string | null;\n expirationDate?: string | null;\n roles?: string[] | null;\n allAppsVisible?: boolean | null;\n provisioningAllowed?: boolean | null;\n}\n\nexport type UserInvitation = JsonApiResource<\n \"userInvitations\",\n UserInvitationAttributes\n>;\n\nexport class UserInvitationsResource {\n constructor(private http: RequestClient) {}\n\n async list(params?: {\n filter?: { email?: string; roles?: string | string[] };\n include?: string;\n limit?: number;\n sort?: string;\n }): Promise<UserInvitation[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n return this.http.all<UserInvitation>(\"/v1/userInvitations\", listParams);\n }\n\n async get(id: string): Promise<UserInvitation> {\n const response = await this.http.get<JsonApiResponse<UserInvitation>>(\n `/v1/userInvitations/${id}`\n );\n return response.data;\n }\n\n async create(params: {\n attributes: UserInvitationAttributes;\n visibleAppIds?: string[];\n }): Promise<UserInvitation> {\n const relationships = params.visibleAppIds\n ? {\n visibleApps: {\n data: params.visibleAppIds.map((id) => ({ type: \"apps\", id })),\n },\n }\n : undefined;\n const response = await this.http.post<JsonApiResponse<UserInvitation>>(\n \"/v1/userInvitations\",\n {\n data: {\n type: \"userInvitations\",\n attributes: params.attributes,\n ...(relationships ? { relationships } : {}),\n },\n }\n );\n return response.data;\n }\n\n async delete(id: string): Promise<void> {\n await this.http.delete(`/v1/userInvitations/${id}`);\n }\n\n async findByEmail(email: string): Promise<UserInvitation | null> {\n const results = await this.list({ filter: { email }, limit: 1 });\n return results[0] ?? null;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse, ListParams } from \"../client/types.js\";\n\nexport interface InAppPurchaseAttributes {\n name?: string | null;\n productId?: string | null;\n inAppPurchaseType?: string | null;\n state?: string | null;\n reviewNote?: string | null;\n familySharable?: boolean | null;\n}\n\nexport type InAppPurchase = JsonApiResource<\n \"inAppPurchases\" | \"inAppPurchasesV2\",\n InAppPurchaseAttributes\n>;\n\nexport class InAppPurchasesResource {\n constructor(private http: RequestClient) {}\n\n async listForApp(appId: string, params?: {\n filter?: { state?: string; inAppPurchaseType?: string };\n include?: string;\n limit?: number;\n sort?: string;\n }): Promise<InAppPurchase[]> {\n const listParams: ListParams = {\n filter: params?.filter as Record<string, string | string[]>,\n include: params?.include,\n limit: params?.limit ?? 200,\n sort: params?.sort,\n };\n return this.http.all<InAppPurchase>(\n `/v2/apps/${appId}/inAppPurchasesV2`,\n listParams\n );\n }\n\n async get(id: string, params?: { include?: string }): Promise<InAppPurchase> {\n const queryParams: Record<string, string | undefined> = {};\n if (params?.include) queryParams[\"include\"] = params.include;\n const response = await this.http.get<JsonApiResponse<InAppPurchase>>(\n `/v2/inAppPurchases/${id}`,\n queryParams\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\nexport interface GameCenterDetailAttributes {\n arcadeEnabled?: boolean | null;\n challengeEnabled?: boolean | null;\n}\n\nexport type GameCenterDetail = JsonApiResource<\n \"gameCenterDetails\",\n GameCenterDetailAttributes\n>;\n\nexport class GameCenterDetailResource {\n constructor(private http: RequestClient) {}\n\n async getForApp(appId: string): Promise<GameCenterDetail> {\n const response = await this.http.get<JsonApiResponse<GameCenterDetail>>(\n `/v1/apps/${appId}/gameCenterDetail`\n );\n return response.data;\n }\n\n async get(id: string): Promise<GameCenterDetail> {\n const response = await this.http.get<JsonApiResponse<GameCenterDetail>>(\n `/v1/gameCenterDetails/${id}`\n );\n return response.data;\n }\n\n async update(\n id: string,\n attributes: Partial<GameCenterDetailAttributes>\n ): Promise<GameCenterDetail> {\n const response = await this.http.patch<JsonApiResponse<GameCenterDetail>>(\n `/v1/gameCenterDetails/${id}`,\n { data: { type: \"gameCenterDetails\", id, attributes } }\n );\n return response.data;\n }\n}\n","import type { RequestClient } from \"../client/request.js\";\nimport type { JsonApiResource, JsonApiResponse } from \"../client/types.js\";\n\n/**\n * TestFlight / Xcode build metrics. Exposes perf & crash stats per build.\n * Wraps `/v1/builds/{id}/perfPowerMetrics` and\n * `/v1/builds/{id}/diagnosticSignatures`.\n */\nexport interface PerfPowerMetricAttributes {\n metricCategory?: string | null;\n platform?: string | null;\n datasets?: unknown[] | null;\n}\n\nexport type PerfPowerMetric = JsonApiResource<\n \"perfPowerMetrics\",\n PerfPowerMetricAttributes\n>;\n\nexport interface DiagnosticSignatureAttributes {\n signature?: string | null;\n weight?: number | null;\n diagnosticType?: string | null;\n}\n\nexport type DiagnosticSignature = JsonApiResource<\n \"diagnosticSignatures\",\n DiagnosticSignatureAttributes\n>;\n\nexport class XcodeMetricsResource {\n constructor(private http: RequestClient) {}\n\n async getPerfPowerMetrics(buildId: string): Promise<PerfPowerMetric[]> {\n const response = await this.http.get<{ data: PerfPowerMetric[] }>(\n `/v1/builds/${buildId}/perfPowerMetrics`\n );\n return response.data;\n }\n\n async getDiagnosticSignatures(buildId: string): Promise<DiagnosticSignature[]> {\n const response = await this.http.get<{ data: DiagnosticSignature[] }>(\n `/v1/builds/${buildId}/diagnosticSignatures`\n );\n return response.data;\n }\n\n async getPerfPowerMetric(id: string): Promise<PerfPowerMetric> {\n const response = await this.http.get<JsonApiResponse<PerfPowerMetric>>(\n `/v1/perfPowerMetrics/${id}`\n );\n return response.data;\n }\n\n async getDiagnosticSignature(id: string): Promise<DiagnosticSignature> {\n const response = await this.http.get<JsonApiResponse<DiagnosticSignature>>(\n `/v1/diagnosticSignatures/${id}`\n );\n return response.data;\n }\n}\n","/**\n * Apple Developer Portal Client\n * 1:1 port of Fastlane Spaceship PortalClient\n *\n * Uses session cookies (from loginWithAppleId) to talk to\n * developer.apple.com/services-account/QH65B2/\n *\n * This is the web portal API — separate from the ASC REST API (JWT).\n * Fastlane uses this for: certs, profiles, devices, bundle IDs, app groups, etc.\n */\n\nimport type { AppleSession } from \"./apple-session.js\";\nimport { checkPortalResponse } from \"./apple-session.js\";\n\nconst PORTAL_BASE = \"https://developer.apple.com/services-account/QH65B2\";\n\nexport class PortalClient {\n private session: AppleSession;\n private teamId: string;\n private csrf = \"\";\n private csrfTs = \"\";\n private cookieStr: string;\n\n constructor(session: AppleSession, teamId: string) {\n this.session = session;\n this.teamId = teamId;\n this.cookieStr = Object.entries(session.cookies).map(([k, v]) => `${k}=${v}`).join(\"; \");\n }\n\n /** Initialize CSRF tokens — must be called before mutations */\n async init(): Promise<void> {\n await this.post(\"account/listTeams.action\", {});\n }\n\n private async post(path: string, params: Record<string, string | string[]>): Promise<any> {\n // Build form body using URLSearchParams (proper encoding)\n const body = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (Array.isArray(v)) { for (const item of v) body.append(k, item); }\n else body.set(k, v);\n }\n const bodyStr = body.toString();\n\n const headers: Record<string, string> = {\n Cookie: this.cookieStr,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n };\n if (this.csrf) { headers[\"csrf\"] = this.csrf; headers[\"csrf_ts\"] = this.csrfTs; }\n\n if (process.env.FASTNODE_DEBUG) console.log(`[portal] POST ${path} body=${bodyStr.slice(0, 200)}`);\n const res = await fetch(`${PORTAL_BASE}/${path}`, { method: \"POST\", headers, body: bodyStr });\n\n // Update CSRF\n if (res.headers.get(\"csrf\")) { this.csrf = res.headers.get(\"csrf\")!; this.csrfTs = res.headers.get(\"csrf_ts\") ?? \"\"; }\n for (const raw of res.headers.getSetCookie?.() ?? []) {\n const m = raw.match(/^([^=]+)=([^;]*)/);\n if (m && !this.cookieStr.includes(m[1] + \"=\")) this.cookieStr += \"; \" + m[1] + \"=\" + m[2];\n }\n\n const text = await res.text();\n let data: any;\n try { data = JSON.parse(text); } catch { throw new Error(`Portal returned non-JSON: ${text.slice(0, 200)}`); }\n checkPortalResponse(data, this.session);\n return data;\n }\n\n // ── Teams ──────────────────────────────────────────────────────────────\n\n async listTeams(): Promise<any[]> {\n const data = await this.post(\"account/listTeams.action\", {});\n return data.teams ?? [];\n }\n\n // ── App IDs / Bundle IDs ───────────────────────────────────────────────\n\n async listAppIds(): Promise<any[]> {\n const data = await this.post(\"account/ios/identifiers/listAppIds.action\", {\n teamId: this.teamId, pageSize: \"500\", pageNumber: \"1\", sort: \"name=asc\",\n });\n return data.appIds ?? [];\n }\n\n async createAppId(params: { identifier: string; name: string; enablePush?: boolean; enableIAP?: boolean }): Promise<any> {\n const reqParams: Record<string, string> = {\n teamId: this.teamId, type: \"explicit\", identifier: params.identifier, name: params.name,\n };\n if (params.enablePush) reqParams.push = \"on\";\n if (params.enableIAP !== false) reqParams.inAppPurchase = \"on\";\n const data = await this.post(\"account/ios/identifiers/addAppId.action\", reqParams);\n return data.appId;\n }\n\n async deleteAppId(appIdId: string): Promise<void> {\n await this.post(\"account/ios/identifiers/deleteAppId.action\", { teamId: this.teamId, appIdId });\n }\n\n // ── Certificates ───────────────────────────────────────────────────────\n\n async listCertificates(types?: string[]): Promise<any[]> {\n // Default to all known iOS cert type codes plus Fastlane's list of\n // legacy type codes (OLDER_IOS_CERTIFICATE_TYPES). The portal may still\n // return these older codes for pre-existing certs and Fastlane's\n // `Certificate.all` includes them — see certificate.rb line 278.\n const iosTypes = types ?? [\n PortalClient.CERT_TYPES.IOS_DEVELOPMENT,\n PortalClient.CERT_TYPES.IOS_DISTRIBUTION,\n ...PortalClient.OLDER_IOS_CERTIFICATE_TYPES,\n ];\n const data = await this.post(\"account/ios/certificate/listCertRequests.action\", {\n teamId: this.teamId, pageSize: \"500\", pageNumber: \"1\",\n sort: \"certRequestStatusCode=asc\", types: iosTypes.join(\",\"),\n });\n return data.certRequests ?? [];\n }\n\n async listPushCertificates(): Promise<any[]> {\n const data = await this.post(\"account/ios/certificate/listCertRequests.action\", {\n teamId: this.teamId, pageSize: \"500\", pageNumber: \"1\",\n sort: \"certRequestStatusCode=asc\",\n types: [PortalClient.CERT_TYPES.IOS_PRODUCTION_PUSH, PortalClient.CERT_TYPES.IOS_DEVELOPMENT_PUSH].join(\",\"),\n });\n return data.certRequests ?? [];\n }\n\n async createCertificate(params: { type: string; csrContent: string; appIdId?: string }): Promise<any> {\n const reqParams: Record<string, string> = {\n teamId: this.teamId, type: params.type, csrContent: params.csrContent,\n };\n if (params.appIdId) reqParams.appIdId = params.appIdId;\n const data = await this.post(\"account/ios/certificate/submitCertificateRequest.action\", reqParams);\n return data.certRequest;\n }\n\n async downloadCertificate(certId: string, type: string): Promise<Buffer> {\n const headers: Record<string, string> = { Cookie: this.cookieStr, Accept: \"application/json\" };\n const res = await fetch(\n `${PORTAL_BASE}/account/ios/certificate/downloadCertificateContent.action?teamId=${this.teamId}&certificateId=${certId}&type=${type}`,\n { headers }\n );\n return Buffer.from(await res.arrayBuffer());\n }\n\n async revokeCertificate(certId: string, type: string): Promise<void> {\n await this.post(\"account/ios/certificate/revokeCertificate.action\", {\n teamId: this.teamId, certificateId: certId, type,\n });\n }\n\n // ── Devices ────────────────────────────────────────────────────────────\n\n async listDevices(): Promise<any[]> {\n const data = await this.post(\"account/ios/device/listDevices.action\", {\n teamId: this.teamId, pageSize: \"500\", pageNumber: \"1\", sort: \"name=asc\", includeRemovedDevices: \"false\",\n });\n return data.devices ?? [];\n }\n\n async registerDevice(params: { name: string; udid: string; deviceClass?: string }): Promise<any> {\n const data = await this.post(\"account/ios/device/addDevices.action\", {\n teamId: this.teamId, deviceNames: params.name, deviceNumbers: params.udid,\n register: \"single\", deviceClasses: params.deviceClass ?? \"iphone\",\n });\n return (data.devices ?? [])[0];\n }\n\n // ── Provisioning Profiles ──────────────────────────────────────────────\n\n async listProfiles(): Promise<any[]> {\n const data = await this.post(\"account/ios/profile/listProvisioningProfiles.action\", {\n teamId: this.teamId, includeInactiveProfiles: \"true\",\n pageSize: \"500\", pageNumber: \"1\", sort: \"name=asc\",\n });\n return data.provisioningProfiles ?? [];\n }\n\n async createProfile(params: {\n appIdId: string;\n name: string;\n distributionType: string; // \"limited\" (dev), \"store\" (appstore), \"adhoc\"\n certificateIds: string[];\n deviceIds?: string[];\n }): Promise<any> {\n const reqParams: Record<string, string | string[]> = {\n teamId: this.teamId,\n appIdId: params.appIdId,\n distributionType: params.distributionType,\n provisioningProfileName: params.name,\n certificateIds: params.certificateIds,\n };\n if (params.deviceIds?.length) reqParams.deviceIds = params.deviceIds;\n const data = await this.post(\"account/ios/profile/createProvisioningProfile.action\", reqParams);\n return data.provisioningProfile;\n }\n\n async deleteProfile(profileId: string): Promise<void> {\n await this.post(\"account/ios/profile/deleteProvisioningProfile.action\", {\n teamId: this.teamId, provisioningProfileId: profileId,\n });\n }\n\n async downloadProfile(profileId: string): Promise<Buffer> {\n const headers: Record<string, string> = { Cookie: this.cookieStr };\n const res = await fetch(\n `${PORTAL_BASE}/account/ios/profile/downloadProfileContent?teamId=${this.teamId}&provisioningProfileId=${profileId}`,\n { headers }\n );\n return Buffer.from(await res.arrayBuffer());\n }\n\n // ── Certificate Type Constants (matching Fastlane) ─────────────────────\n\n /**\n * Apple certificate type codes — copied 1:1 from Fastlane's\n * spaceship/portal/certificate.rb IOS_CERTIFICATE_TYPE_IDS / MAC_CERTIFICATE_TYPE_IDS\n */\n static CERT_TYPES = {\n // iOS\n IOS_DEVELOPMENT: \"5QPB9NHCEI\",\n IOS_DISTRIBUTION: \"R58UK2EWSO\", // App Store Production\n IOS_IN_HOUSE: \"9RQEK7MSXA\",\n IOS_DEVELOPMENT_PUSH: \"JKG5JZ54H7\",\n IOS_PRODUCTION_PUSH: \"UPV3DW712I\",\n APPLE_PUSH_PRODUCTION: \"UPV3DW712I\", // alias\n APPLE_PUSH_SANDBOX: \"JKG5JZ54H7\", // alias\n PASSBOOK: \"Y3B2F3TYSI\",\n WEBSITE_PUSH: \"3T2ZP62QW8\",\n VOIP_PUSH: \"E5D663CMZW\",\n APPLE_PAY: \"4APLUP237T\",\n APPLE_PAY_MERCHANT_IDENTITY: \"MD8Q2VRT6A\",\n // Universal (Apple Development/Distribution)\n APPLE_DEVELOPMENT: \"83Q87W3TGH\",\n APPLE_DISTRIBUTION: \"WXV89964HE\",\n // Mac\n MAC_DEVELOPMENT: \"749Y1QAGU7\",\n MAC_APP_DISTRIBUTION: \"HXZEUKP0FP\",\n MAC_INSTALLER_DISTRIBUTION: \"2PQI8IDXNH\",\n MAC_PRODUCTION_PUSH: \"CDZ7EMXIZ1\",\n MAC_DEVELOPMENT_PUSH: \"HQ4KP3I34R\",\n DEVELOPER_ID_APPLICATION: \"DIVN2GW3XT\",\n DEVELOPER_ID_INSTALLER: \"OYVN2GW35E\",\n } as const;\n\n /**\n * Legacy iOS certificate type codes that can still appear in the portal\n * responses. Port of Fastlane's Spaceship::Portal::Certificate\n * OLDER_IOS_CERTIFICATE_TYPES list (certificate.rb lines 180-189).\n */\n static OLDER_IOS_CERTIFICATE_TYPES: readonly string[] = [\n \"3BQKVH9I2X\", // old ProductionPush\n \"BKLRAVXMGM\", // old DevelopmentPush\n // Also sent by the browser, but not sure what they represent:\n \"T44PTHVNID\",\n \"DZQUP8189Y\",\n \"FGQUP4785Z\",\n \"S5WE21TULA\",\n \"FUOY7LWJET\",\n ] as const;\n}\n","import { TokenManager } from \"./auth.js\";\nimport { RequestClient } from \"./request.js\";\nimport type { AppStoreConnectConfig, ListParams, RequestOptions } from \"./types.js\";\nimport { CertificatesResource } from \"../resources/certificates.js\";\nimport { ProfilesResource } from \"../resources/profiles.js\";\nimport { BundleIdsResource } from \"../resources/bundle-ids.js\";\nimport { DevicesResource } from \"../resources/devices.js\";\nimport { AppsResource } from \"../resources/apps.js\";\nimport { BuildsResource } from \"../resources/builds.js\";\nimport { BetaGroupsResource } from \"../resources/beta-groups.js\";\nimport { CapabilitiesResource } from \"../resources/capabilities.js\";\nimport { AppStoreVersionsResource } from \"../resources/app-store-versions.js\";\nimport { AppScreenshotsResource } from \"../resources/app-screenshots.js\";\nimport { ReviewSubmissionsResource } from \"../resources/review-submissions.js\";\nimport { AppInfosResource } from \"../resources/app-info.js\";\nimport { AppInfoLocalizationsResource } from \"../resources/app-info-localizations.js\";\nimport { AppStoreReviewDetailsResource } from \"../resources/app-store-review-details.js\";\nimport { BetaTestersResource } from \"../resources/beta-testers.js\";\nimport { BetaAppReviewSubmissionsResource } from \"../resources/beta-app-review-submissions.js\";\nimport { BetaAppReviewDetailsResource } from \"../resources/beta-app-review-details.js\";\nimport { BetaInvitationsResource } from \"../resources/beta-invitations.js\";\nimport { BetaLicensesResource } from \"../resources/beta-licenses.js\";\nimport { AppPreviewsResource } from \"../resources/app-previews.js\";\nimport { AppPreviewSetsResource } from \"../resources/app-preview-sets.js\";\nimport { AppPricesResource } from \"../resources/app-prices.js\";\nimport { TerritoriesResource } from \"../resources/territories.js\";\nimport { AgeRatingDeclarationsResource } from \"../resources/age-rating-declarations.js\";\nimport { AppCategoriesResource } from \"../resources/app-categories.js\";\nimport { AppEncryptionDeclarationsResource } from \"../resources/app-encryption-declarations.js\";\nimport { IdfaDeclarationsResource } from \"../resources/idfa-declarations.js\";\nimport { PreReleaseVersionsResource } from \"../resources/pre-release-versions.js\";\nimport { ReviewSubmissionItemsResource } from \"../resources/review-submission-items.js\";\nimport { UsersResource } from \"../resources/users.js\";\nimport { UserInvitationsResource } from \"../resources/user-invitations.js\";\nimport { InAppPurchasesResource } from \"../resources/in-app-purchases.js\";\nimport { GameCenterDetailResource } from \"../resources/game-center-detail.js\";\nimport { XcodeMetricsResource } from \"../resources/xcode-metrics.js\";\n\nexport type { AppStoreConnectConfig, ListParams, RequestOptions };\nexport { TokenManager } from \"./auth.js\";\nexport type { TokenConfig } from \"./auth.js\";\nexport { RequestClient, AppStoreConnectError, RateLimitError } from \"./request.js\";\nexport type * from \"./types.js\";\nexport { loginWithAppleId, checkPortalResponse, ProgramLicenseAgreementError } from \"./apple-session.js\";\nexport type { AppleSessionConfig, AppleSession, ContractMessage } from \"./apple-session.js\";\nexport { PortalClient } from \"./portal.js\";\n\nexport class AppStoreConnectClient {\n readonly http: RequestClient;\n\n readonly certificates: CertificatesResource;\n readonly profiles: ProfilesResource;\n readonly bundleIds: BundleIdsResource;\n readonly devices: DevicesResource;\n readonly apps: AppsResource;\n readonly builds: BuildsResource;\n readonly betaGroups: BetaGroupsResource;\n readonly capabilities: CapabilitiesResource;\n readonly appStoreVersions: AppStoreVersionsResource;\n readonly appScreenshots: AppScreenshotsResource;\n readonly reviewSubmissions: ReviewSubmissionsResource;\n readonly appInfos: AppInfosResource;\n readonly appInfoLocalizations: AppInfoLocalizationsResource;\n readonly appStoreReviewDetails: AppStoreReviewDetailsResource;\n readonly betaTesters: BetaTestersResource;\n readonly betaAppReviewSubmissions: BetaAppReviewSubmissionsResource;\n readonly betaAppReviewDetails: BetaAppReviewDetailsResource;\n readonly betaInvitations: BetaInvitationsResource;\n readonly betaLicenses: BetaLicensesResource;\n readonly appPreviews: AppPreviewsResource;\n readonly appPreviewSets: AppPreviewSetsResource;\n readonly appPrices: AppPricesResource;\n readonly territories: TerritoriesResource;\n readonly ageRatingDeclarations: AgeRatingDeclarationsResource;\n readonly appCategories: AppCategoriesResource;\n readonly appEncryptionDeclarations: AppEncryptionDeclarationsResource;\n readonly idfaDeclarations: IdfaDeclarationsResource;\n readonly preReleaseVersions: PreReleaseVersionsResource;\n readonly reviewSubmissionItems: ReviewSubmissionItemsResource;\n readonly users: UsersResource;\n readonly userInvitations: UserInvitationsResource;\n readonly inAppPurchases: InAppPurchasesResource;\n readonly gameCenterDetail: GameCenterDetailResource;\n readonly xcodeMetrics: XcodeMetricsResource;\n\n constructor(config: AppStoreConnectConfig) {\n const tokenManager = new TokenManager({\n keyId: config.keyId,\n issuerId: config.issuerId,\n privateKey: config.privateKey,\n enterprise: config.enterprise,\n duration: config.tokenDuration,\n });\n this.http = new RequestClient(tokenManager, config.enterprise);\n\n this.certificates = new CertificatesResource(this.http);\n this.profiles = new ProfilesResource(this.http);\n this.bundleIds = new BundleIdsResource(this.http);\n this.devices = new DevicesResource(this.http);\n this.apps = new AppsResource(this.http);\n this.builds = new BuildsResource(this.http);\n this.betaGroups = new BetaGroupsResource(this.http);\n this.capabilities = new CapabilitiesResource(this.http);\n this.appStoreVersions = new AppStoreVersionsResource(this.http);\n this.appScreenshots = new AppScreenshotsResource(this.http);\n this.reviewSubmissions = new ReviewSubmissionsResource(this.http);\n this.appInfos = new AppInfosResource(this.http);\n this.appInfoLocalizations = new AppInfoLocalizationsResource(this.http);\n this.appStoreReviewDetails = new AppStoreReviewDetailsResource(this.http);\n this.betaTesters = new BetaTestersResource(this.http);\n this.betaAppReviewSubmissions = new BetaAppReviewSubmissionsResource(this.http);\n this.betaAppReviewDetails = new BetaAppReviewDetailsResource(this.http);\n this.betaInvitations = new BetaInvitationsResource(this.http);\n this.betaLicenses = new BetaLicensesResource(this.http);\n this.appPreviews = new AppPreviewsResource(this.http);\n this.appPreviewSets = new AppPreviewSetsResource(this.http);\n this.appPrices = new AppPricesResource(this.http);\n this.territories = new TerritoriesResource(this.http);\n this.ageRatingDeclarations = new AgeRatingDeclarationsResource(this.http);\n this.appCategories = new AppCategoriesResource(this.http);\n this.appEncryptionDeclarations = new AppEncryptionDeclarationsResource(this.http);\n this.idfaDeclarations = new IdfaDeclarationsResource(this.http);\n this.preReleaseVersions = new PreReleaseVersionsResource(this.http);\n this.reviewSubmissionItems = new ReviewSubmissionItemsResource(this.http);\n this.users = new UsersResource(this.http);\n this.userInvitations = new UserInvitationsResource(this.http);\n this.inAppPurchases = new InAppPurchasesResource(this.http);\n this.gameCenterDetail = new GameCenterDetailResource(this.http);\n this.xcodeMetrics = new XcodeMetricsResource(this.http);\n }\n\n async request<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.http.request<T>(path, options);\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare class LaneContext {
|
|
2
|
+
private values;
|
|
3
|
+
readonly platform: string | null;
|
|
4
|
+
readonly laneName: string;
|
|
5
|
+
readonly env: Record<string, string | undefined>;
|
|
6
|
+
constructor(platform: string | null, laneName: string);
|
|
7
|
+
get<T = unknown>(key: string): T | undefined;
|
|
8
|
+
set(key: string, value: unknown): void;
|
|
9
|
+
has(key: string): boolean;
|
|
10
|
+
toRecord(): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { LaneContext as L };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare class LaneContext {
|
|
2
|
+
private values;
|
|
3
|
+
readonly platform: string | null;
|
|
4
|
+
readonly laneName: string;
|
|
5
|
+
readonly env: Record<string, string | undefined>;
|
|
6
|
+
constructor(platform: string | null, laneName: string);
|
|
7
|
+
get<T = unknown>(key: string): T | undefined;
|
|
8
|
+
set(key: string, value: unknown): void;
|
|
9
|
+
has(key: string): boolean;
|
|
10
|
+
toRecord(): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { LaneContext as L };
|