@azure/storage-file-datalake 12.27.0-beta.1 → 12.28.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/DataLakeFileSystemClient.d.ts +13 -13
- package/dist/browser/DataLakeFileSystemClient.js +13 -13
- package/dist/browser/DataLakeFileSystemClient.js.map +1 -1
- package/dist/browser/DataLakeServiceClient.d.ts +6 -6
- package/dist/browser/DataLakeServiceClient.js +6 -6
- package/dist/browser/DataLakeServiceClient.js.map +1 -1
- package/dist/browser/Pipeline.d.ts.map +1 -1
- package/dist/browser/Pipeline.js +2 -1
- package/dist/browser/Pipeline.js.map +1 -1
- package/dist/browser/clients.d.ts +33 -33
- package/dist/browser/clients.js +23 -23
- package/dist/browser/clients.js.map +1 -1
- package/dist/browser/generated/src/models/parameters.js +1 -1
- package/dist/browser/generated/src/models/parameters.js.map +1 -1
- package/dist/browser/generated/src/storageClient.js +2 -2
- package/dist/browser/generated/src/storageClient.js.map +1 -1
- package/dist/browser/models.d.ts +1 -1
- package/dist/browser/models.js.map +1 -1
- package/dist/browser/sas/AccountSASPermissions.d.ts +1 -1
- package/dist/browser/sas/AccountSASPermissions.js +2 -2
- package/dist/browser/sas/AccountSASPermissions.js.map +1 -1
- package/dist/browser/sas/AccountSASResourceTypes.d.ts +1 -1
- package/dist/browser/sas/AccountSASResourceTypes.js +1 -1
- package/dist/browser/sas/AccountSASResourceTypes.js.map +1 -1
- package/dist/browser/sas/AccountSASSignatureValues.d.ts +3 -3
- package/dist/browser/sas/AccountSASSignatureValues.js +1 -1
- package/dist/browser/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/browser/sas/DataLakeSASSignatureValues.d.ts +1 -1
- package/dist/browser/sas/DataLakeSASSignatureValues.js +1 -1
- package/dist/browser/sas/DataLakeSASSignatureValues.js.map +1 -1
- package/dist/browser/sas/DirectorySASPermissions.d.ts +1 -1
- package/dist/browser/sas/DirectorySASPermissions.js +1 -1
- package/dist/browser/sas/DirectorySASPermissions.js.map +1 -1
- package/dist/browser/sas/FileSystemSASPermissions.d.ts +1 -1
- package/dist/browser/sas/FileSystemSASPermissions.js +1 -1
- package/dist/browser/sas/FileSystemSASPermissions.js.map +1 -1
- package/dist/browser/sas/SASQueryParameters.d.ts +2 -2
- package/dist/browser/sas/SASQueryParameters.js.map +1 -1
- package/dist/browser/utils/constants.js +2 -2
- package/dist/browser/utils/constants.js.map +1 -1
- package/dist/browser/utils/utils.common.d.ts +2 -2
- package/dist/browser/utils/utils.common.js +3 -3
- package/dist/browser/utils/utils.common.js.map +1 -1
- package/dist/commonjs/DataLakeFileSystemClient.d.ts +13 -13
- package/dist/commonjs/DataLakeFileSystemClient.js +13 -13
- package/dist/commonjs/DataLakeFileSystemClient.js.map +1 -1
- package/dist/commonjs/DataLakeServiceClient.d.ts +6 -6
- package/dist/commonjs/DataLakeServiceClient.js +6 -6
- package/dist/commonjs/DataLakeServiceClient.js.map +1 -1
- package/dist/commonjs/Pipeline.d.ts.map +1 -1
- package/dist/commonjs/Pipeline.js +1 -0
- package/dist/commonjs/Pipeline.js.map +1 -1
- package/dist/commonjs/clients.d.ts +33 -33
- package/dist/commonjs/clients.js +23 -23
- package/dist/commonjs/clients.js.map +1 -1
- package/dist/commonjs/credentials/UserDelegationKeyCredential.d.ts +1 -1
- package/dist/commonjs/credentials/UserDelegationKeyCredential.js +1 -1
- package/dist/commonjs/credentials/UserDelegationKeyCredential.js.map +1 -1
- package/dist/commonjs/generated/src/models/parameters.js +1 -1
- package/dist/commonjs/generated/src/models/parameters.js.map +1 -1
- package/dist/commonjs/generated/src/storageClient.js +2 -2
- package/dist/commonjs/generated/src/storageClient.js.map +1 -1
- package/dist/commonjs/models.d.ts +1 -1
- package/dist/commonjs/models.js.map +1 -1
- package/dist/commonjs/sas/AccountSASPermissions.d.ts +1 -1
- package/dist/commonjs/sas/AccountSASPermissions.js +2 -2
- package/dist/commonjs/sas/AccountSASPermissions.js.map +1 -1
- package/dist/commonjs/sas/AccountSASResourceTypes.d.ts +1 -1
- package/dist/commonjs/sas/AccountSASResourceTypes.js +1 -1
- package/dist/commonjs/sas/AccountSASResourceTypes.js.map +1 -1
- package/dist/commonjs/sas/AccountSASSignatureValues.d.ts +3 -3
- package/dist/commonjs/sas/AccountSASSignatureValues.js +1 -1
- package/dist/commonjs/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/commonjs/sas/DataLakeSASSignatureValues.d.ts +1 -1
- package/dist/commonjs/sas/DataLakeSASSignatureValues.js +1 -1
- package/dist/commonjs/sas/DataLakeSASSignatureValues.js.map +1 -1
- package/dist/commonjs/sas/DirectorySASPermissions.d.ts +1 -1
- package/dist/commonjs/sas/DirectorySASPermissions.js +1 -1
- package/dist/commonjs/sas/DirectorySASPermissions.js.map +1 -1
- package/dist/commonjs/sas/FileSystemSASPermissions.d.ts +1 -1
- package/dist/commonjs/sas/FileSystemSASPermissions.js +1 -1
- package/dist/commonjs/sas/FileSystemSASPermissions.js.map +1 -1
- package/dist/commonjs/sas/SASQueryParameters.d.ts +2 -2
- package/dist/commonjs/sas/SASQueryParameters.js.map +1 -1
- package/dist/commonjs/utils/constants.js +2 -2
- package/dist/commonjs/utils/constants.js.map +1 -1
- package/dist/commonjs/utils/utils.common.d.ts +2 -2
- package/dist/commonjs/utils/utils.common.js +3 -3
- package/dist/commonjs/utils/utils.common.js.map +1 -1
- package/dist/esm/DataLakeFileSystemClient.d.ts +13 -13
- package/dist/esm/DataLakeFileSystemClient.js +13 -13
- package/dist/esm/DataLakeFileSystemClient.js.map +1 -1
- package/dist/esm/DataLakeServiceClient.d.ts +6 -6
- package/dist/esm/DataLakeServiceClient.js +6 -6
- package/dist/esm/DataLakeServiceClient.js.map +1 -1
- package/dist/esm/Pipeline.d.ts.map +1 -1
- package/dist/esm/Pipeline.js +2 -1
- package/dist/esm/Pipeline.js.map +1 -1
- package/dist/esm/clients.d.ts +33 -33
- package/dist/esm/clients.js +23 -23
- package/dist/esm/clients.js.map +1 -1
- package/dist/esm/credentials/UserDelegationKeyCredential.d.ts +1 -1
- package/dist/esm/credentials/UserDelegationKeyCredential.js +1 -1
- package/dist/esm/credentials/UserDelegationKeyCredential.js.map +1 -1
- package/dist/esm/generated/src/models/parameters.js +1 -1
- package/dist/esm/generated/src/models/parameters.js.map +1 -1
- package/dist/esm/generated/src/storageClient.js +2 -2
- package/dist/esm/generated/src/storageClient.js.map +1 -1
- package/dist/esm/models.d.ts +1 -1
- package/dist/esm/models.js.map +1 -1
- package/dist/esm/sas/AccountSASPermissions.d.ts +1 -1
- package/dist/esm/sas/AccountSASPermissions.js +2 -2
- package/dist/esm/sas/AccountSASPermissions.js.map +1 -1
- package/dist/esm/sas/AccountSASResourceTypes.d.ts +1 -1
- package/dist/esm/sas/AccountSASResourceTypes.js +1 -1
- package/dist/esm/sas/AccountSASResourceTypes.js.map +1 -1
- package/dist/esm/sas/AccountSASSignatureValues.d.ts +3 -3
- package/dist/esm/sas/AccountSASSignatureValues.js +1 -1
- package/dist/esm/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/esm/sas/DataLakeSASSignatureValues.d.ts +1 -1
- package/dist/esm/sas/DataLakeSASSignatureValues.js +1 -1
- package/dist/esm/sas/DataLakeSASSignatureValues.js.map +1 -1
- package/dist/esm/sas/DirectorySASPermissions.d.ts +1 -1
- package/dist/esm/sas/DirectorySASPermissions.js +1 -1
- package/dist/esm/sas/DirectorySASPermissions.js.map +1 -1
- package/dist/esm/sas/FileSystemSASPermissions.d.ts +1 -1
- package/dist/esm/sas/FileSystemSASPermissions.js +1 -1
- package/dist/esm/sas/FileSystemSASPermissions.js.map +1 -1
- package/dist/esm/sas/SASQueryParameters.d.ts +2 -2
- package/dist/esm/sas/SASQueryParameters.js.map +1 -1
- package/dist/esm/utils/constants.js +2 -2
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/utils.common.d.ts +2 -2
- package/dist/esm/utils/utils.common.js +3 -3
- package/dist/esm/utils/utils.common.js.map +1 -1
- package/dist/react-native/DataLakeFileSystemClient.d.ts +13 -13
- package/dist/react-native/DataLakeFileSystemClient.js +13 -13
- package/dist/react-native/DataLakeFileSystemClient.js.map +1 -1
- package/dist/react-native/DataLakeServiceClient.d.ts +6 -6
- package/dist/react-native/DataLakeServiceClient.js +6 -6
- package/dist/react-native/DataLakeServiceClient.js.map +1 -1
- package/dist/react-native/Pipeline.d.ts.map +1 -1
- package/dist/react-native/Pipeline.js +2 -1
- package/dist/react-native/Pipeline.js.map +1 -1
- package/dist/react-native/clients.d.ts +33 -33
- package/dist/react-native/clients.js +23 -23
- package/dist/react-native/clients.js.map +1 -1
- package/dist/react-native/credentials/UserDelegationKeyCredential.d.ts +1 -1
- package/dist/react-native/credentials/UserDelegationKeyCredential.js +1 -1
- package/dist/react-native/credentials/UserDelegationKeyCredential.js.map +1 -1
- package/dist/react-native/generated/src/models/parameters.js +1 -1
- package/dist/react-native/generated/src/models/parameters.js.map +1 -1
- package/dist/react-native/generated/src/storageClient.js +2 -2
- package/dist/react-native/generated/src/storageClient.js.map +1 -1
- package/dist/react-native/models.d.ts +1 -1
- package/dist/react-native/models.js.map +1 -1
- package/dist/react-native/sas/AccountSASPermissions.d.ts +1 -1
- package/dist/react-native/sas/AccountSASPermissions.js +2 -2
- package/dist/react-native/sas/AccountSASPermissions.js.map +1 -1
- package/dist/react-native/sas/AccountSASResourceTypes.d.ts +1 -1
- package/dist/react-native/sas/AccountSASResourceTypes.js +1 -1
- package/dist/react-native/sas/AccountSASResourceTypes.js.map +1 -1
- package/dist/react-native/sas/AccountSASSignatureValues.d.ts +3 -3
- package/dist/react-native/sas/AccountSASSignatureValues.js +1 -1
- package/dist/react-native/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/react-native/sas/DataLakeSASSignatureValues.d.ts +1 -1
- package/dist/react-native/sas/DataLakeSASSignatureValues.js +1 -1
- package/dist/react-native/sas/DataLakeSASSignatureValues.js.map +1 -1
- package/dist/react-native/sas/DirectorySASPermissions.d.ts +1 -1
- package/dist/react-native/sas/DirectorySASPermissions.js +1 -1
- package/dist/react-native/sas/DirectorySASPermissions.js.map +1 -1
- package/dist/react-native/sas/FileSystemSASPermissions.d.ts +1 -1
- package/dist/react-native/sas/FileSystemSASPermissions.js +1 -1
- package/dist/react-native/sas/FileSystemSASPermissions.js.map +1 -1
- package/dist/react-native/sas/SASQueryParameters.d.ts +2 -2
- package/dist/react-native/sas/SASQueryParameters.js.map +1 -1
- package/dist/react-native/utils/constants.js +2 -2
- package/dist/react-native/utils/constants.js.map +1 -1
- package/dist/react-native/utils/utils.common.d.ts +2 -2
- package/dist/react-native/utils/utils.common.js +3 -3
- package/dist/react-native/utils/utils.common.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountSASResourceTypes.js","sourceRoot":"","sources":["../../../src/sas/AccountSASResourceTypes.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAuB;IAApC;QA6BE;;WAEG;QACI,YAAO,GAAY,KAAK,CAAC;QAEhC;;WAEG;QACI,cAAS,GAAY,KAAK,CAAC;QAElC;;WAEG;QACI,WAAM,GAAY,KAAK,CAAC;IAqBjC,CAAC;IA9DC;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,aAAqB;QACvC,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAE9D,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,QAAQ,CAAC,EAAE,CAAC;gBACV,KAAK,GAAG;oBACN,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;oBACvC,MAAM;gBACR,KAAK,GAAG;oBACN,uBAAuB,CAAC,SAAS,GAAG,IAAI,CAAC;oBACzC,MAAM;gBACR,KAAK,GAAG;oBACN,uBAAuB,CAAC,MAAM,GAAG,IAAI,CAAC;oBACtC,MAAM;gBACR;oBACE,MAAM,IAAI,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAiBD;;;;;OAKG;IACI,QAAQ;QACb,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the\n * values are set, this should be serialized with toString and set as the resources field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but\n * the order of the resources is particular and this class guarantees correctness.\n */\nexport class AccountSASResourceTypes {\n /**\n * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid resource type.\n *\n * @param resourceTypes -\n */\n public static parse(resourceTypes: string): AccountSASResourceTypes {\n const accountSASResourceTypes = new AccountSASResourceTypes();\n\n for (const c of resourceTypes) {\n switch (c) {\n case \"s\":\n accountSASResourceTypes.service = true;\n break;\n case \"c\":\n accountSASResourceTypes.container = true;\n break;\n case \"o\":\n accountSASResourceTypes.object = true;\n break;\n default:\n throw new RangeError(`Invalid resource type: ${c}`);\n }\n }\n\n return accountSASResourceTypes;\n }\n\n /**\n * Permission to access service level APIs granted.\n */\n public service: boolean = false;\n\n /**\n * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares, File Systems) granted.\n */\n public container: boolean = false;\n\n /**\n * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files, Directories) granted.\n */\n public object: boolean = false;\n\n /**\n * Converts the given resource types to a string.\n *\n * @see https://learn.microsoft.com/
|
|
1
|
+
{"version":3,"file":"AccountSASResourceTypes.js","sourceRoot":"","sources":["../../../src/sas/AccountSASResourceTypes.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAuB;IAApC;QA6BE;;WAEG;QACI,YAAO,GAAY,KAAK,CAAC;QAEhC;;WAEG;QACI,cAAS,GAAY,KAAK,CAAC;QAElC;;WAEG;QACI,WAAM,GAAY,KAAK,CAAC;IAqBjC,CAAC;IA9DC;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,aAAqB;QACvC,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAE9D,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,QAAQ,CAAC,EAAE,CAAC;gBACV,KAAK,GAAG;oBACN,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;oBACvC,MAAM;gBACR,KAAK,GAAG;oBACN,uBAAuB,CAAC,SAAS,GAAG,IAAI,CAAC;oBACzC,MAAM;gBACR,KAAK,GAAG;oBACN,uBAAuB,CAAC,MAAM,GAAG,IAAI,CAAC;oBACtC,MAAM;gBACR;oBACE,MAAM,IAAI,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAiBD;;;;;OAKG;IACI,QAAQ;QACb,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the\n * values are set, this should be serialized with toString and set as the resources field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but\n * the order of the resources is particular and this class guarantees correctness.\n */\nexport class AccountSASResourceTypes {\n /**\n * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid resource type.\n *\n * @param resourceTypes -\n */\n public static parse(resourceTypes: string): AccountSASResourceTypes {\n const accountSASResourceTypes = new AccountSASResourceTypes();\n\n for (const c of resourceTypes) {\n switch (c) {\n case \"s\":\n accountSASResourceTypes.service = true;\n break;\n case \"c\":\n accountSASResourceTypes.container = true;\n break;\n case \"o\":\n accountSASResourceTypes.object = true;\n break;\n default:\n throw new RangeError(`Invalid resource type: ${c}`);\n }\n }\n\n return accountSASResourceTypes;\n }\n\n /**\n * Permission to access service level APIs granted.\n */\n public service: boolean = false;\n\n /**\n * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares, File Systems) granted.\n */\n public container: boolean = false;\n\n /**\n * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files, Directories) granted.\n */\n public object: boolean = false;\n\n /**\n * Converts the given resource types to a string.\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/constructing-an-account-sas\n *\n */\n public toString(): string {\n const resourceTypes: string[] = [];\n if (this.service) {\n resourceTypes.push(\"s\");\n }\n if (this.container) {\n resourceTypes.push(\"c\");\n }\n if (this.object) {\n resourceTypes.push(\"o\");\n }\n return resourceTypes.join(\"\");\n }\n}\n"]}
|
|
@@ -12,10 +12,10 @@ import { SASQueryParameters } from "./SASQueryParameters.js";
|
|
|
12
12
|
* exist because the former is mutable and a logical representation while the latter is immutable and used to generate
|
|
13
13
|
* actual REST requests.
|
|
14
14
|
*
|
|
15
|
-
* @see https://learn.microsoft.com/
|
|
15
|
+
* @see https://learn.microsoft.com/azure/storage/common/storage-dotnet-shared-access-signature-part-1
|
|
16
16
|
* for more conceptual information on SAS
|
|
17
17
|
*
|
|
18
|
-
* @see https://learn.microsoft.com/
|
|
18
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-an-account-sas
|
|
19
19
|
* for descriptions of the parameters, including which are required
|
|
20
20
|
*/
|
|
21
21
|
export interface AccountSASSignatureValues {
|
|
@@ -65,7 +65,7 @@ export interface AccountSASSignatureValues {
|
|
|
65
65
|
* Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
|
|
66
66
|
* REST request.
|
|
67
67
|
*
|
|
68
|
-
* @see https://learn.microsoft.com/
|
|
68
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-an-account-sas
|
|
69
69
|
*
|
|
70
70
|
* @param accountSASSignatureValues -
|
|
71
71
|
* @param sharedKeyCredential -
|
|
@@ -13,7 +13,7 @@ import { truncatedISO8061Date } from "../utils/utils.common.js";
|
|
|
13
13
|
* Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual
|
|
14
14
|
* REST request.
|
|
15
15
|
*
|
|
16
|
-
* @see https://learn.microsoft.com/
|
|
16
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-an-account-sas
|
|
17
17
|
*
|
|
18
18
|
* @param accountSASSignatureValues -
|
|
19
19
|
* @param sharedKeyCredential -
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountSASSignatureValues.js","sourceRoot":"","sources":["../../../src/sas/AccountSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccountSASPermissions } from \"./AccountSASPermissions.js\";\nimport { AccountSASResourceTypes } from \"./AccountSASResourceTypes.js\";\nimport { AccountSASServices } from \"./AccountSASServices.js\";\nimport type { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential.js\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { SERVICE_VERSION } from \"../utils/constants.js\";\nimport { truncatedISO8061Date } from \"../utils/utils.common.js\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * AccountSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage account. Once\n * all the values here are set appropriately, call {@link generateAccountSASQueryParameters} to obtain a representation\n * of the SAS which can actually be applied to data lake urls. Note: that both this class and {@link SASQueryParameters}\n * exist because the former is mutable and a logical representation while the latter is immutable and used to generate\n * actual REST requests.\n *\n * @see https://learn.microsoft.com/
|
|
1
|
+
{"version":3,"file":"AccountSASSignatureValues.js","sourceRoot":"","sources":["../../../src/sas/AccountSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AccountSASPermissions } from \"./AccountSASPermissions.js\";\nimport { AccountSASResourceTypes } from \"./AccountSASResourceTypes.js\";\nimport { AccountSASServices } from \"./AccountSASServices.js\";\nimport type { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential.js\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { SERVICE_VERSION } from \"../utils/constants.js\";\nimport { truncatedISO8061Date } from \"../utils/utils.common.js\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * AccountSASSignatureValues is used to generate a Shared Access Signature (SAS) for an Azure Storage account. Once\n * all the values here are set appropriately, call {@link generateAccountSASQueryParameters} to obtain a representation\n * of the SAS which can actually be applied to data lake urls. Note: that both this class and {@link SASQueryParameters}\n * exist because the former is mutable and a logical representation while the latter is immutable and used to generate\n * actual REST requests.\n *\n * @see https://learn.microsoft.com/azure/storage/common/storage-dotnet-shared-access-signature-part-1\n * for more conceptual information on SAS\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/constructing-an-account-sas\n * for descriptions of the parameters, including which are required\n */\nexport interface AccountSASSignatureValues {\n /**\n * If not provided, this defaults to the service version targeted by this version of the library.\n */\n version?: string;\n\n /**\n * Optional. SAS protocols allowed.\n */\n protocol?: SASProtocol;\n\n /**\n * Optional. When the SAS will take effect.\n */\n startsOn?: Date;\n\n /**\n * The time after which the SAS will no longer work.\n */\n expiresOn: Date;\n\n /**\n * Specifies which operations the SAS user may perform. Please refer to {@link AccountSASPermissions} for help\n * constructing the permissions string.\n */\n permissions: AccountSASPermissions;\n\n /**\n * Optional. IP range allowed.\n */\n ipRange?: SasIPRange;\n\n /**\n * Optional. Encryption scope to use when sending requests authorized with this SAS URI.\n */\n encryptionScope?: string;\n\n /**\n * The values that indicate the services accessible with this SAS. Please refer to {@link AccountSASServices} to\n * construct this value.\n */\n services: string;\n\n /**\n * The values that indicate the resource types accessible with this SAS. Please refer\n * to {@link AccountSASResourceTypes} to construct this value.\n */\n resourceTypes: string;\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual\n * REST request.\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/constructing-an-account-sas\n *\n * @param accountSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateAccountSASQueryParameters(\n accountSASSignatureValues: AccountSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters {\n return generateAccountSASQueryParametersInternal(accountSASSignatureValues, sharedKeyCredential)\n .sasQueryParameters;\n}\n\nexport function generateAccountSASQueryParametersInternal(\n accountSASSignatureValues: AccountSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n const version = accountSASSignatureValues.version\n ? accountSASSignatureValues.version\n : SERVICE_VERSION;\n\n const parsedPermissions = AccountSASPermissions.parse(\n accountSASSignatureValues.permissions.toString(),\n );\n const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();\n const parsedResourceTypes = AccountSASResourceTypes.parse(\n accountSASSignatureValues.resourceTypes,\n ).toString();\n\n let stringToSign: string;\n\n if (version >= \"2020-12-06\") {\n stringToSign = [\n sharedKeyCredential.accountName,\n parsedPermissions,\n parsedServices,\n parsedResourceTypes,\n accountSASSignatureValues.startsOn\n ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)\n : \"\",\n truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),\n accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : \"\",\n accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : \"\",\n version,\n accountSASSignatureValues.encryptionScope ? accountSASSignatureValues.encryptionScope : \"\", // Reserve for encryption scope\n \"\", // Account SAS requires an additional newline character\n ].join(\"\\n\");\n } else {\n stringToSign = [\n sharedKeyCredential.accountName,\n parsedPermissions,\n parsedServices,\n parsedResourceTypes,\n accountSASSignatureValues.startsOn\n ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)\n : \"\",\n truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),\n accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : \"\",\n accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : \"\",\n version,\n \"\", // Account SAS requires an additional newline character\n ].join(\"\\n\");\n }\n\n const signature: string = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n version,\n signature,\n parsedPermissions.toString(),\n parsedServices,\n parsedResourceTypes,\n accountSASSignatureValues.protocol,\n accountSASSignatureValues.startsOn,\n accountSASSignatureValues.expiresOn,\n accountSASSignatureValues.ipRange,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n accountSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n"]}
|
|
@@ -85,7 +85,7 @@ export interface DataLakeSASSignatureValues {
|
|
|
85
85
|
/**
|
|
86
86
|
* Optional. The name of the access policy on the file system this SAS references if any.
|
|
87
87
|
*
|
|
88
|
-
* @see https://learn.microsoft.com/
|
|
88
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy
|
|
89
89
|
*/
|
|
90
90
|
identifier?: string;
|
|
91
91
|
/**
|
|
@@ -41,7 +41,7 @@ export function generateDataLakeSASQueryParametersInternal(dataLakeSASSignatureV
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
// Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.
|
|
44
|
-
// https://learn.microsoft.com/
|
|
44
|
+
// https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string
|
|
45
45
|
if (version >= "2018-11-09") {
|
|
46
46
|
if (sharedKeyCredential !== undefined) {
|
|
47
47
|
return generateBlobSASQueryParameters20181109(dataLakeSASSignatureValues, sharedKeyCredential);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLakeSASSignatureValues.js","sourceRoot":"","sources":["../../../src/sas/DataLakeSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential.js\";\nimport { UserDelegationKeyCredential } from \"../credentials/UserDelegationKeyCredential.js\";\nimport { DataLakeSASPermissions } from \"./DataLakeSASPermissions.js\";\nimport { FileSystemSASPermissions } from \"./FileSystemSASPermissions.js\";\nimport type { UserDelegationKey } from \"../models.js\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { SERVICE_VERSION } from \"../utils/constants.js\";\nimport { truncatedISO8061Date } from \"../utils/utils.common.js\";\nimport { DirectorySASPermissions } from \"./DirectorySASPermissions.js\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * DataLakeSASSignatureValues is used to help generating Blob and DataLake service SAS tokens for containers, blobs, filesystem, directories and files.\n */\nexport interface DataLakeSASSignatureValues {\n /**\n * The version of the service this SAS will target. If not specified, it will default to the version targeted by the\n * library.\n */\n version?: string;\n\n /**\n * Optional. SAS protocols, HTTPS only or HTTPSandHTTP\n */\n protocol?: SASProtocol;\n\n /**\n * Optional. When the SAS will take effect.\n */\n startsOn?: Date;\n\n /**\n * Optional only when identifier is provided. The time after which the SAS will no longer work.\n */\n expiresOn?: Date;\n\n /**\n * Optional only when identifier is provided.\n * Please refer to {@link FileSystemSASPermissions}, {@link DirectorySASPermissions} or {@link DataLakeSASPermissions} depending on the resource\n * being accessed for help constructing the permissions string.\n */\n permissions?: DataLakeSASPermissions | DirectorySASPermissions | FileSystemSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the file system the SAS user may access.\n */\n fileSystemName: string;\n\n /**\n * Optional. The path name of the directory or file SAS user may access. Required if snapshotTime is provided.\n */\n pathName?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, this value defines whether or not the {@link pathName} is a directory.\n * If this value is set to true, the Path is a Directory for a Directory SAS. If set to false or default, the Path\n * is a File Path for a File Path SAS.\n */\n isDirectory?: boolean;\n\n /**\n * Optional. Beginning in version 2020-02-10, indicate the depth of the directory specified in the canonicalizedresource field of the string-to-sign.\n * The depth of the directory is the number of directories beneath the root folder.\n */\n directoryDepth?: number;\n\n /**\n * Optional. Beginning in version 2020-02-10, specifies the Authorized AAD Object Id in GUID format. The AAD Object ID of a user\n * authorized by the owner of the user delegation key to perform the action granted by the SAS. The Azure Storage service will\n * ensure that the owner of the user delegation key has the required permissions before granting access but no additional permission\n * check for the user specified in this value will be performed. This cannot be used in conjuction with {@link agentObjectId}.\n * This is only used for User Delegation SAS.\n */\n preauthorizedAgentObjectId?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, specifies the Unauthorized AAD Object Id in GUID format. The AAD Object Id of a user that is assumed\n * to be unauthorized by the owner of the user delegation key. The Azure Storage Service will perform an additional POSIX ACL check to determine\n * if the user is authorized to perform the requested operation. This cannot be used in conjuction with {@link preauthorizedAgentObjectId}.\n * This is only used for User Delegation SAS.\n */\n agentObjectId?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, this is a GUID value that will be logged in the storage diagnostic logs and can be used to\n * correlate SAS generation with storage resource access. This is only used for User Delegation SAS.\n */\n correlationId?: string;\n\n /**\n * Optional. Snapshot timestamp string the SAS user may access. Only supported from API version 2018-11-09.\n */\n snapshotTime?: string;\n\n /**\n * Optional. The name of the access policy on the file system this SAS references if any.\n *\n * @see https://learn.microsoft.com/en-us/rest/api/storageservices/establishing-a-stored-access-policy\n */\n identifier?: string;\n\n /**\n * Optional. Encryption scope to use when sending requests authorized with this SAS URI.\n */\n encryptionScope?: string;\n\n /**\n * Optional. The cache-control header for the SAS.\n */\n cacheControl?: string;\n\n /**\n * Optional. The content-disposition header for the SAS.\n */\n contentDisposition?: string;\n\n /**\n * Optional. The content-encoding header for the SAS.\n */\n contentEncoding?: string;\n\n /**\n * Optional. The content-language header for the SAS.\n */\n contentLanguage?: string;\n\n /**\n * Optional. The content-type header for the SAS.\n */\n contentType?: string;\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * Fill in the required details before running the following snippets.\n * @example\n * ```ts snippet:ignore\n * // Generate service level SAS for a file system\n * const containerSAS = generateDataLakeSASQueryParameters({\n * fileSystemName, // Required\n * permissions: ContainerSASPermissions.parse(\"racwdl\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400), // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\" // Optional\n * },\n * sharedKeyCredential // StorageSharedKeyCredential - `new StorageSharedKeyCredential(account, accountKey)`\n * ).toString();\n * ```\n *\n * // Fill in the required details before running the snippet.\n * @example\n * ```ts snippet:ignore\n * // Generate service level SAS for a file\n * const fileSAS = generateDataLakeSASQueryParameters({\n * fileSystemName, // Required\n * fileName, // Required\n * permissions: DataLakeSASPermissions.parse(\"racwd\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400), // Required. Date type\n * cacheControl: \"cache-control-override\", // Optional\n * contentDisposition: \"content-disposition-override\", // Optional\n * contentEncoding: \"content-encoding-override\", // Optional\n * contentLanguage: \"content-language-override\", // Optional\n * contentType: \"content-type-override\", // Optional\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\" // Optional\n * },\n * sharedKeyCredential // StorageSharedKeyCredential - `new StorageSharedKeyCredential(account, accountKey)`\n * ).toString();\n * ```\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateDataLakeSASQueryParameters(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n * WARNING: identifier will be ignored when generating user delegation SAS, permissions and expiresOn are required.\n *\n * @example\n * ```ts snippet:ignore\n * // Generate user delegation SAS for a file system\n * const userDelegationKey = await dataLakeServiceClient.getUserDelegationKey(startsOn, expiresOn);\n * const fileSystemSAS = generateDataLakeSASQueryParameters({\n * fileSystemName, // Required\n * permissions: FileSystemSASPermissions.parse(\"racwdl\"), // Required\n * startsOn, // Optional. Date type\n * expiresOn, // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2018-11-09\" // Must greater than or equal to 2018-11-09 to generate user delegation SAS\n * },\n * userDelegationKey, // UserDelegationKey\n * accountName\n * ).toString();\n * ```\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKey - Return value of `blobServiceClient.getUserDelegationKey()`\n * @param accountName -\n */\nexport function generateDataLakeSASQueryParameters(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateDataLakeSASQueryParameters(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateDataLakeSASQueryParametersInternal(\n dataLakeSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameter;\n}\n\nexport function generateDataLakeSASQueryParametersInternal(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n const sharedKeyCredential =\n sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential: UserDelegationKeyCredential | undefined;\n\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(\n accountName,\n sharedKeyCredentialOrUserDelegationKey as UserDelegationKey,\n );\n }\n\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n }\n\n // Version 2020-12-06 adds support for encryptionscope in SAS.\n if (version >= \"2020-12-06\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20201206(\n dataLakeSASSignatureValues,\n sharedKeyCredential,\n );\n } else {\n if (version >= \"2025-07-05\") {\n return generateBlobSASQueryParametersUDK20250705(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20201206(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n if (version >= \"2018-11-09\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20181109(\n dataLakeSASSignatureValues,\n sharedKeyCredential,\n );\n } else {\n // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParametersUDK20200210(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20181109(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(\n dataLakeSASSignatureValues,\n sharedKeyCredential,\n );\n } else {\n throw new RangeError(\n \"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\",\n );\n }\n }\n\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (\n !dataLakeSASSignatureValues.identifier &&\n !(dataLakeSASSignatureValues.permissions && dataLakeSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for DataLake SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n resource = \"b\";\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n dataLakeSASSignatureValues.identifier,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n dataLakeSASSignatureValues.cacheControl ? dataLakeSASSignatureValues.cacheControl : \"\",\n dataLakeSASSignatureValues.contentDisposition\n ? dataLakeSASSignatureValues.contentDisposition\n : \"\",\n dataLakeSASSignatureValues.contentEncoding ? dataLakeSASSignatureValues.contentEncoding : \"\",\n dataLakeSASSignatureValues.contentLanguage ? dataLakeSASSignatureValues.contentLanguage : \"\",\n dataLakeSASSignatureValues.contentType ? dataLakeSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (\n !dataLakeSASSignatureValues.identifier &&\n !(dataLakeSASSignatureValues.permissions && dataLakeSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n dataLakeSASSignatureValues.identifier,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.cacheControl ? dataLakeSASSignatureValues.cacheControl : \"\",\n dataLakeSASSignatureValues.contentDisposition\n ? dataLakeSASSignatureValues.contentDisposition\n : \"\",\n dataLakeSASSignatureValues.contentEncoding ? dataLakeSASSignatureValues.contentEncoding : \"\",\n dataLakeSASSignatureValues.contentLanguage ? dataLakeSASSignatureValues.contentLanguage : \"\",\n dataLakeSASSignatureValues.contentType ? dataLakeSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n undefined,\n dataLakeSASSignatureValues.directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (\n !dataLakeSASSignatureValues.identifier &&\n !(dataLakeSASSignatureValues.permissions && dataLakeSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n dataLakeSASSignatureValues.identifier,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.encryptionScope ? dataLakeSASSignatureValues.encryptionScope : \"\",\n dataLakeSASSignatureValues.cacheControl ? dataLakeSASSignatureValues.cacheControl : \"\",\n dataLakeSASSignatureValues.contentDisposition\n ? dataLakeSASSignatureValues.contentDisposition\n : \"\",\n dataLakeSASSignatureValues.contentEncoding ? dataLakeSASSignatureValues.contentEncoding : \"\",\n dataLakeSASSignatureValues.contentLanguage ? dataLakeSASSignatureValues.contentLanguage : \"\",\n dataLakeSASSignatureValues.contentType ? dataLakeSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n undefined,\n dataLakeSASSignatureValues.directoryDepth,\n undefined,\n undefined,\n undefined,\n dataLakeSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.encryptionScope,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2025-07-05.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20250705(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n undefined, // SignedKeyDelegatedUserTenantId, will be added in a future release.\n undefined, // SignedDelegatedUserObjectId, will be added in future release.\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.encryptionScope,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction getCanonicalName(accountName: string, containerName: string, blobName?: string): string {\n // FileSystem: \"/blob/account/fileSystemName\"\n // File: \"/blob/account/fileSystemName/fileName\"\n const elements: string[] = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\n\nfunction SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n version: string,\n): DataLakeSASSignatureValues {\n if (\n version < \"2020-02-10\" &&\n (dataLakeSASSignatureValues.isDirectory || dataLakeSASSignatureValues.directoryDepth)\n ) {\n throw RangeError(\"'version' must be >= '2020-02-10' to support directory SAS.\");\n }\n if (dataLakeSASSignatureValues.isDirectory && dataLakeSASSignatureValues.pathName === undefined) {\n throw RangeError(\"Must provide 'pathName' when 'isDirectory' is true.\");\n }\n if (\n dataLakeSASSignatureValues.directoryDepth !== undefined &&\n (!Number.isInteger(dataLakeSASSignatureValues.directoryDepth) ||\n dataLakeSASSignatureValues.directoryDepth < 0)\n ) {\n throw RangeError(\"'directoryDepth' must be a non-negative interger.\");\n }\n if (\n dataLakeSASSignatureValues.isDirectory &&\n dataLakeSASSignatureValues.directoryDepth === undefined\n ) {\n // calculate directoryDepth from pathName\n if (dataLakeSASSignatureValues.pathName === \"/\") {\n dataLakeSASSignatureValues.directoryDepth = 0;\n } else {\n dataLakeSASSignatureValues.directoryDepth = dataLakeSASSignatureValues.pathName\n ?.split(\"/\")\n .filter((x) => x !== \"\").length;\n }\n }\n\n if (\n version < \"2020-02-10\" &&\n dataLakeSASSignatureValues.permissions &&\n (dataLakeSASSignatureValues.permissions.move ||\n dataLakeSASSignatureValues.permissions.execute ||\n dataLakeSASSignatureValues.permissions.manageOwnership ||\n dataLakeSASSignatureValues.permissions.manageAccessControl)\n ) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing m, e, o or p permission.\");\n }\n\n if (\n version < \"2020-02-10\" &&\n (dataLakeSASSignatureValues.preauthorizedAgentObjectId ||\n dataLakeSASSignatureValues.agentObjectId ||\n dataLakeSASSignatureValues.correlationId)\n ) {\n throw RangeError(\n \"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId', 'agentObjectId' or 'correlationId'.\",\n );\n }\n if (\n dataLakeSASSignatureValues.preauthorizedAgentObjectId &&\n dataLakeSASSignatureValues.agentObjectId\n ) {\n throw RangeError(\n \"'preauthorizedAgentObjectId' or 'agentObjectId' shouldn't be specified at the same time.\",\n );\n }\n\n if (dataLakeSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when provided 'snapshotTime'.\");\n }\n if (\n dataLakeSASSignatureValues.pathName === undefined &&\n dataLakeSASSignatureValues.snapshotTime\n ) {\n throw RangeError(\"Must provide 'blobName' when provided 'snapshotTime'.\");\n }\n\n return dataLakeSASSignatureValues;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DataLakeSASSignatureValues.js","sourceRoot":"","sources":["../../../src/sas/DataLakeSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential.js\";\nimport { UserDelegationKeyCredential } from \"../credentials/UserDelegationKeyCredential.js\";\nimport { DataLakeSASPermissions } from \"./DataLakeSASPermissions.js\";\nimport { FileSystemSASPermissions } from \"./FileSystemSASPermissions.js\";\nimport type { UserDelegationKey } from \"../models.js\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { SERVICE_VERSION } from \"../utils/constants.js\";\nimport { truncatedISO8061Date } from \"../utils/utils.common.js\";\nimport { DirectorySASPermissions } from \"./DirectorySASPermissions.js\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * DataLakeSASSignatureValues is used to help generating Blob and DataLake service SAS tokens for containers, blobs, filesystem, directories and files.\n */\nexport interface DataLakeSASSignatureValues {\n /**\n * The version of the service this SAS will target. If not specified, it will default to the version targeted by the\n * library.\n */\n version?: string;\n\n /**\n * Optional. SAS protocols, HTTPS only or HTTPSandHTTP\n */\n protocol?: SASProtocol;\n\n /**\n * Optional. When the SAS will take effect.\n */\n startsOn?: Date;\n\n /**\n * Optional only when identifier is provided. The time after which the SAS will no longer work.\n */\n expiresOn?: Date;\n\n /**\n * Optional only when identifier is provided.\n * Please refer to {@link FileSystemSASPermissions}, {@link DirectorySASPermissions} or {@link DataLakeSASPermissions} depending on the resource\n * being accessed for help constructing the permissions string.\n */\n permissions?: DataLakeSASPermissions | DirectorySASPermissions | FileSystemSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the file system the SAS user may access.\n */\n fileSystemName: string;\n\n /**\n * Optional. The path name of the directory or file SAS user may access. Required if snapshotTime is provided.\n */\n pathName?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, this value defines whether or not the {@link pathName} is a directory.\n * If this value is set to true, the Path is a Directory for a Directory SAS. If set to false or default, the Path\n * is a File Path for a File Path SAS.\n */\n isDirectory?: boolean;\n\n /**\n * Optional. Beginning in version 2020-02-10, indicate the depth of the directory specified in the canonicalizedresource field of the string-to-sign.\n * The depth of the directory is the number of directories beneath the root folder.\n */\n directoryDepth?: number;\n\n /**\n * Optional. Beginning in version 2020-02-10, specifies the Authorized AAD Object Id in GUID format. The AAD Object ID of a user\n * authorized by the owner of the user delegation key to perform the action granted by the SAS. The Azure Storage service will\n * ensure that the owner of the user delegation key has the required permissions before granting access but no additional permission\n * check for the user specified in this value will be performed. This cannot be used in conjuction with {@link agentObjectId}.\n * This is only used for User Delegation SAS.\n */\n preauthorizedAgentObjectId?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, specifies the Unauthorized AAD Object Id in GUID format. The AAD Object Id of a user that is assumed\n * to be unauthorized by the owner of the user delegation key. The Azure Storage Service will perform an additional POSIX ACL check to determine\n * if the user is authorized to perform the requested operation. This cannot be used in conjuction with {@link preauthorizedAgentObjectId}.\n * This is only used for User Delegation SAS.\n */\n agentObjectId?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, this is a GUID value that will be logged in the storage diagnostic logs and can be used to\n * correlate SAS generation with storage resource access. This is only used for User Delegation SAS.\n */\n correlationId?: string;\n\n /**\n * Optional. Snapshot timestamp string the SAS user may access. Only supported from API version 2018-11-09.\n */\n snapshotTime?: string;\n\n /**\n * Optional. The name of the access policy on the file system this SAS references if any.\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy\n */\n identifier?: string;\n\n /**\n * Optional. Encryption scope to use when sending requests authorized with this SAS URI.\n */\n encryptionScope?: string;\n\n /**\n * Optional. The cache-control header for the SAS.\n */\n cacheControl?: string;\n\n /**\n * Optional. The content-disposition header for the SAS.\n */\n contentDisposition?: string;\n\n /**\n * Optional. The content-encoding header for the SAS.\n */\n contentEncoding?: string;\n\n /**\n * Optional. The content-language header for the SAS.\n */\n contentLanguage?: string;\n\n /**\n * Optional. The content-type header for the SAS.\n */\n contentType?: string;\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * Fill in the required details before running the following snippets.\n * @example\n * ```ts snippet:ignore\n * // Generate service level SAS for a file system\n * const containerSAS = generateDataLakeSASQueryParameters({\n * fileSystemName, // Required\n * permissions: ContainerSASPermissions.parse(\"racwdl\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400), // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\" // Optional\n * },\n * sharedKeyCredential // StorageSharedKeyCredential - `new StorageSharedKeyCredential(account, accountKey)`\n * ).toString();\n * ```\n *\n * // Fill in the required details before running the snippet.\n * @example\n * ```ts snippet:ignore\n * // Generate service level SAS for a file\n * const fileSAS = generateDataLakeSASQueryParameters({\n * fileSystemName, // Required\n * fileName, // Required\n * permissions: DataLakeSASPermissions.parse(\"racwd\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400), // Required. Date type\n * cacheControl: \"cache-control-override\", // Optional\n * contentDisposition: \"content-disposition-override\", // Optional\n * contentEncoding: \"content-encoding-override\", // Optional\n * contentLanguage: \"content-language-override\", // Optional\n * contentType: \"content-type-override\", // Optional\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\" // Optional\n * },\n * sharedKeyCredential // StorageSharedKeyCredential - `new StorageSharedKeyCredential(account, accountKey)`\n * ).toString();\n * ```\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateDataLakeSASQueryParameters(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n * WARNING: identifier will be ignored when generating user delegation SAS, permissions and expiresOn are required.\n *\n * @example\n * ```ts snippet:ignore\n * // Generate user delegation SAS for a file system\n * const userDelegationKey = await dataLakeServiceClient.getUserDelegationKey(startsOn, expiresOn);\n * const fileSystemSAS = generateDataLakeSASQueryParameters({\n * fileSystemName, // Required\n * permissions: FileSystemSASPermissions.parse(\"racwdl\"), // Required\n * startsOn, // Optional. Date type\n * expiresOn, // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2018-11-09\" // Must greater than or equal to 2018-11-09 to generate user delegation SAS\n * },\n * userDelegationKey, // UserDelegationKey\n * accountName\n * ).toString();\n * ```\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKey - Return value of `blobServiceClient.getUserDelegationKey()`\n * @param accountName -\n */\nexport function generateDataLakeSASQueryParameters(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateDataLakeSASQueryParameters(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateDataLakeSASQueryParametersInternal(\n dataLakeSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameter;\n}\n\nexport function generateDataLakeSASQueryParametersInternal(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n const sharedKeyCredential =\n sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential: UserDelegationKeyCredential | undefined;\n\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(\n accountName,\n sharedKeyCredentialOrUserDelegationKey as UserDelegationKey,\n );\n }\n\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n }\n\n // Version 2020-12-06 adds support for encryptionscope in SAS.\n if (version >= \"2020-12-06\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20201206(\n dataLakeSASSignatureValues,\n sharedKeyCredential,\n );\n } else {\n if (version >= \"2025-07-05\") {\n return generateBlobSASQueryParametersUDK20250705(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20201206(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n if (version >= \"2018-11-09\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20181109(\n dataLakeSASSignatureValues,\n sharedKeyCredential,\n );\n } else {\n // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParametersUDK20200210(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20181109(\n dataLakeSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(\n dataLakeSASSignatureValues,\n sharedKeyCredential,\n );\n } else {\n throw new RangeError(\n \"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\",\n );\n }\n }\n\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (\n !dataLakeSASSignatureValues.identifier &&\n !(dataLakeSASSignatureValues.permissions && dataLakeSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for DataLake SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n resource = \"b\";\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n dataLakeSASSignatureValues.identifier,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n dataLakeSASSignatureValues.cacheControl ? dataLakeSASSignatureValues.cacheControl : \"\",\n dataLakeSASSignatureValues.contentDisposition\n ? dataLakeSASSignatureValues.contentDisposition\n : \"\",\n dataLakeSASSignatureValues.contentEncoding ? dataLakeSASSignatureValues.contentEncoding : \"\",\n dataLakeSASSignatureValues.contentLanguage ? dataLakeSASSignatureValues.contentLanguage : \"\",\n dataLakeSASSignatureValues.contentType ? dataLakeSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (\n !dataLakeSASSignatureValues.identifier &&\n !(dataLakeSASSignatureValues.permissions && dataLakeSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n dataLakeSASSignatureValues.identifier,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.cacheControl ? dataLakeSASSignatureValues.cacheControl : \"\",\n dataLakeSASSignatureValues.contentDisposition\n ? dataLakeSASSignatureValues.contentDisposition\n : \"\",\n dataLakeSASSignatureValues.contentEncoding ? dataLakeSASSignatureValues.contentEncoding : \"\",\n dataLakeSASSignatureValues.contentLanguage ? dataLakeSASSignatureValues.contentLanguage : \"\",\n dataLakeSASSignatureValues.contentType ? dataLakeSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n undefined,\n dataLakeSASSignatureValues.directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param dataLakeSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (\n !dataLakeSASSignatureValues.identifier &&\n !(dataLakeSASSignatureValues.permissions && dataLakeSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n dataLakeSASSignatureValues.identifier,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.encryptionScope ? dataLakeSASSignatureValues.encryptionScope : \"\",\n dataLakeSASSignatureValues.cacheControl ? dataLakeSASSignatureValues.cacheControl : \"\",\n dataLakeSASSignatureValues.contentDisposition\n ? dataLakeSASSignatureValues.contentDisposition\n : \"\",\n dataLakeSASSignatureValues.contentEncoding ? dataLakeSASSignatureValues.contentEncoding : \"\",\n dataLakeSASSignatureValues.contentLanguage ? dataLakeSASSignatureValues.contentLanguage : \"\",\n dataLakeSASSignatureValues.contentType ? dataLakeSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n undefined,\n dataLakeSASSignatureValues.directoryDepth,\n undefined,\n undefined,\n undefined,\n dataLakeSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.encryptionScope,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2025-07-05.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param dataLakeSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20250705(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameter: SASQueryParameters; stringToSign: string } {\n if (!dataLakeSASSignatureValues.permissions || !dataLakeSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = dataLakeSASSignatureValues.version\n ? dataLakeSASSignatureValues.version\n : SERVICE_VERSION;\n dataLakeSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues,\n version,\n );\n\n let resource: string = \"c\";\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n resource = \"d\";\n } else {\n resource = \"b\";\n if (dataLakeSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (dataLakeSASSignatureValues.permissions) {\n if (dataLakeSASSignatureValues.pathName) {\n if (dataLakeSASSignatureValues.isDirectory) {\n verifiedPermissions = DirectorySASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = DataLakeSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n } else {\n verifiedPermissions = FileSystemSASPermissions.parse(\n dataLakeSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n dataLakeSASSignatureValues.startsOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.startsOn, false)\n : \"\",\n dataLakeSASSignatureValues.expiresOn\n ? truncatedISO8061Date(dataLakeSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n dataLakeSASSignatureValues.fileSystemName,\n dataLakeSASSignatureValues.pathName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n undefined, // SignedKeyDelegatedUserTenantId, will be added in a future release.\n undefined, // SignedDelegatedUserObjectId, will be added in future release.\n dataLakeSASSignatureValues.ipRange ? ipRangeToString(dataLakeSASSignatureValues.ipRange) : \"\",\n dataLakeSASSignatureValues.protocol ? dataLakeSASSignatureValues.protocol : \"\",\n version,\n resource,\n dataLakeSASSignatureValues.snapshotTime,\n dataLakeSASSignatureValues.encryptionScope,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameter: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n dataLakeSASSignatureValues.protocol,\n dataLakeSASSignatureValues.startsOn,\n dataLakeSASSignatureValues.expiresOn,\n dataLakeSASSignatureValues.ipRange,\n dataLakeSASSignatureValues.identifier,\n resource,\n dataLakeSASSignatureValues.cacheControl,\n dataLakeSASSignatureValues.contentDisposition,\n dataLakeSASSignatureValues.contentEncoding,\n dataLakeSASSignatureValues.contentLanguage,\n dataLakeSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n dataLakeSASSignatureValues.directoryDepth,\n dataLakeSASSignatureValues.preauthorizedAgentObjectId,\n dataLakeSASSignatureValues.agentObjectId,\n dataLakeSASSignatureValues.correlationId,\n dataLakeSASSignatureValues.encryptionScope,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction getCanonicalName(accountName: string, containerName: string, blobName?: string): string {\n // FileSystem: \"/blob/account/fileSystemName\"\n // File: \"/blob/account/fileSystemName/fileName\"\n const elements: string[] = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\n\nfunction SASSignatureValuesSanityCheckAndAutofill(\n dataLakeSASSignatureValues: DataLakeSASSignatureValues,\n version: string,\n): DataLakeSASSignatureValues {\n if (\n version < \"2020-02-10\" &&\n (dataLakeSASSignatureValues.isDirectory || dataLakeSASSignatureValues.directoryDepth)\n ) {\n throw RangeError(\"'version' must be >= '2020-02-10' to support directory SAS.\");\n }\n if (dataLakeSASSignatureValues.isDirectory && dataLakeSASSignatureValues.pathName === undefined) {\n throw RangeError(\"Must provide 'pathName' when 'isDirectory' is true.\");\n }\n if (\n dataLakeSASSignatureValues.directoryDepth !== undefined &&\n (!Number.isInteger(dataLakeSASSignatureValues.directoryDepth) ||\n dataLakeSASSignatureValues.directoryDepth < 0)\n ) {\n throw RangeError(\"'directoryDepth' must be a non-negative interger.\");\n }\n if (\n dataLakeSASSignatureValues.isDirectory &&\n dataLakeSASSignatureValues.directoryDepth === undefined\n ) {\n // calculate directoryDepth from pathName\n if (dataLakeSASSignatureValues.pathName === \"/\") {\n dataLakeSASSignatureValues.directoryDepth = 0;\n } else {\n dataLakeSASSignatureValues.directoryDepth = dataLakeSASSignatureValues.pathName\n ?.split(\"/\")\n .filter((x) => x !== \"\").length;\n }\n }\n\n if (\n version < \"2020-02-10\" &&\n dataLakeSASSignatureValues.permissions &&\n (dataLakeSASSignatureValues.permissions.move ||\n dataLakeSASSignatureValues.permissions.execute ||\n dataLakeSASSignatureValues.permissions.manageOwnership ||\n dataLakeSASSignatureValues.permissions.manageAccessControl)\n ) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing m, e, o or p permission.\");\n }\n\n if (\n version < \"2020-02-10\" &&\n (dataLakeSASSignatureValues.preauthorizedAgentObjectId ||\n dataLakeSASSignatureValues.agentObjectId ||\n dataLakeSASSignatureValues.correlationId)\n ) {\n throw RangeError(\n \"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId', 'agentObjectId' or 'correlationId'.\",\n );\n }\n if (\n dataLakeSASSignatureValues.preauthorizedAgentObjectId &&\n dataLakeSASSignatureValues.agentObjectId\n ) {\n throw RangeError(\n \"'preauthorizedAgentObjectId' or 'agentObjectId' shouldn't be specified at the same time.\",\n );\n }\n\n if (dataLakeSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when provided 'snapshotTime'.\");\n }\n if (\n dataLakeSASSignatureValues.pathName === undefined &&\n dataLakeSASSignatureValues.snapshotTime\n ) {\n throw RangeError(\"Must provide 'blobName' when provided 'snapshotTime'.\");\n }\n\n return dataLakeSASSignatureValues;\n}\n"]}
|
|
@@ -61,7 +61,7 @@ export declare class DirectorySASPermissions {
|
|
|
61
61
|
* order accepted by the service.
|
|
62
62
|
*
|
|
63
63
|
* The order of the characters should be as specified here to ensure correctness.
|
|
64
|
-
* @see https://learn.microsoft.com/
|
|
64
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
|
|
65
65
|
*
|
|
66
66
|
*/
|
|
67
67
|
toString(): string;
|
|
@@ -104,7 +104,7 @@ export class DirectorySASPermissions {
|
|
|
104
104
|
* order accepted by the service.
|
|
105
105
|
*
|
|
106
106
|
* The order of the characters should be as specified here to ensure correctness.
|
|
107
|
-
* @see https://learn.microsoft.com/
|
|
107
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
|
|
108
108
|
*
|
|
109
109
|
*/
|
|
110
110
|
toString() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectorySASPermissions.js","sourceRoot":"","sources":["../../../src/sas/DirectorySASPermissions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a directory.\n * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.\n * Once all the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link DataLakeSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class DirectorySASPermissions {\n /**\n * Creates an {@link DirectorySASPermissions} from the specified permissions string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid permission.\n *\n * @param permissions -\n */\n public static parse(permissions: string): DirectorySASPermissions {\n const directorySASPermissions = new DirectorySASPermissions();\n\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n directorySASPermissions.read = true;\n break;\n case \"a\":\n directorySASPermissions.add = true;\n break;\n case \"c\":\n directorySASPermissions.create = true;\n break;\n case \"w\":\n directorySASPermissions.write = true;\n break;\n case \"d\":\n directorySASPermissions.delete = true;\n break;\n case \"l\":\n directorySASPermissions.list = true;\n break;\n case \"m\":\n directorySASPermissions.move = true;\n break;\n case \"e\":\n directorySASPermissions.execute = true;\n break;\n case \"o\":\n directorySASPermissions.manageOwnership = true;\n break;\n case \"p\":\n directorySASPermissions.manageAccessControl = true;\n break;\n default:\n throw new RangeError(`Invalid permission ${char}`);\n }\n }\n\n return directorySASPermissions;\n }\n\n /**\n * Specifies Read access granted.\n */\n public read: boolean = false;\n\n /**\n * Specifies Add access granted.\n */\n public add: boolean = false;\n\n /**\n * Specifies Create access granted.\n */\n public create: boolean = false;\n\n /**\n * Specifies Write access granted.\n */\n public write: boolean = false;\n\n /**\n * Specifies Delete access granted.\n */\n public delete: boolean = false;\n\n /**\n * Specifies List access granted.\n */\n public list: boolean = false;\n\n /**\n * Specifies Move access granted.\n */\n public move: boolean = false;\n\n /**\n * Specifies Execute access granted.\n */\n public execute: boolean = false;\n\n /**\n * Specifies Ownership access granted, which allows the caller to set owner, owning group,\n * or act as the owner when renaming or deleting a blob (file or directory) within a folder\n * that has the sticky bit set.\n */\n public manageOwnership: boolean = false;\n\n /**\n * Specifies Permission access granted, which allows the caller to set permissions and\n * POSIX ACLs on blobs (files and directories).\n */\n public manageAccessControl: boolean = false;\n\n /**\n * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n * order accepted by the service.\n *\n * The order of the characters should be as specified here to ensure correctness.\n * @see https://learn.microsoft.com/
|
|
1
|
+
{"version":3,"file":"DirectorySASPermissions.js","sourceRoot":"","sources":["../../../src/sas/DirectorySASPermissions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a directory.\n * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.\n * Once all the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link DataLakeSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class DirectorySASPermissions {\n /**\n * Creates an {@link DirectorySASPermissions} from the specified permissions string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid permission.\n *\n * @param permissions -\n */\n public static parse(permissions: string): DirectorySASPermissions {\n const directorySASPermissions = new DirectorySASPermissions();\n\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n directorySASPermissions.read = true;\n break;\n case \"a\":\n directorySASPermissions.add = true;\n break;\n case \"c\":\n directorySASPermissions.create = true;\n break;\n case \"w\":\n directorySASPermissions.write = true;\n break;\n case \"d\":\n directorySASPermissions.delete = true;\n break;\n case \"l\":\n directorySASPermissions.list = true;\n break;\n case \"m\":\n directorySASPermissions.move = true;\n break;\n case \"e\":\n directorySASPermissions.execute = true;\n break;\n case \"o\":\n directorySASPermissions.manageOwnership = true;\n break;\n case \"p\":\n directorySASPermissions.manageAccessControl = true;\n break;\n default:\n throw new RangeError(`Invalid permission ${char}`);\n }\n }\n\n return directorySASPermissions;\n }\n\n /**\n * Specifies Read access granted.\n */\n public read: boolean = false;\n\n /**\n * Specifies Add access granted.\n */\n public add: boolean = false;\n\n /**\n * Specifies Create access granted.\n */\n public create: boolean = false;\n\n /**\n * Specifies Write access granted.\n */\n public write: boolean = false;\n\n /**\n * Specifies Delete access granted.\n */\n public delete: boolean = false;\n\n /**\n * Specifies List access granted.\n */\n public list: boolean = false;\n\n /**\n * Specifies Move access granted.\n */\n public move: boolean = false;\n\n /**\n * Specifies Execute access granted.\n */\n public execute: boolean = false;\n\n /**\n * Specifies Ownership access granted, which allows the caller to set owner, owning group,\n * or act as the owner when renaming or deleting a blob (file or directory) within a folder\n * that has the sticky bit set.\n */\n public manageOwnership: boolean = false;\n\n /**\n * Specifies Permission access granted, which allows the caller to set permissions and\n * POSIX ACLs on blobs (files and directories).\n */\n public manageAccessControl: boolean = false;\n\n /**\n * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n * order accepted by the service.\n *\n * The order of the characters should be as specified here to ensure correctness.\n * @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas\n *\n */\n public toString(): string {\n const permissions: string[] = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.list) {\n permissions.push(\"l\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.manageOwnership) {\n permissions.push(\"o\");\n }\n if (this.manageAccessControl) {\n permissions.push(\"p\");\n }\n return permissions.join(\"\");\n }\n}\n"]}
|
|
@@ -61,7 +61,7 @@ export declare class FileSystemSASPermissions {
|
|
|
61
61
|
* order accepted by the service.
|
|
62
62
|
*
|
|
63
63
|
* The order of the characters should be as specified here to ensure correctness.
|
|
64
|
-
* @see https://learn.microsoft.com/
|
|
64
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
|
|
65
65
|
*
|
|
66
66
|
*/
|
|
67
67
|
toString(): string;
|
|
@@ -104,7 +104,7 @@ export class FileSystemSASPermissions {
|
|
|
104
104
|
* order accepted by the service.
|
|
105
105
|
*
|
|
106
106
|
* The order of the characters should be as specified here to ensure correctness.
|
|
107
|
-
* @see https://learn.microsoft.com/
|
|
107
|
+
* @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
|
|
108
108
|
*
|
|
109
109
|
*/
|
|
110
110
|
toString() {
|