{"version":3,"file":"s3Publisher.js","sourceRoot":"","sources":["../../src/s3/s3Publisher.ts"],"names":[],"mappings":";;;AAAA,+CAA6D;AAG7D,qDAAwD;AACxD,uDAAwF;AACxF,qDAAoD;AAEpD,MAAa,WAAY,SAAQ,iCAAe;IAG9C,YACE,OAAuB,EACN,IAAe;QAEhC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAFH,SAAI,GAAJ,IAAI,CAAW;QAJzB,iBAAY,GAAG,IAAI,CAAA;IAO5B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAkB,EAAE,qBAAoC,EAAE,aAAsB;QAClH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC7B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,wCAAyB,CAAC,mDAAmD,CAAC,CAAA;QAC1F,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC/E,yHAAyH;YACzH,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,GAAG,MAAM,IAAA,kCAAiB,EAAC,MAAM,CAAC,CAAA;YAClD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,CAAC,CAAA;gBACT,CAAC;qBAAM,CAAC;oBACN,kBAAG,CAAC,IAAI,CAAC,yHAAyH,CAAC,EAAE,CAAC,CAAA;gBACxI,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,qBAAqB,IAAI,IAAI,EAAE,CAAC;YAC7D,OAAO,CAAC,OAAO,GAAG,qBAAqB,CAAA;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/D,CAAC;YAAC,OAAe,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAEM,iBAAiB;;QACtB,OAAO;YACL,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,mCAAI,WAAW;YACvC,QAAQ,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,mCAAI,SAAS;YACzC,cAAc,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,mCAAI,SAAS;YACrD,WAAW,EAAE,IAAA,sCAAqB,GAAE;SACrC,CAAA;IACH,CAAC;IAEM,oBAAoB;;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAA;QACzC,OAAO;YACL,GAAG,IAAI;YACP,YAAY,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,YAAY,mCAAI,SAAS;YACjD,oBAAoB,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,mCAAI,SAAS;SACxD,CAAA;IACH,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;QACnC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,eAAe,QAAQ,GAAG,CAAA;QAC5E,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AApED,kCAoEC","sourcesContent":["import { InvalidConfigurationError, log } from \"builder-util\"\nimport { S3Options } from \"builder-util-runtime\"\nimport { PublishContext } from \"..\"\nimport { resolveAwsCredentials } from \"./awsCredentials\"\nimport { BaseS3Publisher, S3UploadConfig, S3UploadExtraParams } from \"./baseS3Publisher\"\nimport { getBucketLocation } from \"./bucketLocation\"\n\nexport class S3Publisher extends BaseS3Publisher {\n  readonly providerName = \"s3\"\n\n  constructor(\n    context: PublishContext,\n    private readonly info: S3Options\n  ) {\n    super(context, info)\n  }\n\n  static async checkAndResolveOptions(options: S3Options, channelFromAppVersion: string | null, errorIfCannot: boolean) {\n    const bucket = options.bucket\n    if (bucket == null) {\n      throw new InvalidConfigurationError(`Please specify \"bucket\" for \"s3\" publish provider`)\n    }\n\n    if (options.endpoint == null && bucket.includes(\".\") && options.region == null) {\n      // on dotted bucket names, we need to use a path-based endpoint URL. Path-based endpoint URLs need to include the region.\n      try {\n        options.region = await getBucketLocation(bucket)\n      } catch (e: any) {\n        if (errorIfCannot) {\n          throw e\n        } else {\n          log.warn(`cannot compute region for bucket (required because on dotted bucket names, we need to use a path-based endpoint URL): ${e}`)\n        }\n      }\n    }\n\n    if (options.channel == null && channelFromAppVersion != null) {\n      options.channel = channelFromAppVersion\n    }\n\n    if (options.endpoint != null && options.endpoint.endsWith(\"/\")) {\n      ;(options as any).endpoint = options.endpoint.slice(0, -1)\n    }\n  }\n\n  protected getBucketName(): string {\n    return this.info.bucket\n  }\n\n  public getS3UploadConfig(): S3UploadConfig {\n    return {\n      region: this.info.region ?? \"us-east-1\",\n      endpoint: this.info.endpoint ?? undefined,\n      forcePathStyle: this.info.forcePathStyle ?? undefined,\n      credentials: resolveAwsCredentials(),\n    }\n  }\n\n  public getUploadExtraParams(): S3UploadExtraParams {\n    const base = super.getUploadExtraParams()\n    return {\n      ...base,\n      storageClass: this.info.storageClass ?? undefined,\n      serverSideEncryption: this.info.encryption ?? undefined,\n    }\n  }\n\n  toString() {\n    const result = super.toString()\n    const endpoint = this.info.endpoint\n    if (endpoint != null) {\n      return result.substring(0, result.length - 1) + `, endpoint: ${endpoint})`\n    }\n    return result\n  }\n}\n"]}