{"version":3,"file":"static/js/7421.1e78f05c.chunk.js","mappings":"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ACA,aACA,gCACA,wBACA,gBACA,oBACA,WACA,oBACA,gBACA,sBACA,mBACA,+BACA,4BACA,oBACA,sBACA,0BACA,0BACA,kCACA,gCACA,8BACA,gCACA,6BACA,6BACA,2BACA,wBACA,yBACA,0BACA,4BACA,iBACA,iCACA,qBACA,gCACA,wBACA,6BACA,sCACA,4BACA,6BACA,6BACA,6BACA,wBACA,oBACA,0BACA,sBACA,gBACA,kBACA,kBACA,yBACA,6BACA,0BACA,8BACA,gBACA,0BACA,uBACA,gCACA,4BACA,kCACA,iBACA,6BACA,8BACA,+BACA,eACA,uBAESC,EAA2C,CACpD,OACA,aACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,KACA,UACA,SACA,SACA,SACA,UACA,UACA,gBACA,YACA,eACA,MACA,QACA,MACA,MACA,QACA,MACA,YAESC,EAAyC,sCACzCC,EAA4C,4CAG5CC,EAAiB,CAC1B,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,Q,6DCvNG,MAAMC,GAAgB,OAAoB,CAC7CC,YAAa,sBACbC,eAAgB,KAChBC,UAAW,qB,kBCWRtS,eAAeuS,EAAatL,GAC/B,MAAMuL,EAAa,IAAIC,WACvB,OAAO,IAAIjF,SAAQ,CAACC,EAASC,KACzB8E,EAAWE,UAAaC,IACpBlF,EAAQkF,EAAGC,OAAO3N,OAAO,EAE7BuN,EAAWK,QAAUnF,EACrB8E,EAAWM,WAAW7L,EAAK,GAEnC,CACO,SAAS8L,IAEhB,CAIO,SAASC,IAEhB,C,sDACO,MAAMC,EAAS,WAEtB,EACaC,EAAqB,WAElC,C,4UCWO,SAASC,EAAchU,GAC1B,MAAMiU,EAAY,IAAIC,IAAIlU,GAC1B,IAAImU,EAAOF,EAAUG,SAIrB,OAHAD,EAAOA,GAAQ,IACfA,EA+GO/G,mBA/GO+G,GAgHTE,QAAQ,OAAQ,KAChBA,QAAQ,KAAM,OACdA,QAAQ,MAAO,OACfA,QAAQ,OA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","sources":["webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/log.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/models.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/AnonymousCredentialPolicy.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/CredentialPolicy.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/RequestPolicy.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicy.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicyV2.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageCorrectContentLengthPolicy.browser.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicy.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicyV2.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageSharedKeyCredentialPolicyV2.browser.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/pollers/BlobStartCopyFromUrlPoller.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASPermissions.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASServices.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASResourceTypes.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASSignatureValues.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASPermissions.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/ContainerSASPermissions.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASSignatureValues.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SASQueryParameters.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SasIPRange.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Batch.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Mutex.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/cache.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/constants.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/tracing.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.browser.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.common.js","webpack://power-app-fe/./node_modules/@azure/storage-blob/dist-esm/storage-common/src/BufferScheduler.browser.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The `@azure/logger` configuration for this package.\n */\nexport const logger = createClientLogger(\"storage-blob\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { EncryptionAlgorithmAES25 } from \"./utils/constants\";\n/**\n * Represents the access tier on a blob.\n * For detailed information about block blob level tiering see {@link https://docs.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers|Hot, cool and archive storage tiers.}\n */\nexport var BlockBlobTier;\n(function (BlockBlobTier) {\n /**\n * Optimized for storing data that is accessed frequently.\n */\n BlockBlobTier[\"Hot\"] = \"Hot\";\n /**\n * Optimized for storing data that is infrequently accessed and stored for at least 30 days.\n */\n BlockBlobTier[\"Cool\"] = \"Cool\";\n /**\n * Optimized for storing data that is rarely accessed.\n */\n BlockBlobTier[\"Cold\"] = \"Cold\";\n /**\n * Optimized for storing data that is rarely accessed and stored for at least 180 days\n * with flexible latency requirements (on the order of hours).\n */\n BlockBlobTier[\"Archive\"] = \"Archive\";\n})(BlockBlobTier || (BlockBlobTier = {}));\n/**\n * Specifies the page blob tier to set the blob to. This is only applicable to page blobs on premium storage accounts.\n * Please see {@link https://docs.microsoft.com/azure/storage/storage-premium-storage#scalability-and-performance-targets|here}\n * for detailed information on the corresponding IOPS and throughput per PageBlobTier.\n */\nexport var PremiumPageBlobTier;\n(function (PremiumPageBlobTier) {\n /**\n * P4 Tier.\n */\n PremiumPageBlobTier[\"P4\"] = \"P4\";\n /**\n * P6 Tier.\n */\n PremiumPageBlobTier[\"P6\"] = \"P6\";\n /**\n * P10 Tier.\n */\n PremiumPageBlobTier[\"P10\"] = \"P10\";\n /**\n * P15 Tier.\n */\n PremiumPageBlobTier[\"P15\"] = \"P15\";\n /**\n * P20 Tier.\n */\n PremiumPageBlobTier[\"P20\"] = \"P20\";\n /**\n * P30 Tier.\n */\n PremiumPageBlobTier[\"P30\"] = \"P30\";\n /**\n * P40 Tier.\n */\n PremiumPageBlobTier[\"P40\"] = \"P40\";\n /**\n * P50 Tier.\n */\n PremiumPageBlobTier[\"P50\"] = \"P50\";\n /**\n * P60 Tier.\n */\n PremiumPageBlobTier[\"P60\"] = \"P60\";\n /**\n * P70 Tier.\n */\n PremiumPageBlobTier[\"P70\"] = \"P70\";\n /**\n * P80 Tier.\n */\n PremiumPageBlobTier[\"P80\"] = \"P80\";\n})(PremiumPageBlobTier || (PremiumPageBlobTier = {}));\nexport function toAccessTier(tier) {\n if (tier === undefined) {\n return undefined;\n }\n return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).\n}\nexport function ensureCpkIfSpecified(cpk, isHttps) {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n/**\n * Defines the known cloud audiences for Storage.\n */\nexport var StorageBlobAudience;\n(function (StorageBlobAudience) {\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Storage.\n */\n StorageBlobAudience[\"StorageOAuthScopes\"] = \"https://storage.azure.com/.default\";\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Disk.\n */\n StorageBlobAudience[\"DiskComputeOAuthScopes\"] = \"https://disk.compute.azure.com/.default\";\n})(StorageBlobAudience || (StorageBlobAudience = {}));\n/**\n *\n * To get OAuth audience for a storage account for blob service.\n */\nexport function getBlobServiceAccountAudience(storageAccountName) {\n return `https://${storageAccountName}.blob.core.windows.net/.default`;\n}\n//# sourceMappingURL=models.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CredentialPolicy } from \"./CredentialPolicy\";\n/**\n * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources\n * or for use with Shared Access Signatures (SAS).\n */\nexport class AnonymousCredentialPolicy extends CredentialPolicy {\n /**\n * Creates an instance of AnonymousCredentialPolicy.\n * @param nextPolicy -\n * @param options -\n */\n // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n}\n//# sourceMappingURL=AnonymousCredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\n/**\n * Credential policy used to sign HTTP(S) requests before sending. This is an\n * abstract class.\n */\nexport class CredentialPolicy extends BaseRequestPolicy {\n /**\n * Sends out request.\n *\n * @param request -\n */\n sendRequest(request) {\n return this._nextPolicy.sendRequest(this.signRequest(request));\n }\n /**\n * Child classes must implement this method with request signing. This method\n * will be executed in {@link sendRequest}.\n *\n * @param request -\n */\n signRequest(request) {\n // Child classes must override this method with request signing. This method\n // will be executed in sendRequest().\n return request;\n }\n}\n//# sourceMappingURL=CredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The base class from which all request policies derive.\n */\nexport class BaseRequestPolicy {\n /**\n * The main method to implement that manipulates a request/response.\n */\n constructor(\n /**\n * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline.\n */\n _nextPolicy, \n /**\n * The options that can be passed to a given request policy.\n */\n _options) {\n this._nextPolicy = _nextPolicy;\n this._options = _options;\n }\n /**\n * Get whether or not a log with the provided log level should be logged.\n * @param logLevel - The log level of the log that will be logged.\n * @returns Whether or not a log with the provided log level should be logged.\n */\n shouldLog(logLevel) {\n return this._options.shouldLog(logLevel);\n }\n /**\n * Attempt to log the provided message to the provided logger. If no logger was provided or if\n * the log level does not meat the logger's threshold, then nothing will be logged.\n * @param logLevel - The log level of this log.\n * @param message - The message of this log.\n */\n log(logLevel, message) {\n this._options.log(logLevel, message);\n }\n}\n//# sourceMappingURL=RequestPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\nimport { isNode } from \"@azure/core-util\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:\n *\n * 1. Browsers cache GET/HEAD requests by adding conditional headers such as 'IF_MODIFIED_SINCE'.\n * StorageBrowserPolicy is a policy used to add a timestamp query to GET/HEAD request URL\n * thus avoid the browser cache.\n *\n * 2. Remove cookie header for security\n *\n * 3. Remove content-length header to avoid browsers warning\n */\nexport class StorageBrowserPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of StorageBrowserPolicy.\n * @param nextPolicy -\n * @param options -\n */\n // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n /**\n * Sends out request.\n *\n * @param request -\n */\n async sendRequest(request) {\n if (isNode) {\n return this._nextPolicy.sendRequest(request);\n }\n if (request.method.toUpperCase() === \"GET\" || request.method.toUpperCase() === \"HEAD\") {\n request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n }\n request.headers.remove(HeaderConstants.COOKIE);\n // According to XHR standards, content-length should be fully controlled by browsers\n request.headers.remove(HeaderConstants.CONTENT_LENGTH);\n return this._nextPolicy.sendRequest(request);\n }\n}\n//# sourceMappingURL=StorageBrowserPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isNode } from \"@azure/core-util\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * The programmatic identifier of the StorageBrowserPolicy.\n */\nexport const storageBrowserPolicyName = \"storageBrowserPolicy\";\n/**\n * storageBrowserPolicy is a policy used to prevent browsers from caching requests\n * and to remove cookies and explicit content-length headers.\n */\nexport function storageBrowserPolicy() {\n return {\n name: storageBrowserPolicyName,\n async sendRequest(request, next) {\n if (isNode) {\n return next(request);\n }\n if (request.method === \"GET\" || request.method === \"HEAD\") {\n request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n }\n request.headers.delete(HeaderConstants.COOKIE);\n // According to XHR standards, content-length should be fully controlled by browsers\n request.headers.delete(HeaderConstants.CONTENT_LENGTH);\n return next(request);\n },\n };\n}\n//# sourceMappingURL=StorageBrowserPolicyV2.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The programmatic identifier of the storageCorrectContentLengthPolicy.\n */\nexport const storageCorrectContentLengthPolicyName = \"StorageCorrectContentLengthPolicy\";\n/**\n * storageCorrectContentLengthPolicy to correctly set Content-Length header with request body length.\n */\nexport function storageCorrectContentLengthPolicy() {\n return {\n name: storageCorrectContentLengthPolicyName,\n async sendRequest(request, next) {\n return next(request);\n },\n };\n}\n//# sourceMappingURL=StorageCorrectContentLengthPolicy.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * A factory method used to generated a RetryPolicy factory.\n *\n * @param retryOptions -\n */\nexport function NewRetryPolicyFactory(retryOptions) {\n return {\n create: (nextPolicy, options) => {\n return new StorageRetryPolicy(nextPolicy, options, retryOptions);\n },\n };\n}\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport class StorageRetryPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of RetryPolicy.\n *\n * @param nextPolicy -\n * @param options -\n * @param retryOptions -\n */\n constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {\n super(nextPolicy, options);\n // Initialize retry options\n this.retryOptions = {\n retryPolicyType: retryOptions.retryPolicyType\n ? retryOptions.retryPolicyType\n : DEFAULT_RETRY_OPTIONS.retryPolicyType,\n maxTries: retryOptions.maxTries && retryOptions.maxTries >= 1\n ? Math.floor(retryOptions.maxTries)\n : DEFAULT_RETRY_OPTIONS.maxTries,\n tryTimeoutInMs: retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0\n ? retryOptions.tryTimeoutInMs\n : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,\n retryDelayInMs: retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0\n ? Math.min(retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs)\n : DEFAULT_RETRY_OPTIONS.retryDelayInMs,\n maxRetryDelayInMs: retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,\n secondaryHost: retryOptions.secondaryHost\n ? retryOptions.secondaryHost\n : DEFAULT_RETRY_OPTIONS.secondaryHost,\n };\n }\n /**\n * Sends request.\n *\n * @param request -\n */\n async sendRequest(request) {\n return this.attemptSendRequest(request, false, 1);\n }\n /**\n * Decide and perform next retry. Won't mutate request parameter.\n *\n * @param request -\n * @param secondaryHas404 - If attempt was against the secondary & it returned a StatusNotFound (404), then\n * the resource was not found. This may be due to replication delay. So, in this\n * case, we'll never try the secondary again for this operation.\n * @param attempt - How many retries has been attempted to performed, starting from 1, which includes\n * the attempt will be performed by this method call.\n */\n async attemptSendRequest(request, secondaryHas404, attempt) {\n const newRequest = request.clone();\n const isPrimaryRetry = secondaryHas404 ||\n !this.retryOptions.secondaryHost ||\n !(request.method === \"GET\" || request.method === \"HEAD\" || request.method === \"OPTIONS\") ||\n attempt % 2 === 1;\n if (!isPrimaryRetry) {\n newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);\n }\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (this.retryOptions.tryTimeoutInMs) {\n newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());\n }\n let response;\n try {\n logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n response = await this._nextPolicy.sendRequest(newRequest);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {\n return response;\n }\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n }\n catch (err) {\n logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {\n throw err;\n }\n }\n await this.delay(isPrimaryRetry, attempt, request.abortSignal);\n return this.attemptSendRequest(request, secondaryHas404, ++attempt);\n }\n /**\n * Decide whether to retry according to last HTTP response and retry counters.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param response -\n * @param err -\n */\n shouldRetry(isPrimaryRetry, attempt, response, err) {\n if (attempt >= this.retryOptions.maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions\n .maxTries}, no further try.`);\n return false;\n }\n // Handle network failures, you may need to customize the list when you implement\n // your own http client\n const retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\", // For default xhr based http client provided in ms-rest-js\n ];\n if (err) {\n for (const retriableError of retriableErrors) {\n if (err.name.toUpperCase().includes(retriableError) ||\n err.message.toUpperCase().includes(retriableError) ||\n (err.code && err.code.toString().toUpperCase() === retriableError)) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n }\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || err) {\n const statusCode = response ? response.status : err ? err.statusCode : 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n // [Copy source error code] Feature is pending on service side, skip retry on copy source error for now.\n // if (response) {\n // // Retry select Copy Source Error Codes.\n // if (response?.status >= 400) {\n // const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n // if (copySourceError !== undefined) {\n // switch (copySourceError) {\n // case \"InternalError\":\n // case \"OperationTimedOut\":\n // case \"ServerBusy\":\n // return true;\n // }\n // }\n // }\n // }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"PARSE_ERROR\" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n return true;\n }\n return false;\n }\n /**\n * Delay a calculated time between retries.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param abortSignal -\n */\n async delay(isPrimaryRetry, attempt, abortSignal) {\n let delayTimeInMs = 0;\n if (isPrimaryRetry) {\n switch (this.retryOptions.retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = this.retryOptions.retryDelayInMs;\n break;\n }\n }\n else {\n delayTimeInMs = Math.random() * 1000;\n }\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);\n }\n}\n//# sourceMappingURL=StorageRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { isRestError, RestError } from \"@azure/core-rest-pipeline\";\nimport { getErrorMessage } from \"@azure/core-util\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * Name of the {@link storageRetryPolicy}\n */\nexport const storageRetryPolicyName = \"storageRetryPolicy\";\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\",\n];\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport function storageRetryPolicy(options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const retryPolicyType = (_a = options.retryPolicyType) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_OPTIONS.retryPolicyType;\n const maxTries = (_b = options.maxTries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_OPTIONS.maxTries;\n const retryDelayInMs = (_c = options.retryDelayInMs) !== null && _c !== void 0 ? _c : DEFAULT_RETRY_OPTIONS.retryDelayInMs;\n const maxRetryDelayInMs = (_d = options.maxRetryDelayInMs) !== null && _d !== void 0 ? _d : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;\n const secondaryHost = (_e = options.secondaryHost) !== null && _e !== void 0 ? _e : DEFAULT_RETRY_OPTIONS.secondaryHost;\n const tryTimeoutInMs = (_f = options.tryTimeoutInMs) !== null && _f !== void 0 ? _f : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;\n function shouldRetry({ isPrimaryRetry, attempt, response, error, }) {\n var _a, _b;\n if (attempt >= maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);\n return false;\n }\n if (error) {\n for (const retriableError of retriableErrors) {\n if (error.name.toUpperCase().includes(retriableError) ||\n error.message.toUpperCase().includes(retriableError) ||\n (error.code && error.code.toString().toUpperCase() === retriableError)) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n if ((error === null || error === void 0 ? void 0 : error.code) === \"PARSE_ERROR\" &&\n (error === null || error === void 0 ? void 0 : error.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n return true;\n }\n }\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || error) {\n const statusCode = (_b = (_a = response === null || response === void 0 ? void 0 : response.status) !== null && _a !== void 0 ? _a : error === null || error === void 0 ? void 0 : error.statusCode) !== null && _b !== void 0 ? _b : 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n // [Copy source error code] Feature is pending on service side, skip retry on copy source error for now.\n // if (response) {\n // // Retry select Copy Source Error Codes.\n // if (response?.status >= 400) {\n // const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n // if (copySourceError !== undefined) {\n // switch (copySourceError) {\n // case \"InternalError\":\n // case \"OperationTimedOut\":\n // case \"ServerBusy\":\n // return true;\n // }\n // }\n // }\n // }\n return false;\n }\n function calculateDelay(isPrimaryRetry, attempt) {\n let delayTimeInMs = 0;\n if (isPrimaryRetry) {\n switch (retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * retryDelayInMs, maxRetryDelayInMs);\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = retryDelayInMs;\n break;\n }\n }\n else {\n delayTimeInMs = Math.random() * 1000;\n }\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delayTimeInMs;\n }\n return {\n name: storageRetryPolicyName,\n async sendRequest(request, next) {\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (tryTimeoutInMs) {\n request.url = setURLParameter(request.url, URLConstants.Parameters.TIMEOUT, String(Math.floor(tryTimeoutInMs / 1000)));\n }\n const primaryUrl = request.url;\n const secondaryUrl = secondaryHost ? setURLHost(request.url, secondaryHost) : undefined;\n let secondaryHas404 = false;\n let attempt = 1;\n let retryAgain = true;\n let response;\n let error;\n while (retryAgain) {\n const isPrimaryRetry = secondaryHas404 ||\n !secondaryUrl ||\n ![\"GET\", \"HEAD\", \"OPTIONS\"].includes(request.method) ||\n attempt % 2 === 1;\n request.url = isPrimaryRetry ? primaryUrl : secondaryUrl;\n response = undefined;\n error = undefined;\n try {\n logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n response = await next(request);\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n }\n catch (e) {\n if (isRestError(e)) {\n logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);\n error = e;\n }\n else {\n logger.error(`RetryPolicy: Caught error, message: ${getErrorMessage(e)}`);\n throw e;\n }\n }\n retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });\n if (retryAgain) {\n await delay(calculateDelay(isPrimaryRetry, attempt), request.abortSignal, RETRY_ABORT_ERROR);\n }\n attempt++;\n }\n if (response) {\n return response;\n }\n throw error !== null && error !== void 0 ? error : new RestError(\"RetryPolicy failed without known error.\");\n },\n };\n}\n//# sourceMappingURL=StorageRetryPolicyV2.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The programmatic identifier of the storageSharedKeyCredentialPolicy.\n */\nexport const storageSharedKeyCredentialPolicyName = \"storageSharedKeyCredentialPolicy\";\n/**\n * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.\n */\nexport function storageSharedKeyCredentialPolicy(_options) {\n return {\n name: storageSharedKeyCredentialPolicyName,\n async sendRequest(request, next) {\n return next(request);\n },\n };\n}\n//# sourceMappingURL=StorageSharedKeyCredentialPolicyV2.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { delay } from \"@azure/core-util\";\nimport { Poller } from \"@azure/core-lro\";\n/**\n * This is the poller returned by {@link BlobClient.beginCopyFromURL}.\n * This can not be instantiated directly outside of this package.\n *\n * @hidden\n */\nexport class BlobBeginCopyFromUrlPoller extends Poller {\n constructor(options) {\n const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions, } = options;\n let state;\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,\n copySource,\n startCopyFromURLOptions }));\n super(operation);\n if (typeof onProgress === \"function\") {\n this.onProgress(onProgress);\n }\n this.intervalInMs = intervalInMs;\n }\n delay() {\n return delay(this.intervalInMs);\n }\n}\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst cancel = async function cancel(options = {}) {\n const state = this.state;\n const { copyId } = state;\n if (state.isCompleted) {\n return makeBlobBeginCopyFromURLPollOperation(state);\n }\n if (!copyId) {\n state.isCancelled = true;\n return makeBlobBeginCopyFromURLPollOperation(state);\n }\n // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call\n await state.blobClient.abortCopyFromURL(copyId, {\n abortSignal: options.abortSignal,\n });\n state.isCancelled = true;\n return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst update = async function update(options = {}) {\n const state = this.state;\n const { blobClient, copySource, startCopyFromURLOptions } = state;\n if (!state.isStarted) {\n state.isStarted = true;\n const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);\n // copyId is needed to abort\n state.copyId = result.copyId;\n if (result.copyStatus === \"success\") {\n state.result = result;\n state.isCompleted = true;\n }\n }\n else if (!state.isCompleted) {\n try {\n const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });\n const { copyStatus, copyProgress } = result;\n const prevCopyProgress = state.copyProgress;\n if (copyProgress) {\n state.copyProgress = copyProgress;\n }\n if (copyStatus === \"pending\" &&\n copyProgress !== prevCopyProgress &&\n typeof options.fireProgress === \"function\") {\n // trigger in setTimeout, or swallow error?\n options.fireProgress(state);\n }\n else if (copyStatus === \"success\") {\n state.result = result;\n state.isCompleted = true;\n }\n else if (copyStatus === \"failed\") {\n state.error = new Error(`Blob copy failed with reason: \"${result.copyStatusDescription || \"unknown\"}\"`);\n state.isCompleted = true;\n }\n }\n catch (err) {\n state.error = err;\n state.isCompleted = true;\n }\n }\n return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst toString = function toString() {\n return JSON.stringify({ state: this.state }, (key, value) => {\n // remove blobClient from serialized state since a client can't be hydrated from this info.\n if (key === \"blobClient\") {\n return undefined;\n }\n return value;\n });\n};\n/**\n * Creates a poll operation given the provided state.\n * @hidden\n */\nfunction makeBlobBeginCopyFromURLPollOperation(state) {\n return {\n state: Object.assign({}, state),\n cancel,\n toString,\n update,\n };\n}\n//# sourceMappingURL=BlobStartCopyFromUrlPoller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the\n * values are set, this should be serialized with toString and set as the permissions field on an\n * {@link AccountSASSignatureValues} 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 AccountSASPermissions {\n constructor() {\n /**\n * Permission to read resources and list queues and tables granted.\n */\n this.read = false;\n /**\n * Permission to write resources granted.\n */\n this.write = false;\n /**\n * Permission to delete blobs and files granted.\n */\n this.delete = false;\n /**\n * Permission to delete versions granted.\n */\n this.deleteVersion = false;\n /**\n * Permission to list blob containers, blobs, shares, directories, and files granted.\n */\n this.list = false;\n /**\n * Permission to add messages, table entities, and append to blobs granted.\n */\n this.add = false;\n /**\n * Permission to create blobs and files granted.\n */\n this.create = false;\n /**\n * Permissions to update messages and table entities granted.\n */\n this.update = false;\n /**\n * Permission to get and delete messages granted.\n */\n this.process = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Permission to filter blobs.\n */\n this.filter = false;\n /**\n * Permission to set immutability policy.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n }\n /**\n * Parse initializes the AccountSASPermissions fields from a string.\n *\n * @param permissions -\n */\n static parse(permissions) {\n const accountSASPermissions = new AccountSASPermissions();\n for (const c of permissions) {\n switch (c) {\n case \"r\":\n accountSASPermissions.read = true;\n break;\n case \"w\":\n accountSASPermissions.write = true;\n break;\n case \"d\":\n accountSASPermissions.delete = true;\n break;\n case \"x\":\n accountSASPermissions.deleteVersion = true;\n break;\n case \"l\":\n accountSASPermissions.list = true;\n break;\n case \"a\":\n accountSASPermissions.add = true;\n break;\n case \"c\":\n accountSASPermissions.create = true;\n break;\n case \"u\":\n accountSASPermissions.update = true;\n break;\n case \"p\":\n accountSASPermissions.process = true;\n break;\n case \"t\":\n accountSASPermissions.tag = true;\n break;\n case \"f\":\n accountSASPermissions.filter = true;\n break;\n case \"i\":\n accountSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n accountSASPermissions.permanentDelete = true;\n break;\n default:\n throw new RangeError(`Invalid permission character: ${c}`);\n }\n }\n return accountSASPermissions;\n }\n /**\n * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const accountSASPermissions = new AccountSASPermissions();\n if (permissionLike.read) {\n accountSASPermissions.read = true;\n }\n if (permissionLike.write) {\n accountSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n accountSASPermissions.delete = true;\n }\n if (permissionLike.deleteVersion) {\n accountSASPermissions.deleteVersion = true;\n }\n if (permissionLike.filter) {\n accountSASPermissions.filter = true;\n }\n if (permissionLike.tag) {\n accountSASPermissions.tag = true;\n }\n if (permissionLike.list) {\n accountSASPermissions.list = true;\n }\n if (permissionLike.add) {\n accountSASPermissions.add = true;\n }\n if (permissionLike.create) {\n accountSASPermissions.create = true;\n }\n if (permissionLike.update) {\n accountSASPermissions.update = true;\n }\n if (permissionLike.process) {\n accountSASPermissions.process = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n accountSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n accountSASPermissions.permanentDelete = true;\n }\n return accountSASPermissions;\n }\n /**\n * Produces the SAS permissions string for an Azure Storage account.\n * Call this method to set AccountSASSignatureValues Permissions field.\n *\n * Using this method will guarantee the resource types are in\n * an order accepted by the service.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n */\n toString() {\n // The order of the characters should be as specified here to ensure correctness:\n // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n // Use a string array instead of string concatenating += operator for performance\n const permissions = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.filter) {\n permissions.push(\"f\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.list) {\n permissions.push(\"l\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.update) {\n permissions.push(\"u\");\n }\n if (this.process) {\n permissions.push(\"p\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=AccountSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that service. Once all the\n * values are set, this should be serialized with toString and set as the services field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but\n * the order of the services is particular and this class guarantees correctness.\n */\nexport class AccountSASServices {\n constructor() {\n /**\n * Permission to access blob resources granted.\n */\n this.blob = false;\n /**\n * Permission to access file resources granted.\n */\n this.file = false;\n /**\n * Permission to access queue resources granted.\n */\n this.queue = false;\n /**\n * Permission to access table resources granted.\n */\n this.table = false;\n }\n /**\n * Creates an {@link AccountSASServices} from the specified services string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid service.\n *\n * @param services -\n */\n static parse(services) {\n const accountSASServices = new AccountSASServices();\n for (const c of services) {\n switch (c) {\n case \"b\":\n accountSASServices.blob = true;\n break;\n case \"f\":\n accountSASServices.file = true;\n break;\n case \"q\":\n accountSASServices.queue = true;\n break;\n case \"t\":\n accountSASServices.table = true;\n break;\n default:\n throw new RangeError(`Invalid service character: ${c}`);\n }\n }\n return accountSASServices;\n }\n /**\n * Converts the given services to a string.\n *\n */\n toString() {\n const services = [];\n if (this.blob) {\n services.push(\"b\");\n }\n if (this.table) {\n services.push(\"t\");\n }\n if (this.queue) {\n services.push(\"q\");\n }\n if (this.file) {\n services.push(\"f\");\n }\n return services.join(\"\");\n }\n}\n//# sourceMappingURL=AccountSASServices.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\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 constructor() {\n /**\n * Permission to access service level APIs granted.\n */\n this.service = false;\n /**\n * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.\n */\n this.container = false;\n /**\n * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.\n */\n this.object = false;\n }\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 static parse(resourceTypes) {\n const accountSASResourceTypes = new AccountSASResourceTypes();\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 return accountSASResourceTypes;\n }\n /**\n * Converts the given resource types to a string.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n */\n toString() {\n const resourceTypes = [];\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//# sourceMappingURL=AccountSASResourceTypes.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AccountSASPermissions } from \"./AccountSASPermissions\";\nimport { AccountSASResourceTypes } from \"./AccountSASResourceTypes\";\nimport { AccountSASServices } from \"./AccountSASServices\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\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://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n * @param accountSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {\n return generateAccountSASQueryParametersInternal(accountSASSignatureValues, sharedKeyCredential)\n .sasQueryParameters;\n}\nexport function generateAccountSASQueryParametersInternal(accountSASSignatureValues, sharedKeyCredential) {\n const version = accountSASSignatureValues.version\n ? accountSASSignatureValues.version\n : SERVICE_VERSION;\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\") {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when provided 'x' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when provided 'y' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when provided 't' permission.\");\n }\n if (accountSASSignatureValues.permissions &&\n accountSASSignatureValues.permissions.filter &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when provided 'f' permission.\");\n }\n if (accountSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());\n const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();\n const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();\n let stringToSign;\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 : \"\",\n \"\", // Account SAS requires an additional newline character\n ].join(\"\\n\");\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 const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, accountSASSignatureValues.encryptionScope),\n stringToSign: stringToSign,\n };\n}\n//# sourceMappingURL=AccountSASSignatureValues.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting\n * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all\n * the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} 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 BlobSASPermissions {\n constructor() {\n /**\n * Specifies Read access granted.\n */\n this.read = false;\n /**\n * Specifies Add access granted.\n */\n this.add = false;\n /**\n * Specifies Create access granted.\n */\n this.create = false;\n /**\n * Specifies Write access granted.\n */\n this.write = false;\n /**\n * Specifies Delete access granted.\n */\n this.delete = false;\n /**\n * Specifies Delete version access granted.\n */\n this.deleteVersion = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Specifies Move access granted.\n */\n this.move = false;\n /**\n * Specifies Execute access granted.\n */\n this.execute = false;\n /**\n * Specifies SetImmutabilityPolicy access granted.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n }\n /**\n * Creates a {@link BlobSASPermissions} 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 static parse(permissions) {\n const blobSASPermissions = new BlobSASPermissions();\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n blobSASPermissions.read = true;\n break;\n case \"a\":\n blobSASPermissions.add = true;\n break;\n case \"c\":\n blobSASPermissions.create = true;\n break;\n case \"w\":\n blobSASPermissions.write = true;\n break;\n case \"d\":\n blobSASPermissions.delete = true;\n break;\n case \"x\":\n blobSASPermissions.deleteVersion = true;\n break;\n case \"t\":\n blobSASPermissions.tag = true;\n break;\n case \"m\":\n blobSASPermissions.move = true;\n break;\n case \"e\":\n blobSASPermissions.execute = true;\n break;\n case \"i\":\n blobSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n blobSASPermissions.permanentDelete = true;\n break;\n default:\n throw new RangeError(`Invalid permission: ${char}`);\n }\n }\n return blobSASPermissions;\n }\n /**\n * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const blobSASPermissions = new BlobSASPermissions();\n if (permissionLike.read) {\n blobSASPermissions.read = true;\n }\n if (permissionLike.add) {\n blobSASPermissions.add = true;\n }\n if (permissionLike.create) {\n blobSASPermissions.create = true;\n }\n if (permissionLike.write) {\n blobSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n blobSASPermissions.delete = true;\n }\n if (permissionLike.deleteVersion) {\n blobSASPermissions.deleteVersion = true;\n }\n if (permissionLike.tag) {\n blobSASPermissions.tag = true;\n }\n if (permissionLike.move) {\n blobSASPermissions.move = true;\n }\n if (permissionLike.execute) {\n blobSASPermissions.execute = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n blobSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n blobSASPermissions.permanentDelete = true;\n }\n return blobSASPermissions;\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 * @returns A string which represents the BlobSASPermissions\n */\n toString() {\n const permissions = [];\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.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=BlobSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.\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 BlobSASSignatureValues} 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 ContainerSASPermissions {\n constructor() {\n /**\n * Specifies Read access granted.\n */\n this.read = false;\n /**\n * Specifies Add access granted.\n */\n this.add = false;\n /**\n * Specifies Create access granted.\n */\n this.create = false;\n /**\n * Specifies Write access granted.\n */\n this.write = false;\n /**\n * Specifies Delete access granted.\n */\n this.delete = false;\n /**\n * Specifies Delete version access granted.\n */\n this.deleteVersion = false;\n /**\n * Specifies List access granted.\n */\n this.list = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Specifies Move access granted.\n */\n this.move = false;\n /**\n * Specifies Execute access granted.\n */\n this.execute = false;\n /**\n * Specifies SetImmutabilityPolicy access granted.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n /**\n * Specifies that Filter Blobs by Tags is permitted.\n */\n this.filterByTags = false;\n }\n /**\n * Creates an {@link ContainerSASPermissions} 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 static parse(permissions) {\n const containerSASPermissions = new ContainerSASPermissions();\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n containerSASPermissions.read = true;\n break;\n case \"a\":\n containerSASPermissions.add = true;\n break;\n case \"c\":\n containerSASPermissions.create = true;\n break;\n case \"w\":\n containerSASPermissions.write = true;\n break;\n case \"d\":\n containerSASPermissions.delete = true;\n break;\n case \"l\":\n containerSASPermissions.list = true;\n break;\n case \"t\":\n containerSASPermissions.tag = true;\n break;\n case \"x\":\n containerSASPermissions.deleteVersion = true;\n break;\n case \"m\":\n containerSASPermissions.move = true;\n break;\n case \"e\":\n containerSASPermissions.execute = true;\n break;\n case \"i\":\n containerSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n containerSASPermissions.permanentDelete = true;\n break;\n case \"f\":\n containerSASPermissions.filterByTags = true;\n break;\n default:\n throw new RangeError(`Invalid permission ${char}`);\n }\n }\n return containerSASPermissions;\n }\n /**\n * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const containerSASPermissions = new ContainerSASPermissions();\n if (permissionLike.read) {\n containerSASPermissions.read = true;\n }\n if (permissionLike.add) {\n containerSASPermissions.add = true;\n }\n if (permissionLike.create) {\n containerSASPermissions.create = true;\n }\n if (permissionLike.write) {\n containerSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n containerSASPermissions.delete = true;\n }\n if (permissionLike.list) {\n containerSASPermissions.list = true;\n }\n if (permissionLike.deleteVersion) {\n containerSASPermissions.deleteVersion = true;\n }\n if (permissionLike.tag) {\n containerSASPermissions.tag = true;\n }\n if (permissionLike.move) {\n containerSASPermissions.move = true;\n }\n if (permissionLike.execute) {\n containerSASPermissions.execute = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n containerSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n containerSASPermissions.permanentDelete = true;\n }\n if (permissionLike.filterByTags) {\n containerSASPermissions.filterByTags = true;\n }\n return containerSASPermissions;\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://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n *\n */\n toString() {\n const permissions = [];\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.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.list) {\n permissions.push(\"l\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n if (this.filterByTags) {\n permissions.push(\"f\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=ContainerSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BlobSASPermissions } from \"./BlobSASPermissions\";\nimport { ContainerSASPermissions } from \"./ContainerSASPermissions\";\nimport { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential\";\nimport { UserDelegationKeyCredential } from \"../credentials/UserDelegationKeyCredential\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\nexport function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {\n return generateBlobSASQueryParametersInternal(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName).sasQueryParameters;\n}\nexport function generateBlobSASQueryParametersInternal(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential;\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);\n }\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\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(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n return generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential);\n }\n }\n // Version 2019-12-12 adds support for the blob tags permission.\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://docs.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(blobSASSignatureValues, 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(blobSASSignatureValues, userDelegationKeyCredential);\n }\n else {\n return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);\n }\n }\n }\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n throw new RangeError(\"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\");\n }\n }\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\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 blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType),\n stringToSign: stringToSign,\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 blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType),\n stringToSign: stringToSign,\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 blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, undefined, undefined, undefined, blobSASSignatureValues.encryptionScope),\n stringToSign: stringToSign,\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 blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\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 blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey),\n stringToSign: stringToSign,\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 blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\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 blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId),\n stringToSign: stringToSign,\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 blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\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 blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId, blobSASSignatureValues.encryptionScope),\n stringToSign: stringToSign,\n };\n}\nfunction getCanonicalName(accountName, containerName, blobName) {\n // Container: \"/blob/account/containerName\"\n // Blob: \"/blob/account/containerName/blobName\"\n const elements = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\nfunction SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n if (blobSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {\n throw RangeError(\"Must provide 'blobName' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.versionId && version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {\n throw RangeError(\"Must provide 'blobName' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\") {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'x' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'y' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when providing 't' permission.\");\n }\n if (version < \"2020-02-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.\");\n }\n if (version < \"2021-04-10\" &&\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.filterByTags) {\n throw RangeError(\"'version' must be >= '2021-04-10' when providing the 'f' permission.\");\n }\n if (version < \"2020-02-10\" &&\n (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.\");\n }\n if (blobSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n blobSASSignatureValues.version = version;\n return blobSASSignatureValues;\n}\n//# sourceMappingURL=BlobSASSignatureValues.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\n/**\n * Protocols for generated SAS.\n */\nexport var SASProtocol;\n(function (SASProtocol) {\n /**\n * Protocol that allows HTTPS only\n */\n SASProtocol[\"Https\"] = \"https\";\n /**\n * Protocol that allows both HTTPS and HTTP\n */\n SASProtocol[\"HttpsAndHttp\"] = \"https,http\";\n})(SASProtocol || (SASProtocol = {}));\n/**\n * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly\n * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}\n * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should\n * be taken here in case there are existing query parameters, which might affect the appropriate means of appending\n * these query parameters).\n *\n * NOTE: Instances of this class are immutable.\n */\nexport class SASQueryParameters {\n /**\n * Optional. IP range allowed for this SAS.\n *\n * @readonly\n */\n get ipRange() {\n if (this.ipRangeInner) {\n return {\n end: this.ipRangeInner.end,\n start: this.ipRangeInner.start,\n };\n }\n return undefined;\n }\n constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId, encryptionScope) {\n this.version = version;\n this.signature = signature;\n if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== \"string\") {\n // SASQueryParametersOptions\n this.permissions = permissionsOrOptions.permissions;\n this.services = permissionsOrOptions.services;\n this.resourceTypes = permissionsOrOptions.resourceTypes;\n this.protocol = permissionsOrOptions.protocol;\n this.startsOn = permissionsOrOptions.startsOn;\n this.expiresOn = permissionsOrOptions.expiresOn;\n this.ipRangeInner = permissionsOrOptions.ipRange;\n this.identifier = permissionsOrOptions.identifier;\n this.encryptionScope = permissionsOrOptions.encryptionScope;\n this.resource = permissionsOrOptions.resource;\n this.cacheControl = permissionsOrOptions.cacheControl;\n this.contentDisposition = permissionsOrOptions.contentDisposition;\n this.contentEncoding = permissionsOrOptions.contentEncoding;\n this.contentLanguage = permissionsOrOptions.contentLanguage;\n this.contentType = permissionsOrOptions.contentType;\n if (permissionsOrOptions.userDelegationKey) {\n this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;\n this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;\n this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;\n this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;\n this.signedService = permissionsOrOptions.userDelegationKey.signedService;\n this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;\n this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;\n this.correlationId = permissionsOrOptions.correlationId;\n }\n }\n else {\n this.services = services;\n this.resourceTypes = resourceTypes;\n this.expiresOn = expiresOn;\n this.permissions = permissionsOrOptions;\n this.protocol = protocol;\n this.startsOn = startsOn;\n this.ipRangeInner = ipRange;\n this.encryptionScope = encryptionScope;\n this.identifier = identifier;\n this.resource = resource;\n this.cacheControl = cacheControl;\n this.contentDisposition = contentDisposition;\n this.contentEncoding = contentEncoding;\n this.contentLanguage = contentLanguage;\n this.contentType = contentType;\n if (userDelegationKey) {\n this.signedOid = userDelegationKey.signedObjectId;\n this.signedTenantId = userDelegationKey.signedTenantId;\n this.signedStartsOn = userDelegationKey.signedStartsOn;\n this.signedExpiresOn = userDelegationKey.signedExpiresOn;\n this.signedService = userDelegationKey.signedService;\n this.signedVersion = userDelegationKey.signedVersion;\n this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;\n this.correlationId = correlationId;\n }\n }\n }\n /**\n * Encodes all SAS query parameters into a string that can be appended to a URL.\n *\n */\n toString() {\n const params = [\n \"sv\",\n \"ss\",\n \"srt\",\n \"spr\",\n \"st\",\n \"se\",\n \"sip\",\n \"si\",\n \"ses\",\n \"skoid\", // Signed object ID\n \"sktid\", // Signed tenant ID\n \"skt\", // Signed key start time\n \"ske\", // Signed key expiry time\n \"sks\", // Signed key service\n \"skv\", // Signed key version\n \"sr\",\n \"sp\",\n \"sig\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"saoid\",\n \"scid\",\n ];\n const queries = [];\n for (const param of params) {\n switch (param) {\n case \"sv\":\n this.tryAppendQueryParameter(queries, param, this.version);\n break;\n case \"ss\":\n this.tryAppendQueryParameter(queries, param, this.services);\n break;\n case \"srt\":\n this.tryAppendQueryParameter(queries, param, this.resourceTypes);\n break;\n case \"spr\":\n this.tryAppendQueryParameter(queries, param, this.protocol);\n break;\n case \"st\":\n this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);\n break;\n case \"se\":\n this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);\n break;\n case \"sip\":\n this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);\n break;\n case \"si\":\n this.tryAppendQueryParameter(queries, param, this.identifier);\n break;\n case \"ses\":\n this.tryAppendQueryParameter(queries, param, this.encryptionScope);\n break;\n case \"skoid\": // Signed object ID\n this.tryAppendQueryParameter(queries, param, this.signedOid);\n break;\n case \"sktid\": // Signed tenant ID\n this.tryAppendQueryParameter(queries, param, this.signedTenantId);\n break;\n case \"skt\": // Signed key start time\n this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);\n break;\n case \"ske\": // Signed key expiry time\n this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);\n break;\n case \"sks\": // Signed key service\n this.tryAppendQueryParameter(queries, param, this.signedService);\n break;\n case \"skv\": // Signed key version\n this.tryAppendQueryParameter(queries, param, this.signedVersion);\n break;\n case \"sr\":\n this.tryAppendQueryParameter(queries, param, this.resource);\n break;\n case \"sp\":\n this.tryAppendQueryParameter(queries, param, this.permissions);\n break;\n case \"sig\":\n this.tryAppendQueryParameter(queries, param, this.signature);\n break;\n case \"rscc\":\n this.tryAppendQueryParameter(queries, param, this.cacheControl);\n break;\n case \"rscd\":\n this.tryAppendQueryParameter(queries, param, this.contentDisposition);\n break;\n case \"rsce\":\n this.tryAppendQueryParameter(queries, param, this.contentEncoding);\n break;\n case \"rscl\":\n this.tryAppendQueryParameter(queries, param, this.contentLanguage);\n break;\n case \"rsct\":\n this.tryAppendQueryParameter(queries, param, this.contentType);\n break;\n case \"saoid\":\n this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);\n break;\n case \"scid\":\n this.tryAppendQueryParameter(queries, param, this.correlationId);\n break;\n }\n }\n return queries.join(\"&\");\n }\n /**\n * A private helper method used to filter and append query key/value pairs into an array.\n *\n * @param queries -\n * @param key -\n * @param value -\n */\n tryAppendQueryParameter(queries, key, value) {\n if (!value) {\n return;\n }\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n if (key.length > 0 && value.length > 0) {\n queries.push(`${key}=${value}`);\n }\n }\n}\n//# sourceMappingURL=SASQueryParameters.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Generate SasIPRange format string. For example:\n *\n * \"8.8.8.8\" or \"1.1.1.1-255.255.255.255\"\n *\n * @param ipRange -\n */\nexport function ipRangeToString(ipRange) {\n return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;\n}\n//# sourceMappingURL=SasIPRange.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// In browser, during webpack or browserify bundling, this module will be replaced by 'events'\n// https://github.com/Gozala/events\nimport { EventEmitter } from \"events\";\n/**\n * States for Batch.\n */\nvar BatchStates;\n(function (BatchStates) {\n BatchStates[BatchStates[\"Good\"] = 0] = \"Good\";\n BatchStates[BatchStates[\"Error\"] = 1] = \"Error\";\n})(BatchStates || (BatchStates = {}));\n/**\n * Batch provides basic parallel execution with concurrency limits.\n * Will stop execute left operations when one of the executed operation throws an error.\n * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.\n */\nexport class Batch {\n /**\n * Creates an instance of Batch.\n * @param concurrency -\n */\n constructor(concurrency = 5) {\n /**\n * Number of active operations under execution.\n */\n this.actives = 0;\n /**\n * Number of completed operations under execution.\n */\n this.completed = 0;\n /**\n * Offset of next operation to be executed.\n */\n this.offset = 0;\n /**\n * Operation array to be executed.\n */\n this.operations = [];\n /**\n * States of Batch. When an error happens, state will turn into error.\n * Batch will stop execute left operations.\n */\n this.state = BatchStates.Good;\n if (concurrency < 1) {\n throw new RangeError(\"concurrency must be larger than 0\");\n }\n this.concurrency = concurrency;\n this.emitter = new EventEmitter();\n }\n /**\n * Add a operation into queue.\n *\n * @param operation -\n */\n addOperation(operation) {\n this.operations.push(async () => {\n try {\n this.actives++;\n await operation();\n this.actives--;\n this.completed++;\n this.parallelExecute();\n }\n catch (error) {\n this.emitter.emit(\"error\", error);\n }\n });\n }\n /**\n * Start execute operations in the queue.\n *\n */\n async do() {\n if (this.operations.length === 0) {\n return Promise.resolve();\n }\n this.parallelExecute();\n return new Promise((resolve, reject) => {\n this.emitter.on(\"finish\", resolve);\n this.emitter.on(\"error\", (error) => {\n this.state = BatchStates.Error;\n reject(error);\n });\n });\n }\n /**\n * Get next operation to be executed. Return null when reaching ends.\n *\n */\n nextOperation() {\n if (this.offset < this.operations.length) {\n return this.operations[this.offset++];\n }\n return null;\n }\n /**\n * Start execute operations. One one the most important difference between\n * this method with do() is that do() wraps as an sync method.\n *\n */\n parallelExecute() {\n if (this.state === BatchStates.Error) {\n return;\n }\n if (this.completed >= this.operations.length) {\n this.emitter.emit(\"finish\");\n return;\n }\n while (this.actives < this.concurrency) {\n const operation = this.nextOperation();\n if (operation) {\n operation();\n }\n else {\n return;\n }\n }\n }\n}\n//# sourceMappingURL=Batch.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar MutexLockStatus;\n(function (MutexLockStatus) {\n MutexLockStatus[MutexLockStatus[\"LOCKED\"] = 0] = \"LOCKED\";\n MutexLockStatus[MutexLockStatus[\"UNLOCKED\"] = 1] = \"UNLOCKED\";\n})(MutexLockStatus || (MutexLockStatus = {}));\n/**\n * An async mutex lock.\n */\nexport class Mutex {\n /**\n * Lock for a specific key. If the lock has been acquired by another customer, then\n * will wait until getting the lock.\n *\n * @param key - lock key\n */\n static async lock(key) {\n return new Promise((resolve) => {\n if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {\n this.keys[key] = MutexLockStatus.LOCKED;\n resolve();\n }\n else {\n this.onUnlockEvent(key, () => {\n this.keys[key] = MutexLockStatus.LOCKED;\n resolve();\n });\n }\n });\n }\n /**\n * Unlock a key.\n *\n * @param key -\n */\n static async unlock(key) {\n return new Promise((resolve) => {\n if (this.keys[key] === MutexLockStatus.LOCKED) {\n this.emitUnlockEvent(key);\n }\n delete this.keys[key];\n resolve();\n });\n }\n static onUnlockEvent(key, handler) {\n if (this.listeners[key] === undefined) {\n this.listeners[key] = [handler];\n }\n else {\n this.listeners[key].push(handler);\n }\n }\n static emitUnlockEvent(key) {\n if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {\n const handler = this.listeners[key].shift();\n setImmediate(() => {\n handler.call(this);\n });\n }\n }\n}\nMutex.keys = {};\nMutex.listeners = {};\n//# sourceMappingURL=Mutex.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\nlet _defaultHttpClient;\nexport function getCachedDefaultHttpClient() {\n if (!_defaultHttpClient) {\n _defaultHttpClient = createDefaultHttpClient();\n }\n return _defaultHttpClient;\n}\n//# sourceMappingURL=cache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport const SDK_VERSION = \"12.26.0\";\nexport const SERVICE_VERSION = \"2025-01-05\";\nexport const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB\nexport const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB\nexport const BLOCK_BLOB_MAX_BLOCKS = 50000;\nexport const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB\nexport const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB\nexport const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;\nexport const REQUEST_TIMEOUT = 100 * 1000; // In ms\n/**\n * The OAuth scope to use with Azure Storage.\n */\nexport const StorageOAuthScopes = \"https://storage.azure.com/.default\";\nexport const URLConstants = {\n Parameters: {\n FORCE_BROWSER_NO_CACHE: \"_\",\n SIGNATURE: \"sig\",\n SNAPSHOT: \"snapshot\",\n VERSIONID: \"versionid\",\n TIMEOUT: \"timeout\",\n },\n};\nexport const HTTPURLConnection = {\n HTTP_ACCEPTED: 202,\n HTTP_CONFLICT: 409,\n HTTP_NOT_FOUND: 404,\n HTTP_PRECON_FAILED: 412,\n HTTP_RANGE_NOT_SATISFIABLE: 416,\n};\nexport const HeaderConstants = {\n AUTHORIZATION: \"Authorization\",\n AUTHORIZATION_SCHEME: \"Bearer\",\n CONTENT_ENCODING: \"Content-Encoding\",\n CONTENT_ID: \"Content-ID\",\n CONTENT_LANGUAGE: \"Content-Language\",\n CONTENT_LENGTH: \"Content-Length\",\n CONTENT_MD5: \"Content-Md5\",\n CONTENT_TRANSFER_ENCODING: \"Content-Transfer-Encoding\",\n CONTENT_TYPE: \"Content-Type\",\n COOKIE: \"Cookie\",\n DATE: \"date\",\n IF_MATCH: \"if-match\",\n IF_MODIFIED_SINCE: \"if-modified-since\",\n IF_NONE_MATCH: \"if-none-match\",\n IF_UNMODIFIED_SINCE: \"if-unmodified-since\",\n PREFIX_FOR_STORAGE: \"x-ms-\",\n RANGE: \"Range\",\n USER_AGENT: \"User-Agent\",\n X_MS_CLIENT_REQUEST_ID: \"x-ms-client-request-id\",\n X_MS_COPY_SOURCE: \"x-ms-copy-source\",\n X_MS_DATE: \"x-ms-date\",\n X_MS_ERROR_CODE: \"x-ms-error-code\",\n X_MS_VERSION: \"x-ms-version\",\n X_MS_CopySourceErrorCode: \"x-ms-copy-source-error-code\",\n};\nexport const ETagNone = \"\";\nexport const ETagAny = \"*\";\nexport const SIZE_1_MB = 1 * 1024 * 1024;\nexport const BATCH_MAX_REQUEST = 256;\nexport const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;\nexport const HTTP_LINE_ENDING = \"\\r\\n\";\nexport const HTTP_VERSION_1_1 = \"HTTP/1.1\";\nexport const EncryptionAlgorithmAES25 = \"AES256\";\nexport const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;\nexport const StorageBlobLoggingAllowedHeaderNames = [\n \"Access-Control-Allow-Origin\",\n \"Cache-Control\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"Request-Id\",\n \"traceparent\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"x-ms-client-request-id\",\n \"x-ms-date\",\n \"x-ms-error-code\",\n \"x-ms-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-version\",\n \"Accept-Ranges\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-MD5\",\n \"Content-Range\",\n \"ETag\",\n \"Last-Modified\",\n \"Server\",\n \"Vary\",\n \"x-ms-content-crc64\",\n \"x-ms-copy-action\",\n \"x-ms-copy-completion-time\",\n \"x-ms-copy-id\",\n \"x-ms-copy-progress\",\n \"x-ms-copy-status\",\n \"x-ms-has-immutability-policy\",\n \"x-ms-has-legal-hold\",\n \"x-ms-lease-state\",\n \"x-ms-lease-status\",\n \"x-ms-range\",\n \"x-ms-request-server-encrypted\",\n \"x-ms-server-encrypted\",\n \"x-ms-snapshot\",\n \"x-ms-source-range\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"x-ms-access-tier\",\n \"x-ms-access-tier-change-time\",\n \"x-ms-access-tier-inferred\",\n \"x-ms-account-kind\",\n \"x-ms-archive-status\",\n \"x-ms-blob-append-offset\",\n \"x-ms-blob-cache-control\",\n \"x-ms-blob-committed-block-count\",\n \"x-ms-blob-condition-appendpos\",\n \"x-ms-blob-condition-maxsize\",\n \"x-ms-blob-content-disposition\",\n \"x-ms-blob-content-encoding\",\n \"x-ms-blob-content-language\",\n \"x-ms-blob-content-length\",\n \"x-ms-blob-content-md5\",\n \"x-ms-blob-content-type\",\n \"x-ms-blob-public-access\",\n \"x-ms-blob-sequence-number\",\n \"x-ms-blob-type\",\n \"x-ms-copy-destination-snapshot\",\n \"x-ms-creation-time\",\n \"x-ms-default-encryption-scope\",\n \"x-ms-delete-snapshots\",\n \"x-ms-delete-type-permanent\",\n \"x-ms-deny-encryption-scope-override\",\n \"x-ms-encryption-algorithm\",\n \"x-ms-if-sequence-number-eq\",\n \"x-ms-if-sequence-number-le\",\n \"x-ms-if-sequence-number-lt\",\n \"x-ms-incremental-copy\",\n \"x-ms-lease-action\",\n \"x-ms-lease-break-period\",\n \"x-ms-lease-duration\",\n \"x-ms-lease-id\",\n \"x-ms-lease-time\",\n \"x-ms-page-write\",\n \"x-ms-proposed-lease-id\",\n \"x-ms-range-get-content-md5\",\n \"x-ms-rehydrate-priority\",\n \"x-ms-sequence-number-action\",\n \"x-ms-sku-name\",\n \"x-ms-source-content-md5\",\n \"x-ms-source-if-match\",\n \"x-ms-source-if-modified-since\",\n \"x-ms-source-if-none-match\",\n \"x-ms-source-if-unmodified-since\",\n \"x-ms-tag-count\",\n \"x-ms-encryption-key-sha256\",\n \"x-ms-copy-source-error-code\",\n \"x-ms-copy-source-status-code\",\n \"x-ms-if-tags\",\n \"x-ms-source-if-tags\",\n];\nexport const StorageBlobLoggingAllowedQueryParameters = [\n \"comp\",\n \"maxresults\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"se\",\n \"si\",\n \"sip\",\n \"sp\",\n \"spr\",\n \"sr\",\n \"srt\",\n \"ss\",\n \"st\",\n \"sv\",\n \"include\",\n \"marker\",\n \"prefix\",\n \"copyid\",\n \"restype\",\n \"blockid\",\n \"blocklisttype\",\n \"delimiter\",\n \"prevsnapshot\",\n \"ske\",\n \"skoid\",\n \"sks\",\n \"skt\",\n \"sktid\",\n \"skv\",\n \"snapshot\",\n];\nexport const BlobUsesCustomerSpecifiedEncryptionMsg = \"BlobUsesCustomerSpecifiedEncryption\";\nexport const BlobDoesNotUseCustomerSpecifiedEncryption = \"BlobDoesNotUseCustomerSpecifiedEncryption\";\n/// List of ports used for path style addressing.\n/// Path style addressing means that storage account is put in URI's Path segment in instead of in host.\nexport const PathStylePorts = [\n \"10000\",\n \"10001\",\n \"10002\",\n \"10003\",\n \"10004\",\n \"10100\",\n \"10101\",\n \"10102\",\n \"10103\",\n \"10104\",\n \"11000\",\n \"11001\",\n \"11002\",\n \"11003\",\n \"11004\",\n \"11100\",\n \"11101\",\n \"11102\",\n \"11103\",\n \"11104\",\n];\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants\";\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n packageName: \"@azure/storage-blob\",\n packageVersion: SDK_VERSION,\n namespace: \"Microsoft.Storage\",\n});\n//# sourceMappingURL=tracing.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Convert a Browser Blob object into ArrayBuffer.\n *\n * @param blob -\n */\nexport async function blobToArrayBuffer(blob) {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onloadend = (ev) => {\n resolve(ev.target.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsArrayBuffer(blob);\n });\n}\n/**\n * Convert a Browser Blob object into string.\n *\n * @param blob -\n */\nexport async function blobToString(blob) {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onloadend = (ev) => {\n resolve(ev.target.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsText(blob);\n });\n}\nexport function streamToBuffer() {\n /* empty */\n}\nexport function streamToBuffer2() {\n /* empty */\n}\nexport function readStreamToLocalFile() {\n /* empty */\n}\nexport const fsStat = function stat() {\n /* empty */\n};\nexport const fsCreateReadStream = function createReadStream() {\n /* empty */\n};\n//# sourceMappingURL=utils.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { DevelopmentConnectionString, HeaderConstants, PathStylePorts, URLConstants, } from \"./constants\";\n/**\n * Reserved URL characters must be properly escaped for Storage services like Blob or File.\n *\n * ## URL encode and escape strategy for JS SDKs\n *\n * When customers pass a URL string into XxxClient classes constructor, the URL string may already be URL encoded or not.\n * But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL\n * string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.\n *\n * ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.\n *\n * This is what legacy V2 SDK does, simple and works for most of the cases.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%253A\" and send to server. A blob named \"b%3A\" will be created.\n *\n * But this strategy will make it not possible to create a blob with \"?\" in it's name. Because when customer URL string is\n * \"http://account.blob.core.windows.net/con/blob?name\", the \"?name\" will be treated as URL paramter instead of blob name.\n * If customer URL string is \"http://account.blob.core.windows.net/con/blob%3Fname\", a blob named \"blob%3Fname\" will be created.\n * V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.\n * We cannot accept a SDK cannot create a blob name with \"?\". So we implement strategy two:\n *\n * ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.\n *\n * This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will escape \":\" like \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%3A\" to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%253A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%253A\" to server. A blob named \"b%3A\" will be created.\n *\n * This strategy gives us flexibility to create with any special characters. But \"%\" will be treated as a special characters, if the URL string\n * is not encoded, there shouldn't a \"%\" in the URL string, otherwise the URL is not a valid URL.\n * If customer needs to create a blob with \"%\" in it's blob name, use \"%25\" instead of \"%\". Just like above 3rd sample.\n * And following URL strings are invalid:\n * - \"http://account.blob.core.windows.net/con/b%\"\n * - \"http://account.blob.core.windows.net/con/b%2\"\n * - \"http://account.blob.core.windows.net/con/b%G\"\n *\n * Another special character is \"?\", use \"%2F\" to represent a blob name with \"?\" in a URL string.\n *\n * ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`\n *\n * We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata\n *\n * @param url -\n */\nexport function escapeURLPath(url) {\n const urlParsed = new URL(url);\n let path = urlParsed.pathname;\n path = path || \"/\";\n path = escape(path);\n urlParsed.pathname = path;\n return urlParsed.toString();\n}\nfunction getProxyUriFromDevConnString(connectionString) {\n // Development Connection String\n // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key\n let proxyUri = \"\";\n if (connectionString.search(\"DevelopmentStorageProxyUri=\") !== -1) {\n // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri\n const matchCredentials = connectionString.split(\";\");\n for (const element of matchCredentials) {\n if (element.trim().startsWith(\"DevelopmentStorageProxyUri=\")) {\n proxyUri = element.trim().match(\"DevelopmentStorageProxyUri=(.*)\")[1];\n }\n }\n }\n return proxyUri;\n}\nexport function getValueInConnString(connectionString, argument) {\n const elements = connectionString.split(\";\");\n for (const element of elements) {\n if (element.trim().startsWith(argument)) {\n return element.trim().match(argument + \"=(.*)\")[1];\n }\n }\n return \"\";\n}\n/**\n * Extracts the parts of an Azure Storage account connection string.\n *\n * @param connectionString - Connection string.\n * @returns String key value pairs of the storage account's url and credentials.\n */\nexport function extractConnectionStringParts(connectionString) {\n let proxyUri = \"\";\n if (connectionString.startsWith(\"UseDevelopmentStorage=true\")) {\n // Development connection string\n proxyUri = getProxyUriFromDevConnString(connectionString);\n connectionString = DevelopmentConnectionString;\n }\n // Matching BlobEndpoint in the Account connection string\n let blobEndpoint = getValueInConnString(connectionString, \"BlobEndpoint\");\n // Slicing off '/' at the end if exists\n // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)\n blobEndpoint = blobEndpoint.endsWith(\"/\") ? blobEndpoint.slice(0, -1) : blobEndpoint;\n if (connectionString.search(\"DefaultEndpointsProtocol=\") !== -1 &&\n connectionString.search(\"AccountKey=\") !== -1) {\n // Account connection string\n let defaultEndpointsProtocol = \"\";\n let accountName = \"\";\n let accountKey = Buffer.from(\"accountKey\", \"base64\");\n let endpointSuffix = \"\";\n // Get account name and key\n accountName = getValueInConnString(connectionString, \"AccountName\");\n accountKey = Buffer.from(getValueInConnString(connectionString, \"AccountKey\"), \"base64\");\n if (!blobEndpoint) {\n // BlobEndpoint is not present in the Account connection string\n // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`\n defaultEndpointsProtocol = getValueInConnString(connectionString, \"DefaultEndpointsProtocol\");\n const protocol = defaultEndpointsProtocol.toLowerCase();\n if (protocol !== \"https\" && protocol !== \"http\") {\n throw new Error(\"Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'\");\n }\n endpointSuffix = getValueInConnString(connectionString, \"EndpointSuffix\");\n if (!endpointSuffix) {\n throw new Error(\"Invalid EndpointSuffix in the provided Connection String\");\n }\n blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n }\n if (!accountName) {\n throw new Error(\"Invalid AccountName in the provided Connection String\");\n }\n else if (accountKey.length === 0) {\n throw new Error(\"Invalid AccountKey in the provided Connection String\");\n }\n return {\n kind: \"AccountConnString\",\n url: blobEndpoint,\n accountName,\n accountKey,\n proxyUri,\n };\n }\n else {\n // SAS connection string\n let accountSas = getValueInConnString(connectionString, \"SharedAccessSignature\");\n let accountName = getValueInConnString(connectionString, \"AccountName\");\n // if accountName is empty, try to read it from BlobEndpoint\n if (!accountName) {\n accountName = getAccountNameFromUrl(blobEndpoint);\n }\n if (!blobEndpoint) {\n throw new Error(\"Invalid BlobEndpoint in the provided SAS Connection String\");\n }\n else if (!accountSas) {\n throw new Error(\"Invalid SharedAccessSignature in the provided SAS Connection String\");\n }\n // client constructors assume accountSas does *not* start with ?\n if (accountSas.startsWith(\"?\")) {\n accountSas = accountSas.substring(1);\n }\n return { kind: \"SASConnString\", url: blobEndpoint, accountName, accountSas };\n }\n}\n/**\n * Internal escape method implemented Strategy Two mentioned in escapeURL() description.\n *\n * @param text -\n */\nfunction escape(text) {\n return encodeURIComponent(text)\n .replace(/%2F/g, \"/\") // Don't escape for \"/\"\n .replace(/'/g, \"%27\") // Escape for \"'\"\n .replace(/\\+/g, \"%20\")\n .replace(/%25/g, \"%\"); // Revert encoded \"%\"\n}\n/**\n * Append a string to URL path. Will remove duplicated \"/\" in front of the string\n * when URL path ends with a \"/\".\n *\n * @param url - Source URL string\n * @param name - String to be appended to URL\n * @returns An updated URL string\n */\nexport function appendToURLPath(url, name) {\n const urlParsed = new URL(url);\n let path = urlParsed.pathname;\n path = path ? (path.endsWith(\"/\") ? `${path}${name}` : `${path}/${name}`) : name;\n urlParsed.pathname = path;\n return urlParsed.toString();\n}\n/**\n * Set URL parameter name and value. If name exists in URL parameters, old value\n * will be replaced by name key. If not provide value, the parameter will be deleted.\n *\n * @param url - Source URL string\n * @param name - Parameter name\n * @param value - Parameter value\n * @returns An updated URL string\n */\nexport function setURLParameter(url, name, value) {\n const urlParsed = new URL(url);\n const encodedName = encodeURIComponent(name);\n const encodedValue = value ? encodeURIComponent(value) : undefined;\n // mutating searchParams will change the encoding, so we have to do this ourselves\n const searchString = urlParsed.search === \"\" ? \"?\" : urlParsed.search;\n const searchPieces = [];\n for (const pair of searchString.slice(1).split(\"&\")) {\n if (pair) {\n const [key] = pair.split(\"=\", 2);\n if (key !== encodedName) {\n searchPieces.push(pair);\n }\n }\n }\n if (encodedValue) {\n searchPieces.push(`${encodedName}=${encodedValue}`);\n }\n urlParsed.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return urlParsed.toString();\n}\n/**\n * Get URL parameter by name.\n *\n * @param url -\n * @param name -\n */\nexport function getURLParameter(url, name) {\n var _a;\n const urlParsed = new URL(url);\n return (_a = urlParsed.searchParams.get(name)) !== null && _a !== void 0 ? _a : undefined;\n}\n/**\n * Set URL host.\n *\n * @param url - Source URL string\n * @param host - New host string\n * @returns An updated URL string\n */\nexport function setURLHost(url, host) {\n const urlParsed = new URL(url);\n urlParsed.hostname = host;\n return urlParsed.toString();\n}\n/**\n * Get URL path from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPath(url) {\n try {\n const urlParsed = new URL(url);\n return urlParsed.pathname;\n }\n catch (e) {\n return undefined;\n }\n}\n/**\n * Get URL scheme from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLScheme(url) {\n try {\n const urlParsed = new URL(url);\n return urlParsed.protocol.endsWith(\":\") ? urlParsed.protocol.slice(0, -1) : urlParsed.protocol;\n }\n catch (e) {\n return undefined;\n }\n}\n/**\n * Get URL path and query from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPathAndQuery(url) {\n const urlParsed = new URL(url);\n const pathString = urlParsed.pathname;\n if (!pathString) {\n throw new RangeError(\"Invalid url without valid path.\");\n }\n let queryString = urlParsed.search || \"\";\n queryString = queryString.trim();\n if (queryString !== \"\") {\n queryString = queryString.startsWith(\"?\") ? queryString : `?${queryString}`; // Ensure query string start with '?'\n }\n return `${pathString}${queryString}`;\n}\n/**\n * Get URL query key value pairs from an URL string.\n *\n * @param url -\n */\nexport function getURLQueries(url) {\n let queryString = new URL(url).search;\n if (!queryString) {\n return {};\n }\n queryString = queryString.trim();\n queryString = queryString.startsWith(\"?\") ? queryString.substring(1) : queryString;\n let querySubStrings = queryString.split(\"&\");\n querySubStrings = querySubStrings.filter((value) => {\n const indexOfEqual = value.indexOf(\"=\");\n const lastIndexOfEqual = value.lastIndexOf(\"=\");\n return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);\n });\n const queries = {};\n for (const querySubString of querySubStrings) {\n const splitResults = querySubString.split(\"=\");\n const key = splitResults[0];\n const value = splitResults[1];\n queries[key] = value;\n }\n return queries;\n}\n/**\n * Append a string to URL query.\n *\n * @param url - Source URL string.\n * @param queryParts - String to be appended to the URL query.\n * @returns An updated URL string.\n */\nexport function appendToURLQuery(url, queryParts) {\n const urlParsed = new URL(url);\n let query = urlParsed.search;\n if (query) {\n query += \"&\" + queryParts;\n }\n else {\n query = queryParts;\n }\n urlParsed.search = query;\n return urlParsed.toString();\n}\n/**\n * Rounds a date off to seconds.\n *\n * @param date -\n * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;\n * If false, YYYY-MM-DDThh:mm:ssZ will be returned.\n * @returns Date string in ISO8061 format, with or without 7 milliseconds component\n */\nexport function truncatedISO8061Date(date, withMilliseconds = true) {\n // Date.toISOString() will return like \"2018-10-29T06:34:36.139Z\"\n const dateString = date.toISOString();\n return withMilliseconds\n ? dateString.substring(0, dateString.length - 1) + \"0000\" + \"Z\"\n : dateString.substring(0, dateString.length - 5) + \"Z\";\n}\n/**\n * Base64 encode.\n *\n * @param content -\n */\nexport function base64encode(content) {\n return !isNode ? btoa(content) : Buffer.from(content).toString(\"base64\");\n}\n/**\n * Base64 decode.\n *\n * @param encodedString -\n */\nexport function base64decode(encodedString) {\n return !isNode ? atob(encodedString) : Buffer.from(encodedString, \"base64\").toString();\n}\n/**\n * Generate a 64 bytes base64 block ID string.\n *\n * @param blockIndex -\n */\nexport function generateBlockID(blockIDPrefix, blockIndex) {\n // To generate a 64 bytes base64 string, source string should be 48\n const maxSourceStringLength = 48;\n // A blob can have a maximum of 100,000 uncommitted blocks at any given time\n const maxBlockIndexLength = 6;\n const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;\n if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {\n blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);\n }\n const res = blockIDPrefix +\n padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, \"0\");\n return base64encode(res);\n}\n/**\n * Delay specified time interval.\n *\n * @param timeInMs -\n * @param aborter -\n * @param abortError -\n */\nexport async function delay(timeInMs, aborter, abortError) {\n return new Promise((resolve, reject) => {\n /* eslint-disable-next-line prefer-const */\n let timeout;\n const abortHandler = () => {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n reject(abortError);\n };\n const resolveHandler = () => {\n if (aborter !== undefined) {\n aborter.removeEventListener(\"abort\", abortHandler);\n }\n resolve();\n };\n timeout = setTimeout(resolveHandler, timeInMs);\n if (aborter !== undefined) {\n aborter.addEventListener(\"abort\", abortHandler);\n }\n });\n}\n/**\n * String.prototype.padStart()\n *\n * @param currentString -\n * @param targetLength -\n * @param padString -\n */\nexport function padStart(currentString, targetLength, padString = \" \") {\n // @ts-expect-error: TS doesn't know this code needs to run downlevel sometimes\n if (String.prototype.padStart) {\n return currentString.padStart(targetLength, padString);\n }\n padString = padString || \" \";\n if (currentString.length > targetLength) {\n return currentString;\n }\n else {\n targetLength = targetLength - currentString.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + currentString;\n }\n}\nexport function sanitizeURL(url) {\n let safeURL = url;\n if (getURLParameter(safeURL, URLConstants.Parameters.SIGNATURE)) {\n safeURL = setURLParameter(safeURL, URLConstants.Parameters.SIGNATURE, \"*****\");\n }\n return safeURL;\n}\nexport function sanitizeHeaders(originalHeader) {\n const headers = createHttpHeaders();\n for (const [name, value] of originalHeader) {\n if (name.toLowerCase() === HeaderConstants.AUTHORIZATION.toLowerCase()) {\n headers.set(name, \"*****\");\n }\n else if (name.toLowerCase() === HeaderConstants.X_MS_COPY_SOURCE) {\n headers.set(name, sanitizeURL(value));\n }\n else {\n headers.set(name, value);\n }\n }\n return headers;\n}\n/**\n * If two strings are equal when compared case insensitive.\n *\n * @param str1 -\n * @param str2 -\n */\nexport function iEqual(str1, str2) {\n return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();\n}\n/**\n * Extracts account name from the url\n * @param url - url to extract the account name from\n * @returns with the account name\n */\nexport function getAccountNameFromUrl(url) {\n const parsedUrl = new URL(url);\n let accountName;\n try {\n if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n accountName = parsedUrl.hostname.split(\".\")[0];\n }\n else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/\n // .getPath() -> /devstoreaccount1/\n accountName = parsedUrl.pathname.split(\"/\")[1];\n }\n else {\n // Custom domain case: \"https://customdomain.com/containername/blob\".\n accountName = \"\";\n }\n return accountName;\n }\n catch (error) {\n throw new Error(\"Unable to extract accountName with provided information.\");\n }\n}\nexport function isIpEndpointStyle(parsedUrl) {\n const host = parsedUrl.host;\n // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.\n // Case 2: localhost(:port) or host.docker.internal, use broad regex to match port part.\n // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.\n // For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.\n return (/^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(:[0-9]+)?$/.test(host) ||\n (Boolean(parsedUrl.port) && PathStylePorts.includes(parsedUrl.port)));\n}\n/**\n * Convert Tags to encoded string.\n *\n * @param tags -\n */\nexport function toBlobTagsString(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const tagPairs = [];\n for (const key in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, key)) {\n const value = tags[key];\n tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n }\n }\n return tagPairs.join(\"&\");\n}\n/**\n * Convert Tags type to BlobTags.\n *\n * @param tags -\n */\nexport function toBlobTags(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const res = {\n blobTagSet: [],\n };\n for (const key in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, key)) {\n const value = tags[key];\n res.blobTagSet.push({\n key,\n value,\n });\n }\n }\n return res;\n}\n/**\n * Covert BlobTags to Tags type.\n *\n * @param tags -\n */\nexport function toTags(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const res = {};\n for (const blobTag of tags.blobTagSet) {\n res[blobTag.key] = blobTag.value;\n }\n return res;\n}\n/**\n * Convert BlobQueryTextConfiguration to QuerySerialization type.\n *\n * @param textConfiguration -\n */\nexport function toQuerySerialization(textConfiguration) {\n if (textConfiguration === undefined) {\n return undefined;\n }\n switch (textConfiguration.kind) {\n case \"csv\":\n return {\n format: {\n type: \"delimited\",\n delimitedTextConfiguration: {\n columnSeparator: textConfiguration.columnSeparator || \",\",\n fieldQuote: textConfiguration.fieldQuote || \"\",\n recordSeparator: textConfiguration.recordSeparator,\n escapeChar: textConfiguration.escapeCharacter || \"\",\n headersPresent: textConfiguration.hasHeaders || false,\n },\n },\n };\n case \"json\":\n return {\n format: {\n type: \"json\",\n jsonTextConfiguration: {\n recordSeparator: textConfiguration.recordSeparator,\n },\n },\n };\n case \"arrow\":\n return {\n format: {\n type: \"arrow\",\n arrowConfiguration: {\n schema: textConfiguration.schema,\n },\n },\n };\n case \"parquet\":\n return {\n format: {\n type: \"parquet\",\n },\n };\n default:\n throw Error(\"Invalid BlobQueryTextConfiguration.\");\n }\n}\nexport function parseObjectReplicationRecord(objectReplicationRecord) {\n if (!objectReplicationRecord) {\n return undefined;\n }\n if (\"policy-id\" in objectReplicationRecord) {\n // If the dictionary contains a key with policy id, we are not required to do any parsing since\n // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.\n return undefined;\n }\n const orProperties = [];\n for (const key in objectReplicationRecord) {\n const ids = key.split(\"_\");\n const policyPrefix = \"or-\";\n if (ids[0].startsWith(policyPrefix)) {\n ids[0] = ids[0].substring(policyPrefix.length);\n }\n const rule = {\n ruleId: ids[1],\n replicationStatus: objectReplicationRecord[key],\n };\n const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);\n if (policyIndex > -1) {\n orProperties[policyIndex].rules.push(rule);\n }\n else {\n orProperties.push({\n policyId: ids[0],\n rules: [rule],\n });\n }\n }\n return orProperties;\n}\n/**\n * Attach a TokenCredential to an object.\n *\n * @param thing -\n * @param credential -\n */\nexport function attachCredential(thing, credential) {\n thing.credential = credential;\n return thing;\n}\nexport function httpAuthorizationToString(httpAuthorization) {\n return httpAuthorization ? httpAuthorization.scheme + \" \" + httpAuthorization.value : undefined;\n}\nexport function BlobNameToString(name) {\n if (name.encoded) {\n return decodeURIComponent(name.content);\n }\n else {\n return name.content;\n }\n}\nexport function ConvertInternalResponseOfListBlobFlat(internalResponse) {\n return Object.assign(Object.assign({}, internalResponse), { segment: {\n blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n return blobItem;\n }),\n } });\n}\nexport function ConvertInternalResponseOfListBlobHierarchy(internalResponse) {\n var _a;\n return Object.assign(Object.assign({}, internalResponse), { segment: {\n blobPrefixes: (_a = internalResponse.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {\n const blobPrefix = Object.assign(Object.assign({}, blobPrefixInternal), { name: BlobNameToString(blobPrefixInternal.name) });\n return blobPrefix;\n }),\n blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n return blobItem;\n }),\n } });\n}\nexport function* ExtractPageRangeInfoItems(getPageRangesSegment) {\n let pageRange = [];\n let clearRange = [];\n if (getPageRangesSegment.pageRange)\n pageRange = getPageRangesSegment.pageRange;\n if (getPageRangesSegment.clearRange)\n clearRange = getPageRangesSegment.clearRange;\n let pageRangeIndex = 0;\n let clearRangeIndex = 0;\n while (pageRangeIndex < pageRange.length && clearRangeIndex < clearRange.length) {\n if (pageRange[pageRangeIndex].start < clearRange[clearRangeIndex].start) {\n yield {\n start: pageRange[pageRangeIndex].start,\n end: pageRange[pageRangeIndex].end,\n isClear: false,\n };\n ++pageRangeIndex;\n }\n else {\n yield {\n start: clearRange[clearRangeIndex].start,\n end: clearRange[clearRangeIndex].end,\n isClear: true,\n };\n ++clearRangeIndex;\n }\n }\n for (; pageRangeIndex < pageRange.length; ++pageRangeIndex) {\n yield {\n start: pageRange[pageRangeIndex].start,\n end: pageRange[pageRangeIndex].end,\n isClear: false,\n };\n }\n for (; clearRangeIndex < clearRange.length; ++clearRangeIndex) {\n yield {\n start: clearRange[clearRangeIndex].start,\n end: clearRange[clearRangeIndex].end,\n isClear: true,\n };\n }\n}\n/**\n * Escape the blobName but keep path separator ('/').\n */\nexport function EscapePath(blobName) {\n const split = blobName.split(\"/\");\n for (let i = 0; i < split.length; i++) {\n split[i] = encodeURIComponent(split[i]);\n }\n return split.join(\"/\");\n}\n/**\n * A typesafe helper for ensuring that a given response object has\n * the original _response attached.\n * @param response - A response object from calling a client operation\n * @returns The same object, but with known _response property\n */\nexport function assertResponse(response) {\n if (`_response` in response) {\n return response;\n }\n throw new TypeError(`Unexpected response object ${response}`);\n}\n//# sourceMappingURL=utils.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// This file is used as a shim of \"BufferScheduler\" for some browser bundlers\n// when trying to bundle \"BufferScheduler\"\n// \"BufferScheduler\" class is only available in Node.js runtime\nexport class BufferScheduler {\n}\n//# sourceMappingURL=BufferScheduler.browser.js.map"],"names":["logger","BlockBlobTier","PremiumPageBlobTier","StorageBlobAudience","toAccessTier","tier","undefined","ensureCpkIfSpecified","cpk","isHttps","RangeError","encryptionAlgorithm","AnonymousCredentialPolicy","constructor","nextPolicy","options","super","CredentialPolicy","sendRequest","request","this","_nextPolicy","signRequest","BaseRequestPolicy","_options","shouldLog","logLevel","log","message","StorageBrowserPolicy","method","toUpperCase","url","Parameters","FORCE_BROWSER_NO_CACHE","Date","getTime","toString","headers","remove","COOKIE","CONTENT_LENGTH","storageBrowserPolicyName","storageBrowserPolicy","name","async","next","delete","storageCorrectContentLengthPolicyName","storageCorrectContentLengthPolicy","StorageRetryPolicyType","DEFAULT_RETRY_OPTIONS","maxRetryDelayInMs","maxTries","retryDelayInMs","retryPolicyType","EXPONENTIAL","secondaryHost","tryTimeoutInMs","RETRY_ABORT_ERROR","StorageRetryPolicy","retryOptions","Math","floor","min","attemptSendRequest","secondaryHas404","attempt","newRequest","clone","isPrimaryRetry","response","TIMEOUT","info","shouldRetry","status","err","error","code","delay","abortSignal","retriableErrors","retriableError","includes","statusCode","startsWith","delayTimeInMs","pow","FIXED","random","storageRetryPolicyName","storageRetryPolicy","_a","_b","_c","_d","_e","_f","calculateDelay","String","primaryUrl","secondaryUrl","retryAgain","e","storageSharedKeyCredentialPolicyName","storageSharedKeyCredentialPolicy","BlobBeginCopyFromUrlPoller","blobClient","copySource","intervalInMs","onProgress","resumeFrom","startCopyFromURLOptions","state","JSON","parse","makeBlobBeginCopyFromURLPollOperation","Object","assign","cancel","copyId","isCompleted","abortCopyFromURL","isCancelled","update","isStarted","result","getProperties","copyStatus","copyProgress","prevCopyProgress","fireProgress","Error","copyStatusDescription","startCopyFromURL","stringify","key","value","AccountSASPermissions","read","write","deleteVersion","list","add","create","process","tag","filter","setImmutabilityPolicy","permanentDelete","permissions","accountSASPermissions","c","from","permissionLike","push","join","AccountSASServices","blob","file","queue","table","services","accountSASServices","AccountSASResourceTypes","service","container","object","resourceTypes","accountSASResourceTypes","generateAccountSASQueryParameters","accountSASSignatureValues","sharedKeyCredential","generateAccountSASQueryParametersInternal","sasQueryParameters","version","encryptionScope","parsedPermissions","parsedServices","parsedResourceTypes","stringToSign","accountName","startsOn","expiresOn","ipRange","protocol","signature","computeHMACSHA256","SASQueryParameters","BlobSASPermissions","move","execute","blobSASPermissions","char","ContainerSASPermissions","filterByTags","containerSASPermissions","generateBlobSASQueryParameters","blobSASSignatureValues","sharedKeyCredentialOrUserDelegationKey","generateBlobSASQueryParametersInternal","userDelegationKeyCredential","TypeError","SASSignatureValuesSanityCheckAndAutofill","identifier","verifiedPermissions","resource","timestamp","snapshotTime","blobName","versionId","getCanonicalName","containerName","cacheControl","contentDisposition","contentEncoding","contentLanguage","contentType","generateBlobSASQueryParameters20201206","userDelegationKey","signedObjectId","signedTenantId","signedStartsOn","signedExpiresOn","signedService","signedVersion","preauthorizedAgentObjectId","correlationId","generateBlobSASQueryParametersUDK20201206","generateBlobSASQueryParameters20181109","generateBlobSASQueryParametersUDK20200210","generateBlobSASQueryParametersUDK20181109","generateBlobSASQueryParameters20150405","elements","SASProtocol","ipRangeInner","end","start","permissionsOrOptions","signedOid","params","queries","param","tryAppendQueryParameter","encodeURIComponent","length","ipRangeToString","BatchStates","Batch","concurrency","actives","completed","offset","operations","Good","emitter","EventEmitter","addOperation","operation","parallelExecute","emit","Promise","resolve","reject","on","nextOperation","MutexLockStatus","Mutex","lock","keys","UNLOCKED","LOCKED","onUnlockEvent","unlock","emitUnlockEvent","handler","listeners","shift","setImmediate","call","_defaultHttpClient","getCachedDefaultHttpClient","SDK_VERSION","SERVICE_VERSION","BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES","BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES","BLOCK_BLOB_MAX_BLOCKS","DEFAULT_BLOCK_BUFFER_SIZE_BYTES","DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES","DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS","StorageOAuthScopes","URLConstants","SIGNATURE","SNAPSHOT","VERSIONID","HTTPURLConnection","HTTP_ACCEPTED","HTTP_CONFLICT","HTTP_NOT_FOUND","HTTP_PRECON_FAILED","HTTP_RANGE_NOT_SATISFIABLE","HeaderConstants","AUTHORIZATION","AUTHORIZATION_SCHEME","CONTENT_ENCODING","CONTENT_ID","CONTENT_LANGUAGE","CONTENT_MD5","CONTENT_TRANSFER_ENCODING","CONTENT_TYPE","DATE","IF_MATCH","IF_MODIFIED_SINCE","IF_NONE_MATCH","IF_UNMODIFIED_SINCE","PREFIX_FOR_STORAGE","RANGE","USER_AGENT","X_MS_CLIENT_REQUEST_ID","X_MS_COPY_SOURCE","X_MS_DATE","X_MS_ERROR_CODE","X_MS_VERSION","X_MS_CopySourceErrorCode","ETagNone","ETagAny","BATCH_MAX_REQUEST","HTTP_LINE_ENDING","HTTP_VERSION_1_1","EncryptionAlgorithmAES25","DevelopmentConnectionString","StorageBlobLoggingAllowedHeaderNames","StorageBlobLoggingAllowedQueryParameters","BlobUsesCustomerSpecifiedEncryptionMsg","BlobDoesNotUseCustomerSpecifiedEncryption","PathStylePorts","tracingClient","packageName","packageVersion","namespace","blobToString","fileReader","FileReader","onloadend","ev","target","onerror","readAsText","streamToBuffer","readStreamToLocalFile","fsStat","fsCreateReadStream","escapeURLPath","urlParsed","URL","path","pathname","replace","getValueInConnString","connectionString","argument","split","element","trim","match","extractConnectionStringParts","proxyUri","search","matchCredentials","getProxyUriFromDevConnString","blobEndpoint","endsWith","slice","defaultEndpointsProtocol","accountKey","Buffer","endpointSuffix","toLowerCase","kind","accountSas","getAccountNameFromUrl","substring","appendToURLPath","setURLParameter","encodedName","encodedValue","searchString","searchPieces","pair","getURLParameter","searchParams","get","setURLHost","host","hostname","getURLPath","getURLScheme","getURLPathAndQuery","pathString","queryString","appendToURLQuery","queryParts","query","truncatedISO8061Date","date","withMilliseconds","dateString","toISOString","generateBlockID","blockIDPrefix","blockIndex","maxSourceStringLength","res","currentString","targetLength","padString","prototype","padStart","repeat","content","btoa","timeInMs","aborter","abortError","timeout","abortHandler","clearTimeout","setTimeout","removeEventListener","addEventListener","iEqual","str1","str2","toLocaleLowerCase","parsedUrl","isIpEndpointStyle","test","Boolean","port","toBlobTagsString","tags","tagPairs","hasOwnProperty","toBlobTags","blobTagSet","toTags","blobTag","toQuerySerialization","textConfiguration","format","type","delimitedTextConfiguration","columnSeparator","fieldQuote","recordSeparator","escapeChar","escapeCharacter","headersPresent","hasHeaders","jsonTextConfiguration","arrowConfiguration","schema","parseObjectReplicationRecord","objectReplicationRecord","orProperties","ids","policyPrefix","rule","ruleId","replicationStatus","policyIndex","findIndex","policy","policyId","rules","httpAuthorizationToString","httpAuthorization","scheme","BlobNameToString","encoded","decodeURIComponent","ConvertInternalResponseOfListBlobFlat","internalResponse","segment","blobItems","map","blobItemInteral","ConvertInternalResponseOfListBlobHierarchy","blobPrefixes","blobPrefixInternal","ExtractPageRangeInfoItems","getPageRangesSegment","pageRange","clearRange","pageRangeIndex","clearRangeIndex","isClear","EscapePath","i","assertResponse","BufferScheduler"],"sourceRoot":""}