diff --git a/packages/security/oidc-provider-plugin-wildcard-redirect-uri/src/OidcWildcardRedirectUriModule.ts b/packages/security/oidc-provider-plugin-wildcard-redirect-uri/src/OidcWildcardRedirectUriModule.ts index 6d05fb8d5c7..5b803fed4f6 100644 --- a/packages/security/oidc-provider-plugin-wildcard-redirect-uri/src/OidcWildcardRedirectUriModule.ts +++ b/packages/security/oidc-provider-plugin-wildcard-redirect-uri/src/OidcWildcardRedirectUriModule.ts @@ -1,8 +1,7 @@ import {Constant, Inject, Module} from "@tsed/di"; import {Logger} from "@tsed/logger"; -import {OIDC_PROVIDER_NODE_MODULE, OidcSettings} from "@tsed/oidc-provider"; -// @ts-ignore -import type {default as Provider, KoaContextWithOIDC} from "oidc-provider"; +import {OidcSettings} from "@tsed/oidc-provider"; +import Provider, {errors, type KoaContextWithOIDC} from "oidc-provider"; // @ts-ignore import psl from "psl"; @@ -26,8 +25,6 @@ export class OidcWildcardRedirectUriModule { @Inject(Logger) protected logger: Logger; - constructor(@Inject(OIDC_PROVIDER_NODE_MODULE) protected module: OIDC_PROVIDER_NODE_MODULE) {} - $onCreateOIDC(provider: Provider) { if (this.enabled) { const {redirectUriAllowed, postLogoutRedirectUriAllowed} = provider.Client.prototype; @@ -61,15 +58,15 @@ export class OidcWildcardRedirectUriModule { const {hostname, href} = new URL(redirectUri); if (href.split("*").length !== 2) { - throw new this.module.errors.InvalidClientMetadata("redirect_uris with a wildcard may only contain a single one"); + throw new errors.InvalidClientMetadata("redirect_uris with a wildcard may only contain a single one"); } if (!hostname.includes("*")) { - throw new this.module.errors.InvalidClientMetadata("redirect_uris may only have a wildcard in the hostname"); + throw new errors.InvalidClientMetadata("redirect_uris may only have a wildcard in the hostname"); } if (!psl.get(hostname.split("*.")[1])) { - throw new this.module.errors.InvalidClientMetadata( + throw new errors.InvalidClientMetadata( "redirect_uris with a wildcard must not match an eTLD+1 of a known public suffix domain" ); } @@ -81,15 +78,15 @@ export class OidcWildcardRedirectUriModule { const {hostname, href} = new URL(postLogoutRedirectUri); if (href.split("*").length !== 2) { - throw new this.module.errors.InvalidClientMetadata("post_logout_redirect_uris with a wildcard may only contain a single one"); + throw new errors.InvalidClientMetadata("post_logout_redirect_uris with a wildcard may only contain a single one"); } if (!hostname.includes("*")) { - throw new this.module.errors.InvalidClientMetadata("post_logout_redirect_uris may only have a wildcard in the hostname"); + throw new errors.InvalidClientMetadata("post_logout_redirect_uris may only have a wildcard in the hostname"); } if (!psl.get(hostname.split("*.")[1])) { - throw new this.module.errors.InvalidClientMetadata( + throw new errors.InvalidClientMetadata( "post_logout_redirect_uris with a wildcard must not match an eTLD+1 of a known public suffix domain" ); } diff --git a/packages/security/oidc-provider-plugin-wildcard-redirect-uri/vitest.config.mts b/packages/security/oidc-provider-plugin-wildcard-redirect-uri/vitest.config.mts index e7621a62bfa..e2fb5236e55 100644 --- a/packages/security/oidc-provider-plugin-wildcard-redirect-uri/vitest.config.mts +++ b/packages/security/oidc-provider-plugin-wildcard-redirect-uri/vitest.config.mts @@ -10,12 +10,12 @@ export default defineConfig( coverage: { ...presets.test.coverage, thresholds: { - statements: 98.78, - branches: 86.95, + statements: 98.76, + branches: 86.36, functions: 100, - lines: 98.78 + lines: 98.76 } } } } -); \ No newline at end of file +); diff --git a/packages/security/oidc-provider/src/decorators/oidcSession.ts b/packages/security/oidc-provider/src/decorators/oidcSession.ts index a2bc7f2dec2..425febd3058 100644 --- a/packages/security/oidc-provider/src/decorators/oidcSession.ts +++ b/packages/security/oidc-provider/src/decorators/oidcSession.ts @@ -1,6 +1,5 @@ import {Context} from "@tsed/common"; import {useDecorators} from "@tsed/core"; -// @ts-ignore import type {default as Provider} from "oidc-provider"; import {INTERACTION_SESSION} from "../constants/constants.js"; diff --git a/packages/security/oidc-provider/src/decorators/prompt.ts b/packages/security/oidc-provider/src/decorators/prompt.ts index a0fc98698d8..107641aa56c 100644 --- a/packages/security/oidc-provider/src/decorators/prompt.ts +++ b/packages/security/oidc-provider/src/decorators/prompt.ts @@ -1,6 +1,5 @@ import {Context} from "@tsed/common"; import {useDecorators} from "@tsed/core"; -// @ts-ignore import type {PromptDetail as P} from "oidc-provider"; import {INTERACTION_PROMPT} from "../constants/constants.js"; diff --git a/packages/security/oidc-provider/src/domain/InteractionMethods.ts b/packages/security/oidc-provider/src/domain/InteractionMethods.ts index 483fd117d03..5df2a5ab061 100644 --- a/packages/security/oidc-provider/src/domain/InteractionMethods.ts +++ b/packages/security/oidc-provider/src/domain/InteractionMethods.ts @@ -1,4 +1,3 @@ -// @ts-ignore import type {CanBePromise, interactionPolicy, KoaContextWithOIDC, UnknownObject} from "oidc-provider"; export interface InteractionMethods { diff --git a/packages/security/oidc-provider/src/domain/OidcAccountsMethods.ts b/packages/security/oidc-provider/src/domain/OidcAccountsMethods.ts index f1dc6b4b1e8..9c881ad48e6 100644 --- a/packages/security/oidc-provider/src/domain/OidcAccountsMethods.ts +++ b/packages/security/oidc-provider/src/domain/OidcAccountsMethods.ts @@ -1,4 +1,3 @@ -// @ts-ignore import type {Account, default as Provider} from "oidc-provider"; import {AccessToken, AuthorizationCode, BackchannelAuthenticationRequest, DeviceCode} from "./interfaces.js"; diff --git a/packages/security/oidc-provider/src/domain/OidcInteractionOptions.ts b/packages/security/oidc-provider/src/domain/OidcInteractionOptions.ts index c5fb8346fc3..bf6a8162342 100644 --- a/packages/security/oidc-provider/src/domain/OidcInteractionOptions.ts +++ b/packages/security/oidc-provider/src/domain/OidcInteractionOptions.ts @@ -1,4 +1,3 @@ -// @ts-ignore import type {CanBePromise, interactionPolicy, KoaContextWithOIDC, UnknownObject} from "oidc-provider"; export interface OidcInteractionOptions { name: string; diff --git a/packages/security/oidc-provider/src/domain/OidcInteractionPromptProps.ts b/packages/security/oidc-provider/src/domain/OidcInteractionPromptProps.ts index da847986482..3e1b5c65deb 100644 --- a/packages/security/oidc-provider/src/domain/OidcInteractionPromptProps.ts +++ b/packages/security/oidc-provider/src/domain/OidcInteractionPromptProps.ts @@ -1,4 +1,3 @@ -// @ts-ignore import type {UnknownObject} from "oidc-provider"; import {OidcClient} from "./interfaces.js"; diff --git a/packages/security/oidc-provider/src/domain/OidcSettings.ts b/packages/security/oidc-provider/src/domain/OidcSettings.ts index c0024eb263f..84774f9083b 100644 --- a/packages/security/oidc-provider/src/domain/OidcSettings.ts +++ b/packages/security/oidc-provider/src/domain/OidcSettings.ts @@ -1,7 +1,6 @@ import type {Adapter} from "@tsed/adapters"; import type {Type} from "@tsed/core"; import type {JwksKeyParameters} from "@tsed/jwks"; -// @ts-ignore import type {Configuration} from "oidc-provider"; import type {OidcAccountsMethods} from "./OidcAccountsMethods.js"; diff --git a/packages/security/oidc-provider/src/domain/interfaces.ts b/packages/security/oidc-provider/src/domain/interfaces.ts index 38fca57cb73..2d803285795 100644 --- a/packages/security/oidc-provider/src/domain/interfaces.ts +++ b/packages/security/oidc-provider/src/domain/interfaces.ts @@ -1,4 +1,3 @@ -// @ts-ignore import type {default as Provider, interactionPolicy} from "oidc-provider"; export type OIDCContext = InstanceType; diff --git a/packages/security/oidc-provider/src/index.ts b/packages/security/oidc-provider/src/index.ts index a0d16df51ae..f292e2e42ac 100644 --- a/packages/security/oidc-provider/src/index.ts +++ b/packages/security/oidc-provider/src/index.ts @@ -29,6 +29,5 @@ export * from "./services/OidcInteractions.js"; export * from "./services/OidcJwks.js"; export * from "./services/OidcPolicy.js"; export * from "./services/OidcProvider.js"; -export * from "./services/OidcProviderNodeModule.js"; export * from "./utils/debug.js"; export * from "./utils/events.js"; diff --git a/packages/security/oidc-provider/src/services/OidcAdapters.ts b/packages/security/oidc-provider/src/services/OidcAdapters.ts index 46347dd1e76..de84bbb7b96 100644 --- a/packages/security/oidc-provider/src/services/OidcAdapters.ts +++ b/packages/security/oidc-provider/src/services/OidcAdapters.ts @@ -1,6 +1,5 @@ import {Adapter, Adapters} from "@tsed/adapters"; import {Configuration, Inject, Injectable} from "@tsed/di"; -// @ts-ignore import type {Adapter as OidcAdapter, AdapterConstructor} from "oidc-provider"; export type OidcAdapterMethods = Adapter & Partial>; diff --git a/packages/security/oidc-provider/src/services/OidcInteractionContext.ts b/packages/security/oidc-provider/src/services/OidcInteractionContext.ts index 2261f1e6716..8aaf2c72440 100644 --- a/packages/security/oidc-provider/src/services/OidcInteractionContext.ts +++ b/packages/security/oidc-provider/src/services/OidcInteractionContext.ts @@ -2,9 +2,7 @@ import {Constant, InjectContext, PlatformContext} from "@tsed/common"; import {Env} from "@tsed/core"; import {Inject, Injectable} from "@tsed/di"; import {Unauthorized} from "@tsed/exceptions"; -import {serialize} from "@tsed/json-mapper"; import omit from "lodash/omit.js"; -// @ts-ignore import type {Account, default as Provider, InteractionResults, PromptDetail} from "oidc-provider"; import { diff --git a/packages/security/oidc-provider/src/services/OidcPolicy.ts b/packages/security/oidc-provider/src/services/OidcPolicy.ts index 33c870c54cb..8ebe88779e2 100644 --- a/packages/security/oidc-provider/src/services/OidcPolicy.ts +++ b/packages/security/oidc-provider/src/services/OidcPolicy.ts @@ -1,11 +1,9 @@ import {Inject, Injectable, InjectorService, Provider} from "@tsed/di"; -// @ts-ignore import {interactionPolicy} from "oidc-provider"; import {InteractionMethods} from "../domain/InteractionMethods.js"; import {OidcInteractionOptions} from "../domain/OidcInteractionOptions.js"; import {OidcInteractions} from "./OidcInteractions.js"; -import {OIDC_PROVIDER_NODE_MODULE} from "./OidcProviderNodeModule.js"; import Prompt = interactionPolicy.Prompt; @Injectable() @@ -16,10 +14,8 @@ export class OidcPolicy { @Inject() protected oidcInteractions: OidcInteractions; - constructor(@Inject(OIDC_PROVIDER_NODE_MODULE) protected module: OIDC_PROVIDER_NODE_MODULE) {} - public getPolicy() { - let policy = this.module.interactionPolicy.base(); + let policy = interactionPolicy.base(); const {usePriority, interactions} = this.getInteractions(); if (interactions.size) { @@ -53,7 +49,7 @@ export class OidcPolicy { const {checks: originalChecks = [], details, ...promptOptions} = options; const checks = [...(instance.checks ? instance.checks() : originalChecks)].filter(Boolean); - return new this.module.interactionPolicy.Prompt(promptOptions, instance.details ? instance.details.bind(instance) : details, ...checks); + return new interactionPolicy.Prompt(promptOptions, instance.details ? instance.details.bind(instance) : details, ...checks); } private getInteractions() { diff --git a/packages/security/oidc-provider/src/services/OidcProvider.ts b/packages/security/oidc-provider/src/services/OidcProvider.ts index 57deaf8ef5f..4a151ec64d5 100644 --- a/packages/security/oidc-provider/src/services/OidcProvider.ts +++ b/packages/security/oidc-provider/src/services/OidcProvider.ts @@ -1,8 +1,7 @@ import {InjectContext, PlatformApplication, PlatformContext} from "@tsed/common"; import {Env, setValue} from "@tsed/core"; import {Constant, Inject, Injectable, InjectorService} from "@tsed/di"; -// @ts-ignore -import type {Configuration, default as OIDCProvider, KoaContextWithOIDC} from "oidc-provider"; +import Provider, {type Configuration, type KoaContextWithOIDC} from "oidc-provider"; import {INTERACTIONS} from "../constants/constants.js"; import {OidcAccountsMethods} from "../domain/OidcAccountsMethods.js"; @@ -12,7 +11,6 @@ import {OidcAdapters} from "./OidcAdapters.js"; import {OidcInteractions} from "./OidcInteractions.js"; import {OidcJwks} from "./OidcJwks.js"; import {OidcPolicy} from "./OidcPolicy.js"; -import {OIDC_PROVIDER_NODE_MODULE, Provider} from "./OidcProviderNodeModule.js"; function mapError(error: any) { return Object.getOwnPropertyNames(error).reduce((obj: any, key) => { @@ -66,8 +64,6 @@ export class OidcProvider { @InjectContext() protected $ctx?: PlatformContext; - constructor(@Inject(OIDC_PROVIDER_NODE_MODULE) protected module: OIDC_PROVIDER_NODE_MODULE) {} - get logger() { return this.$ctx?.logger || this.injector.logger; } @@ -150,7 +146,7 @@ export class OidcProvider { await this.injector.alterAsync("$alterOidcConfiguration", configuration); - const oidcProvider = new this.module.Provider(this.getIssuer(), configuration); + const oidcProvider = new Provider(this.getIssuer(), configuration); if (proxy) { // istanbul ignore next diff --git a/packages/security/oidc-provider/src/services/OidcProviderNodeModule.ts b/packages/security/oidc-provider/src/services/OidcProviderNodeModule.ts deleted file mode 100644 index b9e3da142f6..00000000000 --- a/packages/security/oidc-provider/src/services/OidcProviderNodeModule.ts +++ /dev/null @@ -1,22 +0,0 @@ -import {Type} from "@tsed/core"; -import {registerProvider} from "@tsed/di"; -// @ts-ignore -import type Provider from "oidc-provider"; - -export const OIDC_PROVIDER_NODE_MODULE = Symbol.for("oidc:provider:node:module"); -// @ts-ignore -export type OIDC_PROVIDER_NODE_MODULE = {Provider: Type} & typeof import("oidc-provider"); - -export {Provider}; - -registerProvider({ - provide: OIDC_PROVIDER_NODE_MODULE, - async useAsyncFactory() { - const mod = await import("oidc-provider"); - - return { - ...mod, - Provider: mod.default || (mod as any).Provider - }; - } -}); diff --git a/packages/security/oidc-provider/vitest.config.mts b/packages/security/oidc-provider/vitest.config.mts index e6d5fe892e5..4de514d3ffc 100644 --- a/packages/security/oidc-provider/vitest.config.mts +++ b/packages/security/oidc-provider/vitest.config.mts @@ -10,12 +10,12 @@ export default defineConfig( coverage: { ...presets.test.coverage, thresholds: { - statements: 97.33, + statements: 97.26, branches: 90.9, - functions: 98.63, - lines: 97.33 + functions: 98.57, + lines: 97.26 } } } } -); \ No newline at end of file +);