UNPKG

@aimee-blue/ab-service-kit

Version:
60 lines (51 loc) 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSelfSignedTokens = createSelfSignedTokens; exports.currentSelfSignedToken = currentSelfSignedToken; exports.selfSignedTokens = void 0; var _rxjs = require("rxjs"); var _abAuth = require("@aimee-blue/ab-auth"); var _operators = require("rxjs/operators"); function createSelfSignedTokens(params, deps = { now: () => (0, _rxjs.from)(Promise.resolve(Date.now())), signJwt: (...args) => (0, _rxjs.from)((0, _abAuth.signJwtUsingServiceAccountKey)(...args)) }) { const nextJwt = (0, _rxjs.defer)(() => deps.now().pipe((0, _operators.take)(1), (0, _operators.switchMap)(now => { const iat = now / 1000; const exp = iat + params.expireInMillis / 1000; return deps.signJwt({ aud: 'https://aimeeblue.com/functions', iat, exp }).pipe((0, _operators.take)(1), (0, _operators.map)(result => ({ ...result, expiresAtMillis: now + params.expireInMillis }))); }))); return (0, _rxjs.timer)(0, params.rollNewTokenInMillis, params.scheduler).pipe((0, _operators.exhaustMap)(() => nextJwt), (0, _operators.shareReplay)({ bufferSize: 1, refCount: true, windowTime: params.rollNewTokenInMillis, scheduler: params.scheduler })); } function buildSelfSignedTokensLazy() { let tokensStream = null; return () => { if (tokensStream) { return tokensStream; } return tokensStream = createSelfSignedTokens({ expireInMillis: 3600 * 1000, rollNewTokenInMillis: 3000 * 1000 }); }; } const selfSignedTokens = buildSelfSignedTokensLazy(); exports.selfSignedTokens = selfSignedTokens; async function currentSelfSignedToken() { const result = await selfSignedTokens().pipe((0, _operators.take)(1)).toPromise(); return result.signedJwt; } //# sourceMappingURL=selfSignedTokens.js.map