@sitepong/fastnode 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +81 -0
  2. package/bin/fastnode.js +13 -0
  3. package/bin/fastnode.ts +5 -0
  4. package/dist/actions/index.cjs +7405 -0
  5. package/dist/actions/index.cjs.map +1 -0
  6. package/dist/actions/index.d.cts +15 -0
  7. package/dist/actions/index.d.ts +15 -0
  8. package/dist/actions/index.mjs +7377 -0
  9. package/dist/actions/index.mjs.map +1 -0
  10. package/dist/cert/index.cjs +219 -0
  11. package/dist/cert/index.cjs.map +1 -0
  12. package/dist/cert/index.d.cts +4 -0
  13. package/dist/cert/index.d.ts +4 -0
  14. package/dist/cert/index.mjs +191 -0
  15. package/dist/cert/index.mjs.map +1 -0
  16. package/dist/cert-BmJGtYtb.d.cts +27 -0
  17. package/dist/cert-owkOFNW8.d.ts +27 -0
  18. package/dist/cli/index.cjs +7998 -0
  19. package/dist/cli/index.cjs.map +1 -0
  20. package/dist/cli/index.d.cts +9 -0
  21. package/dist/cli/index.d.ts +9 -0
  22. package/dist/cli/index.mjs +7972 -0
  23. package/dist/cli/index.mjs.map +1 -0
  24. package/dist/client/index.cjs +2592 -0
  25. package/dist/client/index.cjs.map +1 -0
  26. package/dist/client/index.d.cts +2 -0
  27. package/dist/client/index.d.ts +2 -0
  28. package/dist/client/index.mjs +2582 -0
  29. package/dist/client/index.mjs.map +1 -0
  30. package/dist/context-CymLkfrS.d.cts +13 -0
  31. package/dist/context-CymLkfrS.d.ts +13 -0
  32. package/dist/core/index.cjs +281 -0
  33. package/dist/core/index.cjs.map +1 -0
  34. package/dist/core/index.d.cts +1 -0
  35. package/dist/core/index.d.ts +1 -0
  36. package/dist/core/index.mjs +254 -0
  37. package/dist/core/index.mjs.map +1 -0
  38. package/dist/deliver/index.cjs +328 -0
  39. package/dist/deliver/index.cjs.map +1 -0
  40. package/dist/deliver/index.d.cts +3 -0
  41. package/dist/deliver/index.d.ts +3 -0
  42. package/dist/deliver/index.mjs +322 -0
  43. package/dist/deliver/index.mjs.map +1 -0
  44. package/dist/enums-B609j2rb.d.cts +20 -0
  45. package/dist/enums-B609j2rb.d.ts +20 -0
  46. package/dist/frameit/index.cjs +247 -0
  47. package/dist/frameit/index.cjs.map +1 -0
  48. package/dist/frameit/index.d.cts +1 -0
  49. package/dist/frameit/index.d.ts +1 -0
  50. package/dist/frameit/index.mjs +242 -0
  51. package/dist/frameit/index.mjs.map +1 -0
  52. package/dist/gym/index.cjs +356 -0
  53. package/dist/gym/index.cjs.map +1 -0
  54. package/dist/gym/index.d.cts +2 -0
  55. package/dist/gym/index.d.ts +2 -0
  56. package/dist/gym/index.mjs +346 -0
  57. package/dist/gym/index.mjs.map +1 -0
  58. package/dist/index-1Vu2cRQ2.d.ts +99 -0
  59. package/dist/index-A5MimeQk.d.ts +72 -0
  60. package/dist/index-B0yhu_LZ.d.ts +76 -0
  61. package/dist/index-B9yXicrQ.d.ts +62 -0
  62. package/dist/index-BFdNOmPJ.d.cts +53 -0
  63. package/dist/index-BLubSlgK.d.cts +1513 -0
  64. package/dist/index-BN0ubxjZ.d.ts +70 -0
  65. package/dist/index-BQJIJlK7.d.cts +70 -0
  66. package/dist/index-BYonklf3.d.cts +84 -0
  67. package/dist/index-BYonklf3.d.ts +84 -0
  68. package/dist/index-BimqCmY8.d.cts +78 -0
  69. package/dist/index-BimqCmY8.d.ts +78 -0
  70. package/dist/index-BoU8qt8r.d.cts +59 -0
  71. package/dist/index-BoU8qt8r.d.ts +59 -0
  72. package/dist/index-C2yG3wXA.d.cts +95 -0
  73. package/dist/index-C2yG3wXA.d.ts +95 -0
  74. package/dist/index-CR3BFPIz.d.cts +77 -0
  75. package/dist/index-CR3BFPIz.d.ts +77 -0
  76. package/dist/index-CWNLnSOL.d.cts +99 -0
  77. package/dist/index-Cp6cjtd-.d.cts +65 -0
  78. package/dist/index-Cp6cjtd-.d.ts +65 -0
  79. package/dist/index-D1Izm7qt.d.ts +1513 -0
  80. package/dist/index-D5eihzwM.d.cts +76 -0
  81. package/dist/index-DImN9PWc.d.ts +155 -0
  82. package/dist/index-DfCUVJX1.d.cts +62 -0
  83. package/dist/index-DfirmFbC.d.ts +32 -0
  84. package/dist/index-DkvinY7_.d.ts +54 -0
  85. package/dist/index-DrUpRXRG.d.cts +155 -0
  86. package/dist/index-EcVvViW8.d.cts +72 -0
  87. package/dist/index-HRiaaX-Q.d.cts +54 -0
  88. package/dist/index-TfXqwuac.d.ts +53 -0
  89. package/dist/index-lt819Jgj.d.cts +32 -0
  90. package/dist/index.cjs +8464 -0
  91. package/dist/index.cjs.map +1 -0
  92. package/dist/index.d.cts +23 -0
  93. package/dist/index.d.ts +23 -0
  94. package/dist/index.mjs +8410 -0
  95. package/dist/index.mjs.map +1 -0
  96. package/dist/lane/index.cjs +7641 -0
  97. package/dist/lane/index.cjs.map +1 -0
  98. package/dist/lane/index.d.cts +51 -0
  99. package/dist/lane/index.d.ts +51 -0
  100. package/dist/lane/index.mjs +7603 -0
  101. package/dist/lane/index.mjs.map +1 -0
  102. package/dist/match/index.cjs +942 -0
  103. package/dist/match/index.cjs.map +1 -0
  104. package/dist/match/index.d.cts +5 -0
  105. package/dist/match/index.d.ts +5 -0
  106. package/dist/match/index.mjs +913 -0
  107. package/dist/match/index.mjs.map +1 -0
  108. package/dist/pem/index.cjs +195 -0
  109. package/dist/pem/index.cjs.map +1 -0
  110. package/dist/pem/index.d.cts +3 -0
  111. package/dist/pem/index.d.ts +3 -0
  112. package/dist/pem/index.mjs +170 -0
  113. package/dist/pem/index.mjs.map +1 -0
  114. package/dist/pilot/index.cjs +206 -0
  115. package/dist/pilot/index.cjs.map +1 -0
  116. package/dist/pilot/index.d.cts +3 -0
  117. package/dist/pilot/index.d.ts +3 -0
  118. package/dist/pilot/index.mjs +196 -0
  119. package/dist/pilot/index.mjs.map +1 -0
  120. package/dist/precheck/index.cjs +277 -0
  121. package/dist/precheck/index.cjs.map +1 -0
  122. package/dist/precheck/index.d.cts +3 -0
  123. package/dist/precheck/index.d.ts +3 -0
  124. package/dist/precheck/index.mjs +274 -0
  125. package/dist/precheck/index.mjs.map +1 -0
  126. package/dist/produce/index.cjs +200 -0
  127. package/dist/produce/index.cjs.map +1 -0
  128. package/dist/produce/index.d.cts +3 -0
  129. package/dist/produce/index.d.ts +3 -0
  130. package/dist/produce/index.mjs +191 -0
  131. package/dist/produce/index.mjs.map +1 -0
  132. package/dist/scan/index.cjs +187 -0
  133. package/dist/scan/index.cjs.map +1 -0
  134. package/dist/scan/index.d.cts +1 -0
  135. package/dist/scan/index.d.ts +1 -0
  136. package/dist/scan/index.mjs +183 -0
  137. package/dist/scan/index.mjs.map +1 -0
  138. package/dist/sigh/index.cjs +203 -0
  139. package/dist/sigh/index.cjs.map +1 -0
  140. package/dist/sigh/index.d.cts +3 -0
  141. package/dist/sigh/index.d.ts +3 -0
  142. package/dist/sigh/index.mjs +198 -0
  143. package/dist/sigh/index.mjs.map +1 -0
  144. package/dist/snapshot/index.cjs +448 -0
  145. package/dist/snapshot/index.cjs.map +1 -0
  146. package/dist/snapshot/index.d.cts +1 -0
  147. package/dist/snapshot/index.d.ts +1 -0
  148. package/dist/snapshot/index.mjs +438 -0
  149. package/dist/snapshot/index.mjs.map +1 -0
  150. package/dist/trainer/index.cjs +395 -0
  151. package/dist/trainer/index.cjs.map +1 -0
  152. package/dist/trainer/index.d.cts +1 -0
  153. package/dist/trainer/index.d.ts +1 -0
  154. package/dist/trainer/index.mjs +372 -0
  155. package/dist/trainer/index.mjs.map +1 -0
  156. package/dist/xcode/index.cjs +188 -0
  157. package/dist/xcode/index.cjs.map +1 -0
  158. package/dist/xcode/index.d.cts +1 -0
  159. package/dist/xcode/index.d.ts +1 -0
  160. package/dist/xcode/index.mjs +176 -0
  161. package/dist/xcode/index.mjs.map +1 -0
  162. package/package.json +223 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/match/storage/git.ts","../../src/match/storage/s3.ts","../../src/match/storage/local.ts","../../src/cert/csr.ts","../../src/cert/cert.ts","../../src/sigh/index.ts","../../src/match/storage/index.ts","../../src/match/encryption.ts","../../src/match/index.ts"],"names":["mkdtempSync","join","tmpdir","writeFileSync","chmodSync","execFileSync","rmSync","mkdirSync","webcrypto","x509","cert","content","result","mkdir","writeFile","promisify","execFile","homedir","GitStorage","S3Storage","LocalStorage","randomBytes","pbkdf2Sync","createCipheriv","createDecipheriv","createHash","extname","readdir","readFile","existsSync","createCertificate","createProfile"],"mappings":"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","file":"index.cjs","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { mkdtempSync, rmSync, writeFileSync, chmodSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { tmpdir } from \"node:os\";\nimport type { StorageBackend, StorageParams } from \"./index.js\";\n\nexport class GitStorage implements StorageBackend {\n workingDirectory: string;\n private gitUrl: string;\n private branch: string;\n private privateKeyPath?: string;\n private privateKeyContent?: string;\n private basicAuth?: { user: string; pass: string };\n private bearerToken?: string;\n private userName?: string;\n private userEmail?: string;\n private shallowClone: boolean;\n /** Temp path written from `gitPrivateKeyContent`. Cleaned up on `cleanup`. */\n private tempKeyPath?: string;\n\n constructor(params: StorageParams) {\n this.gitUrl = params.gitUrl ?? \"\";\n this.branch = params.gitBranch ?? \"master\";\n this.privateKeyPath = params.gitPrivateKey;\n this.privateKeyContent = params.gitPrivateKeyContent;\n this.basicAuth = params.gitBasicAuth;\n this.bearerToken = params.gitBearerToken;\n this.userName = params.gitUserName;\n this.userEmail = params.gitUserEmail;\n this.shallowClone = params.shallowClone ?? true;\n this.workingDirectory = \"\";\n }\n\n async download(): Promise<string> {\n this.workingDirectory = mkdtempSync(join(tmpdir(), \"fastnode-match-\"));\n\n // Materialise inline private key content to a temp file with 0600 perms.\n if (this.privateKeyContent && !this.privateKeyPath) {\n this.tempKeyPath = join(\n mkdtempSync(join(tmpdir(), \"fastnode-match-key-\")),\n \"id_rsa\"\n );\n writeFileSync(this.tempKeyPath, this.privateKeyContent);\n chmodSync(this.tempKeyPath, 0o600);\n }\n\n const env = this.buildEnv();\n const extraArgs = this.buildHttpAuthArgs();\n const cloneBase = [\"-c\", \"http.extraheader=\", ...extraArgs]; // placeholder removed below\n // Rebuild cleanly: only include extraArgs (each is a pair of -c flag)\n const configArgs = extraArgs.flatMap((entry) => [\"-c\", entry]);\n\n const baseArgs = this.shallowClone ? [\"--depth\", \"1\"] : [];\n const branchArgs = [\"-b\", this.branch, \"--single-branch\"];\n\n try {\n execFileSync(\n \"git\",\n [\n ...configArgs,\n \"clone\",\n ...baseArgs,\n ...branchArgs,\n this.gitUrl,\n this.workingDirectory,\n ],\n { env, stdio: \"pipe\" }\n );\n } catch {\n // Branch may not exist — clone without branch and create it\n execFileSync(\n \"git\",\n [\n ...configArgs,\n \"clone\",\n ...baseArgs,\n this.gitUrl,\n this.workingDirectory,\n ],\n { env, stdio: \"pipe\" }\n );\n try {\n execFileSync(\"git\", [\"checkout\", this.branch], {\n cwd: this.workingDirectory,\n env,\n stdio: \"pipe\",\n });\n } catch {\n execFileSync(\"git\", [\"checkout\", \"--orphan\", this.branch], {\n cwd: this.workingDirectory,\n env,\n stdio: \"pipe\",\n });\n }\n }\n\n // Set commit author locally when provided (don't touch global config).\n if (this.userName) {\n execFileSync(\"git\", [\"config\", \"user.name\", this.userName], {\n cwd: this.workingDirectory,\n env,\n stdio: \"pipe\",\n });\n }\n if (this.userEmail) {\n execFileSync(\"git\", [\"config\", \"user.email\", this.userEmail], {\n cwd: this.workingDirectory,\n env,\n stdio: \"pipe\",\n });\n }\n\n return this.workingDirectory;\n }\n\n async saveChanges(files: string[], message: string): Promise<void> {\n const env = this.buildEnv();\n const extraArgs = this.buildHttpAuthArgs();\n const configArgs = extraArgs.flatMap((entry) => [\"-c\", entry]);\n const opts = {\n cwd: this.workingDirectory,\n env,\n stdio: \"pipe\" as const,\n };\n\n for (const file of files) {\n execFileSync(\"git\", [\"add\", file], opts);\n }\n\n try {\n execFileSync(\"git\", [\"commit\", \"-m\", message], opts);\n execFileSync(\n \"git\",\n [...configArgs, \"push\", \"origin\", this.branch],\n opts\n );\n } catch {\n // Nothing to commit or push failed\n }\n }\n\n async cleanup(): Promise<void> {\n if (this.workingDirectory) {\n rmSync(this.workingDirectory, { recursive: true, force: true });\n }\n if (this.tempKeyPath) {\n rmSync(this.tempKeyPath, { force: true });\n rmSync(join(this.tempKeyPath, \"..\"), { recursive: true, force: true });\n }\n }\n\n private buildHttpAuthArgs(): string[] {\n // Returns an array of `http.extraheader=...` values (for use with -c).\n // Mirrors Fastlane's match `GitStorage#setup_auth` which uses\n // `http.extraheader` to inject Basic/Bearer credentials.\n const args: string[] = [];\n if (this.basicAuth) {\n const encoded = Buffer.from(\n `${this.basicAuth.user}:${this.basicAuth.pass}`\n ).toString(\"base64\");\n args.push(`http.extraheader=Authorization: Basic ${encoded}`);\n } else if (this.bearerToken) {\n args.push(`http.extraheader=Authorization: Bearer ${this.bearerToken}`);\n }\n return args;\n }\n\n private buildEnv(): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n GIT_TERMINAL_PROMPT: \"0\",\n };\n const keyPath = this.privateKeyPath ?? this.tempKeyPath;\n if (keyPath) {\n env.GIT_SSH_COMMAND = `ssh -i ${keyPath} -o StrictHostKeyChecking=no -o IdentitiesOnly=yes`;\n }\n return env;\n }\n}\n","import { execFileSync } from \"node:child_process\";\nimport { mkdtempSync, rmSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { tmpdir } from \"node:os\";\nimport type { StorageBackend, StorageParams } from \"./index.js\";\n\nexport class S3Storage implements StorageBackend {\n workingDirectory: string;\n private bucket: string;\n private region: string;\n private prefix: string;\n\n constructor(params: StorageParams) {\n this.bucket = params.s3Bucket ?? \"\";\n this.region = params.s3Region ?? \"us-east-1\";\n this.prefix = params.s3ObjectPrefix ?? \"\";\n this.workingDirectory = \"\";\n }\n\n async download(): Promise<string> {\n this.workingDirectory = mkdtempSync(join(tmpdir(), \"fastnode-match-s3-\"));\n const s3Path = this.prefix ? `s3://${this.bucket}/${this.prefix}` : `s3://${this.bucket}`;\n\n execFileSync(\"aws\", [\"s3\", \"sync\", s3Path, this.workingDirectory, \"--region\", this.region], { stdio: \"pipe\" });\n\n return this.workingDirectory;\n }\n\n async saveChanges(files: string[], _message: string): Promise<void> {\n const s3Path = this.prefix ? `s3://${this.bucket}/${this.prefix}` : `s3://${this.bucket}`;\n\n for (const file of files) {\n const relativePath = file.replace(this.workingDirectory + \"/\", \"\");\n execFileSync(\n \"aws\",\n [\"s3\", \"cp\", file, `${s3Path}/${relativePath}`, \"--region\", this.region],\n { stdio: \"pipe\" }\n );\n }\n }\n\n async cleanup(): Promise<void> {\n if (this.workingDirectory) {\n rmSync(this.workingDirectory, { recursive: true, force: true });\n }\n }\n}\n","import { mkdirSync } from \"node:fs\";\nimport type { StorageBackend, StorageParams } from \"./index.js\";\n\nexport class LocalStorage implements StorageBackend {\n workingDirectory: string;\n\n constructor(params: StorageParams) {\n this.workingDirectory = params.localPath ?? \"\";\n }\n\n async download(): Promise<string> {\n mkdirSync(this.workingDirectory, { recursive: true });\n return this.workingDirectory;\n }\n\n async saveChanges(_files: string[], _message: string): Promise<void> {\n // Files are already on disk — nothing to push\n }\n\n async cleanup(): Promise<void> {\n // Don't delete local storage\n }\n}\n","import * as x509 from \"@peculiar/x509\";\nimport { webcrypto, generateKeyPairSync } from \"node:crypto\";\nimport { execSync } from \"node:child_process\";\nimport { writeFileSync, readFileSync, unlinkSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { tmpdir } from \"node:os\";\n\n// Register the Node.js crypto provider.\nx509.cryptoProvider.set(webcrypto as unknown as Parameters<typeof x509.cryptoProvider.set>[0]);\n\nfunction toPem(header: string, der: Buffer): string {\n const b64 = der.toString(\"base64\");\n const lines: string[] = [];\n for (let i = 0; i < b64.length; i += 64) lines.push(b64.slice(i, i + 64));\n return `-----BEGIN ${header}-----\\n${lines.join(\"\\n\")}\\n-----END ${header}-----`;\n}\n\n/**\n * Generate EC P-256 CSR — used by App Store Connect API (JWT auth).\n */\nexport async function generateCSR(): Promise<{ csr: string; privateKey: string }> {\n const algorithm = { name: \"ECDSA\", namedCurve: \"P-256\" } as const;\n const keyPair = await webcrypto.subtle.generateKey(algorithm, true, [\"sign\", \"verify\"]);\n\n const csr = await x509.Pkcs10CertificateRequestGenerator.create({\n name: \"CN=PEM\",\n keys: keyPair,\n signingAlgorithm: { name: \"ECDSA\", hash: \"SHA-256\" },\n });\n\n const pkcs8 = await webcrypto.subtle.exportKey(\"pkcs8\", keyPair.privateKey);\n return {\n csr: csr.toString(\"pem\"),\n privateKey: toPem(\"PRIVATE KEY\", Buffer.from(pkcs8)),\n };\n}\n\n/**\n * Generate RSA 2048 CSR — required by Apple Developer Portal (session auth).\n * Matches Fastlane's create_certificate_signing_request which uses RSA 2048.\n */\nexport function generateRSACSR(): { csr: string; privateKey: string } {\n const { privateKey, publicKey } = generateKeyPairSync(\"rsa\", {\n modulusLength: 2048,\n privateKeyEncoding: { type: \"pkcs8\", format: \"pem\" },\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n });\n\n // Generate CSR using openssl (Node crypto doesn't have native CSR generation for RSA)\n const keyPath = join(tmpdir(), `fastnode-rsa-${Date.now()}.pem`);\n const csrPath = join(tmpdir(), `fastnode-rsa-${Date.now()}.csr`);\n\n try {\n writeFileSync(keyPath, privateKey);\n execSync(`openssl req -new -key \"${keyPath}\" -out \"${csrPath}\" -subj \"/CN=PEM\" 2>/dev/null`);\n const csr = readFileSync(csrPath, \"utf-8\");\n return { csr, privateKey };\n } finally {\n try { unlinkSync(keyPath); } catch {}\n try { unlinkSync(csrPath); } catch {}\n }\n}\n","import { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { writeFile, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { createHash } from \"node:crypto\";\nimport type { AppStoreConnectClient } from \"../client/index.js\";\nimport type { Certificate, CertificateType } from \"../types/index.js\";\nimport { generateCSR } from \"./csr.js\";\n\nconst execFileAsync = promisify(execFile);\n\nexport interface CertOptions {\n client: AppStoreConnectClient;\n type?: CertificateType;\n development?: boolean;\n force?: boolean;\n outputDir?: string;\n keychainPath?: string;\n keychainPassword?: string;\n platform?: \"ios\" | \"macos\";\n}\n\nexport interface CertResult {\n certificate: Certificate;\n privateKey: string;\n certificateContent: Buffer;\n certPath?: string;\n p12Path?: string;\n}\n\nfunction resolveCertificateTypes(options: CertOptions): CertificateType[] {\n if (options.type) return [options.type];\n\n const platform = options.platform ?? \"ios\";\n if (options.development) {\n return platform === \"macos\" ? [\"MAC_APP_DEVELOPMENT\"] : [\"IOS_DEVELOPMENT\"];\n }\n return platform === \"macos\"\n ? [\"MAC_APP_DISTRIBUTION\"]\n : [\"IOS_DISTRIBUTION\"];\n}\n\nexport async function findValidCertificates(\n options: Omit<CertOptions, \"force\">\n): Promise<Certificate[]> {\n const types = resolveCertificateTypes(options as CertOptions);\n const certs = await options.client.certificates.list({\n filter: { certificateType: types },\n limit: 200,\n });\n\n const now = new Date();\n return certs.filter(\n (c) => new Date(c.attributes.expirationDate) > now\n );\n}\n\nexport async function createCertificate(\n options: CertOptions\n): Promise<CertResult> {\n // Check for existing valid certs unless force\n if (!options.force) {\n const existing = await findValidCertificates(options);\n if (existing.length > 0) {\n const cert = existing[0];\n const content = Buffer.from(cert.attributes.certificateContent, \"base64\");\n const result: CertResult = {\n certificate: cert,\n privateKey: \"\",\n certificateContent: content,\n };\n\n if (options.outputDir) {\n await mkdir(options.outputDir, { recursive: true });\n const certPath = join(options.outputDir, `${cert.id}.cer`);\n await writeFile(certPath, content);\n result.certPath = certPath;\n }\n\n return result;\n }\n }\n\n // Generate CSR and create new certificate\n const types = resolveCertificateTypes(options);\n const { csr, privateKey } = await generateCSR();\n\n const cert = await options.client.certificates.create({\n certificateType: types[0],\n csrContent: csr,\n });\n\n const content = Buffer.from(cert.attributes.certificateContent, \"base64\");\n\n const result: CertResult = {\n certificate: cert,\n privateKey,\n certificateContent: content,\n };\n\n // Write files if outputDir provided\n if (options.outputDir) {\n await mkdir(options.outputDir, { recursive: true });\n\n const certPath = join(options.outputDir, `${cert.id}.cer`);\n await writeFile(certPath, content);\n result.certPath = certPath;\n\n const keyPath = join(options.outputDir, `${cert.id}.p12`);\n await writeFile(keyPath, privateKey);\n result.p12Path = keyPath;\n }\n\n // Import to keychain if on macOS\n if (options.keychainPath && process.platform === \"darwin\") {\n await importToKeychain(\n content,\n options.keychainPath,\n options.keychainPassword\n );\n }\n\n return result;\n}\n\nexport async function revokeCertificate(\n client: AppStoreConnectClient,\n id: string\n): Promise<void> {\n await client.certificates.revoke(id);\n}\n\nexport async function downloadCertificate(\n client: AppStoreConnectClient,\n id: string\n): Promise<Buffer> {\n const cert = await client.certificates.get(id);\n return Buffer.from(cert.attributes.certificateContent, \"base64\");\n}\n\nexport async function revokeExpiredCertificates(\n options: CertOptions\n): Promise<number> {\n const types = resolveCertificateTypes(options);\n const certs = await options.client.certificates.list({\n filter: { certificateType: types },\n });\n\n const now = new Date();\n let count = 0;\n for (const cert of certs) {\n if (new Date(cert.attributes.expirationDate) <= now) {\n try {\n await options.client.certificates.revoke(cert.id);\n count++;\n } catch {\n // Ignore revocation failures for already-revoked certs\n }\n }\n }\n return count;\n}\n\nasync function importToKeychain(\n certData: Buffer,\n keychainPath: string,\n keychainPassword?: string\n): Promise<void> {\n const { tmpdir } = await import(\"node:os\");\n const tempCertPath = join(tmpdir(), `fastnode-cert-${Date.now()}.cer`);\n await writeFile(tempCertPath, certData);\n\n try {\n const args = [\n \"import\",\n tempCertPath,\n \"-k\",\n keychainPath,\n \"-T\",\n \"/usr/bin/codesign\",\n \"-T\",\n \"/usr/bin/security\",\n ];\n\n await execFileAsync(\"security\", args);\n\n // Set partition list if keychain password provided\n if (keychainPassword) {\n await execFileAsync(\"security\", [\n \"set-key-partition-list\",\n \"-S\",\n \"apple-tool:,apple:,codesign:\",\n \"-s\",\n \"-k\",\n keychainPassword,\n keychainPath,\n ]);\n }\n } finally {\n const { unlink } = await import(\"node:fs/promises\");\n await unlink(tempCertPath).catch(() => {});\n }\n}\n","import { writeFile, mkdir, copyFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport type { AppStoreConnectClient } from \"../client/index.js\";\nimport type { Profile, ProfileType, CertificateType, Platform } from \"../types/index.js\";\n\nexport interface SighOptions {\n client: AppStoreConnectClient;\n bundleIdentifier: string;\n profileType?: ProfileType;\n profileName?: string;\n certificateIds?: string[];\n deviceIds?: string[];\n force?: boolean;\n outputDir?: string;\n platform?: \"ios\" | \"macos\" | \"tvos\" | \"catalyst\";\n development?: boolean;\n adhoc?: boolean;\n inHouse?: boolean;\n readonly?: boolean;\n skipInstall?: boolean;\n skipCertificateVerification?: boolean;\n includeAllCertificates?: boolean;\n}\n\nexport interface SighResult {\n profile: Profile;\n profileContent: Buffer;\n uuid: string;\n name: string;\n filePath?: string;\n}\n\nfunction resolveProfileType(options: SighOptions): ProfileType {\n if (options.profileType) return options.profileType;\n\n const platform = options.platform ?? \"ios\";\n const isDev = options.development ?? false;\n const isAdhoc = options.adhoc ?? false;\n const isInHouse = options.inHouse ?? false;\n\n switch (platform) {\n case \"macos\":\n if (isDev) return \"MAC_APP_DEVELOPMENT\";\n if (isInHouse) return \"MAC_APP_INHOUSE\";\n return \"MAC_APP_STORE\";\n case \"tvos\":\n if (isDev) return \"TVOS_APP_DEVELOPMENT\";\n if (isAdhoc) return \"TVOS_APP_ADHOC\";\n if (isInHouse) return \"TVOS_APP_INHOUSE\";\n return \"TVOS_APP_STORE\";\n case \"catalyst\":\n if (isDev) return \"MAC_CATALYST_APP_DEVELOPMENT\";\n if (isInHouse) return \"MAC_CATALYST_APP_INHOUSE\";\n return \"MAC_CATALYST_APP_STORE\";\n default:\n if (isDev) return \"IOS_APP_DEVELOPMENT\";\n if (isAdhoc) return \"IOS_APP_ADHOC\";\n if (isInHouse) return \"IOS_APP_INHOUSE\";\n return \"IOS_APP_STORE\";\n }\n}\n\nfunction certificateTypesForProfile(\n profileType: ProfileType\n): CertificateType[] {\n switch (profileType) {\n case \"IOS_APP_DEVELOPMENT\":\n case \"TVOS_APP_DEVELOPMENT\":\n case \"MAC_CATALYST_APP_DEVELOPMENT\":\n return [\"IOS_DEVELOPMENT\"];\n case \"MAC_APP_DEVELOPMENT\":\n return [\"MAC_APP_DEVELOPMENT\"];\n case \"IOS_APP_STORE\":\n case \"IOS_APP_ADHOC\":\n case \"TVOS_APP_STORE\":\n case \"TVOS_APP_ADHOC\":\n case \"MAC_CATALYST_APP_STORE\":\n return [\"IOS_DISTRIBUTION\"];\n case \"IOS_APP_INHOUSE\":\n case \"TVOS_APP_INHOUSE\":\n case \"MAC_CATALYST_APP_INHOUSE\":\n return [\"IOS_DISTRIBUTION\"];\n case \"MAC_APP_STORE\":\n case \"MAC_APP_INHOUSE\":\n return [\"MAC_APP_DISTRIBUTION\"];\n case \"MAC_APP_DIRECT\":\n return [\"DEVELOPER_ID_APPLICATION\"];\n default:\n return [\"IOS_DISTRIBUTION\"];\n }\n}\n\nfunction needsDevices(profileType: ProfileType): boolean {\n return (\n profileType.includes(\"DEVELOPMENT\") || profileType.includes(\"ADHOC\")\n );\n}\n\nfunction profileExtension(profileType: ProfileType): string {\n return profileType.startsWith(\"MAC_\") && !profileType.includes(\"CATALYST\")\n ? \".provisionprofile\"\n : \".mobileprovision\";\n}\n\nexport async function findMatchingProfile(\n options: Omit<SighOptions, \"force\">\n): Promise<Profile | null> {\n const profileType = resolveProfileType(options as SighOptions);\n const profiles = await options.client.profiles.list({\n filter: { profileType },\n include: \"bundleId\",\n limit: 200,\n });\n\n const now = new Date();\n for (const profile of profiles) {\n // Check bundle ID match\n const bundleIdRel = profile.relationships?.bundleId?.data;\n if (bundleIdRel) {\n const bundleId = await options.client.bundleIds.get(bundleIdRel.id);\n if (bundleId.attributes.identifier !== options.bundleIdentifier) continue;\n }\n\n // Check state and expiration\n if (profile.attributes.profileState !== \"ACTIVE\") continue;\n if (new Date(profile.attributes.expirationDate) <= now) continue;\n\n // Check name if specified\n if (\n options.profileName &&\n profile.attributes.name !== options.profileName\n ) {\n continue;\n }\n\n return profile;\n }\n\n return null;\n}\n\nexport async function createProfile(\n options: SighOptions\n): Promise<SighResult> {\n const profileType = resolveProfileType(options);\n\n // If force, delete existing first\n if (options.force) {\n const existing = await findMatchingProfile(options);\n if (existing) {\n await options.client.profiles.delete(existing.id);\n }\n } else {\n // Check for existing\n const existing = await findMatchingProfile(options);\n if (existing) {\n return downloadAndReturn(options, existing);\n }\n }\n\n // Find or verify bundle ID\n let bundleId = await options.client.bundleIds.find(options.bundleIdentifier);\n if (!bundleId) {\n throw new Error(\n `Bundle ID '${options.bundleIdentifier}' not found. Register it first with produce.registerBundleId().`\n );\n }\n\n // Get certificates\n const certTypes = certificateTypesForProfile(profileType);\n let certificateIds = options.certificateIds;\n if (!certificateIds || certificateIds.length === 0) {\n const certs = await options.client.certificates.list({\n filter: { certificateType: certTypes },\n });\n const now = new Date();\n const validCerts = certs.filter(\n (c) => new Date(c.attributes.expirationDate) > now\n );\n if (validCerts.length === 0) {\n throw new Error(\n `No valid certificates found of type ${certTypes.join(\", \")}. Create one first with cert.createCertificate().`\n );\n }\n certificateIds = options.includeAllCertificates\n ? validCerts.map((c) => c.id)\n : [validCerts[0].id];\n }\n\n // Get devices if needed\n let deviceIds = options.deviceIds;\n if (needsDevices(profileType) && (!deviceIds || deviceIds.length === 0)) {\n const platform: Platform =\n options.platform === \"macos\"\n ? \"MAC_OS\"\n : options.platform === \"tvos\"\n ? \"TVOS\"\n : \"IOS\";\n const devices = await options.client.devices.list({\n filter: { platform, status: \"ENABLED\" },\n });\n deviceIds = devices.map((d) => d.id);\n }\n\n // Generate profile name\n const profileName =\n options.profileName ??\n `${profileType} ${options.bundleIdentifier} ${Date.now()}`;\n\n // Create profile\n const profile = await options.client.profiles.create({\n name: profileName,\n profileType,\n bundleIdId: bundleId.id,\n certificateIds,\n deviceIds,\n });\n\n return downloadAndReturn(options, profile);\n}\n\nasync function downloadAndReturn(\n options: SighOptions,\n profile: Profile\n): Promise<SighResult> {\n const content = Buffer.from(profile.attributes.profileContent, \"base64\");\n const profileType = resolveProfileType(options);\n const ext = profileExtension(profileType);\n\n const result: SighResult = {\n profile,\n profileContent: content,\n uuid: profile.attributes.uuid,\n name: profile.attributes.name,\n };\n\n if (options.outputDir) {\n await mkdir(options.outputDir, { recursive: true });\n const filename = `${profileType}_${options.bundleIdentifier}${ext}`;\n const filePath = join(options.outputDir, filename);\n await writeFile(filePath, content);\n result.filePath = filePath;\n }\n\n // Install on macOS\n if (!options.skipInstall && process.platform === \"darwin\") {\n await installProfile(content, profile.attributes.uuid);\n }\n\n return result;\n}\n\nexport async function downloadProfile(\n client: AppStoreConnectClient,\n id: string\n): Promise<Buffer> {\n const profile = await client.profiles.get(id);\n return Buffer.from(profile.attributes.profileContent, \"base64\");\n}\n\n/**\n * Install a provisioning profile to both the legacy MobileDevice directory\n * (Xcode ≤ 15) and the new Xcode 16+ location. Xcode 16 moved the default\n * profiles directory to `~/Library/Developer/Xcode/UserData/Provisioning\n * Profiles/`; writing to both keeps old and new Xcodes happy without needing\n * to detect the installed Xcode version.\n *\n * Returns the legacy path as the primary install location.\n */\nexport async function installProfile(\n profileContent: Buffer,\n uuid: string\n): Promise<string> {\n const legacyDir = join(\n homedir(),\n \"Library\",\n \"MobileDevice\",\n \"Provisioning Profiles\"\n );\n const xcode16Dir = join(\n homedir(),\n \"Library\",\n \"Developer\",\n \"Xcode\",\n \"UserData\",\n \"Provisioning Profiles\"\n );\n const filename = `${uuid}.mobileprovision`;\n\n await mkdir(legacyDir, { recursive: true });\n const legacyPath = join(legacyDir, filename);\n await writeFile(legacyPath, profileContent);\n\n // Also install into the Xcode 16+ location. Non-fatal if it fails\n // (e.g. sandboxed environments).\n try {\n await mkdir(xcode16Dir, { recursive: true });\n await writeFile(join(xcode16Dir, filename), profileContent);\n } catch {\n // Ignore — legacy path install is the authoritative one.\n }\n\n return legacyPath;\n}\n","export interface StorageBackend {\n workingDirectory: string;\n download(): Promise<string>;\n saveChanges(files: string[], message: string): Promise<void>;\n cleanup(): Promise<void>;\n}\n\nexport type StorageMode = \"git\" | \"s3\" | \"local\";\n\nexport interface StorageParams {\n mode: StorageMode;\n gitUrl?: string;\n gitBranch?: string;\n /** Path to an SSH private key file. */\n gitPrivateKey?: string;\n /**\n * Raw SSH private key content (alternative to `gitPrivateKey`). Written\n * to a temp file with `0600` perms before `git clone`.\n */\n gitPrivateKeyContent?: string;\n /** HTTP Basic auth credentials. */\n gitBasicAuth?: { user: string; pass: string };\n /** HTTP Bearer token for authorization. */\n gitBearerToken?: string;\n /** Override the commit author name. */\n gitUserName?: string;\n /** Override the commit author email. */\n gitUserEmail?: string;\n /** Disable the default `--depth 1` shallow clone. */\n shallowClone?: boolean;\n s3Bucket?: string;\n s3Region?: string;\n s3ObjectPrefix?: string;\n localPath?: string;\n teamId?: string;\n}\n\nexport async function createStorage(params: StorageParams): Promise<StorageBackend> {\n switch (params.mode) {\n case \"git\": {\n const { GitStorage } = await import(\"./git.js\");\n return new GitStorage(params);\n }\n case \"s3\": {\n const { S3Storage } = await import(\"./s3.js\");\n return new S3Storage(params);\n }\n case \"local\": {\n const { LocalStorage } = await import(\"./local.js\");\n return new LocalStorage(params);\n }\n default:\n throw new Error(`Unknown storage mode: ${params.mode}`);\n }\n}\n","import { createCipheriv, createDecipheriv, pbkdf2Sync, randomBytes, createHash } from \"node:crypto\";\nimport { readFile, writeFile, readdir, stat } from \"node:fs/promises\";\nimport { join, extname } from \"node:path\";\n\nconst V2_PREFIX = \"match_encrypted_v2__\";\nconst V1_PREFIX = \"Salted__\";\nconst PBKDF2_ITERATIONS = 10_000;\nconst PBKDF2_HASH = \"sha256\";\nconst PBKDF2_KEY_LEN = 32 + 12 + 24; // key(32) + iv(12) + authData(24) = 68\n\nconst ENCRYPTABLE_EXTENSIONS = [\".cer\", \".p12\", \".mobileprovision\", \".provisionprofile\", \".pkey\", \".pem\"];\n\n// ── V2: AES-256-GCM with PBKDF2 ───────────────────────────────────────────\n\nexport function encryptV2(data: Buffer, password: string): Buffer {\n const salt = randomBytes(8);\n const derived = pbkdf2Sync(password, salt, PBKDF2_ITERATIONS, PBKDF2_KEY_LEN, PBKDF2_HASH);\n const key = derived.subarray(0, 32);\n const iv = derived.subarray(32, 44);\n const authData = derived.subarray(44, 68);\n\n const cipher = createCipheriv(\"aes-256-gcm\", key, iv);\n cipher.setAAD(authData);\n const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);\n const authTag = cipher.getAuthTag(); // 16 bytes\n\n // Format: prefix + salt(8) + authTag(16) + ciphertext\n const prefix = Buffer.from(V2_PREFIX, \"utf-8\");\n const result = Buffer.concat([prefix, salt, authTag, encrypted]);\n return Buffer.from(result.toString(\"base64\"));\n}\n\nexport function decryptV2(data: Buffer, password: string): Buffer {\n const raw = Buffer.from(data.toString(\"utf-8\"), \"base64\");\n const prefixLen = Buffer.from(V2_PREFIX, \"utf-8\").length;\n\n const salt = raw.subarray(prefixLen, prefixLen + 8);\n const authTag = raw.subarray(prefixLen + 8, prefixLen + 24);\n const ciphertext = raw.subarray(prefixLen + 24);\n\n const derived = pbkdf2Sync(password, salt, PBKDF2_ITERATIONS, PBKDF2_KEY_LEN, PBKDF2_HASH);\n const key = derived.subarray(0, 32);\n const iv = derived.subarray(32, 44);\n const authData = derived.subarray(44, 68);\n\n const decipher = createDecipheriv(\"aes-256-gcm\", key, iv);\n decipher.setAAD(authData);\n decipher.setAuthTag(authTag);\n return Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n}\n\n// ── V1: AES-256-CBC (legacy, decrypt only) ─────────────────────────────────\n\nfunction evpBytesToKey(\n password: string,\n salt: Buffer,\n keyLen: number,\n ivLen: number,\n hashAlg: string\n): { key: Buffer; iv: Buffer } {\n const target = keyLen + ivLen;\n const result: Buffer[] = [];\n let total = 0;\n let prev = Buffer.alloc(0);\n\n while (total < target) {\n const input = Buffer.concat([prev, Buffer.from(password, \"utf-8\"), salt]);\n prev = createHash(hashAlg).update(input).digest();\n result.push(prev);\n total += prev.length;\n }\n\n const derived = Buffer.concat(result);\n return {\n key: derived.subarray(0, keyLen),\n iv: derived.subarray(keyLen, keyLen + ivLen),\n };\n}\n\nexport function decryptV1(data: Buffer, password: string): Buffer {\n const raw = Buffer.from(data.toString(\"utf-8\"), \"base64\");\n const saltHeader = raw.subarray(0, 8).toString(\"utf-8\");\n\n if (saltHeader !== V1_PREFIX) {\n throw new Error(\"Invalid V1 encrypted data: missing Salted__ header\");\n }\n\n const salt = raw.subarray(8, 16);\n const ciphertext = raw.subarray(16);\n\n // Try MD5 first (original OpenSSL default), then SHA256\n for (const hashAlg of [\"md5\", \"sha256\"]) {\n try {\n const { key, iv } = evpBytesToKey(password, salt, 32, 16, hashAlg);\n const decipher = createDecipheriv(\"aes-256-cbc\", key, iv);\n return Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n } catch {\n continue;\n }\n }\n\n throw new Error(\"Failed to decrypt V1 data with both MD5 and SHA256\");\n}\n\n// ── Auto-detect and decrypt ────────────────────────────────────────────────\n\nexport function decrypt(data: Buffer, password: string): Buffer {\n const str = data.toString(\"utf-8\");\n const decoded = Buffer.from(str, \"base64\").toString(\"utf-8\");\n\n if (decoded.startsWith(V2_PREFIX)) {\n return decryptV2(data, password);\n }\n if (decoded.startsWith(V1_PREFIX)) {\n return decryptV1(data, password);\n }\n // Try V2 first, then V1\n try {\n return decryptV2(data, password);\n } catch {\n return decryptV1(data, password);\n }\n}\n\nexport function encrypt(data: Buffer, password: string): Buffer {\n return encryptV2(data, password);\n}\n\n// ── File-level operations ──────────────────────────────────────────────────\n\nfunction isEncryptable(filePath: string): boolean {\n return ENCRYPTABLE_EXTENSIONS.includes(extname(filePath).toLowerCase());\n}\n\nexport async function decryptFiles(dir: string, password: string): Promise<void> {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n await decryptFiles(fullPath, password);\n } else if (isEncryptable(fullPath)) {\n const data = await readFile(fullPath);\n try {\n const decrypted = decrypt(data, password);\n await writeFile(fullPath, decrypted);\n } catch {\n // File may not be encrypted, skip\n }\n }\n }\n}\n\nexport async function encryptFiles(dir: string, password: string): Promise<void> {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n await encryptFiles(fullPath, password);\n } else if (isEncryptable(fullPath)) {\n const data = await readFile(fullPath);\n const encrypted = encrypt(data, password);\n await writeFile(fullPath, encrypted);\n }\n }\n}\n","import { join, extname } from \"node:path\";\nimport { readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport type { AppStoreConnectClient } from \"../client/index.js\";\nimport type { CertificateType, ProfileType } from \"../types/index.js\";\nimport type { CertResult } from \"../cert/cert.js\";\nimport type { SighResult } from \"../sigh/index.js\";\nimport { createStorage, type StorageMode } from \"./storage/index.js\";\nimport { decryptFiles, encryptFiles } from \"./encryption.js\";\nexport { encrypt, decrypt, encryptV2, decryptV2, decryptV1, encryptFiles, decryptFiles } from \"./encryption.js\";\n\nexport interface MatchOptions {\n client: AppStoreConnectClient;\n type: \"development\" | \"appstore\" | \"adhoc\" | \"enterprise\";\n appIdentifiers: string[];\n storageMode: StorageMode;\n gitUrl?: string;\n gitBranch?: string;\n /** Path to an SSH private key file. */\n gitPrivateKey?: string;\n /** Raw SSH private key content (alternative to `gitPrivateKey`). */\n gitPrivateKeyContent?: string;\n /** HTTP Basic auth credentials for the git remote. */\n gitBasicAuth?: { user: string; pass: string };\n /** HTTP Bearer token for the git remote. */\n gitBearerToken?: string;\n /** Override the commit author name. */\n gitUserName?: string;\n /** Override the commit author email. */\n gitUserEmail?: string;\n /** Disable the default `--depth 1` shallow clone. */\n shallowClone?: boolean;\n s3Bucket?: string;\n s3Region?: string;\n localPath?: string;\n password?: string;\n readonly?: boolean;\n force?: boolean;\n keychainName?: string;\n keychainPassword?: string;\n teamId?: string;\n platform?: \"ios\" | \"macos\" | \"tvos\" | \"catalyst\";\n}\n\nexport interface MatchResult {\n certificates: CertResult[];\n profiles: SighResult[];\n}\n\nfunction profileTypeForMatch(\n type: MatchOptions[\"type\"],\n platform: MatchOptions[\"platform\"]\n): ProfileType {\n const p = platform ?? \"ios\";\n switch (type) {\n case \"development\":\n if (p === \"macos\") return \"MAC_APP_DEVELOPMENT\";\n if (p === \"tvos\") return \"TVOS_APP_DEVELOPMENT\";\n if (p === \"catalyst\") return \"MAC_CATALYST_APP_DEVELOPMENT\";\n return \"IOS_APP_DEVELOPMENT\";\n case \"adhoc\":\n if (p === \"tvos\") return \"TVOS_APP_ADHOC\";\n return \"IOS_APP_ADHOC\";\n case \"enterprise\":\n if (p === \"macos\") return \"MAC_APP_INHOUSE\";\n if (p === \"tvos\") return \"TVOS_APP_INHOUSE\";\n if (p === \"catalyst\") return \"MAC_CATALYST_APP_INHOUSE\";\n return \"IOS_APP_INHOUSE\";\n default:\n if (p === \"macos\") return \"MAC_APP_STORE\";\n if (p === \"tvos\") return \"TVOS_APP_STORE\";\n if (p === \"catalyst\") return \"MAC_CATALYST_APP_STORE\";\n return \"IOS_APP_STORE\";\n }\n}\n\nfunction certTypeForMatch(\n type: MatchOptions[\"type\"],\n platform: MatchOptions[\"platform\"]\n): CertificateType {\n const p = platform ?? \"ios\";\n if (type === \"development\") {\n return p === \"macos\" ? \"MAC_APP_DEVELOPMENT\" : \"IOS_DEVELOPMENT\";\n }\n return p === \"macos\" ? \"MAC_APP_DISTRIBUTION\" : \"IOS_DISTRIBUTION\";\n}\n\nfunction certSubdir(type: MatchOptions[\"type\"]): string {\n return type === \"development\" ? \"development\" : \"distribution\";\n}\n\nfunction profileSubdir(type: MatchOptions[\"type\"]): string {\n switch (type) {\n case \"development\": return \"development\";\n case \"adhoc\": return \"adhoc\";\n case \"enterprise\": return \"enterprise\";\n default: return \"appstore\";\n }\n}\n\nexport async function syncSigningAssets(\n options: MatchOptions\n): Promise<MatchResult> {\n const password = options.password ?? process.env.MATCH_PASSWORD ?? \"\";\n if (!password) {\n throw new Error(\"Match password is required. Set MATCH_PASSWORD or pass password option.\");\n }\n\n // Initialize storage\n const storage = await createStorage({\n mode: options.storageMode,\n gitUrl: options.gitUrl,\n gitBranch: options.gitBranch,\n gitPrivateKey: options.gitPrivateKey,\n gitPrivateKeyContent: options.gitPrivateKeyContent,\n gitBasicAuth: options.gitBasicAuth,\n gitBearerToken: options.gitBearerToken,\n gitUserName: options.gitUserName,\n gitUserEmail: options.gitUserEmail,\n shallowClone: options.shallowClone,\n s3Bucket: options.s3Bucket,\n s3Region: options.s3Region,\n localPath: options.localPath,\n teamId: options.teamId,\n });\n\n const workDir = await storage.download();\n\n // Decrypt files\n await decryptFiles(workDir, password);\n\n const certificates: CertResult[] = [];\n const profiles: SighResult[] = [];\n const filesToCommit: string[] = [];\n\n const certDir = join(workDir, \"certs\", certSubdir(options.type));\n const profileDir = join(workDir, \"profiles\", profileSubdir(options.type));\n\n for (const appId of options.appIdentifiers) {\n // Check for existing certificate\n let certResult: CertResult | null = null;\n const certFiles = existsSync(certDir) ? await findFilesWithExt(certDir, \".cer\") : [];\n\n if (certFiles.length > 0 && !options.force) {\n // Use existing cert from storage\n const certContent = await readFile(certFiles[0]);\n certResult = {\n certificate: null as any, // Stored cert doesn't have full API object\n privateKey: \"\",\n certificateContent: certContent,\n certPath: certFiles[0],\n };\n } else if (!options.readonly) {\n // Generate new cert\n const { createCertificate } = await import(\"../cert/cert.js\");\n certResult = await createCertificate({\n client: options.client,\n type: certTypeForMatch(options.type, options.platform),\n outputDir: certDir,\n keychainPath: options.keychainName,\n keychainPassword: options.keychainPassword,\n });\n if (certResult.certPath) filesToCommit.push(certResult.certPath);\n if (certResult.p12Path) filesToCommit.push(certResult.p12Path);\n }\n\n if (certResult) certificates.push(certResult);\n\n // Check for existing profile\n const profileFiles = existsSync(profileDir) ? await findFilesWithExt(profileDir, \".mobileprovision\") : [];\n const matchingProfile = profileFiles.find((f) => f.includes(appId));\n\n if (matchingProfile && !options.force) {\n const profileContent = await readFile(matchingProfile);\n profiles.push({\n profile: null as any,\n profileContent,\n uuid: \"\",\n name: \"\",\n filePath: matchingProfile,\n });\n } else if (!options.readonly) {\n // Generate new profile\n const { createProfile } = await import(\"../sigh/index.js\");\n const profileType = profileTypeForMatch(options.type, options.platform);\n const sighResult = await createProfile({\n client: options.client,\n bundleIdentifier: appId,\n profileType,\n outputDir: profileDir,\n skipInstall: false,\n });\n if (sighResult.filePath) filesToCommit.push(sighResult.filePath);\n profiles.push(sighResult);\n }\n }\n\n // Encrypt and save changes\n if (filesToCommit.length > 0 && !options.readonly) {\n await encryptFiles(workDir, password);\n // Mirror Fastlane's match commit message: `[fastlane-match] Updated\n // {type} and profile for {appId}` — adapted for fastnode and multiple\n // app identifiers.\n const appList = options.appIdentifiers.join(\", \");\n const message = `[fastlane-match] Updated ${options.type} and profile for ${appList}`;\n await storage.saveChanges(filesToCommit, message);\n }\n\n await storage.cleanup();\n\n return { certificates, profiles };\n}\n\nasync function findFilesWithExt(dir: string, ext: string): Promise<string[]> {\n const entries = await readdir(dir, { withFileTypes: true });\n const results: string[] = [];\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (!entry.isDirectory() && extname(entry.name) === ext) {\n results.push(fullPath);\n }\n }\n return results;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import '../index-BLubSlgK.cjs';
2
+ import '../cert-BmJGtYtb.cjs';
3
+ import '../index-BFdNOmPJ.cjs';
4
+ export { M as MatchOptions, a as MatchResult, d as decrypt, h as decryptFiles, f as decryptV1, c as decryptV2, e as encrypt, g as encryptFiles, b as encryptV2, s as syncSigningAssets } from '../index-BQJIJlK7.cjs';
5
+ import '../enums-B609j2rb.cjs';
@@ -0,0 +1,5 @@
1
+ import '../index-D1Izm7qt.js';
2
+ import '../cert-owkOFNW8.js';
3
+ import '../index-TfXqwuac.js';
4
+ export { M as MatchOptions, a as MatchResult, d as decrypt, h as decryptFiles, f as decryptV1, c as decryptV2, e as encrypt, g as encryptFiles, b as encryptV2, s as syncSigningAssets } from '../index-BN0ubxjZ.js';
5
+ import '../enums-B609j2rb.js';