diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index d0c38aca6..92c01bfb4 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -6,8 +6,6 @@ module.exports = {
},
extends: [
'@nuxtjs/eslint-config-typescript',
- // Enable typescript-specific recommended rules
- 'plugin:@typescript-eslint/recommended',
'plugin:nuxt/recommended',
// Turns off all rules that are unnecessary or might conflict with Prettier (needs to be last)
'prettier',
@@ -81,19 +79,35 @@ module.exports = {
parser: '@typescript-eslint/parser',
// Correct root
tsconfigRootDir: __dirname,
- // Path to tsconfig to enable rules that require type information
- project: './tsconfig.json',
+ // Enable rules that require type information
+ project: true,
// Correctly handle vue files
extraFileExtensions: ['.vue'],
},
extends: [
- // Enable recommended rules for typescript that use typing information (may be CPU intensive)
- 'plugin:@typescript-eslint/recommended-requiring-type-checking',
+ // Enable typescript-specific stylistic rules
+ 'plugin:@typescript-eslint/stylistic-type-checked',
+ // Enable strict rules for typescript that use typing information (may be CPU intensive)
+ 'plugin:@typescript-eslint/strict-type-checked',
],
rules: {
// The graphql processor disables the vue processor, so some rules need to be disenabled
// TODO: Remove this once https://github.com/eslint/eslint/issues/14745 is fixed and we can use multiple processors
'vue/comment-directive': 'off',
+ // Allow any type (for now)
+ '@typescript-eslint/no-explicit-any': 'warn',
+ // TODO: Remove this once all errors are fixed
+ '@typescript-eslint/no-unsafe-call': 'warn',
+ // TODO: Remove this once all errors are fixed
+ '@typescript-eslint/no-unsafe-member-access': 'warn',
+ // TODO: Remove this once all errors are fixed
+ '@typescript-eslint/no-unsafe-argument': 'warn',
+ // TODO: Remove this once all errors are fixed
+ '@typescript-eslint/no-unsafe-return': 'warn',
+ // TODO: Remove this once all errors are fixed
+ '@typescript-eslint/no-unsafe-assignment': 'warn',
+ // TODO: Remove this once all errors are fixed
+ '@typescript-eslint/no-redundant-type-constituents': 'warn',
},
},
{
diff --git a/app/router.options.ts b/app/router.options.ts
index 1708ad99f..0d28a2029 100644
--- a/app/router.options.ts
+++ b/app/router.options.ts
@@ -4,8 +4,8 @@ import type { RouterConfig } from '@nuxt/schema'
// ex: To Top
// https://github.com/nuxt/framework/discussions/5561
// https://router.vuejs.org/api/#routeroptions
-export default {
- scrollBehavior: (to, from, savedPosition) => {
+export default {
+ scrollBehavior: (to) => {
if (to.hash) {
return {
el: to.hash,
@@ -13,4 +13,4 @@ export default {
}
}
},
-}
+} as RouterConfig
diff --git a/components/DocumentEditor.vue b/components/DocumentEditor.vue
index a31966749..223a2f227 100644
--- a/components/DocumentEditor.vue
+++ b/components/DocumentEditor.vue
@@ -218,7 +218,7 @@ const authors = computed({
? formatAuthor(useFragment(PersonFullDetails, author))
: '',
})),
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -229,7 +229,7 @@ const keywords = computed({
document.value?.keywords.map((keyword) => ({
value: keyword,
})),
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -246,7 +246,7 @@ const externalLinks = computed(() => [
const title = computed({
get: () => document.value?.title,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -255,7 +255,7 @@ const published = computed({
document.value && 'published' in document.value
? document.value.published
: null,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -265,9 +265,9 @@ const journal = computed({
'in' in document.value &&
document.value.in &&
'journal' in document.value.in
- ? document.value.in?.journal?.name
+ ? document.value.in.journal?.name
: null,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -277,9 +277,9 @@ const volume = computed({
'in' in document.value &&
document.value.in &&
'volume' in document.value.in
- ? document.value.in?.volume
+ ? document.value.in.volume
: null,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -289,9 +289,9 @@ const issue = computed({
'in' in document.value &&
document.value.in &&
'number' in document.value.in
- ? document.value.in?.number
+ ? document.value.in.number
: null,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -301,7 +301,7 @@ const pages = computed({
? (document.value.pageStart ?? '') +
(document.value.pageEnd ? '-' + document.value.pageEnd : '')
: null,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
@@ -310,7 +310,7 @@ const abstract = computed({
document.value && 'abstract' in document.value
? document.value.abstract
: null,
- set: (value) => {
+ set: (_value) => {
// TODO: implement
},
})
diff --git a/components/SideBar.vue b/components/SideBar.vue
index 61620806b..b8cf6d045 100644
--- a/components/SideBar.vue
+++ b/components/SideBar.vue
@@ -118,7 +118,7 @@ export default defineComponent({
const groups = useResult(
result,
null,
- (data) => data?.me?.groups,
+ (data) => data.me.groups,
) as unknown as any[]
const uiStore = useUiStore()
diff --git a/components/tagify.vue b/components/tagify.vue
index cdea01420..6a35dc530 100644
--- a/components/tagify.vue
+++ b/components/tagify.vue
@@ -21,9 +21,7 @@ export default defineComponent({
default: 'input',
},
settings: {
- type: Object as PropType<
- Tagify.TagifyConstructorSettings
- >,
+ type: Object as PropType,
default: () => ({}),
},
value: {
@@ -57,10 +55,10 @@ export default defineComponent({
},
mounted() {
// Install tagify
- const tagifySettings: Tagify.TagifyConstructorSettings = {
+ const tagifySettings: Tagify.TagifyConstructorSettings = {
delimiters: this.delimiters,
whitelist: this.whitelist,
- ...(this.settings ?? []),
+ ...this.settings,
}
if (this.tagClass) {
if (tagifySettings.classNames) {
@@ -85,7 +83,7 @@ export default defineComponent({
// Update value prop
this.$emit(
'input',
- (event.target as HTMLInputElement | null)?.value || [],
+ (event.target as HTMLInputElement | null)?.value ?? [],
)
},
},
diff --git a/composables/detectOs.ts b/composables/detectOs.ts
index 0340b552a..1c6e3889e 100644
--- a/composables/detectOs.ts
+++ b/composables/detectOs.ts
@@ -10,7 +10,7 @@ export function detectOs() {
return 'mac'
} else if (windowsPlatforms.includes(platform)) {
return 'windows'
- } else if (/Linux/.test(platform)) {
+ } else if (platform.includes('Linux')) {
return 'linux'
}
}
diff --git a/config.ts b/config.ts
index aae832c79..a78347bfc 100644
--- a/config.ts
+++ b/config.ts
@@ -29,7 +29,7 @@ export enum Environment {
* Taken from https://stackoverflow.com/a/41548441
*/
function enumFromStringValue(
- enm: { [s: string]: T },
+ enm: Record,
value: string,
): T | undefined {
return (Object.values(enm) as unknown as string[]).includes(value)
@@ -75,14 +75,14 @@ export function constructConfig() {
return {
redis: {
port: Number(process.env.REDIS_PORT) || 6380,
- host: process.env.REDIS_HOST || 'localhost',
- password: process.env.REDIS_PASSWORD || 'jabref',
+ host: process.env.REDIS_HOST ?? 'localhost',
+ password: process.env.REDIS_PASSWORD ?? 'jabref',
},
session: {
- primarySecret: process.env.SESSION_SECRET_PRIMARY || 'session_secret',
- secondarySecret: process.env.SESSION_SECRET_SECONDARY || 'session_secret',
+ primarySecret: process.env.SESSION_SECRET_PRIMARY ?? 'session_secret',
+ secondarySecret: process.env.SESSION_SECRET_SECONDARY ?? 'session_secret',
},
- githubRepoToken: process.env.GITHUB_REPO_TOKEN || 'UNDEFINED',
+ githubRepoToken: process.env.GITHUB_REPO_TOKEN ?? 'UNDEFINED',
public: {
environment: getEnvironment(),
},
diff --git a/layouts/content.vue b/layouts/content.vue
index 4d230dc61..01634e552 100644
--- a/layouts/content.vue
+++ b/layouts/content.vue
@@ -84,7 +84,7 @@ if (process.client) {
value: (option: { top: number; left: number }) => {
const els = document.querySelectorAll(contentElementSelector)
const el = els[els.length - 1]
- if (el && el.scrollHeight > el.clientHeight) {
+ if (el.scrollHeight > el.clientHeight) {
// element can be scrolled
el.scrollTo(option.left, el.scrollTop + option.top - offset)
} else {
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 363c2cbb7..bcc9669c3 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -238,8 +238,8 @@ export default defineNuxtConfig({
? {
// Gitpod is served over https, so we need to use wss as well
protocol: 'wss',
- host: `3000-${process.env.GITPOD_WORKSPACE_ID || ''}.${
- process.env.GITPOD_WORKSPACE_CLUSTER_HOST || ''
+ host: `3000-${process.env.GITPOD_WORKSPACE_ID ?? ''}.${
+ process.env.GITPOD_WORKSPACE_CLUSTER_HOST ?? ''
}`,
port: 443,
}
diff --git a/package.json b/package.json
index e72f0f840..19106c887 100644
--- a/package.json
+++ b/package.json
@@ -113,8 +113,8 @@
"@types/supertest": "^2.0.12",
"@types/uuid": "^9.0.2",
"@types/yaireo__tagify": "^4.17.0",
- "@typescript-eslint/eslint-plugin": "^5.61.0",
- "@typescript-eslint/parser": "^5.61.0",
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
+ "@typescript-eslint/parser": "^6.4.1",
"@vee-validate/nuxt": "^4.10.5",
"@vitest/coverage-v8": "^0.33.0",
"@volar/vue-typescript": "^1.6.5",
@@ -125,13 +125,13 @@
"concurrently": "^8.2.0",
"cross-env": "^7.0.3",
"dotenv": "^16.3.1",
- "eslint": "^8.44.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-import-resolver-typescript": "^3.5.5",
+ "eslint": "^8.48.0",
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-import-resolver-typescript": "^3.6.0",
"eslint-plugin-nuxt": "^4.0.0",
- "eslint-plugin-unused-imports": "^2.0.0",
- "eslint-plugin-vitest": "^0.2.6",
- "eslint-plugin-vue": "^9.15.1",
+ "eslint-plugin-unused-imports": "^3.0.0",
+ "eslint-plugin-vitest": "^0.2.8",
+ "eslint-plugin-vue": "^9.17.0",
"graphql-codegen-typescript-validation-schema": "^0.11.1",
"mount-vue-component": "^0.10.2",
"naive-ui": "^2.34.4",
diff --git a/pages/_storybook/external-iframe.vue b/pages/_storybook/external-iframe.vue
index f7b35e726..fd12b4a05 100644
--- a/pages/_storybook/external-iframe.vue
+++ b/pages/_storybook/external-iframe.vue
@@ -40,6 +40,7 @@ export function renderToCanvas(
): void {
const element = storyFn()
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!element) {
showError({
title: `Expecting a Vue component from the story: "${name}" of "${title}".`,
diff --git a/pages/dashboard.vue b/pages/dashboard.vue
index 8c1330418..db4d5f315 100644
--- a/pages/dashboard.vue
+++ b/pages/dashboard.vue
@@ -78,6 +78,7 @@ const documents = computed(
result.value?.me?.documents.edges.map((edge) => edge.node).filter(notEmpty),
)
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
const onScrollToBottom = () => {
if (result.value?.me?.documents.pageInfo.hasNextPage) {
void fetchMore({
@@ -85,7 +86,7 @@ const onScrollToBottom = () => {
groupId: ui.selectedGroupId,
query: ui.activeSearchQuery,
first: FIRST,
- after: result.value?.me?.documents.pageInfo.endCursor ?? undefined,
+ after: result.value.me.documents.pageInfo.endCursor ?? undefined,
},
})
}
diff --git a/pages/user/login.vue b/pages/user/login.vue
index 110d7b729..4be8d1733 100644
--- a/pages/user/login.vue
+++ b/pages/user/login.vue
@@ -151,7 +151,7 @@ onDone((result) => {
: 'Unknown error'
}
})
-const error = computed(() => graphqlError.value || otherError.value)
+const error = computed(() => graphqlError.value ?? otherError.value)
// TODO: Implement remember login
const rememberLogin = ref(false)
diff --git a/pages/user/register.vue b/pages/user/register.vue
index fd84d0245..a3930d5be 100644
--- a/pages/user/register.vue
+++ b/pages/user/register.vue
@@ -114,7 +114,7 @@ export default defineComponent({
cacheCurrentUser(
cache,
data?.signup?.__typename === 'UserReturned'
- ? data?.signup?.user
+ ? data.signup.user
: null,
)
},
diff --git a/plugins/apollo.ts b/plugins/apollo.ts
index b6cfa5092..f022d9b3b 100644
--- a/plugins/apollo.ts
+++ b/plugins/apollo.ts
@@ -7,6 +7,7 @@ import { Environment } from '~/config'
import { cache } from '../apollo/cache'
export default defineNuxtPlugin((nuxtApp) => {
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!nuxtApp) {
// For some strange reason, nuxtApp is not defined for storybook, so don't do anything in this case
return
@@ -17,6 +18,7 @@ export default defineNuxtPlugin((nuxtApp) => {
// Print errors
const errorLink = onError((error) => {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison --- bug in nuxt?
if (config.public.environment !== Environment.Production) {
logErrorMessages(error)
}
diff --git a/plugins/vue.directives.ts b/plugins/vue.directives.ts
index f5c762c48..d637940cf 100644
--- a/plugins/vue.directives.ts
+++ b/plugins/vue.directives.ts
@@ -3,6 +3,8 @@
export default defineNuxtPlugin((nuxtApp) => {
// Register a global custom directive called `v-focus` that auto-focuses the given element
nuxtApp.vueApp.directive('focus', {
- mounted: (element: HTMLElement) => element.focus(),
+ mounted: (element: HTMLElement) => {
+ element.focus()
+ },
})
})
diff --git a/server/api/getLatestRelease.ts b/server/api/getLatestRelease.ts
index cb69508ce..70325c0c6 100644
--- a/server/api/getLatestRelease.ts
+++ b/server/api/getLatestRelease.ts
@@ -33,7 +33,7 @@ export default defineEventHandler(async () => {
}
}
return {
- version: response?.data?.repository?.releases?.nodes[0].tagName.replace(
+ version: response.data?.repository?.releases?.nodes[0].tagName.replace(
'v',
'',
), // something like 5.7
diff --git a/server/api/index.ts b/server/api/index.ts
index d69eb7a48..93d921c2f 100644
--- a/server/api/index.ts
+++ b/server/api/index.ts
@@ -61,6 +61,7 @@ http.IncomingMessage.Readable.prototype.unpipe = function (dest) {
state.pipes = []
this.pause()
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
for (let i = 0; i < dests.length; i++)
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
dests[i].emit('unpipe', this, { hasUnpiped: false })
diff --git a/server/context.ts b/server/context.ts
index e9c3436c3..893ed04b1 100644
--- a/server/context.ts
+++ b/server/context.ts
@@ -25,7 +25,7 @@ export function buildContext({
// @ts-expect-error: h3 doesn't provide correct types https://github.com/unjs/h3/issues/146
...passportBuildContext({ req: event.req, res: event.res }),
// The login method provided by graphql-passport doesn't work on azure, so we have to override it
- login: async (user, options) => {
+ login: async (user) => {
// @ts-expect-error: there are no correct types for this
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const session = event.req.session
@@ -42,7 +42,8 @@ export function buildContext({
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
session.save(function (err: any) {
if (err) {
- return reject(err)
+ reject(err)
+ return
}
// For some strange reason the session cookie is not set correctly on azure, so do this manually
// @ts-expect-error: internal
diff --git a/server/documents/resolvers.ts b/server/documents/resolvers.ts
index 3c2430bae..166069149 100644
--- a/server/documents/resolvers.ts
+++ b/server/documents/resolvers.ts
@@ -26,6 +26,7 @@ import {
} from './user.document.service'
// Fields that are stored as separate columns in the database
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
const specialFields: string[] = [
'author',
'editor',
@@ -255,26 +256,22 @@ export class DocumentResolver {
}
authors(document: UserDocument): (Person | Organization)[] {
- if (document.contributors) {
- // TODO: Already store authors separately on save?
- return document.contributors
- .filter((contributor) => contributor.role === 'AUTHOR')
- .sort((a, b) => a.position - b.position)
- .map((contributor) => {
- return contributor.entity.type === 'PERSON'
- ? {
- ...contributor.entity,
- __typename: 'Person',
- }
- : {
- id: contributor.entity.id,
- name: contributor.entity.name ?? '',
- __typename: 'Organization',
- }
- })
- } else {
- return []
- }
+ // TODO: Already store authors separately on save?
+ return document.contributors
+ .filter((contributor) => contributor.role === 'AUTHOR')
+ .sort((a, b) => a.position - b.position)
+ .map((contributor) => {
+ return contributor.entity.type === 'PERSON'
+ ? {
+ ...contributor.entity,
+ __typename: 'Person',
+ }
+ : {
+ id: contributor.entity.id,
+ name: contributor.entity.name ?? '',
+ __typename: 'Organization',
+ }
+ })
}
keywords(document: UserDocument): string[] {
diff --git a/server/documents/user.document.service.ts b/server/documents/user.document.service.ts
index ddd0156ac..0a62691c0 100644
--- a/server/documents/user.document.service.ts
+++ b/server/documents/user.document.service.ts
@@ -32,7 +32,7 @@ export type UserDocument = PlainUserDocument & {
})[]
}
-type UserDocumentsAndPageInfo = {
+interface UserDocumentsAndPageInfo {
documents: UserDocument[]
hasNextPage: boolean
}
@@ -68,6 +68,7 @@ export class UserDocumentService {
| UserDocument
| (UserDocumentCreateInput & { revisionHash?: string }),
): string {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
const { revisionNumber, revisionHash, ...documentWithoutRevision } =
document
return unsecureHash(documentWithoutRevision)
diff --git a/server/groups/resolvers.ts b/server/groups/resolvers.ts
index 9a7fbcfc1..af53873d8 100644
--- a/server/groups/resolvers.ts
+++ b/server/groups/resolvers.ts
@@ -92,6 +92,7 @@ export class Mutation {
isRegEx = group.searchGroup.isRegEx
} else if (group.texGroup) {
type = GroupType.TexGroup
+ // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars --- TODO: handle paths
paths = group.texGroup.paths
}
diff --git a/server/tsyringe.ts b/server/tsyringe.ts
index 062f292ab..c3c87143c 100644
--- a/server/tsyringe.ts
+++ b/server/tsyringe.ts
@@ -25,7 +25,10 @@ import { RedisClient } from './utils/services.factory'
export { injectable, instanceCachingFactory } from 'tsyringe'
-type InjectionSymbol = { sym: symbol; value: T | undefined }
+interface InjectionSymbol {
+ sym: symbol
+ value: T | undefined
+}
/**
* Define a new injection token.
@@ -178,11 +181,7 @@ export function fallback(
*/
export function register(
token: T,
- provider: ValueProvider>,
-): DependencyContainer
-export function register(
- token: T,
- provider: FactoryProvider>,
+ provider: ValueProvider> | FactoryProvider>,
): DependencyContainer
export function register(
token: T,
@@ -191,12 +190,7 @@ export function register(
): DependencyContainer
export function register(
token: T,
- provider: ClassProvider>,
- options?: RegistrationOptions,
-): DependencyContainer
-export function register(
- token: T,
- provider: constructor>,
+ provider: ClassProvider> | constructor>,
options?: RegistrationOptions,
): DependencyContainer
export function register(
diff --git a/server/user/auth.email.strategy.ts b/server/user/auth.email.strategy.ts
index c3cd6f7a2..336ab2bc3 100644
--- a/server/user/auth.email.strategy.ts
+++ b/server/user/auth.email.strategy.ts
@@ -1,12 +1,8 @@
import { User } from '@prisma/client'
-import { Request as ExpressRequest } from 'express'
import { GraphQLLocalStrategy } from 'graphql-passport'
import { AuthenticationMessage, AuthService } from './auth.service'
-export default class EmailStrategy extends GraphQLLocalStrategy<
- User,
- ExpressRequest
-> {
+export default class EmailStrategy extends GraphQLLocalStrategy {
constructor(private authService: AuthService) {
super(
async (
diff --git a/server/user/auth.service.ts b/server/user/auth.service.ts
index ca9afb3ff..9c7f1530e 100644
--- a/server/user/auth.service.ts
+++ b/server/user/auth.service.ts
@@ -63,7 +63,7 @@ export class AuthService {
if (!user) {
return true
}
- const PREFIX = process.env.PREFIX || 'forgot-password'
+ const PREFIX = process.env.PREFIX ?? 'forgot-password'
const key = PREFIX + user.id
const token = generateToken()
const hashedToken = await hash(token)
@@ -131,7 +131,7 @@ export class AuthService {
],
}
}
- const PREFIX = process.env.PREFIX || 'forgot-password'
+ const PREFIX = process.env.PREFIX ?? 'forgot-password'
const key = PREFIX + id
const hashedToken = await this.redisClient.get(key)
if (!hashedToken) {
diff --git a/server/user/passport-initializer.ts b/server/user/passport-initializer.ts
index 794f93336..2d04736da 100644
--- a/server/user/passport-initializer.ts
+++ b/server/user/passport-initializer.ts
@@ -17,12 +17,12 @@ export default class PassportInitializer {
initialize(): void {
passport.use(new EmailStrategy(this.accountService))
- passport.serializeUser((user, done) =>
- this.serializeUser(user, done),
- )
- passport.deserializeUser((id, done) =>
- this.deserializeUser(id, done),
- )
+ passport.serializeUser((user, done) => {
+ this.serializeUser(user, done)
+ })
+ passport.deserializeUser((id, done) => {
+ this.deserializeUser(id, done)
+ })
}
createHandler(): EventHandler {
@@ -30,6 +30,7 @@ export default class PassportInitializer {
// TODO: Use redis store also for development as soon as mock-redis is compatible with redis v4
let store: session.Store
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison --- bug in nuxt?
if (config.public.environment === Environment.Production) {
store = new RedisStore({
client: this.redisClient,
@@ -54,6 +55,7 @@ export default class PassportInitializer {
name: 'session',
cookie: {
// Serve secure cookies (requires HTTPS, so only in production)
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison --- bug in nuxt?
secure: config.public.environment === Environment.Production,
// Blocks the access cookie from javascript, preventing XSS attacks
httpOnly: true,
@@ -96,12 +98,14 @@ export default class PassportInitializer {
this.accountService
.getUserById(id)
.then((user) => {
- if (user === undefined) {
+ if (user === null) {
done("account doesn't exist", undefined)
} else {
done(null, user)
}
})
- .catch((error) => done(error, null))
+ .catch((error) => {
+ done(error, null)
+ })
}
}
diff --git a/server/user/resolvers.ts b/server/user/resolvers.ts
index a57b5cefd..153602dde 100644
--- a/server/user/resolvers.ts
+++ b/server/user/resolvers.ts
@@ -95,7 +95,7 @@ export class Mutation {
{
path: ['email'],
message:
- (typeof info === 'string' ? info : info?.message) ||
+ (typeof info === 'string' ? info : info?.message) ??
'Unknown error while logging in.',
},
],
diff --git a/server/utils/services.factory.ts b/server/utils/services.factory.ts
index 74275998d..1724fdc97 100644
--- a/server/utils/services.factory.ts
+++ b/server/utils/services.factory.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-misused-promises */ // TODO: Remove once redis-mock is updated
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ // TODO: Remove once redis-mock is updated
import {
createClient,
@@ -57,10 +56,18 @@ export async function createRedisClient(config: Config): Promise {
// Log errors
// The 'error' handler is important, since otherwise errors in the redis connection bring down the whole server/process
// see https://github.com/redis/node-redis/issues/2032#issuecomment-1116883257
- client.on('error', (err) => console.error('Redis client:', err))
- client.on('connect', () => console.debug('Redis client: connected'))
- client.on('reconnecting', () => console.debug('Redis client: reconnecting'))
- client.on('ready', () => console.debug('Redis client: ready'))
+ client.on('error', (err) => {
+ console.error('Redis client:', err)
+ })
+ client.on('connect', () => {
+ console.debug('Redis client: connected')
+ })
+ client.on('reconnecting', () => {
+ console.debug('Redis client: reconnecting')
+ })
+ client.on('ready', () => {
+ console.debug('Redis client: ready')
+ })
try {
await client.connect()
} catch (exception) {
diff --git a/server/utils/validation.spec.ts b/server/utils/validation.spec.ts
index 4c033d56d..11a42d9f3 100644
--- a/server/utils/validation.spec.ts
+++ b/server/utils/validation.spec.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
import { z } from 'zod'
import { validateInput, validation } from './validation'
diff --git a/server/utils/validation.ts b/server/utils/validation.ts
index 0a67282ef..0d01e536c 100644
--- a/server/utils/validation.ts
+++ b/server/utils/validation.ts
@@ -6,7 +6,7 @@ type MethodDecorator = (
target: any,
propertyKey: string | symbol,
descriptor: TypedPropertyDescriptor,
-) => TypedPropertyDescriptor | void
+) => TypedPropertyDescriptor
/**
* Method decorator that validates the argument of the target function against the given schema.
@@ -52,15 +52,17 @@ export function validateInput(
arg: T | (() => T),
): MethodDecorator> {
return function (_target, _propertyKey, descriptor) {
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- const originalMethod = descriptor.value!
+ const originalMethod = descriptor.value
+ if (!originalMethod) {
+ throw new Error('validateInput can only be used on methods')
+ }
// @ts-expect-error: should be fine
descriptor.value = function (root, { input }, context, info) {
const schema = typeof arg === 'function' ? arg() : arg
const result = schema.safeParse(input)
if (result.success) {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
return originalMethod.call(
this,
root,
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 6e0a2f8bc..d9752aa68 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -18,7 +18,7 @@ const flip = plugin(({ addUtilities }) => {
})
})
-export default {
+export default {
content: [`components/**/*.{vue,js}`, `layouts/**/*.vue`, `pages/**/*.vue`],
plugins: [forms, flip, typography],
theme: {
@@ -59,4 +59,4 @@ export default {
}),
},
},
-}
+} as Config
diff --git a/test/api-e2e/supertest.ts b/test/api-e2e/supertest.ts
index 626ab106d..dbe71f0d6 100644
--- a/test/api-e2e/supertest.ts
+++ b/test/api-e2e/supertest.ts
@@ -5,7 +5,7 @@ import supertestGraphql, {
Variables,
} from 'supertest-graphql'
-const url = process.env.TEST_URL || 'http://localhost:3000'
+const url = process.env.TEST_URL ?? 'http://localhost:3000'
export function api(): SuperTestGraphQL {
return supertestGraphql(url).path('/api')
diff --git a/test/apollo.server.ts b/test/apollo.server.ts
index ab6df1194..db41cf004 100644
--- a/test/apollo.server.ts
+++ b/test/apollo.server.ts
@@ -5,7 +5,7 @@ import { Context } from '~/server/context'
import { loadSchemaWithResolvers } from '~/server/schema'
import { resolve } from '~/server/tsyringe'
-export type ApolloClient = {
+export interface ApolloClient {
executeOperation<
TData = Record,
TVariables extends VariableValues = VariableValues,
diff --git a/yarn.lock b/yarn.lock
index 30bed6159..4b69fc8d1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2547,7 +2547,7 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0":
+"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0, @eslint-community/eslint-utils@npm:^4.4.0":
version: 4.4.0
resolution: "@eslint-community/eslint-utils@npm:4.4.0"
dependencies:
@@ -2565,9 +2565,16 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^2.1.0":
- version: 2.1.0
- resolution: "@eslint/eslintrc@npm:2.1.0"
+"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1":
+ version: 4.8.0
+ resolution: "@eslint-community/regexpp@npm:4.8.0"
+ checksum: 601e6d033d556e98e8c929905bef335f20d7389762812df4d0f709d9b4d2631610dda975fb272e23b5b68e24a163b3851b114c8080a0a19fb4c141a1eff6305b
+ languageName: node
+ linkType: hard
+
+"@eslint/eslintrc@npm:^2.1.2":
+ version: 2.1.2
+ resolution: "@eslint/eslintrc@npm:2.1.2"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
@@ -2578,14 +2585,14 @@ __metadata:
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
- checksum: d5ed0adbe23f6571d8c9bb0ca6edf7618dc6aed4046aa56df7139f65ae7b578874e0d9c796df784c25bda648ceb754b6320277d828c8b004876d7443b8dc018c
+ checksum: bc742a1e3b361f06fedb4afb6bf32cbd27171292ef7924f61c62f2aed73048367bcc7ac68f98c06d4245cd3fabc43270f844e3c1699936d4734b3ac5398814a7
languageName: node
linkType: hard
-"@eslint/js@npm:8.44.0":
- version: 8.44.0
- resolution: "@eslint/js@npm:8.44.0"
- checksum: fc539583226a28f5677356e9f00d2789c34253f076643d2e32888250e509a4e13aafe0880cb2425139051de0f3a48d25bfc5afa96b7304f203b706c17340e3cf
+"@eslint/js@npm:8.48.0":
+ version: 8.48.0
+ resolution: "@eslint/js@npm:8.48.0"
+ checksum: b2755f9c0ee810c886eba3c50dcacb184ba5a5cd1cbc01988ee506ad7340653cae0bd55f1d95c64b56dfc6d25c2caa7825335ffd2c50165bae9996fe0f396851
languageName: node
linkType: hard
@@ -6121,6 +6128,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/json-schema@npm:^7.0.12":
+ version: 7.0.12
+ resolution: "@types/json-schema@npm:7.0.12"
+ checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293
+ languageName: node
+ linkType: hard
+
"@types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9":
version: 7.0.11
resolution: "@types/json-schema@npm:7.0.11"
@@ -6434,7 +6448,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4":
+"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0":
version: 7.5.0
resolution: "@types/semver@npm:7.5.0"
checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2
@@ -6536,7 +6550,7 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/eslint-plugin@npm:^5.42.1, @typescript-eslint/eslint-plugin@npm:^5.61.0":
+"@typescript-eslint/eslint-plugin@npm:^5.42.1":
version: 5.61.0
resolution: "@typescript-eslint/eslint-plugin@npm:5.61.0"
dependencies:
@@ -6560,7 +6574,32 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/parser@npm:^5.42.1, @typescript-eslint/parser@npm:^5.61.0":
+"@typescript-eslint/eslint-plugin@npm:^6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/eslint-plugin@npm:6.4.1"
+ dependencies:
+ "@eslint-community/regexpp": ^4.5.1
+ "@typescript-eslint/scope-manager": 6.4.1
+ "@typescript-eslint/type-utils": 6.4.1
+ "@typescript-eslint/utils": 6.4.1
+ "@typescript-eslint/visitor-keys": 6.4.1
+ debug: ^4.3.4
+ graphemer: ^1.4.0
+ ignore: ^5.2.4
+ natural-compare: ^1.4.0
+ semver: ^7.5.4
+ ts-api-utils: ^1.0.1
+ peerDependencies:
+ "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: aa5f2f516a4ea07d1a9878d347dcb915808862f41efd3c4acd4955e616d265e051c4c93d597d30e54bee10bab9b965e2ef9cea1b497bf16f23a475d7911a8078
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/parser@npm:^5.42.1":
version: 5.61.0
resolution: "@typescript-eslint/parser@npm:5.61.0"
dependencies:
@@ -6577,6 +6616,24 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/parser@npm:^6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/parser@npm:6.4.1"
+ dependencies:
+ "@typescript-eslint/scope-manager": 6.4.1
+ "@typescript-eslint/types": 6.4.1
+ "@typescript-eslint/typescript-estree": 6.4.1
+ "@typescript-eslint/visitor-keys": 6.4.1
+ debug: ^4.3.4
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: cb61c757963f2a7964c2f846087eadda044720da769d96600f9f0069fe796d612caef5d9bb0c785aa4fa95028b2d231e7c83847ce44f02b1fa41f2102d6f444c
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/scope-manager@npm:5.61.0":
version: 5.61.0
resolution: "@typescript-eslint/scope-manager@npm:5.61.0"
@@ -6587,6 +6644,16 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/scope-manager@npm:6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/scope-manager@npm:6.4.1"
+ dependencies:
+ "@typescript-eslint/types": 6.4.1
+ "@typescript-eslint/visitor-keys": 6.4.1
+ checksum: 8f7f90aa378a19838301b31cfa58a4b0641d2b84891705c8c006c67aacb5c0d07112b714e1f0e7a159c5736779c934ec26dadef42a0711fccb635596aba391fc
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/type-utils@npm:5.61.0":
version: 5.61.0
resolution: "@typescript-eslint/type-utils@npm:5.61.0"
@@ -6604,6 +6671,23 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/type-utils@npm:6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/type-utils@npm:6.4.1"
+ dependencies:
+ "@typescript-eslint/typescript-estree": 6.4.1
+ "@typescript-eslint/utils": 6.4.1
+ debug: ^4.3.4
+ ts-api-utils: ^1.0.1
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 33bcdd48bd4e07258ed1919b598d50354dd67d8f01702cd2fd46aa9250b7b7cba9caab640df01f4dc0e45dabeddbb3ca47bee88f81fe2087350ed6f70a4cbe5d
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/types@npm:5.61.0":
version: 5.61.0
resolution: "@typescript-eslint/types@npm:5.61.0"
@@ -6611,6 +6695,13 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/types@npm:6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/types@npm:6.4.1"
+ checksum: 16ba46140dbe426407bbb940e87fb347e7eb53b64f74e8f6a819cd662aa25ccd0c25b1e588867ce3cd36a8b4eccea7bd81f4d429595e6e86d9a24c655b1c8617
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/typescript-estree@npm:5.61.0":
version: 5.61.0
resolution: "@typescript-eslint/typescript-estree@npm:5.61.0"
@@ -6629,7 +6720,25 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/utils@npm:5.61.0, @typescript-eslint/utils@npm:^5.59.9":
+"@typescript-eslint/typescript-estree@npm:6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/typescript-estree@npm:6.4.1"
+ dependencies:
+ "@typescript-eslint/types": 6.4.1
+ "@typescript-eslint/visitor-keys": 6.4.1
+ debug: ^4.3.4
+ globby: ^11.1.0
+ is-glob: ^4.0.3
+ semver: ^7.5.4
+ ts-api-utils: ^1.0.1
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 34c289e50a6337321154efe6c20c762e94fea308f9032971e356a266f63e99b908b1a00dd8cf51eba50a6f69db01d665faf2cf13454b355767fd167eebe60f1c
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/utils@npm:5.61.0":
version: 5.61.0
resolution: "@typescript-eslint/utils@npm:5.61.0"
dependencies:
@@ -6647,6 +6756,23 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/utils@npm:6.4.1, @typescript-eslint/utils@npm:^6.2.0":
+ version: 6.4.1
+ resolution: "@typescript-eslint/utils@npm:6.4.1"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.4.0
+ "@types/json-schema": ^7.0.12
+ "@types/semver": ^7.5.0
+ "@typescript-eslint/scope-manager": 6.4.1
+ "@typescript-eslint/types": 6.4.1
+ "@typescript-eslint/typescript-estree": 6.4.1
+ semver: ^7.5.4
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ checksum: 54e642a345790f912393a6f2821495e2359eff0f874a94cbe6fb3ef4411702983ed54fe88ca3ea9d28f2e93800a74dee22b7888838154bc1afd57c7e119e17ec
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/visitor-keys@npm:5.61.0":
version: 5.61.0
resolution: "@typescript-eslint/visitor-keys@npm:5.61.0"
@@ -6657,6 +6783,16 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/visitor-keys@npm:6.4.1":
+ version: 6.4.1
+ resolution: "@typescript-eslint/visitor-keys@npm:6.4.1"
+ dependencies:
+ "@typescript-eslint/types": 6.4.1
+ eslint-visitor-keys: ^3.4.1
+ checksum: bd9cd56fc793e1d880c24193f939c4992b2653f330baece41cd461d1fb48edb2c53696987cba0e29074bbb452dd181fd009db92dd19060fdcc417ad76768f18a
+ languageName: node
+ linkType: hard
+
"@unhead/addons@npm:^1.1.26":
version: 1.1.27
resolution: "@unhead/addons@npm:1.1.27"
@@ -7612,7 +7748,7 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:^6.12.5":
+"ajv@npm:^6.12.4, ajv@npm:^6.12.5":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@@ -11145,14 +11281,14 @@ __metadata:
languageName: node
linkType: hard
-"eslint-config-prettier@npm:^8.8.0":
- version: 8.8.0
- resolution: "eslint-config-prettier@npm:8.8.0"
+"eslint-config-prettier@npm:^9.0.0":
+ version: 9.0.0
+ resolution: "eslint-config-prettier@npm:9.0.0"
peerDependencies:
eslint: ">=7.0.0"
bin:
eslint-config-prettier: bin/cli.js
- checksum: 1e94c3882c4d5e41e1dcfa2c368dbccbfe3134f6ac7d40101644d3bfbe3eb2f2ffac757f3145910b5eacf20c0e85e02b91293d3126d770cbf3dc390b3564681c
+ checksum: 362e991b6cb343f79362bada2d97c202e5303e6865888918a7445c555fb75e4c078b01278e90be98aa98ae22f8597d8e93d48314bec6824f540f7efcab3ce451
languageName: node
linkType: hard
@@ -11179,7 +11315,7 @@ __metadata:
languageName: node
linkType: hard
-"eslint-import-resolver-typescript@npm:^3.5.2, eslint-import-resolver-typescript@npm:^3.5.5":
+"eslint-import-resolver-typescript@npm:^3.5.2":
version: 3.5.5
resolution: "eslint-import-resolver-typescript@npm:3.5.5"
dependencies:
@@ -11198,6 +11334,24 @@ __metadata:
languageName: node
linkType: hard
+"eslint-import-resolver-typescript@npm:^3.6.0":
+ version: 3.6.0
+ resolution: "eslint-import-resolver-typescript@npm:3.6.0"
+ dependencies:
+ debug: ^4.3.4
+ enhanced-resolve: ^5.12.0
+ eslint-module-utils: ^2.7.4
+ fast-glob: ^3.3.1
+ get-tsconfig: ^4.5.0
+ is-core-module: ^2.11.0
+ is-glob: ^4.0.3
+ peerDependencies:
+ eslint: "*"
+ eslint-plugin-import: "*"
+ checksum: 57b1b3859149f847e0d4174ff979cf35362d60c951df047f01b96f4c3794a7ea0d4e1ec85be25e610d3706902c3acfb964a66b825c1a55e3ce3a124b9a7a13bd
+ languageName: node
+ linkType: hard
+
"eslint-module-utils@npm:^2.7.4":
version: 2.8.0
resolution: "eslint-module-utils@npm:2.8.0"
@@ -11337,33 +11491,54 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-unused-imports@npm:^2.0.0":
- version: 2.0.0
- resolution: "eslint-plugin-unused-imports@npm:2.0.0"
+"eslint-plugin-unused-imports@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "eslint-plugin-unused-imports@npm:3.0.0"
dependencies:
eslint-rule-composer: ^0.3.0
peerDependencies:
- "@typescript-eslint/eslint-plugin": ^5.0.0
+ "@typescript-eslint/eslint-plugin": ^6.0.0
eslint: ^8.0.0
peerDependenciesMeta:
"@typescript-eslint/eslint-plugin":
optional: true
- checksum: 8aa1e03e75da2a62a354065e0cb8fe370118c6f8d9720a32fe8c1da937de6adb81a4fed7d0d391d115ac9453b49029fb19f970d180a2cf3dba451fd4c20f0dc4
+ checksum: 51666f62cc8dccba2895ced83f3c1e0b78b68c357e17360e156c4db548bfdeda34cbd8725192fb4903f22d5069400fb22ded6039631df01ee82fd618dc307247
languageName: node
linkType: hard
-"eslint-plugin-vitest@npm:^0.2.6":
- version: 0.2.6
- resolution: "eslint-plugin-vitest@npm:0.2.6"
+"eslint-plugin-vitest@npm:^0.2.8":
+ version: 0.2.8
+ resolution: "eslint-plugin-vitest@npm:0.2.8"
dependencies:
- "@typescript-eslint/utils": ^5.59.9
+ "@typescript-eslint/utils": ^6.2.0
peerDependencies:
eslint: ">=8.0.0"
- checksum: 09bb95262dc39b05546eb704b60440bce03bc68f4d563b3bcb4b25774624b3758db76bfa3702b8b0d45313246b6a6d57729ecc027f64ad840b234b94ca6aa233
+ vitest: "*"
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ checksum: bf09a8da8b564277b7bfcac37d24b3db16b35c61293bccfeb45651a3810c919da74e29e5a264eaf611af35c91b971dbbf28f6fba34166cf6a263d40ad91a48a6
languageName: node
linkType: hard
-"eslint-plugin-vue@npm:^9.15.1, eslint-plugin-vue@npm:^9.4.0, eslint-plugin-vue@npm:^9.7.0":
+"eslint-plugin-vue@npm:^9.17.0":
+ version: 9.17.0
+ resolution: "eslint-plugin-vue@npm:9.17.0"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.4.0
+ natural-compare: ^1.4.0
+ nth-check: ^2.1.1
+ postcss-selector-parser: ^6.0.13
+ semver: ^7.5.4
+ vue-eslint-parser: ^9.3.1
+ xml-name-validator: ^4.0.0
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
+ checksum: 2ef53a03876f7c96828ad10dae7d1c4d87b51e348f58b16de3f2bedbbff9a3410eabfaf65e4890b0b7ae6d1e710c1c370998d5bc64d6ca3095a95713b3a4cf67
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-vue@npm:^9.4.0, eslint-plugin-vue@npm:^9.7.0":
version: 9.15.1
resolution: "eslint-plugin-vue@npm:9.15.1"
dependencies:
@@ -11448,26 +11623,33 @@ __metadata:
languageName: node
linkType: hard
-"eslint@npm:^8.44.0":
- version: 8.44.0
- resolution: "eslint@npm:8.44.0"
+"eslint-visitor-keys@npm:^3.4.3":
+ version: 3.4.3
+ resolution: "eslint-visitor-keys@npm:3.4.3"
+ checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
+ languageName: node
+ linkType: hard
+
+"eslint@npm:^8.48.0":
+ version: 8.48.0
+ resolution: "eslint@npm:8.48.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
- "@eslint-community/regexpp": ^4.4.0
- "@eslint/eslintrc": ^2.1.0
- "@eslint/js": 8.44.0
+ "@eslint-community/regexpp": ^4.6.1
+ "@eslint/eslintrc": ^2.1.2
+ "@eslint/js": 8.48.0
"@humanwhocodes/config-array": ^0.11.10
"@humanwhocodes/module-importer": ^1.0.1
"@nodelib/fs.walk": ^1.2.8
- ajv: ^6.10.0
+ ajv: ^6.12.4
chalk: ^4.0.0
cross-spawn: ^7.0.2
debug: ^4.3.2
doctrine: ^3.0.0
escape-string-regexp: ^4.0.0
- eslint-scope: ^7.2.0
- eslint-visitor-keys: ^3.4.1
- espree: ^9.6.0
+ eslint-scope: ^7.2.2
+ eslint-visitor-keys: ^3.4.3
+ espree: ^9.6.1
esquery: ^1.4.2
esutils: ^2.0.2
fast-deep-equal: ^3.1.3
@@ -11477,7 +11659,6 @@ __metadata:
globals: ^13.19.0
graphemer: ^1.4.0
ignore: ^5.2.0
- import-fresh: ^3.0.0
imurmurhash: ^0.1.4
is-glob: ^4.0.0
is-path-inside: ^3.0.3
@@ -11489,11 +11670,10 @@ __metadata:
natural-compare: ^1.4.0
optionator: ^0.9.3
strip-ansi: ^6.0.1
- strip-json-comments: ^3.1.0
text-table: ^0.2.0
bin:
eslint: bin/eslint.js
- checksum: d06309ce4aafb9d27d558c8e5e5aa5cba3bbec3ce8ceccbc7d4b7a35f2b67fd40189159155553270e2e6febeb69bd8a3b60d6241c8f5ddc2ef1702ccbd328501
+ checksum: f20b359a4f8123fec5c033577368cc020d42978b1b45303974acd8da7a27063168ee3fe297ab5b35327162f6a93154063e3ce6577102f70f9809aff793db9bd0
languageName: node
linkType: hard
@@ -11519,6 +11699,17 @@ __metadata:
languageName: node
linkType: hard
+"espree@npm:^9.6.1":
+ version: 9.6.1
+ resolution: "espree@npm:9.6.1"
+ dependencies:
+ acorn: ^8.9.0
+ acorn-jsx: ^5.3.2
+ eslint-visitor-keys: ^3.4.1
+ checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9
+ languageName: node
+ linkType: hard
+
"esprima@npm:~4.0.0":
version: 4.0.1
resolution: "esprima@npm:4.0.1"
@@ -11821,6 +12012,19 @@ __metadata:
languageName: node
linkType: hard
+"fast-glob@npm:^3.3.1":
+ version: 3.3.1
+ resolution: "fast-glob@npm:3.3.1"
+ dependencies:
+ "@nodelib/fs.stat": ^2.0.2
+ "@nodelib/fs.walk": ^1.2.3
+ glob-parent: ^5.1.2
+ merge2: ^1.3.0
+ micromatch: ^4.0.4
+ checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5
+ languageName: node
+ linkType: hard
+
"fast-json-stable-stringify@npm:^2.0.0":
version: 2.1.0
resolution: "fast-json-stable-stringify@npm:2.1.0"
@@ -13532,7 +13736,7 @@ __metadata:
languageName: node
linkType: hard
-"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1":
+"import-fresh@npm:^3.2.1":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
dependencies:
@@ -14440,8 +14644,8 @@ __metadata:
"@types/supertest": ^2.0.12
"@types/uuid": ^9.0.2
"@types/yaireo__tagify": ^4.17.0
- "@typescript-eslint/eslint-plugin": ^5.61.0
- "@typescript-eslint/parser": ^5.61.0
+ "@typescript-eslint/eslint-plugin": ^6.4.1
+ "@typescript-eslint/parser": ^6.4.1
"@variantjs/core": ^0.0.90
"@variantjs/vue": ^0.0.22
"@vee-validate/nuxt": ^4.10.5
@@ -14463,13 +14667,13 @@ __metadata:
cross-env: ^7.0.3
cross-fetch: ^4.0.0
dotenv: ^16.3.1
- eslint: ^8.44.0
- eslint-config-prettier: ^8.8.0
- eslint-import-resolver-typescript: ^3.5.5
+ eslint: ^8.48.0
+ eslint-config-prettier: ^9.0.0
+ eslint-import-resolver-typescript: ^3.6.0
eslint-plugin-nuxt: ^4.0.0
- eslint-plugin-unused-imports: ^2.0.0
- eslint-plugin-vitest: ^0.2.6
- eslint-plugin-vue: ^9.15.1
+ eslint-plugin-unused-imports: ^3.0.0
+ eslint-plugin-vitest: ^0.2.8
+ eslint-plugin-vue: ^9.17.0
express-session: ^1.17.3
graphql: ^16.7.1
graphql-codegen-typescript-validation-schema: ^0.11.1
@@ -17275,7 +17479,7 @@ __metadata:
languageName: node
linkType: hard
-"nth-check@npm:^2.0.1":
+"nth-check@npm:^2.0.1, nth-check@npm:^2.1.1":
version: 2.1.1
resolution: "nth-check@npm:2.1.1"
dependencies:
@@ -18868,7 +19072,7 @@ __metadata:
languageName: node
linkType: hard
-"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9":
+"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9":
version: 6.0.13
resolution: "postcss-selector-parser@npm:6.0.13"
dependencies:
@@ -20435,6 +20639,17 @@ __metadata:
languageName: node
linkType: hard
+"semver@npm:^7.5.4":
+ version: 7.5.4
+ resolution: "semver@npm:7.5.4"
+ dependencies:
+ lru-cache: ^6.0.0
+ bin:
+ semver: bin/semver.js
+ checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3
+ languageName: node
+ linkType: hard
+
"semver@npm:~7.0.0":
version: 7.0.0
resolution: "semver@npm:7.0.0"
@@ -21214,7 +21429,7 @@ __metadata:
languageName: node
linkType: hard
-"strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1":
+"strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443
@@ -21844,6 +22059,15 @@ __metadata:
languageName: node
linkType: hard
+"ts-api-utils@npm:^1.0.1":
+ version: 1.0.2
+ resolution: "ts-api-utils@npm:1.0.2"
+ peerDependencies:
+ typescript: ">=4.2.0"
+ checksum: 6375e12ba90b6cbe73f564405248da14c52aa44b62b386e1cbbb1da2640265dd33e99d3e019688dffa874e365cf596b161ccd49351e90638be825c2639697640
+ languageName: node
+ linkType: hard
+
"ts-dedent@npm:^2.0.0":
version: 2.2.0
resolution: "ts-dedent@npm:2.2.0"
@@ -23381,6 +23605,23 @@ __metadata:
languageName: node
linkType: hard
+"vue-eslint-parser@npm:^9.3.1":
+ version: 9.3.1
+ resolution: "vue-eslint-parser@npm:9.3.1"
+ dependencies:
+ debug: ^4.3.4
+ eslint-scope: ^7.1.1
+ eslint-visitor-keys: ^3.3.0
+ espree: ^9.3.1
+ esquery: ^1.4.0
+ lodash: ^4.17.21
+ semver: ^7.3.6
+ peerDependencies:
+ eslint: ">=6.0.0"
+ checksum: 6d1476b45fcc5b456a1e5c0f33ec695cf1d392ca6113250d5e3441e6cf3b2a0ec28a9455699363641dfb7c48358f215db07856c98385a31ace9bc58196f4156e
+ languageName: node
+ linkType: hard
+
"vue-inbrowser-compiler-independent-utils@npm:^4.69.0":
version: 4.71.1
resolution: "vue-inbrowser-compiler-independent-utils@npm:4.71.1"