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;
}