From 46632691bf506199e3e51696e1e26a8c53c42e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sarstr=C3=B6m?= Date: Fri, 12 Nov 2021 13:46:25 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Fixes=20TS=20config=20+?= =?UTF-8?q?=20lint=20etc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/api-hjarntorget/.eslintrc | 23 +++++++++++++++++++ libs/api-hjarntorget/.eslintrc.js | 19 --------------- .../lib/apiHjarntorget.test.ts | 8 +++---- libs/api-hjarntorget/lib/apiHjarntorget.ts | 19 ++++++++------- libs/api-hjarntorget/lib/index.ts | 23 ++++++------------- libs/api-hjarntorget/lib/loginStatus.ts | 3 +-- libs/api-hjarntorget/tsconfig.json | 3 +-- .../{.eslintrc.json => .eslintrc} | 0 libs/api-skolplattformen/lib/api.test.ts | 3 ++- libs/api-skolplattformen/lib/api.ts | 9 ++++---- libs/api-skolplattformen/lib/fakeData.ts | 2 +- libs/api-skolplattformen/lib/index.ts | 12 ++-------- libs/api-skolplattformen/lib/loginStatus.ts | 3 +-- .../lib/loginStatusChecker.ts | 6 ++--- libs/api-skolplattformen/tsconfig.json | 1 - libs/api/lib/index.ts | 16 +++++++++++++ libs/api/lib/types.ts | 1 + tsconfig.base.json | 3 +++ 18 files changed, 77 insertions(+), 77 deletions(-) create mode 100644 libs/api-hjarntorget/.eslintrc delete mode 100644 libs/api-hjarntorget/.eslintrc.js rename libs/api-skolplattformen/{.eslintrc.json => .eslintrc} (100%) create mode 100644 libs/api/lib/index.ts diff --git a/libs/api-hjarntorget/.eslintrc b/libs/api-hjarntorget/.eslintrc new file mode 100644 index 00000000..72de0bda --- /dev/null +++ b/libs/api-hjarntorget/.eslintrc @@ -0,0 +1,23 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../.eslintrc.json"], + "ignorePatterns": ["!**/*", "public", ".cache", "node_modules"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": { + "@typescript-eslint/ban-ts-comment": "off" + } + }, + { + "files": ["*.js", "*.jsx"], + "rules": { + "@typescript-eslint/no-var-requires": "off" + } + } + ] + } + \ No newline at end of file diff --git a/libs/api-hjarntorget/.eslintrc.js b/libs/api-hjarntorget/.eslintrc.js deleted file mode 100644 index 26eb2c9b..00000000 --- a/libs/api-hjarntorget/.eslintrc.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', // Specifies the ESLint parser - parserOptions: { - ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features - sourceType: 'module', // Allows for the use of imports - project: ['./tsconfig.eslint.json'], - }, - extends: ['airbnb-typescript/base', 'prettier'], - plugins: ['prettier'], - ignorePatterns: ['*.test.ts'], - rules: { - // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs - // e.g. "@typescript-eslint/explicit-function-return-type": "off", - // '@typescript-eslint/indent': ['error', 2], - '@typescript-eslint/semi': [2, 'never'], - 'max-len': ['error', { code: 120, ignoreUrls: true }], - 'import/prefer-default-export': 0, - }, -} diff --git a/libs/api-hjarntorget/lib/apiHjarntorget.test.ts b/libs/api-hjarntorget/lib/apiHjarntorget.test.ts index 452baa15..6418c968 100644 --- a/libs/api-hjarntorget/lib/apiHjarntorget.test.ts +++ b/libs/api-hjarntorget/lib/apiHjarntorget.test.ts @@ -1,9 +1,6 @@ -import init from './' import { ApiHjarntorget } from './apiHjarntorget' -import { Fetcher } from '../../api/lib/fetcher' import { checkStatus } from './loginStatus' - -import { wrapToughCookie } from '../../api/lib/cookies' +import { wrapToughCookie } from '@skolplattformen/api' import { CookieJar } from 'tough-cookie' const setupSuccessfullLoginInitiation = (fetcherMock: jest.Mock) => { @@ -83,7 +80,7 @@ describe('api', () => { fetcherMock = fetcher as jest.Mock const cookieManager = wrapToughCookie(new CookieJar()) - cookieManager.clearAll + cookieManager.clearAll(); api = new ApiHjarntorget(jest.fn(), cookieManager) api.replaceFetcher(fetcher) }) @@ -210,6 +207,7 @@ describe('api', () => { expect(api.isLoggedIn).toBe(false) }) it('forgets personalNumber', async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any (api as any).personalNumber = 'my personal number' api.isLoggedIn = true diff --git a/libs/api-hjarntorget/lib/apiHjarntorget.ts b/libs/api-hjarntorget/lib/apiHjarntorget.ts index 295a1bc3..8b33780e 100644 --- a/libs/api-hjarntorget/lib/apiHjarntorget.ts +++ b/libs/api-hjarntorget/lib/apiHjarntorget.ts @@ -1,10 +1,9 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { DateTime, FixedOffsetZone } from 'luxon' import { EventEmitter } from 'events' import * as html from 'node-html-parser' import { decode } from 'he' -import wrap, { Fetcher, FetcherOptions } from '../../api/lib/fetcher' -import { - CalendarItem, +import { toMarkdown, Api, URLSearchParams, LoginStatusChecker, CalendarItem, Classmate, CookieManager, EtjanstChild, @@ -15,12 +14,11 @@ import { ScheduleItem, Skola24Child, TimetableEntry, - User -} from "../../api/lib/types" -import { LoginStatusChecker } from '../../api/lib/loginStatus' -import { URLSearchParams } from '../../api/lib/URLSearchParams' -import { Api } from '../../api/lib/api' -import { toMarkdown } from '../../api/lib/parseHtml' + User, + Fetcher, + FetcherOptions, + wrap +} from '@skolplattformen/api' import { checkStatus } from './loginStatus' import { extractMvghostRequestBody, parseCalendarItem } from './parse/parsers' import { @@ -91,7 +89,8 @@ export class ApiHjarntorget extends EventEmitter implements Api { options?: FetcherOptions ) { super() - this.realFetcher = this.fetch = wrap(fetch, options) + this.fetch = wrap(fetch, options); + this.realFetcher = this.fetch; this.cookieManager = cookieManager } diff --git a/libs/api-hjarntorget/lib/index.ts b/libs/api-hjarntorget/lib/index.ts index b4054dd2..e72e8b8e 100644 --- a/libs/api-hjarntorget/lib/index.ts +++ b/libs/api-hjarntorget/lib/index.ts @@ -1,28 +1,19 @@ -import { Api } from '../../api/lib/api' -import { FetcherOptions } from '../../api/lib/fetcher' -import { Fetch } from '../../api/lib/types' -import { - RNCookieManager, +import { ApiHjarntorget } from './apiHjarntorget' +import { Api, FetcherOptions, Fetch, RNCookieManager, ToughCookieJar, wrapReactNativeCookieManager, - wrapToughCookie, -} from '../../api/lib/cookies' -import { ApiHjarntorget } from './apiHjarntorget' - -export { Api, FetcherOptions } -export * from '../../api/lib/types' -export { LoginStatusChecker } from '../../api/lib/loginStatus' + wrapToughCookie } from '@skolplattformen/api' const init = ( - fetch: Fetch, - cookieManagerImpl: RNCookieManager | ToughCookieJar, + fetchImpl: Fetch, + cookieManagerImpl: any, options?: FetcherOptions ): Api => { // prettier-ignore const cookieManager = ((cookieManagerImpl as RNCookieManager).get) ? wrapReactNativeCookieManager(cookieManagerImpl as RNCookieManager) : wrapToughCookie(cookieManagerImpl as ToughCookieJar) - return new ApiHjarntorget(fetch, cookieManager, options) + return new ApiHjarntorget(fetchImpl, cookieManager, options) } -export default init \ No newline at end of file +export default init diff --git a/libs/api-hjarntorget/lib/loginStatus.ts b/libs/api-hjarntorget/lib/loginStatus.ts index de0380c5..2b095601 100644 --- a/libs/api-hjarntorget/lib/loginStatus.ts +++ b/libs/api-hjarntorget/lib/loginStatus.ts @@ -1,6 +1,5 @@ import { EventEmitter } from 'events' -import { Fetcher } from '../../api/lib/fetcher' -import { LoginStatusChecker } from '../../api/lib/loginStatus' +import { LoginStatusChecker, Fetcher} from '@skolplattformen/api' import { extractAuthGbgLoginRequestBody, extractHjarntorgetSAMLLogin diff --git a/libs/api-hjarntorget/tsconfig.json b/libs/api-hjarntorget/tsconfig.json index 97842377..96f33f53 100644 --- a/libs/api-hjarntorget/tsconfig.json +++ b/libs/api-hjarntorget/tsconfig.json @@ -15,7 +15,6 @@ "exclude": [ "node_modules", "**/__tests__/*", - "**/__mocks__/*", - "**/*.test.ts" + "**/__mocks__/*" ] } \ No newline at end of file diff --git a/libs/api-skolplattformen/.eslintrc.json b/libs/api-skolplattformen/.eslintrc similarity index 100% rename from libs/api-skolplattformen/.eslintrc.json rename to libs/api-skolplattformen/.eslintrc diff --git a/libs/api-skolplattformen/lib/api.test.ts b/libs/api-skolplattformen/lib/api.test.ts index f0ae821f..4c2496ff 100644 --- a/libs/api-skolplattformen/lib/api.test.ts +++ b/libs/api-skolplattformen/lib/api.test.ts @@ -1,6 +1,6 @@ import init from './' import { ApiSkolplattformen } from './api' -import { Fetch, Headers, Response } from '../../api/lib/types' +import { Fetch, Headers, Response } from '@skolplattformen/api' import CookieManager from '@react-native-cookies/cookies' describe('api', () => { @@ -110,6 +110,7 @@ describe('api', () => { const personalNumber = 'my personal number' try { await api.login(personalNumber) + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { expect(error.message).toEqual(expect.stringContaining('Server Error')) } diff --git a/libs/api-skolplattformen/lib/api.ts b/libs/api-skolplattformen/lib/api.ts index 417193b2..63cb3f4c 100644 --- a/libs/api-skolplattformen/lib/api.ts +++ b/libs/api-skolplattformen/lib/api.ts @@ -2,7 +2,7 @@ import { EventEmitter } from 'events' import { decode } from 'he' import { DateTime } from 'luxon' import * as html from 'node-html-parser' -import { LoginStatusChecker } from '../../api/lib/loginStatus' +import { LoginStatusChecker, FetcherOptions, Fetcher, wrap } from '@skolplattformen/api' import { AuthTicket, CalendarItem, @@ -20,13 +20,12 @@ import { TimetableEntry, User, Response -} from '../../api/lib/types' +} from '@skolplattformen/api' import * as routes from './routes' import * as parse from './parse/index' -import wrap, { Fetcher, FetcherOptions } from '../../api/lib/fetcher' import * as fake from './fakeData' import { checkStatus } from './loginStatusChecker' -import { Api } from '../../api/lib/api' +import { Api } from '@skolplattformen/api' import { Language } from '@skolplattformen/curriculum' const fakeResponse = (data: T): Promise => @@ -55,6 +54,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api { private personalNumber?: string + // eslint-disable-next-line @typescript-eslint/no-explicit-any private headers: any private cookieManager: CookieManager @@ -199,6 +199,7 @@ export class ApiSkolplattformen extends EventEmitter implements Api { this.emit('login') }, 50) + // eslint-disable-next-line @typescript-eslint/no-explicit-any const emitter: any = new EventEmitter() emitter.token = 'fake' return emitter diff --git a/libs/api-skolplattformen/lib/fakeData.ts b/libs/api-skolplattformen/lib/fakeData.ts index daeea356..c4699e42 100644 --- a/libs/api-skolplattformen/lib/fakeData.ts +++ b/libs/api-skolplattformen/lib/fakeData.ts @@ -11,7 +11,7 @@ import { Skola24Child, TimetableEntry, User, -} from '../../api/lib/types' +} from '@skolplattformen/api'; const data: any = { '39b59e-bf4b9f-f68ac25321-977218-bf0': { diff --git a/libs/api-skolplattformen/lib/index.ts b/libs/api-skolplattformen/lib/index.ts index 9e7d03d4..bca236c3 100644 --- a/libs/api-skolplattformen/lib/index.ts +++ b/libs/api-skolplattformen/lib/index.ts @@ -1,16 +1,8 @@ import { ApiSkolplattformen } from './api' -import { Api } from '../../api/lib/api' -import { FetcherOptions } from '../../api/lib/fetcher' -import { Fetch } from '../../api/lib/types' -import { - RNCookieManager, +import { Api, FetcherOptions, Fetch, RNCookieManager, ToughCookieJar, wrapReactNativeCookieManager, - wrapToughCookie, -} from '../../api/lib/cookies' - -export * from '../../api/lib/types' -export { LoginStatusChecker } from '../../api/lib/loginStatus' + wrapToughCookie } from '@skolplattformen/api' const init = ( fetchImpl: Fetch, diff --git a/libs/api-skolplattformen/lib/loginStatus.ts b/libs/api-skolplattformen/lib/loginStatus.ts index a473ee12..4b1f9da7 100644 --- a/libs/api-skolplattformen/lib/loginStatus.ts +++ b/libs/api-skolplattformen/lib/loginStatus.ts @@ -1,7 +1,6 @@ import { EventEmitter } from 'events' import { loginStatus } from './routes' -import { Fetcher } from '../../api/lib/fetcher' -import { AuthTicket } from '../..//api/lib/types' +import { Fetcher, AuthTicket } from '@skolplattformen/api' /* export enum LoginEvent { diff --git a/libs/api-skolplattformen/lib/loginStatusChecker.ts b/libs/api-skolplattformen/lib/loginStatusChecker.ts index 9ad1f322..a2fab185 100644 --- a/libs/api-skolplattformen/lib/loginStatusChecker.ts +++ b/libs/api-skolplattformen/lib/loginStatusChecker.ts @@ -1,8 +1,6 @@ import { EventEmitter } from 'events'; import { loginStatus } from './routes'; -import { AuthTicket } from '../../api/lib/types'; -import { Fetcher } from '../../api/lib/fetcher'; -import { LoginStatusChecker } from '.'; +import { AuthTicket, Fetcher, LoginStatusChecker } from '@skolplattformen/api'; export class Checker extends EventEmitter { public token: string; @@ -11,7 +9,7 @@ export class Checker extends EventEmitter { private url: string; - private cancelled: boolean = false; + private cancelled = false; constructor(fetcher: Fetcher, ticket: AuthTicket) { super(); diff --git a/libs/api-skolplattformen/tsconfig.json b/libs/api-skolplattformen/tsconfig.json index 97842377..bf50a3eb 100644 --- a/libs/api-skolplattformen/tsconfig.json +++ b/libs/api-skolplattformen/tsconfig.json @@ -16,6 +16,5 @@ "node_modules", "**/__tests__/*", "**/__mocks__/*", - "**/*.test.ts" ] } \ No newline at end of file diff --git a/libs/api/lib/index.ts b/libs/api/lib/index.ts new file mode 100644 index 00000000..eef1c057 --- /dev/null +++ b/libs/api/lib/index.ts @@ -0,0 +1,16 @@ +import wrap from './fetcher' + +export { toMarkdown } from './parseHtml' +export * from './types' +export { LoginStatusChecker } from './loginStatus' +export { Api } from './api' +export { FetcherOptions, Fetcher } from './fetcher' +export { + RNCookieManager, + ToughCookieJar, + wrapReactNativeCookieManager, + wrapToughCookie, +} from './cookies' +export { URLSearchParams } from './URLSearchParams' + +export { wrap }; \ No newline at end of file diff --git a/libs/api/lib/types.ts b/libs/api/lib/types.ts index 5f779adf..77bdc8b1 100644 --- a/libs/api/lib/types.ts +++ b/libs/api/lib/types.ts @@ -17,6 +17,7 @@ export interface CookieManager { setCookieString: (cookieString: string, url: string) => Promise getCookieString: (url: string) => Promise clearAll: () => Promise + removeAllCookies?: () => Promise } export interface RequestInit { diff --git a/tsconfig.base.json b/tsconfig.base.json index 2fc89b42..c5e09c7d 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -14,6 +14,9 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { + "@skolplattformen/api": [ + "libs/api/lib/index.ts" + ], "@skolplattformen/api-skolplattformen": [ "libs/api-skolplattformen/lib/index.ts" ],