From 92720f314dc886a71a57f3269ccfecd8f2218a86 Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Sun, 4 Oct 2020 13:53:21 -0700 Subject: [PATCH] chore: refactor out absolute imports I've tried everything to get absolute imports working, unfortunately they were more of a pain than they were worth. Maybe one day there will be better support. For now, they were causing problems for end users see this issue: https://github.com/formium/tsdx/issues/91# --- examples/in_memory/database.ts | 10 ++--- examples/in_memory/main.ts | 6 +-- .../in_memory/oauth_authorization_server.ts | 6 +-- examples/in_memory/repository.ts | 24 +++++------ jest.config.js | 10 ++--- package-lock.json | 32 ++++++++++++++- package.json | 2 +- src/authorization_server.ts | 34 +++++++-------- src/code_verifiers/plain.verifier.ts | 2 +- src/code_verifiers/s256.verifier.ts | 4 +- src/entities/auth_code.entity.ts | 6 +-- src/entities/client.entity.ts | 4 +- src/entities/token.entity.ts | 6 +-- src/grants/abstract/abstract.grant.ts | 41 +++++++++---------- .../abstract/abstract_authorized.grant.ts | 6 +-- src/grants/abstract/grant.interface.ts | 8 ++-- src/grants/auth_code.grant.ts | 30 +++++++------- src/grants/client_credentials.grant.ts | 8 ++-- src/grants/implicit.grant.ts | 16 ++++---- src/grants/password.grant.ts | 14 +++---- src/grants/refresh_token.grant.ts | 12 +++--- src/repositories/access_token.repository.ts | 8 ++-- src/repositories/auth_code.repository.ts | 8 ++-- src/repositories/client.repository.ts | 4 +- src/repositories/scope.repository.ts | 6 +-- src/repositories/user.repository.ts | 6 +-- src/requests/authorization.request.ts | 8 ++-- src/requests/request.ts | 2 +- src/responses/bearer_token.response.ts | 6 +-- src/responses/redirect.response.ts | 2 +- test/e2e/auth_code.grant.e2e-spec.ts | 4 +- test/e2e/client_credentials.grant.e2e-spec.ts | 8 ++-- test/unit/authorization_server.spec.ts | 28 ++++++------- test/unit/grants/auth_code.grant.spec.ts | 16 ++++---- .../grants/client_credentials.grant.spec.ts | 16 ++++---- test/unit/grants/implicit.grant.spec.ts | 24 +++++------ test/unit/grants/password.grant.spec.ts | 15 ++++--- test/unit/grants/refresh_token.grant.spec.ts | 17 ++++---- test/unit/index.spec.ts | 6 +-- tsconfig.json | 6 +-- 40 files changed, 245 insertions(+), 226 deletions(-) diff --git a/examples/in_memory/database.ts b/examples/in_memory/database.ts index b94abc40..5b4a16ba 100644 --- a/examples/in_memory/database.ts +++ b/examples/in_memory/database.ts @@ -1,8 +1,8 @@ -import { OAuthToken } from "~/entities/token.entity"; -import { OAuthAuthCode } from "~/entities/auth_code.entity"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthUser } from "~/entities/user.entity"; +import { OAuthAuthCode } from "../../src/entities/auth_code.entity"; +import { OAuthClient } from "../../src/entities/client.entity"; +import { OAuthScope } from "../../src/entities/scope.entity"; +import { OAuthToken } from "../../src/entities/token.entity"; +import { OAuthUser } from "../../src/entities/user.entity"; export interface InMemory { users: { [id: string]: OAuthUser }; diff --git a/examples/in_memory/main.ts b/examples/in_memory/main.ts index f2f4678f..c23e874b 100644 --- a/examples/in_memory/main.ts +++ b/examples/in_memory/main.ts @@ -1,9 +1,9 @@ import { json, urlencoded } from "body-parser"; import Express from "express"; -import { OAuthException } from "~/exceptions/oauth.exception"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse } from "~/responses/response"; +import { OAuthException } from "../../src/exceptions/oauth.exception"; +import { OAuthRequest } from "../../src/requests/request"; +import { OAuthResponse } from "../../src/responses/response"; import { inMemoryAuthorizationServer } from "./oauth_authorization_server"; const app = Express(); diff --git a/examples/in_memory/oauth_authorization_server.ts b/examples/in_memory/oauth_authorization_server.ts index 59574459..7d165a03 100644 --- a/examples/in_memory/oauth_authorization_server.ts +++ b/examples/in_memory/oauth_authorization_server.ts @@ -1,6 +1,6 @@ -import { AuthorizationServer } from "~/authorization_server"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; +import { AuthorizationServer } from "../../src/authorization_server"; +import { DateInterval } from "../../src/utils/date_interval"; +import { JwtService } from "../../src/utils/jwt"; import { inMemoryAccessTokenRepository, inMemoryAuthCodeRepository, diff --git a/examples/in_memory/repository.ts b/examples/in_memory/repository.ts index 3a337726..6a52e786 100644 --- a/examples/in_memory/repository.ts +++ b/examples/in_memory/repository.ts @@ -1,15 +1,15 @@ -import { OAuthAuthCode } from "~/entities/auth_code.entity"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthToken } from "~/entities/token.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; -import { OAuthTokenRepository } from "~/repositories/access_token.repository"; -import { OAuthAuthCodeRepository } from "~/repositories/auth_code.repository"; -import { OAuthClientRepository } from "~/repositories/client.repository"; -import { OAuthScopeRepository } from "~/repositories/scope.repository"; -import { OAuthUserRepository } from "~/repositories/user.repository"; -import { DateInterval } from "~/utils/date_interval"; +import { OAuthAuthCode } from "../../src/entities/auth_code.entity"; +import { OAuthClient } from "../../src/entities/client.entity"; +import { OAuthScope } from "../../src/entities/scope.entity"; +import { OAuthToken } from "../../src/entities/token.entity"; +import { OAuthUser } from "../../src/entities/user.entity"; +import { GrantIdentifier } from "../../src/grants/abstract/grant.interface"; +import { OAuthTokenRepository } from "../../src/repositories/access_token.repository"; +import { OAuthAuthCodeRepository } from "../../src/repositories/auth_code.repository"; +import { OAuthClientRepository } from "../../src/repositories/client.repository"; +import { OAuthScopeRepository } from "../../src/repositories/scope.repository"; +import { OAuthUserRepository } from "../../src/repositories/user.repository"; +import { DateInterval } from "../../src/utils/date_interval"; import { inMemoryDatabase } from "./database"; const oneHourInFuture = new DateInterval("1h").getEndDate(); diff --git a/jest.config.js b/jest.config.js index 36605e8b..3595a64d 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,11 +9,11 @@ module.exports = { "json", "ts", ], - modulePathIgnorePatterns: ['/dist'], - moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { - prefix: "/", - }), - rootDir: "./", + // modulePathIgnorePatterns: ['/dist'], + // moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { + // prefix: "/", + // }), + // rootDir: "./", testRegex: ".spec.ts$", transform: { "^.+\\.(t|j)s$": "ts-jest", diff --git a/package-lock.json b/package-lock.json index 999be811..830dffcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@jmondi/oauth2-server", - "version": "1.0.0-beta.0", + "version": "1.0.0-beta.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4898,6 +4898,16 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5593,7 +5603,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -8654,6 +8668,13 @@ } } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -14413,6 +14434,13 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", diff --git a/package.json b/package.json index 2aba6859..85442a90 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.0-beta.0", + "version": "1.0.0-beta.1", "name": "@jmondi/oauth2-server", "author": "Jason Raimondi ", "module": "dist/oauth2-server.esm.js", diff --git a/src/authorization_server.ts b/src/authorization_server.ts index 2d2cbd47..47a8bbc2 100644 --- a/src/authorization_server.ts +++ b/src/authorization_server.ts @@ -1,20 +1,20 @@ -import { OAuthException } from "~/exceptions/oauth.exception"; -import { GrantIdentifier, GrantInterface } from "~/grants/abstract/grant.interface"; -import { AuthCodeGrant } from "~/grants/auth_code.grant"; -import { ClientCredentialsGrant } from "~/grants/client_credentials.grant"; -import { ImplicitGrant } from "~/grants/implicit.grant"; -import { PasswordGrant } from "~/grants/password.grant"; -import { RefreshTokenGrant } from "~/grants/refresh_token.grant"; -import { OAuthTokenRepository } from "~/repositories/access_token.repository"; -import { OAuthAuthCodeRepository } from "~/repositories/auth_code.repository"; -import { OAuthClientRepository } from "~/repositories/client.repository"; -import { OAuthScopeRepository } from "~/repositories/scope.repository"; -import { OAuthUserRepository } from "~/repositories/user.repository"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { RequestInterface } from "~/requests/request"; -import { ResponseInterface } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtInterface } from "~/utils/jwt"; +import { OAuthException } from "./exceptions/oauth.exception"; +import { GrantIdentifier, GrantInterface } from "./grants/abstract/grant.interface"; +import { AuthCodeGrant } from "./grants/auth_code.grant"; +import { ClientCredentialsGrant } from "./grants/client_credentials.grant"; +import { ImplicitGrant } from "./grants/implicit.grant"; +import { PasswordGrant } from "./grants/password.grant"; +import { RefreshTokenGrant } from "./grants/refresh_token.grant"; +import { OAuthTokenRepository } from "./repositories/access_token.repository"; +import { OAuthAuthCodeRepository } from "./repositories/auth_code.repository"; +import { OAuthClientRepository } from "./repositories/client.repository"; +import { OAuthScopeRepository } from "./repositories/scope.repository"; +import { OAuthUserRepository } from "./repositories/user.repository"; +import { AuthorizationRequest } from "./requests/authorization.request"; +import { RequestInterface } from "./requests/request"; +import { ResponseInterface } from "./responses/response"; +import { DateInterval } from "./utils/date_interval"; +import { JwtInterface } from "./utils/jwt"; export class AuthorizationServer { private readonly enabledGrantTypes: { [key: string]: GrantInterface } = {}; diff --git a/src/code_verifiers/plain.verifier.ts b/src/code_verifiers/plain.verifier.ts index f9bf1a6f..2b61048e 100644 --- a/src/code_verifiers/plain.verifier.ts +++ b/src/code_verifiers/plain.verifier.ts @@ -1,4 +1,4 @@ -import { ICodeChallenge } from "~/code_verifiers/verifier"; +import { ICodeChallenge } from "./verifier"; export class PlainVerifier implements ICodeChallenge { public readonly method = "plain"; diff --git a/src/code_verifiers/s256.verifier.ts b/src/code_verifiers/s256.verifier.ts index a74f2b21..a984dc99 100644 --- a/src/code_verifiers/s256.verifier.ts +++ b/src/code_verifiers/s256.verifier.ts @@ -1,7 +1,7 @@ import crypto from "crypto"; -import { base64urlencode } from "~/utils/base64"; -import { ICodeChallenge } from "~/code_verifiers/verifier"; +import { base64urlencode } from "../utils/base64"; +import { ICodeChallenge } from "./verifier"; export class S256Verifier implements ICodeChallenge { public readonly method = "S256"; diff --git a/src/entities/auth_code.entity.ts b/src/entities/auth_code.entity.ts index f8651468..e684676c 100644 --- a/src/entities/auth_code.entity.ts +++ b/src/entities/auth_code.entity.ts @@ -1,6 +1,6 @@ -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { OAuthClient } from "~/entities/client.entity"; +import { OAuthClient } from "./client.entity"; +import { OAuthScope } from "./scope.entity"; +import { OAuthUser } from "./user.entity"; export interface OAuthAuthCode { code: string; diff --git a/src/entities/client.entity.ts b/src/entities/client.entity.ts index b36eabde..1e871c40 100644 --- a/src/entities/client.entity.ts +++ b/src/entities/client.entity.ts @@ -1,5 +1,5 @@ -import { OAuthScope } from "~/entities/scope.entity"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; +import { GrantIdentifier } from "../grants/abstract/grant.interface"; +import { OAuthScope } from "./scope.entity"; export interface OAuthClient { id: string; diff --git a/src/entities/token.entity.ts b/src/entities/token.entity.ts index 92ddd119..72a2ab47 100644 --- a/src/entities/token.entity.ts +++ b/src/entities/token.entity.ts @@ -1,6 +1,6 @@ -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthUser } from "~/entities/user.entity"; +import { OAuthClient } from "./client.entity"; +import { OAuthScope } from "./scope.entity"; +import { OAuthUser } from "./user.entity"; export interface OAuthToken { accessToken: string; diff --git a/src/grants/abstract/abstract.grant.ts b/src/grants/abstract/abstract.grant.ts index 962140d0..8fa04eb5 100644 --- a/src/grants/abstract/abstract.grant.ts +++ b/src/grants/abstract/abstract.grant.ts @@ -1,24 +1,23 @@ -import { OAuthAuthCode } from "~/entities/auth_code.entity"; -import { isClientConfidential, OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthToken } from "~/entities/token.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { OAuthException } from "~/exceptions/oauth.exception"; -import { GrantIdentifier, GrantInterface } from "~/grants/abstract/grant.interface"; -import { OAuthTokenRepository } from "~/repositories/access_token.repository"; -import { OAuthAuthCodeRepository } from "~/repositories/auth_code.repository"; -import { OAuthClientRepository } from "~/repositories/client.repository"; -import { OAuthScopeRepository } from "~/repositories/scope.repository"; -import { OAuthUserRepository } from "~/repositories/user.repository"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { RequestInterface } from "~/requests/request"; -import { BearerTokenResponse } from "~/responses/bearer_token.response"; -import { ResponseInterface } from "~/responses/response"; -import { arrayDiff } from "~/utils/array"; -import { base64decode } from "~/utils/base64"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtInterface } from "~/utils/jwt"; -import { getSecondsUntil, roundToSeconds } from "~/utils/time"; +import { isClientConfidential, OAuthClient } from "../../entities/client.entity"; +import { OAuthScope } from "../../entities/scope.entity"; +import { OAuthToken } from "../../entities/token.entity"; +import { OAuthUser } from "../../entities/user.entity"; +import { OAuthException } from "../../exceptions/oauth.exception"; +import { OAuthTokenRepository } from "../../repositories/access_token.repository"; +import { OAuthAuthCodeRepository } from "../../repositories/auth_code.repository"; +import { OAuthClientRepository } from "../../repositories/client.repository"; +import { OAuthScopeRepository } from "../../repositories/scope.repository"; +import { OAuthUserRepository } from "../../repositories/user.repository"; +import { AuthorizationRequest } from "../../requests/authorization.request"; +import { RequestInterface } from "../../requests/request"; +import { BearerTokenResponse } from "../../responses/bearer_token.response"; +import { ResponseInterface } from "../../responses/response"; +import { arrayDiff } from "../../utils/array"; +import { base64decode } from "../../utils/base64"; +import { DateInterval } from "../../utils/date_interval"; +import { JwtInterface } from "../../utils/jwt"; +import { getSecondsUntil, roundToSeconds } from "../../utils/time"; +import { GrantIdentifier, GrantInterface } from "./grant.interface"; export interface ITokenData { iss: undefined; diff --git a/src/grants/abstract/abstract_authorized.grant.ts b/src/grants/abstract/abstract_authorized.grant.ts index 5d659acd..a86ecc0e 100644 --- a/src/grants/abstract/abstract_authorized.grant.ts +++ b/src/grants/abstract/abstract_authorized.grant.ts @@ -1,8 +1,8 @@ import querystring, { ParsedUrlQueryInput } from "querystring"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthException } from "~/exceptions/oauth.exception"; -import { AbstractGrant } from "~/grants/abstract/abstract.grant"; +import { OAuthClient } from "../../entities/client.entity"; +import { OAuthException } from "../../exceptions/oauth.exception"; +import { AbstractGrant } from "./abstract.grant"; export abstract class AbstractAuthorizedGrant extends AbstractGrant { protected makeRedirectUrl(uri: string, params: ParsedUrlQueryInput, queryDelimiter = "?") { diff --git a/src/grants/abstract/grant.interface.ts b/src/grants/abstract/grant.interface.ts index 858f6727..89f94379 100644 --- a/src/grants/abstract/grant.interface.ts +++ b/src/grants/abstract/grant.interface.ts @@ -1,7 +1,7 @@ -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { RequestInterface } from "~/requests/request"; -import { ResponseInterface } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; +import { AuthorizationRequest } from "../../requests/authorization.request"; +import { RequestInterface } from "../../requests/request"; +import { ResponseInterface } from "../../responses/response"; +import { DateInterval } from "../../utils/date_interval"; export type GrantIdentifier = "authorization_code" | "client_credentials" | "refresh_token" | "password" | "implicit"; diff --git a/src/grants/auth_code.grant.ts b/src/grants/auth_code.grant.ts index b3ffa3ab..aa7e96c8 100644 --- a/src/grants/auth_code.grant.ts +++ b/src/grants/auth_code.grant.ts @@ -1,18 +1,18 @@ -import { PlainVerifier } from "~/code_verifiers/plain.verifier"; -import { S256Verifier } from "~/code_verifiers/s256.verifier"; -import { CodeChallengeMethod, ICodeChallenge } from "~/code_verifiers/verifier"; -import { OAuthAuthCode } from "~/entities/auth_code.entity"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthException } from "~/exceptions/oauth.exception"; -import { AbstractAuthorizedGrant } from "~/grants/abstract/abstract_authorized.grant"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { RequestInterface } from "~/requests/request"; -import { RedirectResponse } from "~/responses/redirect.response"; -import { ResponseInterface } from "~/responses/response"; -import { base64decode } from "~/utils/base64"; -import { DateInterval } from "~/utils/date_interval"; +import { PlainVerifier } from "../code_verifiers/plain.verifier"; +import { S256Verifier } from "../code_verifiers/s256.verifier"; +import { CodeChallengeMethod, ICodeChallenge } from "../code_verifiers/verifier"; +import { OAuthAuthCode } from "../entities/auth_code.entity"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthScope } from "../entities/scope.entity"; +import { OAuthException } from "../exceptions/oauth.exception"; +import { AuthorizationRequest } from "../requests/authorization.request"; +import { RequestInterface } from "../requests/request"; +import { RedirectResponse } from "../responses/redirect.response"; +import { ResponseInterface } from "../responses/response"; +import { base64decode } from "../utils/base64"; +import { DateInterval } from "../utils/date_interval"; +import { AbstractAuthorizedGrant } from "./abstract/abstract_authorized.grant"; +import { GrantIdentifier } from "./abstract/grant.interface"; export interface IAuthCodePayload { client_id: string; diff --git a/src/grants/client_credentials.grant.ts b/src/grants/client_credentials.grant.ts index 2d8b8c9e..ed9c15da 100644 --- a/src/grants/client_credentials.grant.ts +++ b/src/grants/client_credentials.grant.ts @@ -1,7 +1,7 @@ -import { AbstractGrant } from "~/grants/abstract/abstract.grant"; -import { RequestInterface } from "~/requests/request"; -import { ResponseInterface } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; +import { RequestInterface } from "../requests/request"; +import { ResponseInterface } from "../responses/response"; +import { DateInterval } from "../utils/date_interval"; +import { AbstractGrant } from "./abstract/abstract.grant"; export class ClientCredentialsGrant extends AbstractGrant { readonly identifier = "client_credentials"; diff --git a/src/grants/implicit.grant.ts b/src/grants/implicit.grant.ts index 7263e4ec..41337290 100644 --- a/src/grants/implicit.grant.ts +++ b/src/grants/implicit.grant.ts @@ -1,11 +1,11 @@ -import { OAuthException } from "~/exceptions/oauth.exception"; -import { AbstractAuthorizedGrant } from "~/grants/abstract/abstract_authorized.grant"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { RequestInterface } from "~/requests/request"; -import { RedirectResponse } from "~/responses/redirect.response"; -import { ResponseInterface } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; -import { getSecondsUntil } from "~/utils/time"; +import { OAuthException } from "../exceptions/oauth.exception"; +import { AuthorizationRequest } from "../requests/authorization.request"; +import { RequestInterface } from "../requests/request"; +import { RedirectResponse } from "../responses/redirect.response"; +import { ResponseInterface } from "../responses/response"; +import { DateInterval } from "../utils/date_interval"; +import { getSecondsUntil } from "../utils/time"; +import { AbstractAuthorizedGrant } from "./abstract/abstract_authorized.grant"; export class ImplicitGrant extends AbstractAuthorizedGrant { readonly identifier = "implicit"; diff --git a/src/grants/password.grant.ts b/src/grants/password.grant.ts index 26480a0e..4427a969 100644 --- a/src/grants/password.grant.ts +++ b/src/grants/password.grant.ts @@ -1,10 +1,10 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { OAuthException } from "~/exceptions/oauth.exception"; -import { AbstractGrant } from "~/grants/abstract/abstract.grant"; -import { RequestInterface } from "~/requests/request"; -import { ResponseInterface } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthUser } from "../entities/user.entity"; +import { OAuthException } from "../exceptions/oauth.exception"; +import { RequestInterface } from "../requests/request"; +import { ResponseInterface } from "../responses/response"; +import { DateInterval } from "../utils/date_interval"; +import { AbstractGrant } from "./abstract/abstract.grant"; export class PasswordGrant extends AbstractGrant { readonly identifier = "password"; diff --git a/src/grants/refresh_token.grant.ts b/src/grants/refresh_token.grant.ts index 63191eb1..143066c9 100644 --- a/src/grants/refresh_token.grant.ts +++ b/src/grants/refresh_token.grant.ts @@ -1,9 +1,9 @@ -import { OAuthToken } from "~/entities/token.entity"; -import { OAuthException } from "~/exceptions/oauth.exception"; -import { AbstractGrant } from "~/grants/abstract/abstract.grant"; -import { RequestInterface } from "~/requests/request"; -import { ResponseInterface } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; +import { OAuthToken } from "../entities/token.entity"; +import { OAuthException } from "../exceptions/oauth.exception"; +import { RequestInterface } from "../requests/request"; +import { ResponseInterface } from "../responses/response"; +import { DateInterval } from "../utils/date_interval"; +import { AbstractGrant } from "./abstract/abstract.grant"; export class RefreshTokenGrant extends AbstractGrant { readonly identifier = "refresh_token"; diff --git a/src/repositories/access_token.repository.ts b/src/repositories/access_token.repository.ts index 17503cc4..03fe0102 100644 --- a/src/repositories/access_token.repository.ts +++ b/src/repositories/access_token.repository.ts @@ -1,7 +1,7 @@ -import { OAuthToken } from "~/entities/token.entity"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthUser } from "~/entities/user.entity"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthScope } from "../entities/scope.entity"; +import { OAuthToken } from "../entities/token.entity"; +import { OAuthUser } from "../entities/user.entity"; export interface OAuthTokenRepository { issueToken(client: OAuthClient, scopes: OAuthScope[], user?: OAuthUser): Promise; diff --git a/src/repositories/auth_code.repository.ts b/src/repositories/auth_code.repository.ts index edf027b9..b38d91d7 100644 --- a/src/repositories/auth_code.repository.ts +++ b/src/repositories/auth_code.repository.ts @@ -1,7 +1,7 @@ -import { OAuthAuthCode } from "~/entities/auth_code.entity"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthUser } from "~/entities/user.entity"; +import { OAuthAuthCode } from "../entities/auth_code.entity"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthScope } from "../entities/scope.entity"; +import { OAuthUser } from "../entities/user.entity"; export interface OAuthAuthCodeRepository { getByIdentifier(authCodeCode: string): Promise; diff --git a/src/repositories/client.repository.ts b/src/repositories/client.repository.ts index 148786cd..8d8dd6cd 100644 --- a/src/repositories/client.repository.ts +++ b/src/repositories/client.repository.ts @@ -1,5 +1,5 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; +import { OAuthClient } from "../entities/client.entity"; +import { GrantIdentifier } from "../grants/abstract/grant.interface"; export interface OAuthClientRepository { getByIdentifier(clientId: string): Promise; diff --git a/src/repositories/scope.repository.ts b/src/repositories/scope.repository.ts index 71e3a2be..534d0705 100644 --- a/src/repositories/scope.repository.ts +++ b/src/repositories/scope.repository.ts @@ -1,6 +1,6 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthScope } from "../entities/scope.entity"; +import { GrantIdentifier } from "../grants/abstract/grant.interface"; export interface OAuthScopeRepository { getAllByIdentifiers(scopeNames: string[]): Promise; diff --git a/src/repositories/user.repository.ts b/src/repositories/user.repository.ts index 1f72adf5..8746b765 100644 --- a/src/repositories/user.repository.ts +++ b/src/repositories/user.repository.ts @@ -1,6 +1,6 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthUser } from "../entities/user.entity"; +import { GrantIdentifier } from "../grants/abstract/grant.interface"; export interface OAuthUserRepository { getUserByCredentials( diff --git a/src/requests/authorization.request.ts b/src/requests/authorization.request.ts index 1ab68956..b9ee866d 100644 --- a/src/requests/authorization.request.ts +++ b/src/requests/authorization.request.ts @@ -1,7 +1,7 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { GrantIdentifier } from "~/grants/abstract/grant.interface"; +import { OAuthClient } from "../entities/client.entity"; +import { OAuthScope } from "../entities/scope.entity"; +import { OAuthUser } from "../entities/user.entity"; +import { GrantIdentifier } from "../grants/abstract/grant.interface"; export class AuthorizationRequest { scopes: OAuthScope[] = []; diff --git a/src/requests/request.ts b/src/requests/request.ts index a5b5d5fe..ddc18709 100644 --- a/src/requests/request.ts +++ b/src/requests/request.ts @@ -1,4 +1,4 @@ -import { Headers, Options } from "~/responses/response"; +import { Headers, Options } from "../responses/response"; export interface RequestInterface { headers: { [key: string]: any }; diff --git a/src/responses/bearer_token.response.ts b/src/responses/bearer_token.response.ts index 85488a0a..88812ea3 100644 --- a/src/responses/bearer_token.response.ts +++ b/src/responses/bearer_token.response.ts @@ -1,6 +1,6 @@ -import { OAuthToken } from "~/entities/token.entity"; -import { HttpStatus } from "~/exceptions/oauth.exception"; -import { OAuthResponse, Options } from "~/responses/response"; +import { OAuthToken } from "../entities/token.entity"; +import { HttpStatus } from "../exceptions/oauth.exception"; +import { OAuthResponse, Options } from "./response"; export class BearerTokenResponse extends OAuthResponse { readonly status = HttpStatus.OK; diff --git a/src/responses/redirect.response.ts b/src/responses/redirect.response.ts index 55e88033..99775e41 100644 --- a/src/responses/redirect.response.ts +++ b/src/responses/redirect.response.ts @@ -1,4 +1,4 @@ -import { OAuthResponse, Options } from "~/responses/response"; +import { OAuthResponse, Options } from "./response"; export class RedirectResponse extends OAuthResponse { constructor(redirectUri: string, options?: Options) { diff --git a/test/e2e/auth_code.grant.e2e-spec.ts b/test/e2e/auth_code.grant.e2e-spec.ts index 941615b6..c7db2e93 100644 --- a/test/e2e/auth_code.grant.e2e-spec.ts +++ b/test/e2e/auth_code.grant.e2e-spec.ts @@ -3,10 +3,10 @@ import { Application } from "express"; import querystring from "querystring"; import { decode } from "jsonwebtoken"; -import { OAuthClient } from "~/entities/client.entity"; -import { IAuthCodePayload, REGEX_ACCESS_TOKEN } from "~/grants/auth_code.grant"; import { inMemoryDatabase } from "../../examples/in_memory/database"; import { inMemoryExpressApp } from "../../examples/in_memory/main"; +import { OAuthClient } from "../../src/entities/client.entity"; +import { IAuthCodePayload, REGEX_ACCESS_TOKEN } from "../../src/grants/auth_code.grant"; describe.skip("auth_code grant e2e", () => { let client: OAuthClient; diff --git a/test/e2e/client_credentials.grant.e2e-spec.ts b/test/e2e/client_credentials.grant.e2e-spec.ts index 37b49905..a4487f63 100644 --- a/test/e2e/client_credentials.grant.e2e-spec.ts +++ b/test/e2e/client_credentials.grant.e2e-spec.ts @@ -1,12 +1,12 @@ import request from "supertest"; import { Application } from "express"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { REGEX_ACCESS_TOKEN } from "~/grants/auth_code.grant"; -import { base64encode } from "~/utils/base64"; import { inMemoryDatabase } from "../../examples/in_memory/database"; import { inMemoryExpressApp } from "../../examples/in_memory/main"; +import { OAuthClient } from "../../src/entities/client.entity"; +import { OAuthScope } from "../../src/entities/scope.entity"; +import { REGEX_ACCESS_TOKEN } from "../../src/grants/auth_code.grant"; +import { base64encode } from "../../src/utils/base64"; import { expectTokenResponse } from "../unit/grants/client_credentials.grant.spec"; describe.skip("client_credentials grant e2e", () => { diff --git a/test/unit/authorization_server.spec.ts b/test/unit/authorization_server.spec.ts index 86ffa82a..7c75e0d0 100644 --- a/test/unit/authorization_server.spec.ts +++ b/test/unit/authorization_server.spec.ts @@ -1,20 +1,6 @@ import { decode } from "jsonwebtoken"; import querystring from "querystring"; -import { AuthorizationServer } from "~/authorization_server"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthToken } from "~/entities/token.entity"; -import { AuthCodeGrant, IAuthCodePayload, REGEXP_CODE_CHALLENGE } from "~/grants/auth_code.grant"; -import { ClientCredentialsGrant } from "~/grants/client_credentials.grant"; -import { ImplicitGrant } from "~/grants/implicit.grant"; -import { PasswordGrant } from "~/grants/password.grant"; -import { RefreshTokenGrant } from "~/grants/refresh_token.grant"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse } from "~/responses/response"; -import { base64encode } from "~/utils/base64"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; + import { inMemoryDatabase } from "../../examples/in_memory/database"; import { inMemoryAccessTokenRepository, @@ -23,6 +9,18 @@ import { inMemoryScopeRepository, inMemoryUserRepository, } from "../../examples/in_memory/repository"; +import { AuthorizationServer } from "../../src/authorization_server"; +import { OAuthClient } from "../../src/entities/client.entity"; +import { OAuthScope } from "../../src/entities/scope.entity"; +import { OAuthToken } from "../../src/entities/token.entity"; +import { IAuthCodePayload, REGEXP_CODE_CHALLENGE } from "../../src/grants/auth_code.grant"; +import { RefreshTokenGrant } from "../../src/grants/refresh_token.grant"; +import { AuthorizationRequest } from "../../src/requests/authorization.request"; +import { OAuthRequest } from "../../src/requests/request"; +import { OAuthResponse } from "../../src/responses/response"; +import { base64encode } from "../../src/utils/base64"; +import { DateInterval } from "../../src/utils/date_interval"; +import { JwtService } from "../../src/utils/jwt"; import { expectTokenResponse } from "./grants/client_credentials.grant.spec"; // const codeVerifier = "qqVDyvlSezXc64NY5Rx3BbL_aT7c2xEBgoJP9domepFZLEjo9ln8EA"; // base64urlencode(crypto.randomBytes(40)); diff --git a/test/unit/grants/auth_code.grant.spec.ts b/test/unit/grants/auth_code.grant.spec.ts index 17793bc5..c27846a9 100644 --- a/test/unit/grants/auth_code.grant.spec.ts +++ b/test/unit/grants/auth_code.grant.spec.ts @@ -1,14 +1,6 @@ import querystring from "querystring"; import { decode } from "jsonwebtoken"; -import { OAuthClient } from "~/entities/client.entity"; -import { AuthCodeGrant, IAuthCodePayload, REGEXP_CODE_CHALLENGE } from "~/grants/auth_code.grant"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse } from "~/responses/response"; -import { base64urlencode } from "~/utils/base64"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; import { inMemoryDatabase } from "../../../examples/in_memory/database"; import { inMemoryAccessTokenRepository, @@ -17,6 +9,14 @@ import { inMemoryScopeRepository, inMemoryUserRepository, } from "../../../examples/in_memory/repository"; +import { OAuthClient } from "../../../src/entities/client.entity"; +import { AuthCodeGrant, IAuthCodePayload, REGEXP_CODE_CHALLENGE } from "../../../src/grants/auth_code.grant"; +import { AuthorizationRequest } from "../../../src/requests/authorization.request"; +import { OAuthRequest } from "../../../src/requests/request"; +import { OAuthResponse } from "../../../src/responses/response"; +import { base64urlencode } from "../../../src/utils/base64"; +import { DateInterval } from "../../../src/utils/date_interval"; +import { JwtService } from "../../../src/utils/jwt"; import { expectTokenResponse } from "./client_credentials.grant.spec"; describe("authorization_code grant", () => { diff --git a/test/unit/grants/client_credentials.grant.spec.ts b/test/unit/grants/client_credentials.grant.spec.ts index db143ed8..fdea38e2 100644 --- a/test/unit/grants/client_credentials.grant.spec.ts +++ b/test/unit/grants/client_credentials.grant.spec.ts @@ -1,11 +1,3 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { REGEX_ACCESS_TOKEN } from "~/grants/auth_code.grant"; -import { ClientCredentialsGrant } from "~/grants/client_credentials.grant"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse, ResponseInterface } from "~/responses/response"; -import { base64encode } from "~/utils/base64"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; import { inMemoryDatabase } from "../../../examples/in_memory/database"; import { inMemoryAccessTokenRepository, @@ -14,6 +6,14 @@ import { inMemoryScopeRepository, inMemoryUserRepository, } from "../../../examples/in_memory/repository"; +import { OAuthClient } from "../../../src/entities/client.entity"; +import { REGEX_ACCESS_TOKEN } from "../../../src/grants/auth_code.grant"; +import { ClientCredentialsGrant } from "../../../src/grants/client_credentials.grant"; +import { OAuthRequest } from "../../../src/requests/request"; +import { OAuthResponse, ResponseInterface } from "../../../src/responses/response"; +import { base64encode } from "../../../src/utils/base64"; +import { DateInterval } from "../../../src/utils/date_interval"; +import { JwtService } from "../../../src/utils/jwt"; export function expectTokenResponse(tokenResponse: ResponseInterface) { expect(tokenResponse.status).toBe(200); diff --git a/test/unit/grants/implicit.grant.spec.ts b/test/unit/grants/implicit.grant.spec.ts index afde6525..b23dae50 100644 --- a/test/unit/grants/implicit.grant.spec.ts +++ b/test/unit/grants/implicit.grant.spec.ts @@ -1,17 +1,5 @@ import { decode } from "jsonwebtoken"; import querystring from "querystring"; -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { ITokenData } from "~/grants/abstract/abstract.grant"; -import { IAuthCodePayload, REGEX_ACCESS_TOKEN, REGEXP_CODE_CHALLENGE } from "~/grants/auth_code.grant"; -import { ImplicitGrant } from "~/grants/implicit.grant"; -import { AuthorizationRequest } from "~/requests/authorization.request"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; -import { roundToSeconds } from "~/utils/time"; import { inMemoryDatabase } from "../../../examples/in_memory/database"; import { @@ -21,6 +9,18 @@ import { inMemoryScopeRepository, inMemoryUserRepository, } from "../../../examples/in_memory/repository"; +import { OAuthClient } from "../../../src/entities/client.entity"; +import { OAuthScope } from "../../../src/entities/scope.entity"; +import { OAuthUser } from "../../../src/entities/user.entity"; +import { ITokenData } from "../../../src/grants/abstract/abstract.grant"; +import { REGEX_ACCESS_TOKEN } from "../../../src/grants/auth_code.grant"; +import { ImplicitGrant } from "../../../src/grants/implicit.grant"; +import { AuthorizationRequest } from "../../../src/requests/authorization.request"; +import { OAuthRequest } from "../../../src/requests/request"; +import { OAuthResponse } from "../../../src/responses/response"; +import { DateInterval } from "../../../src/utils/date_interval"; +import { JwtService } from "../../../src/utils/jwt"; +import { roundToSeconds } from "../../../src/utils/time"; describe("implicit grant", () => { let user: OAuthUser; diff --git a/test/unit/grants/password.grant.spec.ts b/test/unit/grants/password.grant.spec.ts index af0b2e92..8530ef5e 100644 --- a/test/unit/grants/password.grant.spec.ts +++ b/test/unit/grants/password.grant.spec.ts @@ -1,11 +1,3 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthUser } from "~/entities/user.entity"; -import { PasswordGrant } from "~/grants/password.grant"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; - import { inMemoryDatabase } from "../../../examples/in_memory/database"; import { inMemoryAccessTokenRepository, @@ -14,6 +6,13 @@ import { inMemoryScopeRepository, inMemoryUserRepository, } from "../../../examples/in_memory/repository"; +import { OAuthClient } from "../../../src/entities/client.entity"; +import { OAuthUser } from "../../../src/entities/user.entity"; +import { PasswordGrant } from "../../../src/grants/password.grant"; +import { OAuthRequest } from "../../../src/requests/request"; +import { OAuthResponse } from "../../../src/responses/response"; +import { DateInterval } from "../../../src/utils/date_interval"; +import { JwtService } from "../../../src/utils/jwt"; import { expectTokenResponse } from "./client_credentials.grant.spec"; describe("password grant", () => { diff --git a/test/unit/grants/refresh_token.grant.spec.ts b/test/unit/grants/refresh_token.grant.spec.ts index 2cf45d39..9cae11e1 100644 --- a/test/unit/grants/refresh_token.grant.spec.ts +++ b/test/unit/grants/refresh_token.grant.spec.ts @@ -1,12 +1,3 @@ -import { OAuthClient } from "~/entities/client.entity"; -import { OAuthToken } from "~/entities/token.entity"; -import { OAuthScope } from "~/entities/scope.entity"; -import { RefreshTokenGrant } from "~/grants/refresh_token.grant"; -import { OAuthRequest } from "~/requests/request"; -import { OAuthResponse } from "~/responses/response"; -import { DateInterval } from "~/utils/date_interval"; -import { JwtService } from "~/utils/jwt"; - import { inMemoryDatabase } from "../../../examples/in_memory/database"; import { inMemoryAccessTokenRepository, @@ -15,6 +6,14 @@ import { inMemoryScopeRepository, inMemoryUserRepository, } from "../../../examples/in_memory/repository"; +import { OAuthClient } from "../../../src/entities/client.entity"; +import { OAuthScope } from "../../../src/entities/scope.entity"; +import { OAuthToken } from "../../../src/entities/token.entity"; +import { RefreshTokenGrant } from "../../../src/grants/refresh_token.grant"; +import { OAuthRequest } from "../../../src/requests/request"; +import { OAuthResponse } from "../../../src/responses/response"; +import { DateInterval } from "../../../src/utils/date_interval"; +import { JwtService } from "../../../src/utils/jwt"; import { expectTokenResponse } from "./client_credentials.grant.spec"; describe("refresh_token grant", () => { diff --git a/test/unit/index.spec.ts b/test/unit/index.spec.ts index ebbccc66..fdb1f594 100644 --- a/test/unit/index.spec.ts +++ b/test/unit/index.spec.ts @@ -1,8 +1,8 @@ -import { ErrorType, OAuthException } from "~/exceptions/oauth.exception"; -import { JwtService } from "~/utils/jwt"; +import { ErrorType, OAuthException } from "../../src/exceptions/oauth.exception"; +import { JwtService } from "../../src/utils/jwt"; it("can use the index.ts file", async () => { - const module = await import("~/index"); + const module = await import("../../src/index"); expect(module).toBeDefined(); expect(new module.OAuthException("test", ErrorType.AccessDenied)).toBeInstanceOf(OAuthException) diff --git a/tsconfig.json b/tsconfig.json index 2618dfaf..d0497e87 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,10 +19,6 @@ "removeComments": true, "sourceMap": true, "strictFunctionTypes": true, - "strictNullChecks": true, - "baseUrl": "./", - "paths": { - "~/*": ["src/*"] - } + "strictNullChecks": true } }