UNPKG

@supernovaio/cli

Version:

Supernova.io Command Line Interface

112 lines (110 loc) 4.73 kB
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fd165838-8d44-528c-a75a-ccb2b15efc41")}catch(e){}}(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { SentryTraced } from "@sentry/nestjs"; import fetch from "node-fetch"; import { authUrlForEnvironment, TargetEnv } from "../types/environment.js"; import { AuthResponseSchema, RefreshTokenResponseSchema, TokensResponseSchema } from "../types/login.js"; export class AuthService { async getAuthUrlFromServer(env, codeChallenge) { const { result: { authorizeUrl, readKey }, } = await fetch(authUrlForEnvironment(env), { body: JSON.stringify({ codeChallenge, }), headers: { "Content-Type": "application/json", }, method: "POST", }) .then(res => res.json()) .then(async (data) => AuthResponseSchema.parse(data)); return { authorizeUrl, readKey }; } async getTokensFromServer(env, verifier, readKey) { let success = false; let tokens; let repeatCounts = 300; while (!success && repeatCounts-- > 0) { success = await fetch(`${authUrlForEnvironment(env)}?read_key=${readKey}&code_verifier=${verifier}`) .then(response => { if (!response.ok) { throw new Error("Network response was not ok"); } return response.json(); }) .then(async (data) => { const body = TokensResponseSchema.parse(data); if (body.result.status === "Success") { tokens = body.result.tokens; return true; } await this.sleep(); return false; }); } return tokens; } async refreshToken(env, refreshToken) { if (!refreshToken) return undefined; const authUrl = `${authUrlForEnvironment(env)}/token`; const response = await fetch(authUrl, { body: JSON.stringify({ grant_type: "refresh_token", refresh_token: refreshToken, }), headers: { "Content-Type": "application/json", }, method: "POST", }); if (!response.ok) { return undefined; } const responseJson = await response.json(); const parsedResponse = RefreshTokenResponseSchema.safeParse(responseJson); if (!parsedResponse.success) { return undefined; } const { tokens } = parsedResponse.data.result; return { ...tokens, refreshToken }; } sleep(ms = 5000) { return new Promise(resolve => { setTimeout(resolve, ms); }); } } __decorate([ SentryTraced(), __metadata("design:type", Function), __metadata("design:paramtypes", [String, String]), __metadata("design:returntype", Promise) ], AuthService.prototype, "getAuthUrlFromServer", null); __decorate([ SentryTraced(), __metadata("design:type", Function), __metadata("design:paramtypes", [String, String, String]), __metadata("design:returntype", Promise) ], AuthService.prototype, "getTokensFromServer", null); __decorate([ SentryTraced(), __metadata("design:type", Function), __metadata("design:paramtypes", [String, String]), __metadata("design:returntype", Promise) ], AuthService.prototype, "refreshToken", null); __decorate([ SentryTraced(), __metadata("design:type", Function), __metadata("design:paramtypes", [Number]), __metadata("design:returntype", void 0) ], AuthService.prototype, "sleep", null); //# sourceMappingURL=auth.service.js.map //# debugId=fd165838-8d44-528c-a75a-ccb2b15efc41