fix: 🐛 Fixes TS config + lint etc
This commit is contained in:
parent
e2e1ff8278
commit
46632691bf
|
@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -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,
|
||||
},
|
||||
}
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
export default init
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
"exclude": [
|
||||
"node_modules",
|
||||
"**/__tests__/*",
|
||||
"**/__mocks__/*",
|
||||
"**/*.test.ts"
|
||||
"**/__mocks__/*"
|
||||
]
|
||||
}
|
|
@ -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'))
|
||||
}
|
||||
|
|
|
@ -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 = <T>(data: T): Promise<T> =>
|
||||
|
@ -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
|
||||
|
|
|
@ -11,7 +11,7 @@ import {
|
|||
Skola24Child,
|
||||
TimetableEntry,
|
||||
User,
|
||||
} from '../../api/lib/types'
|
||||
} from '@skolplattformen/api';
|
||||
|
||||
const data: any = {
|
||||
'39b59e-bf4b9f-f68ac25321-977218-bf0': {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -16,6 +16,5 @@
|
|||
"node_modules",
|
||||
"**/__tests__/*",
|
||||
"**/__mocks__/*",
|
||||
"**/*.test.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 };
|
|
@ -17,6 +17,7 @@ export interface CookieManager {
|
|||
setCookieString: (cookieString: string, url: string) => Promise<void>
|
||||
getCookieString: (url: string) => Promise<string>
|
||||
clearAll: () => Promise<void>
|
||||
removeAllCookies?: () => Promise<void>
|
||||
}
|
||||
|
||||
export interface RequestInit {
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
"skipDefaultLibCheck": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@skolplattformen/api": [
|
||||
"libs/api/lib/index.ts"
|
||||
],
|
||||
"@skolplattformen/api-skolplattformen": [
|
||||
"libs/api-skolplattformen/lib/index.ts"
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue