UNPKG

@azure/storage-queue

Version:
316 lines (315 loc) 10.2 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var SASQueryParameters_exports = {}; __export(SASQueryParameters_exports, { SASProtocol: () => SASProtocol, SASQueryParameters: () => SASQueryParameters }); module.exports = __toCommonJS(SASQueryParameters_exports); var import_SasIPRange = require("./SasIPRange.js"); var import_utils_common = require("./utils/utils.common.js"); var SASProtocol = /* @__PURE__ */ ((SASProtocol2) => { SASProtocol2["Https"] = "https"; SASProtocol2["HttpsAndHttp"] = "https,http"; return SASProtocol2; })(SASProtocol || {}); class SASQueryParameters { /** * The storage API version. */ version; /** * Optional. The allowed HTTP protocol(s). */ protocol; /** * Optional. The start time for this SAS token. */ startsOn; /** * Optional only when identifier is provided. The expiry time for this SAS token. */ expiresOn; /** * Optional only when identifier is provided. * Please refer to {@link AccountSASPermissions}, {@link QueueSASPermissions} for more details. */ permissions; /** * Optional. The storage services being accessed (only for Account SAS). Please refer to {@link AccountSASServices} * for more details. */ services; /** * Optional. The storage resource types being accessed (only for Account SAS). Please refer to * {@link AccountSASResourceTypes} for more details. */ resourceTypes; /** * Optional. The signed identifier (only for {@link QueueSASSignatureValues}). * * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy */ identifier; /** * Optional. The storage queue (only for {@link QueueSASSignatureValues}). */ resource; /** * The signature for the SAS token. */ signature; /** * Inner value of getter ipRange. */ ipRangeInner; /** * The Azure Active Directory object ID in GUID format. * Property of user delegation key. */ signedOid; /** * The Azure Active Directory tenant ID in GUID format. * Property of user delegation key. */ signedTenantId; /** * The date-time the key is active. * Property of user delegation key. */ signedStartsOn; /** * The date-time the key expires. * Property of user delegation key. */ signedExpiresOn; /** * Abbreviation of the Azure Storage service that accepts the user delegation key. * Property of user delegation key. */ signedService; /** * The service version that created the user delegation key. * Property of user delegation key. */ signedVersion; /** * The delegated user tenant id in Azure AD. * Property of user delegation key. */ signedDelegatedUserTid; /** * Optional. Beginning in version 2025-07-05, this value specifies the Entra ID of the user who is authorized to * use the resulting SAS URL. The resulting SAS URL must be used in conjunction with an Entra ID token that has been * issued to the user specified in this value. */ delegatedUserObjectId; /** * Optional. IP range allowed for this SAS. * * @readonly */ get ipRange() { if (this.ipRangeInner) { return { end: this.ipRangeInner.end, start: this.ipRangeInner.start }; } return void 0; } /** * Creates an instance of SASQueryParameters. * * @param version - Representing the storage version * @param signature - Representing the signature for the SAS token * @param permissions - Representing the storage permissions * @param services - Representing the storage services being accessed (only for Account SAS) * @param resourceTypes - Representing the storage resource types being accessed (only for Account SAS) * @param protocol - Representing the allowed HTTP protocol(s) * @param startsOn - Representing the start time for this SAS token * @param expiresOn - Representing the expiry time for this SAS token * @param ipRange - Representing the range of valid IP addresses for this SAS token * @param identifier - Representing the signed identifier (only for Service SAS) * @param resource - Representing the storage queue (only for Service SAS) */ constructor(version, signature, permissions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, userDelegationKey, delegatedUserObjectId) { this.version = version; this.services = services; this.resourceTypes = resourceTypes; this.expiresOn = expiresOn; this.permissions = permissions; this.protocol = protocol; this.startsOn = startsOn; this.ipRangeInner = ipRange; this.identifier = identifier; this.resource = resource; this.signature = signature; if (userDelegationKey) { this.signedOid = userDelegationKey.signedObjectId; this.signedTenantId = userDelegationKey.signedTenantId; this.signedStartsOn = userDelegationKey.signedStartsOn; this.signedExpiresOn = userDelegationKey.signedExpiresOn; this.signedService = userDelegationKey.signedService; this.signedVersion = userDelegationKey.signedVersion; this.delegatedUserObjectId = delegatedUserObjectId; this.signedDelegatedUserTid = userDelegationKey.signedDelegatedUserTenantId; } } /** * Encodes all SAS query parameters into a string that can be appended to a URL. * */ toString() { const params = [ "sv", "ss", "srt", "spr", "st", "se", "sip", "si", "sr", "sp", "sig", "skoid", // Signed object ID "sktid", // Signed tenant ID "skt", // Signed key start time "ske", // Signed key expiry time "sks", // Signed key service "skv", // Signed key version "sduoid", // Signed key user delegation object ID "skdutid" // Signed key user delegation tenant ID ]; const queries = []; for (const param of params) { switch (param) { case "sv": this.tryAppendQueryParameter(queries, param, this.version); break; case "ss": this.tryAppendQueryParameter(queries, param, this.services); break; case "srt": this.tryAppendQueryParameter(queries, param, this.resourceTypes); break; case "spr": this.tryAppendQueryParameter(queries, param, this.protocol); break; case "st": this.tryAppendQueryParameter( queries, param, this.startsOn ? (0, import_utils_common.truncatedISO8061Date)(this.startsOn, false) : void 0 ); break; case "se": this.tryAppendQueryParameter( queries, param, this.expiresOn ? (0, import_utils_common.truncatedISO8061Date)(this.expiresOn, false) : void 0 ); break; case "sip": this.tryAppendQueryParameter( queries, param, this.ipRange ? (0, import_SasIPRange.ipRangeToString)(this.ipRange) : void 0 ); break; case "si": this.tryAppendQueryParameter(queries, param, this.identifier); break; case "sr": this.tryAppendQueryParameter(queries, param, this.resource); break; case "sp": this.tryAppendQueryParameter(queries, param, this.permissions); break; case "sig": this.tryAppendQueryParameter(queries, param, this.signature); break; case "skoid": this.tryAppendQueryParameter(queries, param, this.signedOid); break; case "sktid": this.tryAppendQueryParameter(queries, param, this.signedTenantId); break; case "skt": this.tryAppendQueryParameter( queries, param, this.signedStartsOn ? (0, import_utils_common.truncatedISO8061Date)(this.signedStartsOn, false) : void 0 ); break; case "ske": this.tryAppendQueryParameter( queries, param, this.signedExpiresOn ? (0, import_utils_common.truncatedISO8061Date)(this.signedExpiresOn, false) : void 0 ); break; case "sks": this.tryAppendQueryParameter(queries, param, this.signedService); break; case "skv": this.tryAppendQueryParameter(queries, param, this.signedVersion); break; case "sduoid": this.tryAppendQueryParameter(queries, param, this.delegatedUserObjectId); break; case "skdutid": this.tryAppendQueryParameter(queries, param, this.signedDelegatedUserTid); break; } } return queries.join("&"); } /** * A private helper method used to filter and append query key/value pairs into an array. * * @param queries - * @param key - * @param value - */ tryAppendQueryParameter(queries, key, value) { if (!value) { return; } key = encodeURIComponent(key); value = encodeURIComponent(value); if (key.length > 0 && value.length > 0) { queries.push(`${key}=${value}`); } } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { SASProtocol, SASQueryParameters }); //# sourceMappingURL=SASQueryParameters.js.map