oidc-spa
Version:
Openidconnect client for Single Page Applications
73 lines (72 loc) • 3.31 kB
TypeScript
import { type Oidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
import { type Signal, type EnvironmentProviders } from "@angular/core";
import { type CanActivateFn } from "@angular/router";
export type OidcAngular = OidcAngular.NotLoggedIn | OidcAngular.LoggedIn;
export declare namespace OidcAngular {
type Common = Oidc.Common;
type NotLoggedIn = Common & {
isUserLoggedIn: false;
login: (params?: {
extraQueryParams?: Record<string, string | undefined>;
transformUrlBeforeRedirect?: (url: string) => string;
}) => Promise<never>;
};
type LoggedIn = Common & {
isUserLoggedIn: true;
logout: Oidc.LoggedIn["logout"];
renewTokens: Oidc.LoggedIn["renewTokens"];
goToAuthServer: Oidc.LoggedIn["goToAuthServer"];
backFromAuthServer: {
extraQueryParams: Record<string, string>;
result: Record<string, string>;
} | undefined;
isNewBrowserSession: boolean;
};
}
type OidcAngularApi<DecodedIdToken extends Record<string, unknown>, AutoLogin extends boolean> = {
getOidc: AutoLogin extends true ? {
(params?: {
assert: "user logged in";
}): OidcAngular.LoggedIn;
} : {
(params?: {
assert?: undefined;
}): OidcAngular;
(params: {
assert: "user logged in";
}): OidcAngular.LoggedIn;
(params: {
assert: "user not logged in";
}): OidcAngular.NotLoggedIn;
};
getOidcInitializationError: () => OidcInitializationError | undefined;
get$decodedIdToken: () => Signal<DecodedIdToken>;
get$secondsLeftBeforeAutoLogout: (params: {
warningDurationSeconds: number;
}) => Signal<number | undefined>;
getTokens: () => Promise<{
isUserLoggedIn: false;
prTokens?: never;
} | {
isUserLoggedIn: true;
prTokens: Promise<Oidc.Tokens<DecodedIdToken>>;
}>;
provideOidcInitAwaiter: EnvironmentProviders;
} & (AutoLogin extends true ? {} : {
enforceLoginGuard: CanActivateFn;
});
export declare function createAngularOidc_dependencyInjection<DecodedIdToken extends Record<string, unknown>, ParamsOfCreateOidc extends {
autoLogin?: boolean;
} & ({
decodedIdTokenSchema: {
parse: (data: unknown) => DecodedIdToken;
} | undefined;
} | {})>(paramsOrGetParams: ValueOrAsyncGetter<ParamsOfCreateOidc>, createOidc: (params: ParamsOfCreateOidc) => Promise<Oidc<DecodedIdToken>>): OidcAngularApi<DecodedIdToken, ParamsOfCreateOidc extends {
autoLogin?: true | undefined;
} ? true : false>;
/** @see: https://docs.oidc-spa.dev/v/v8/usage#angular-api */
export declare function createAngularOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_base, AutoLogin extends boolean = false>(params: ValueOrAsyncGetter<Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>, "homeUrl">>): OidcAngularApi<DecodedIdToken, Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>, "homeUrl"> extends infer T ? T extends Omit<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>, "homeUrl"> ? T extends {
autoLogin?: true | undefined;
} ? true : false : never : never>;
export {};