150 lines
4.5 KiB
JavaScript
150 lines
4.5 KiB
JavaScript
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
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);
|
|
|
|
// src/index.ts
|
|
var src_exports = {};
|
|
__export(src_exports, {
|
|
CredentialsProviderError: () => CredentialsProviderError,
|
|
ProviderError: () => ProviderError,
|
|
TokenProviderError: () => TokenProviderError,
|
|
chain: () => chain,
|
|
fromStatic: () => fromStatic,
|
|
memoize: () => memoize
|
|
});
|
|
module.exports = __toCommonJS(src_exports);
|
|
|
|
// src/ProviderError.ts
|
|
var _ProviderError = class _ProviderError extends Error {
|
|
constructor(message, tryNextLink = true) {
|
|
super(message);
|
|
this.tryNextLink = tryNextLink;
|
|
this.name = "ProviderError";
|
|
Object.setPrototypeOf(this, _ProviderError.prototype);
|
|
}
|
|
static from(error, tryNextLink = true) {
|
|
return Object.assign(new this(error.message, tryNextLink), error);
|
|
}
|
|
};
|
|
__name(_ProviderError, "ProviderError");
|
|
var ProviderError = _ProviderError;
|
|
|
|
// src/CredentialsProviderError.ts
|
|
var _CredentialsProviderError = class _CredentialsProviderError extends ProviderError {
|
|
constructor(message, tryNextLink = true) {
|
|
super(message, tryNextLink);
|
|
this.tryNextLink = tryNextLink;
|
|
this.name = "CredentialsProviderError";
|
|
Object.setPrototypeOf(this, _CredentialsProviderError.prototype);
|
|
}
|
|
};
|
|
__name(_CredentialsProviderError, "CredentialsProviderError");
|
|
var CredentialsProviderError = _CredentialsProviderError;
|
|
|
|
// src/TokenProviderError.ts
|
|
var _TokenProviderError = class _TokenProviderError extends ProviderError {
|
|
constructor(message, tryNextLink = true) {
|
|
super(message, tryNextLink);
|
|
this.tryNextLink = tryNextLink;
|
|
this.name = "TokenProviderError";
|
|
Object.setPrototypeOf(this, _TokenProviderError.prototype);
|
|
}
|
|
};
|
|
__name(_TokenProviderError, "TokenProviderError");
|
|
var TokenProviderError = _TokenProviderError;
|
|
|
|
// src/chain.ts
|
|
var chain = /* @__PURE__ */ __name((...providers) => async () => {
|
|
if (providers.length === 0) {
|
|
throw new ProviderError("No providers in chain");
|
|
}
|
|
let lastProviderError;
|
|
for (const provider of providers) {
|
|
try {
|
|
const credentials = await provider();
|
|
return credentials;
|
|
} catch (err) {
|
|
lastProviderError = err;
|
|
if (err == null ? void 0 : err.tryNextLink) {
|
|
continue;
|
|
}
|
|
throw err;
|
|
}
|
|
}
|
|
throw lastProviderError;
|
|
}, "chain");
|
|
|
|
// src/fromStatic.ts
|
|
var fromStatic = /* @__PURE__ */ __name((staticValue) => () => Promise.resolve(staticValue), "fromStatic");
|
|
|
|
// src/memoize.ts
|
|
var memoize = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {
|
|
let resolved;
|
|
let pending;
|
|
let hasResult;
|
|
let isConstant = false;
|
|
const coalesceProvider = /* @__PURE__ */ __name(async () => {
|
|
if (!pending) {
|
|
pending = provider();
|
|
}
|
|
try {
|
|
resolved = await pending;
|
|
hasResult = true;
|
|
isConstant = false;
|
|
} finally {
|
|
pending = void 0;
|
|
}
|
|
return resolved;
|
|
}, "coalesceProvider");
|
|
if (isExpired === void 0) {
|
|
return async (options) => {
|
|
if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {
|
|
resolved = await coalesceProvider();
|
|
}
|
|
return resolved;
|
|
};
|
|
}
|
|
return async (options) => {
|
|
if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {
|
|
resolved = await coalesceProvider();
|
|
}
|
|
if (isConstant) {
|
|
return resolved;
|
|
}
|
|
if (requiresRefresh && !requiresRefresh(resolved)) {
|
|
isConstant = true;
|
|
return resolved;
|
|
}
|
|
if (isExpired(resolved)) {
|
|
await coalesceProvider();
|
|
return resolved;
|
|
}
|
|
return resolved;
|
|
};
|
|
}, "memoize");
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
|
|
0 && (module.exports = {
|
|
CredentialsProviderError,
|
|
ProviderError,
|
|
TokenProviderError,
|
|
chain,
|
|
fromStatic,
|
|
memoize
|
|
});
|
|
|