| export * as AccountV2 from "./account" |
|
|
| import { Schema } from "effect" |
| import type * as HttpClientError from "effect/unstable/http/HttpClientError" |
|
|
| export const ID = Schema.String.pipe(Schema.brand("AccountID")) |
| export type ID = Schema.Schema.Type<typeof ID> |
|
|
| export const OrgID = Schema.String.pipe(Schema.brand("OrgID")) |
| export type OrgID = Schema.Schema.Type<typeof OrgID> |
|
|
| export const AccessToken = Schema.String.pipe(Schema.brand("AccessToken")) |
| export type AccessToken = Schema.Schema.Type<typeof AccessToken> |
|
|
| export const RefreshToken = Schema.String.pipe(Schema.brand("RefreshToken")) |
| export type RefreshToken = Schema.Schema.Type<typeof RefreshToken> |
|
|
| export const DeviceCode = Schema.String.pipe(Schema.brand("DeviceCode")) |
| export type DeviceCode = Schema.Schema.Type<typeof DeviceCode> |
|
|
| export const UserCode = Schema.String.pipe(Schema.brand("UserCode")) |
| export type UserCode = Schema.Schema.Type<typeof UserCode> |
|
|
| export class Info extends Schema.Class<Info>("Account")({ |
| id: ID, |
| email: Schema.String, |
| url: Schema.String, |
| active_org_id: Schema.NullOr(OrgID), |
| }) {} |
|
|
| export class Org extends Schema.Class<Org>("Org")({ |
| id: OrgID, |
| name: Schema.String, |
| }) {} |
|
|
| export class AccountRepoError extends Schema.TaggedErrorClass<AccountRepoError>()("AccountRepoError", { |
| message: Schema.String, |
| cause: Schema.optional(Schema.Defect()), |
| }) {} |
|
|
| export class AccountServiceError extends Schema.TaggedErrorClass<AccountServiceError>()("AccountServiceError", { |
| message: Schema.String, |
| cause: Schema.optional(Schema.Defect()), |
| }) {} |
|
|
| export class AccountTransportError extends Schema.TaggedErrorClass<AccountTransportError>()("AccountTransportError", { |
| method: Schema.String, |
| url: Schema.String, |
| description: Schema.optional(Schema.String), |
| cause: Schema.optional(Schema.Defect()), |
| }) { |
| static fromHttpClientError(error: HttpClientError.TransportError): AccountTransportError { |
| return new AccountTransportError({ |
| method: error.request.method, |
| url: error.request.url, |
| description: error.description, |
| cause: error.cause, |
| }) |
| } |
|
|
| override get message(): string { |
| return [ |
| `Could not reach ${this.method} ${this.url}.`, |
| `This failed before the server returned an HTTP response.`, |
| this.description, |
| `Check your network, proxy, or VPN configuration and try again.`, |
| ] |
| .filter(Boolean) |
| .join("\n") |
| } |
| } |
|
|
| export type AccountError = AccountRepoError | AccountServiceError | AccountTransportError |
|
|
| export class Login extends Schema.Class<Login>("Login")({ |
| code: DeviceCode, |
| user: UserCode, |
| url: Schema.String, |
| server: Schema.String, |
| expiry: Schema.Duration, |
| interval: Schema.Duration, |
| }) {} |
|
|
| export class PollSuccess extends Schema.TaggedClass<PollSuccess>()("PollSuccess", { |
| email: Schema.String, |
| }) {} |
|
|
| export class PollPending extends Schema.TaggedClass<PollPending>()("PollPending", {}) {} |
|
|
| export class PollSlow extends Schema.TaggedClass<PollSlow>()("PollSlow", {}) {} |
|
|
| export class PollExpired extends Schema.TaggedClass<PollExpired>()("PollExpired", {}) {} |
|
|
| export class PollDenied extends Schema.TaggedClass<PollDenied>()("PollDenied", {}) {} |
|
|
| export class PollError extends Schema.TaggedClass<PollError>()("PollError", { |
| cause: Schema.Defect(), |
| }) {} |
|
|
| export const PollResult = Schema.Union([PollSuccess, PollPending, PollSlow, PollExpired, PollDenied, PollError]) |
| export type PollResult = Schema.Schema.Type<typeof PollResult> |
|
|