function SASSignatureValuesSanityCheckAndAutofill()

in sdk/storage/storage-blob/src/sas/BlobSASSignatureValues.ts [1085:1166]


function SASSignatureValuesSanityCheckAndAutofill(
  blobSASSignatureValues: BlobSASSignatureValues,
): BlobSASSignatureValues {
  const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
  if (blobSASSignatureValues.snapshotTime && version < "2018-11-09") {
    throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");
  }
  if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {
    throw RangeError("Must provide 'blobName' when providing 'snapshotTime'.");
  }

  if (blobSASSignatureValues.versionId && version < "2019-10-10") {
    throw RangeError("'version' must be >= '2019-10-10' when providing 'versionId'.");
  }
  if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {
    throw RangeError("Must provide 'blobName' when providing 'versionId'.");
  }

  if (
    blobSASSignatureValues.permissions &&
    blobSASSignatureValues.permissions.setImmutabilityPolicy &&
    version < "2020-08-04"
  ) {
    throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.");
  }

  if (
    blobSASSignatureValues.permissions &&
    blobSASSignatureValues.permissions.deleteVersion &&
    version < "2019-10-10"
  ) {
    throw RangeError("'version' must be >= '2019-10-10' when providing 'x' permission.");
  }

  if (
    blobSASSignatureValues.permissions &&
    blobSASSignatureValues.permissions.permanentDelete &&
    version < "2019-10-10"
  ) {
    throw RangeError("'version' must be >= '2019-10-10' when providing 'y' permission.");
  }

  if (
    blobSASSignatureValues.permissions &&
    blobSASSignatureValues.permissions.tag &&
    version < "2019-12-12"
  ) {
    throw RangeError("'version' must be >= '2019-12-12' when providing 't' permission.");
  }

  if (
    version < "2020-02-10" &&
    blobSASSignatureValues.permissions &&
    (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)
  ) {
    throw RangeError("'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.");
  }

  if (
    version < "2021-04-10" &&
    blobSASSignatureValues.permissions &&
    (blobSASSignatureValues.permissions as ContainerSASPermissions).filterByTags
  ) {
    throw RangeError("'version' must be >= '2021-04-10' when providing the 'f' permission.");
  }

  if (
    version < "2020-02-10" &&
    (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)
  ) {
    throw RangeError(
      "'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.",
    );
  }

  if (blobSASSignatureValues.encryptionScope && version < "2020-12-06") {
    throw RangeError("'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.");
  }

  blobSASSignatureValues.version = version;
  return blobSASSignatureValues;
}