@azure/storage-queue
Version:
Microsoft Azure Storage SDK for JavaScript - Queue
316 lines (315 loc) • 10.2 kB
JavaScript
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