function SASSignatureValuesSanityCheckAndAutofill()

in sdk/storage/storage-file-datalake/src/sas/DataLakeSASSignatureValues.ts [1106:1181]


function SASSignatureValuesSanityCheckAndAutofill(
  dataLakeSASSignatureValues: DataLakeSASSignatureValues,
  version: string,
): DataLakeSASSignatureValues {
  if (
    version < "2020-02-10" &&
    (dataLakeSASSignatureValues.isDirectory || dataLakeSASSignatureValues.directoryDepth)
  ) {
    throw RangeError("'version' must be >= '2020-02-10' to support directory SAS.");
  }
  if (dataLakeSASSignatureValues.isDirectory && dataLakeSASSignatureValues.pathName === undefined) {
    throw RangeError("Must provide 'pathName' when 'isDirectory' is true.");
  }
  if (
    dataLakeSASSignatureValues.directoryDepth !== undefined &&
    (!Number.isInteger(dataLakeSASSignatureValues.directoryDepth) ||
      dataLakeSASSignatureValues.directoryDepth < 0)
  ) {
    throw RangeError("'directoryDepth' must be a non-negative interger.");
  }
  if (
    dataLakeSASSignatureValues.isDirectory &&
    dataLakeSASSignatureValues.directoryDepth === undefined
  ) {
    // calculate directoryDepth from pathName
    if (dataLakeSASSignatureValues.pathName === "/") {
      dataLakeSASSignatureValues.directoryDepth = 0;
    } else {
      dataLakeSASSignatureValues.directoryDepth = dataLakeSASSignatureValues.pathName
        ?.split("/")
        .filter((x) => x !== "").length;
    }
  }

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

  if (
    version < "2020-02-10" &&
    (dataLakeSASSignatureValues.preauthorizedAgentObjectId ||
      dataLakeSASSignatureValues.agentObjectId ||
      dataLakeSASSignatureValues.correlationId)
  ) {
    throw RangeError(
      "'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId', 'agentObjectId' or 'correlationId'.",
    );
  }
  if (
    dataLakeSASSignatureValues.preauthorizedAgentObjectId &&
    dataLakeSASSignatureValues.agentObjectId
  ) {
    throw RangeError(
      "'preauthorizedAgentObjectId' or 'agentObjectId' shouldn't be specified at the same time.",
    );
  }

  if (dataLakeSASSignatureValues.snapshotTime && version < "2018-11-09") {
    throw RangeError("'version' must be >= '2018-11-09' when provided 'snapshotTime'.");
  }
  if (
    dataLakeSASSignatureValues.pathName === undefined &&
    dataLakeSASSignatureValues.snapshotTime
  ) {
    throw RangeError("Must provide 'blobName' when provided 'snapshotTime'.");
  }

  return dataLakeSASSignatureValues;
}