{"version":3,"file":"gitlabPublisher.js","sourceRoot":"","sources":["../src/gitlabPublisher.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, Fields, httpExecutor, InvalidConfigurationError, isEmptyOrSpaces, isTokenCharValid, log } from \"builder-util\"\nimport { createReadStream } from \"fs\"\nimport { stat } from \"fs/promises\"\nimport { readFile } from \"fs/promises\"\nimport { configureRequestOptions, GitlabOptions, GitlabReleaseInfo, parseJson, HttpError } from \"builder-util-runtime\"\nimport { ClientRequest } from \"http\"\nimport { Lazy } from \"lazy-val\"\nimport * as mime from \"mime\"\nimport * as FormData from \"form-data\"\nimport { URL } from \"url\"\nimport { HttpPublisher } from \"./httpPublisher\"\nimport { PublishContext } from \"./index\"\n\ntype RequestProcessor = (request: ClientRequest, reject: (error: Error) => void) => void\n\nexport class GitlabPublisher extends HttpPublisher {\n  private readonly tag: string\n  readonly _release = new Lazy(() => (this.token === \"__test__\" ? Promise.resolve(null as any) : this.getOrCreateRelease()))\n\n  private readonly token: string | null\n  private readonly host: string\n  private readonly baseApiPath: string\n  private readonly projectId: string\n\n  readonly providerName = \"gitlab\"\n\n  private releaseLogFields: Fields | null = null\n\n  constructor(\n    context: PublishContext,\n    private readonly info: GitlabOptions,\n    private readonly version: string\n  ) {\n    super(context, true)\n\n    let token = info.token || null\n    if (isEmptyOrSpaces(token)) {\n      token = process.env.GITLAB_TOKEN || null\n      if (isEmptyOrSpaces(token)) {\n        throw new InvalidConfigurationError(`GitLab Personal Access Token is not set, neither programmatically, nor using env \"GITLAB_TOKEN\"`)\n      }\n\n      token = token.trim()\n\n      if (!isTokenCharValid(token)) {\n        throw new InvalidConfigurationError(`GitLab Personal Access Token (${JSON.stringify(token)}) contains invalid characters, please check env \"GITLAB_TOKEN\"`)\n      }\n    }\n\n    this.token = token\n    this.host = info.host || \"gitlab.com\"\n    this.projectId = this.resolveProjectId()\n    this.baseApiPath = `https://${this.host}/api/v4`\n\n    if (version.startsWith(\"v\")) {\n      throw new InvalidConfigurationError(`Version must not start with \"v\": ${version}`)\n    }\n\n    // By default, we prefix the version with \"v\"\n    this.tag = info.vPrefixedTagName === false ? version : `v${version}`\n  }\n\n  private async getOrCreateRelease(): Promise<GitlabReleaseInfo | null> {\n    const logFields = {\n      tag: this.tag,\n      version: this.version,\n    }\n\n    try {\n      const existingRelease = await this.getExistingRelease()\n      if (existingRelease) {\n        return existingRelease\n      }\n\n      // Create new release if it doesn't exist\n      return this.createRelease()\n    } catch (error: any) {\n      const errorInfo = this.categorizeGitlabError(error)\n      log.error(\n        {\n          ...logFields,\n          error: error.message,\n          errorType: errorInfo.type,\n          statusCode: errorInfo.statusCode,\n        },\n        \"Failed to get or create GitLab release\"\n      )\n      throw error\n    }\n  }\n\n  private async getExistingRelease(): Promise<GitlabReleaseInfo | null> {\n    const url = this.buildProjectUrl(\"/releases\")\n    const releases = await this.gitlabRequest<GitlabReleaseInfo[]>(url)\n\n    for (const release of releases) {\n      if (release.tag_name === this.tag) {\n        return release\n      }\n    }\n\n    return null\n  }\n\n  private async getDefaultBranch(): Promise<string> {\n    try {\n      const url = this.buildProjectUrl()\n      const project = await this.gitlabRequest<{ default_branch: string }>(url)\n      return project.default_branch || \"main\"\n    } catch (error: any) {\n      log.warn({ error: error.message }, \"Failed to get default branch, using 'main' as fallback\")\n      return \"main\"\n    }\n  }\n\n  private async createRelease(): Promise<GitlabReleaseInfo> {\n    const releaseName = this.info.vPrefixedTagName === false ? this.version : `v${this.version}`\n    const branchName = await this.getDefaultBranch()\n    const releaseData = {\n      tag_name: this.tag,\n      name: releaseName,\n      description: `Release ${releaseName}`,\n      ref: branchName,\n    }\n\n    log.debug(\n      {\n        tag: this.tag,\n        name: releaseName,\n        ref: branchName,\n        projectId: this.projectId,\n      },\n      \"creating GitLab release\"\n    )\n\n    const url = this.buildProjectUrl(\"/releases\")\n    return this.gitlabRequest<GitlabReleaseInfo>(url, releaseData, \"POST\")\n  }\n\n  protected async doUpload(fileName: string, arch: Arch, dataLength: number, requestProcessor: RequestProcessor, filePath: string): Promise<any> {\n    const release = await this._release.value\n    if (release == null) {\n      log.warn({ file: fileName, ...this.releaseLogFields }, \"skipped publishing\")\n      return\n    }\n\n    const logFields = {\n      file: fileName,\n      arch: Arch[arch],\n      size: dataLength,\n      uploadTarget: this.info.uploadTarget || \"project_upload\",\n    }\n\n    try {\n      log.debug(logFields, \"starting GitLab upload\")\n      const assetPath = await this.uploadFileAndReturnAssetPath(fileName, dataLength, requestProcessor, filePath)\n      // Add the uploaded file as a release asset link\n      if (assetPath) {\n        await this.addReleaseAssetLink(fileName, assetPath)\n        log.info({ ...logFields, assetPath }, \"GitLab upload completed successfully\")\n      } else {\n        log.warn({ ...logFields }, \"No asset URL found for file\")\n      }\n\n      return assetPath\n    } catch (e: any) {\n      const errorInfo = this.categorizeGitlabError(e)\n      log.error(\n        {\n          ...logFields,\n          error: e.message,\n          errorType: errorInfo.type,\n          statusCode: errorInfo.statusCode,\n        },\n        \"GitLab upload failed\"\n      )\n      throw e\n    }\n  }\n\n  private async uploadFileAndReturnAssetPath(fileName: string, dataLength: number, requestProcessor: RequestProcessor, filePath: string) {\n    // Default to project_upload method\n    const uploadTarget = this.info.uploadTarget || \"project_upload\"\n\n    let assetPath: string\n    if (uploadTarget === \"generic_package\") {\n      await this.uploadToGenericPackages(fileName, dataLength, requestProcessor)\n      // For generic packages, construct the download URL\n      const projectId = encodeURIComponent(this.projectId)\n      assetPath = `${this.baseApiPath}/projects/${projectId}/packages/generic/releases/${this.version}/${fileName}`\n    } else {\n      // Default to project_upload\n      const uploadResult = await this.uploadToProjectUpload(fileName, filePath)\n      // For project uploads, construct full URL from relative path\n      assetPath = `https://${this.host}${uploadResult.full_path}`\n    }\n\n    return assetPath\n  }\n\n  private async addReleaseAssetLink(fileName: string, assetUrl: string): Promise<void> {\n    try {\n      const linkData = {\n        name: fileName,\n        url: assetUrl,\n        link_type: \"other\",\n      }\n\n      const url = this.buildProjectUrl(`/releases/${this.tag}/assets/links`)\n      await this.gitlabRequest(url, linkData, \"POST\")\n\n      log.debug({ fileName, assetUrl }, \"Successfully linked asset to GitLab release\")\n    } catch (e: any) {\n      log.warn({ fileName, assetUrl, error: e.message }, \"Failed to link asset to GitLab release\")\n      // Don't throw - the file was uploaded successfully, linking is optional\n    }\n  }\n\n  private async uploadToProjectUpload(fileName: string, filePath: string): Promise<any> {\n    const uploadUrl = `${this.baseApiPath}/projects/${encodeURIComponent(this.projectId)}/uploads`\n    const parsedUrl = new URL(uploadUrl)\n\n    // Check file size to determine upload method\n    const stats = await stat(filePath)\n    const fileSize = stats.size\n    const STREAMING_THRESHOLD = 50 * 1024 * 1024 // 50MB\n\n    const form = new FormData()\n    if (fileSize > STREAMING_THRESHOLD) {\n      // Use streaming for large files\n      log.debug({ fileName, fileSize }, \"using streaming upload for large file\")\n      const fileStream = createReadStream(filePath)\n      form.append(\"file\", fileStream, fileName)\n    } else {\n      // Use buffer for small files\n      log.debug({ fileName, fileSize }, \"using buffer upload for small file\")\n      const fileContent = await readFile(filePath)\n      form.append(\"file\", fileContent, fileName)\n    }\n\n    const response = await httpExecutor.doApiRequest(\n      configureRequestOptions(\n        {\n          protocol: parsedUrl.protocol,\n          hostname: parsedUrl.hostname,\n          port: parsedUrl.port as any,\n          path: parsedUrl.pathname,\n          headers: { ...form.getHeaders(), ...this.setAuthHeaderForToken(this.token) },\n          timeout: this.info.timeout || undefined,\n        },\n        null,\n        \"POST\"\n      ),\n      this.context.cancellationToken,\n      (it: ClientRequest) => form.pipe(it)\n    )\n\n    // Parse the JSON response string\n    return JSON.parse(response)\n  }\n\n  private async uploadToGenericPackages(fileName: string, dataLength: number, requestProcessor: RequestProcessor): Promise<any> {\n    const uploadUrl = `${this.baseApiPath}/projects/${encodeURIComponent(this.projectId)}/packages/generic/releases/${this.version}/${fileName}`\n    const parsedUrl = new URL(uploadUrl)\n\n    return httpExecutor.doApiRequest(\n      configureRequestOptions(\n        {\n          protocol: parsedUrl.protocol,\n          hostname: parsedUrl.hostname,\n          port: parsedUrl.port as any,\n          path: parsedUrl.pathname,\n          headers: { \"Content-Length\": dataLength, \"Content-Type\": mime.getType(fileName) || \"application/octet-stream\", ...this.setAuthHeaderForToken(this.token) },\n          timeout: this.info.timeout || undefined,\n        },\n        null,\n        \"PUT\"\n      ),\n      this.context.cancellationToken,\n      requestProcessor\n    )\n  }\n\n  private buildProjectUrl(path: string = \"\"): URL {\n    return new URL(`${this.baseApiPath}/projects/${encodeURIComponent(this.projectId)}${path}`)\n  }\n\n  private resolveProjectId(): string {\n    if (this.info.projectId) {\n      return String(this.info.projectId)\n    }\n\n    throw new InvalidConfigurationError(\"GitLab project ID is not specified, please set it in configuration.\")\n  }\n\n  private gitlabRequest<T>(url: URL, data: { [name: string]: any } | null = null, method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" = \"GET\"): Promise<T> {\n    return parseJson(\n      httpExecutor.request(\n        configureRequestOptions(\n          {\n            port: url.port,\n            path: url.pathname,\n            protocol: url.protocol,\n            hostname: url.hostname,\n            headers: { \"Content-Type\": \"application/json\", ...this.setAuthHeaderForToken(this.token) },\n            timeout: this.info.timeout || undefined,\n          },\n          null,\n          method\n        ),\n        this.context.cancellationToken,\n        data\n      )\n    )\n  }\n\n  private setAuthHeaderForToken(token: string | null): { [key: string]: string } {\n    const headers: { [key: string]: string } = {}\n\n    if (token != null) {\n      // If the token starts with \"Bearer\", it is an OAuth application secret\n      // Note that the original gitlab token would not start with \"Bearer\"\n      // it might start with \"gloas-\", if so user needs to add \"Bearer \" prefix to the token\n      if (token.startsWith(\"Bearer\")) {\n        headers.authorization = token\n      } else {\n        headers[\"PRIVATE-TOKEN\"] = token\n      }\n    }\n\n    return headers\n  }\n\n  private categorizeGitlabError(error: any): { type: string; statusCode?: number } {\n    if (error instanceof HttpError) {\n      const statusCode = error.statusCode\n\n      switch (statusCode) {\n        case 401:\n          return { type: \"authentication\", statusCode }\n        case 403:\n          return { type: \"authorization\", statusCode }\n        case 404:\n          return { type: \"not_found\", statusCode }\n        case 409:\n          return { type: \"conflict\", statusCode }\n        case 413:\n          return { type: \"file_too_large\", statusCode }\n        case 422:\n          return { type: \"validation_error\", statusCode }\n        case 429:\n          return { type: \"rate_limit\", statusCode }\n        case 500:\n        case 502:\n        case 503:\n        case 504:\n          return { type: \"server_error\", statusCode }\n        default:\n          return { type: \"http_error\", statusCode }\n      }\n    }\n\n    if (error.code === \"ECONNRESET\" || error.code === \"ENOTFOUND\" || error.code === \"ETIMEDOUT\") {\n      return { type: \"network_error\" }\n    }\n\n    return { type: \"unknown_error\" }\n  }\n\n  toString() {\n    return `GitLab (project: ${this.projectId}, version: ${this.version})`\n  }\n}\n"]}