diff --git a/apps/discord-bot-frontend/package.json b/apps/discord-bot-frontend/package.json index 20ead203..f17d7cba 100644 --- a/apps/discord-bot-frontend/package.json +++ b/apps/discord-bot-frontend/package.json @@ -36,7 +36,6 @@ "express": "^4.18.1", "fast-glob": "^3.2.11", "prisma": "^4.5.0", - "svelte": "4.2.1", "uuid": "^8.3.2", "zod": "^3.19.1" }, @@ -64,6 +63,7 @@ "d3-sankey": "^0.12.3", "esbuild": "^0.19.2", "jsdom": "^20.0.0", + "svelte": "4.2.1", "svelte-check": "^3.5.0", "tasuku": "^2.0.1", "tslib": "^2.6.2", diff --git a/apps/discord-bot-frontend/playwright.config.ts b/apps/discord-bot-frontend/playwright.config.ts index 399a6005..25a8c95b 100644 --- a/apps/discord-bot-frontend/playwright.config.ts +++ b/apps/discord-bot-frontend/playwright.config.ts @@ -1,6 +1,6 @@ import { defineConfig, devices } from '@playwright/test' -import { loadEnvVars } from './vite.config' import { z } from 'zod' +import { loadEnvVars } from './vite.config' loadEnvVars() diff --git a/apps/discord-bot-frontend/scripts/seed.ts b/apps/discord-bot-frontend/scripts/seed.ts index fa71e506..964900f7 100644 --- a/apps/discord-bot-frontend/scripts/seed.ts +++ b/apps/discord-bot-frontend/scripts/seed.ts @@ -1,8 +1,8 @@ +import type { DiscordUser, DiscordRole, Prisma } from '@prisma/client' import { faker } from '@faker-js/faker' import task from 'tasuku' import { prisma, init } from '$lib/db' import { ACCESS_LEVELS } from '$lib/constants' -import type { DiscordUser, DiscordRole, Prisma } from '@prisma/client' function createFakeUsers(): Prisma.DiscordUserCreateInput[] { return Array.from({ length: 10 }).map(() => ({ diff --git a/apps/discord-bot-frontend/src/app.d.ts b/apps/discord-bot-frontend/src/app.d.ts index 7d7a16a5..7e5d6544 100644 --- a/apps/discord-bot-frontend/src/app.d.ts +++ b/apps/discord-bot-frontend/src/app.d.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ /// -import * as Auth from '@auth/core/types' import type { APIGuild } from 'discord.js' +import type * as Auth from '@auth/core/types' interface User extends Auth.User { id: string diff --git a/apps/discord-bot-frontend/src/lib/auth/config.ts b/apps/discord-bot-frontend/src/lib/auth/config.ts index 7a2e81a5..000d1f4d 100644 --- a/apps/discord-bot-frontend/src/lib/auth/config.ts +++ b/apps/discord-bot-frontend/src/lib/auth/config.ts @@ -1,3 +1,5 @@ +import type { AppSession } from '../../app' +import type { SvelteKitAuthConfig } from '@auth/sveltekit' import GitHub from '@auth/core/providers/github' import Discord from '@auth/core/providers/discord' import { get } from 'svelte/store' @@ -5,8 +7,6 @@ import { PrismaAdapter } from '@next-auth/prisma-adapter' import { getUserAccess } from '$lib/discord/get-user-access' import { prisma } from '$lib/db' import { guild } from '$lib/store' -import type { AppSession } from '../../app' -import type { SvelteKitAuthConfig } from '@auth/sveltekit' export const config: SvelteKitAuthConfig = { adapter: PrismaAdapter(prisma), diff --git a/apps/discord-bot-frontend/src/lib/discord/api.ts b/apps/discord-bot-frontend/src/lib/discord/api.ts index 23884e21..a6b0b4ec 100644 --- a/apps/discord-bot-frontend/src/lib/discord/api.ts +++ b/apps/discord-bot-frontend/src/lib/discord/api.ts @@ -1,9 +1,9 @@ -import { REST } from '@discordjs/rest' import type { RESTOptions, InternalRequest, RequestMethod, } from '@discordjs/rest' +import { REST } from '@discordjs/rest' // we'll want to eventually expand this interface with more options specific to our DX // eslint-disable-next-line @typescript-eslint/no-empty-interface diff --git a/apps/discord-bot-frontend/src/lib/discord/client.ts b/apps/discord-bot-frontend/src/lib/discord/client.ts index 0b530611..b1115163 100644 --- a/apps/discord-bot-frontend/src/lib/discord/client.ts +++ b/apps/discord-bot-frontend/src/lib/discord/client.ts @@ -1,3 +1,4 @@ +import type { Question } from '@prisma/client' import { Client, GatewayIntentBits, @@ -10,7 +11,6 @@ import { type ThreadChannel, type Guild, } from 'discord.js' -import { prisma } from '$lib/db' import { commands, createCommandFeatures, @@ -18,9 +18,9 @@ import { } from './commands' import { PREFIXES } from './commands/thread' import { isHelpChannel, isThreadWithinHelpChannel } from './support' +import { prisma } from '$lib/db' import { integrations } from '$lib/features/index' import { FEATURE_TYPES } from '$lib/constants' -import type { Question } from '@prisma/client' export const client = new Client({ intents: [ diff --git a/apps/discord-bot-frontend/src/lib/discord/commands.ts b/apps/discord-bot-frontend/src/lib/discord/commands.ts index b151e012..d6728191 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands.ts @@ -15,8 +15,6 @@ import { type MessagePayload, type InteractionEditReplyOptions, } from 'discord.js' -import { prisma } from '$lib/db' -import { FEATURE_TYPES } from '$lib/constants' import * as admin from './commands/admin' import * as contribute from './commands/contribute' import * as github from './commands/github' @@ -26,6 +24,8 @@ import * as selectAnswer from './commands/select-answer' import * as thread from './commands/thread' import * as q from './commands/q' import { api } from './api' +import { FEATURE_TYPES } from '$lib/constants' +import { prisma } from '$lib/db' type AuthoredCommand = { handler: ( diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/admin.ts b/apps/discord-bot-frontend/src/lib/discord/commands/admin.ts index fdaae96a..b10e5f57 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/admin.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/admin.ts @@ -1,6 +1,15 @@ +import type { + Message, + ChatInputCommandInteraction, + InteractionReplyOptions, + ThreadChannel, +} from 'discord.js' +import type { Question } from '@prisma/client' import { SlashCommandBuilder } from '@discordjs/builders' import { faker } from '@faker-js/faker' import { EmbedBuilder, PermissionFlagsBits } from 'discord.js' +import { isThreadWithinHelpChannel } from '../support' +import { repositoriesWithDiscussions as repositories } from './_repositories' import { getUserAccess } from '$lib/discord/get-user-access' import { prisma } from '$lib/db' import { @@ -9,15 +18,6 @@ import { markAnswered, lockDiscussion, } from '$lib/github/queries' -import { repositoriesWithDiscussions as repositories } from './_repositories' -import { isThreadWithinHelpChannel } from '../support' -import type { - Message, - ChatInputCommandInteraction, - InteractionReplyOptions, - ThreadChannel, -} from 'discord.js' -import type { Question } from '@prisma/client' const userIdToUsername = new Map() diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/contribute.ts b/apps/discord-bot-frontend/src/lib/discord/commands/contribute.ts index c7dbb9d1..7924aa49 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/contribute.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/contribute.ts @@ -1,9 +1,9 @@ -import { SlashCommandBuilder } from '@discordjs/builders' -import { repositories } from './_repositories' import type { ChatInputCommandInteraction, InteractionReplyOptions, } from 'discord.js' +import { SlashCommandBuilder } from '@discordjs/builders' +import { repositories } from './_repositories' export const config = new SlashCommandBuilder() .setName('contribute') diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/github.ts b/apps/discord-bot-frontend/src/lib/discord/commands/github.ts index f89b9544..75957aca 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/github.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/github.ts @@ -1,6 +1,6 @@ +import type { ChatInputCommandInteraction } from 'discord.js' import { SlashCommandBuilder } from '@discordjs/builders' import { repositories } from './_repositories' -import type { ChatInputCommandInteraction } from 'discord.js' export const config = new SlashCommandBuilder() .setName('github') diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/login.ts b/apps/discord-bot-frontend/src/lib/discord/commands/login.ts index d6076226..0611e9c5 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/login.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/login.ts @@ -1,8 +1,8 @@ -import { SlashCommandBuilder } from '@discordjs/builders' import type { ChatInputCommandInteraction, InteractionReplyOptions, } from 'discord.js' +import { SlashCommandBuilder } from '@discordjs/builders' export const config = new SlashCommandBuilder() .setName('login') diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/q.ts b/apps/discord-bot-frontend/src/lib/discord/commands/q.ts index 69e381b1..bf137ac5 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/q.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/q.ts @@ -1,10 +1,3 @@ -import { EmbedBuilder, ButtonStyle } from 'discord.js' -import { - SlashCommandBuilder, - ActionRowBuilder, - ButtonBuilder, -} from '@discordjs/builders' -import { prisma } from '$lib/db' import type { ButtonInteraction, ChatInputCommandInteraction, @@ -12,6 +5,13 @@ import type { TextBasedChannel, } from 'discord.js' import type { Question } from '@prisma/client' +import { EmbedBuilder, ButtonStyle } from 'discord.js' +import { + SlashCommandBuilder, + ActionRowBuilder, + ButtonBuilder, +} from '@discordjs/builders' +import { prisma } from '$lib/db' function epoch(date: Date): number { return Math.floor(date.getTime() / 1000) diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/select-answer.ts b/apps/discord-bot-frontend/src/lib/discord/commands/select-answer.ts index 0fc2d8cd..ab6d38bd 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/select-answer.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/select-answer.ts @@ -1,12 +1,12 @@ -import { ContextMenuCommandBuilder } from '@discordjs/builders' -import { ApplicationCommandType, EmbedBuilder } from 'discord.js' -import { prisma } from '$lib/db' -import { isAdminOrStaff } from '../is-admin-or-staff' import type { GuildMember, MessageContextMenuCommandInteraction, } from 'discord.js' +import { ContextMenuCommandBuilder } from '@discordjs/builders' +import { ApplicationCommandType, EmbedBuilder } from 'discord.js' +import { isAdminOrStaff } from '../is-admin-or-staff' import { parseTitle, parseTitlePrefix, fitsPrefix, truncateSuffix, PREFIXES } from './thread' +import { prisma } from '$lib/db' export const config = new ContextMenuCommandBuilder() .setName('select-answer') diff --git a/apps/discord-bot-frontend/src/lib/discord/commands/thread.ts b/apps/discord-bot-frontend/src/lib/discord/commands/thread.ts index e92b6cfa..bc2760e3 100644 --- a/apps/discord-bot-frontend/src/lib/discord/commands/thread.ts +++ b/apps/discord-bot-frontend/src/lib/discord/commands/thread.ts @@ -1,14 +1,14 @@ -import { SlashCommandBuilder } from '@discordjs/builders' -import { EmbedBuilder, MessageType } from 'discord.js' -import { prisma } from '$lib/db' -import { isThreadWithinHelpChannel } from '../support' -import { isAdminOrStaff } from '../is-admin-or-staff' import type { ChatInputCommandInteraction, GuildMember, ThreadChannel, InteractionReplyOptions, } from 'discord.js' +import { SlashCommandBuilder } from '@discordjs/builders' +import { EmbedBuilder, MessageType } from 'discord.js' +import { isThreadWithinHelpChannel } from '../support' +import { isAdminOrStaff } from '../is-admin-or-staff' +import { prisma } from '$lib/db' export const PREFIXES = { solved: '✅ - ', diff --git a/apps/discord-bot-frontend/src/lib/discord/get-bot-guilds.ts b/apps/discord-bot-frontend/src/lib/discord/get-bot-guilds.ts index 6c682b53..ce66701d 100644 --- a/apps/discord-bot-frontend/src/lib/discord/get-bot-guilds.ts +++ b/apps/discord-bot-frontend/src/lib/discord/get-bot-guilds.ts @@ -1,6 +1,6 @@ +import type { APIGuild } from 'discord.js' import { Routes } from 'discord.js' import { api } from './api' -import type { APIGuild } from 'discord.js' /** * Fetches the bot's guilds diff --git a/apps/discord-bot-frontend/src/lib/discord/get-user-access.ts b/apps/discord-bot-frontend/src/lib/discord/get-user-access.ts index b62aa537..eae86d91 100644 --- a/apps/discord-bot-frontend/src/lib/discord/get-user-access.ts +++ b/apps/discord-bot-frontend/src/lib/discord/get-user-access.ts @@ -1,8 +1,8 @@ +import type { APIGuild, APIGuildMember } from 'discord-api-types/v10' import { Routes } from 'discord-api-types/v10' +import { api } from './api' import { ACCESS_LEVELS } from '$lib/constants' import { prisma } from '$lib/db' -import { api } from './api' -import type { APIGuild, APIGuildMember } from 'discord-api-types/v10' export async function getUserAccess( guildMemberId: string, diff --git a/apps/discord-bot-frontend/src/lib/discord/is-admin-or-staff.ts b/apps/discord-bot-frontend/src/lib/discord/is-admin-or-staff.ts index ff7fee82..2d123da9 100644 --- a/apps/discord-bot-frontend/src/lib/discord/is-admin-or-staff.ts +++ b/apps/discord-bot-frontend/src/lib/discord/is-admin-or-staff.ts @@ -1,6 +1,6 @@ +import type { GuildMember } from 'discord.js' import { ACCESS_LEVELS } from '$lib/constants' import { prisma } from '$lib/db' -import type { GuildMember } from 'discord.js' export async function isAdminOrStaff(user: GuildMember) { const data = await prisma.configuration.findUnique({ diff --git a/apps/discord-bot-frontend/src/lib/discord/roles/addRole.ts b/apps/discord-bot-frontend/src/lib/discord/roles/addRole.ts index 6b23eb3e..9eb19a54 100644 --- a/apps/discord-bot-frontend/src/lib/discord/roles/addRole.ts +++ b/apps/discord-bot-frontend/src/lib/discord/roles/addRole.ts @@ -1,5 +1,5 @@ -import { api } from '$lib/discord/api' import { Routes } from 'discord-api-types/v10' +import { api } from '$lib/discord/api' /** applies a role to a given user */ export async function addRole(roleId: string, guildId: string, userId: string) { diff --git a/apps/discord-bot-frontend/src/lib/discord/roles/removeRole.ts b/apps/discord-bot-frontend/src/lib/discord/roles/removeRole.ts index 160088a2..3e879d0c 100644 --- a/apps/discord-bot-frontend/src/lib/discord/roles/removeRole.ts +++ b/apps/discord-bot-frontend/src/lib/discord/roles/removeRole.ts @@ -1,5 +1,5 @@ -import { api } from '$lib/discord/api' import { Routes } from 'discord-api-types/v10' +import { api } from '$lib/discord/api' /** removes a role from a given user */ export async function removeRole( diff --git a/apps/discord-bot-frontend/src/lib/features/is-enabled.ts b/apps/discord-bot-frontend/src/lib/features/is-enabled.ts index af6ea71b..0d7376ff 100644 --- a/apps/discord-bot-frontend/src/lib/features/is-enabled.ts +++ b/apps/discord-bot-frontend/src/lib/features/is-enabled.ts @@ -1,5 +1,5 @@ +import type { FEATURE_CODES } from '$lib/constants' import { prisma } from '$lib/db' -import { FEATURE_CODES } from '$lib/constants' export const isEnabled = async ( code: keyof typeof FEATURE_CODES, diff --git a/apps/discord-bot-frontend/src/lib/notifications.ts b/apps/discord-bot-frontend/src/lib/notifications.ts index 4515b059..ae7c366d 100644 --- a/apps/discord-bot-frontend/src/lib/notifications.ts +++ b/apps/discord-bot-frontend/src/lib/notifications.ts @@ -1,7 +1,7 @@ -import { writable } from 'svelte/store' -import { v4 as uuid } from 'uuid' import type { Readable } from 'svelte/store' import type { ToastNotificationProps } from 'carbon-components-svelte/types/Notification/ToastNotification.svelte' +import { writable } from 'svelte/store' +import { v4 as uuid } from 'uuid' type Notification = ToastNotificationProps & { id: string diff --git a/apps/discord-bot-frontend/src/lib/server/hooks/handle-auth.ts b/apps/discord-bot-frontend/src/lib/server/hooks/handle-auth.ts index 20ba5a9a..1e0516d3 100644 --- a/apps/discord-bot-frontend/src/lib/server/hooks/handle-auth.ts +++ b/apps/discord-bot-frontend/src/lib/server/hooks/handle-auth.ts @@ -1,6 +1,6 @@ +import type { Handle } from '@sveltejs/kit' import { SvelteKitAuth } from '@auth/sveltekit' import { config } from '$lib/auth/config' -import type { Handle } from '@sveltejs/kit' /** * @todo use session callback to extend session? diff --git a/apps/discord-bot-frontend/src/lib/server/hooks/handle-saved-guild.ts b/apps/discord-bot-frontend/src/lib/server/hooks/handle-saved-guild.ts index 67489954..10dfab7e 100644 --- a/apps/discord-bot-frontend/src/lib/server/hooks/handle-saved-guild.ts +++ b/apps/discord-bot-frontend/src/lib/server/hooks/handle-saved-guild.ts @@ -1,9 +1,9 @@ -import cookie from 'cookie' +import type { Handle, RequestEvent } from '@sveltejs/kit' +import * as cookie from 'cookie' import { Routes } from 'discord.js' import { GUILD_COOKIE } from '$lib/constants' import { api } from '$lib/discord/api' import { getBotGuilds } from '$lib/discord/get-bot-guilds' -import type { Handle, RequestEvent } from '@sveltejs/kit' /** * Parse cookies from the event and returns the value of the guild cookie diff --git a/apps/discord-bot-frontend/src/lib/store.ts b/apps/discord-bot-frontend/src/lib/store.ts index 42651e4f..46bf18c0 100644 --- a/apps/discord-bot-frontend/src/lib/store.ts +++ b/apps/discord-bot-frontend/src/lib/store.ts @@ -1,6 +1,6 @@ +import type { Writable } from 'svelte/store' import { derived, writable } from 'svelte/store' import { page } from '$app/stores' -import type { Writable } from 'svelte/store' export { store as notifications } from './notifications' diff --git a/apps/discord-bot-frontend/src/routes/admin/+layout.server.ts b/apps/discord-bot-frontend/src/routes/admin/+layout.server.ts index 0415f1be..90214237 100644 --- a/apps/discord-bot-frontend/src/routes/admin/+layout.server.ts +++ b/apps/discord-bot-frontend/src/routes/admin/+layout.server.ts @@ -1,5 +1,5 @@ -import { redirect } from '@sveltejs/kit' import type { LayoutServerLoad } from './$types' +import { redirect } from '@sveltejs/kit' export const load: LayoutServerLoad = async ({ locals }) => { if (locals.session?.user?.isAdmin || locals.session?.user?.isGuildOwner) { diff --git a/apps/discord-bot-frontend/src/routes/admin/+page.server.ts b/apps/discord-bot-frontend/src/routes/admin/+page.server.ts index 9bb64338..db42acf8 100644 --- a/apps/discord-bot-frontend/src/routes/admin/+page.server.ts +++ b/apps/discord-bot-frontend/src/routes/admin/+page.server.ts @@ -1,3 +1,4 @@ +import type { PageServerLoad } from './$types' import { error } from '@sveltejs/kit' import { type Configuration, @@ -11,6 +12,8 @@ import { type RESTGetAPIGuildRolesResult, type RESTGetAPIApplicationCommandResult, } from 'discord-api-types/v10' +import { api } from '../api/_discord' +import { tabs } from './tabs' import { env } from '$env/dynamic/private' import { commands as bank, @@ -18,9 +21,6 @@ import { } from '$lib/discord/commands' import { prisma } from '$lib/db' import { FEATURE_TYPES } from '$lib/constants' -import type { PageServerLoad } from './$types' -import { api } from '../api/_discord' -import { tabs } from './tabs' type AdminPageReturn = { commands: Array< diff --git a/apps/discord-bot-frontend/src/routes/admin/breadcrumbs.ts b/apps/discord-bot-frontend/src/routes/admin/breadcrumbs.ts index e4aa16be..d31efa9b 100644 --- a/apps/discord-bot-frontend/src/routes/admin/breadcrumbs.ts +++ b/apps/discord-bot-frontend/src/routes/admin/breadcrumbs.ts @@ -1,5 +1,5 @@ -import { page } from '$app/stores' import { derived } from 'svelte/store' +import { page } from '$app/stores' export const createIntegrationHrefFromCode = (code: string) => { return `/admin/integrations/${code.toLowerCase()}` diff --git a/apps/discord-bot-frontend/src/routes/admin/integrations/+page.server.ts b/apps/discord-bot-frontend/src/routes/admin/integrations/+page.server.ts index 1dd5730b..e143d4f6 100644 --- a/apps/discord-bot-frontend/src/routes/admin/integrations/+page.server.ts +++ b/apps/discord-bot-frontend/src/routes/admin/integrations/+page.server.ts @@ -1,7 +1,7 @@ -import { prisma } from '$lib/db' -import { FEATURE_TYPES } from '$lib/constants' import type { PageServerLoad } from './$types' import { createIntegrationHrefFromCode } from '../breadcrumbs' +import { prisma } from '$lib/db' +import { FEATURE_TYPES } from '$lib/constants' export const load: PageServerLoad = async ({ locals }) => { const integrations = await prisma.configurationFeature.findMany({ diff --git a/apps/discord-bot-frontend/src/routes/admin/integrations/[code]/+page.server.ts b/apps/discord-bot-frontend/src/routes/admin/integrations/[code]/+page.server.ts index bfa4e78c..df97a728 100644 --- a/apps/discord-bot-frontend/src/routes/admin/integrations/[code]/+page.server.ts +++ b/apps/discord-bot-frontend/src/routes/admin/integrations/[code]/+page.server.ts @@ -1,5 +1,5 @@ -import { prisma } from '$lib/db' import type { PageServerLoad } from './$types' +import { prisma } from '$lib/db' export const load: PageServerLoad = async ({ locals, params }) => { const { code } = params diff --git a/apps/discord-bot-frontend/src/routes/api/admin/configure/+server.ts b/apps/discord-bot-frontend/src/routes/api/admin/configure/+server.ts index 3f6be5df..d4fbb01b 100644 --- a/apps/discord-bot-frontend/src/routes/api/admin/configure/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/admin/configure/+server.ts @@ -1,7 +1,7 @@ +import type { RequestHandler } from '@sveltejs/kit' import { json } from '@sveltejs/kit' import { prisma } from '$lib/db' import { ACCESS_LEVELS } from '$lib/constants' -import type { RequestHandler } from '@sveltejs/kit' export const POST: RequestHandler = async ({ request }) => { const { id, name, adminRoles, staffRoles, contributorRoles } = diff --git a/apps/discord-bot-frontend/src/routes/api/admin/feature/+server.ts b/apps/discord-bot-frontend/src/routes/api/admin/feature/+server.ts index db7de9bc..04e6ff8d 100644 --- a/apps/discord-bot-frontend/src/routes/api/admin/feature/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/admin/feature/+server.ts @@ -1,6 +1,6 @@ +import type { FEATURE_CODES } from '$lib/constants' import { type RequestHandler } from '@sveltejs/kit' import { prisma } from '$lib/db' -import { FEATURE_CODES } from '$lib/constants' type Payload = { /** diff --git a/apps/discord-bot-frontend/src/routes/api/discord/[userId]/+server.ts b/apps/discord-bot-frontend/src/routes/api/discord/[userId]/+server.ts index b863ff7a..ee5a43f2 100644 --- a/apps/discord-bot-frontend/src/routes/api/discord/[userId]/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/discord/[userId]/+server.ts @@ -1,7 +1,7 @@ -import { Routes } from 'discord-api-types/v10' -import { api } from '$lib/discord/api' import type { RequestHandler } from '@sveltejs/kit' import type { APIGuildMember } from 'discord-api-types/v10' +import { Routes } from 'discord-api-types/v10' +import { api } from '$lib/discord/api' const guildId = import.meta.env.VITE_DISCORD_GUILD_ID diff --git a/apps/discord-bot-frontend/src/routes/api/github/[username]/+server.ts b/apps/discord-bot-frontend/src/routes/api/github/[username]/+server.ts index 60fe591a..43cbf7bf 100644 --- a/apps/discord-bot-frontend/src/routes/api/github/[username]/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/github/[username]/+server.ts @@ -1,5 +1,5 @@ -import { createOctokit } from '$lib/github/create-octokit' import type { RequestHandler } from '@sveltejs/kit' +import { createOctokit } from '$lib/github/create-octokit' export const GET: RequestHandler = async ({ params }) => { const octokit = await createOctokit() diff --git a/apps/discord-bot-frontend/src/routes/api/questions/list/+server.ts b/apps/discord-bot-frontend/src/routes/api/questions/list/+server.ts index 1e94a497..1a095a9c 100644 --- a/apps/discord-bot-frontend/src/routes/api/questions/list/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/questions/list/+server.ts @@ -1,6 +1,6 @@ +import type { RequestHandler } from '@sveltejs/kit' import { json } from '@sveltejs/kit' import { prisma } from '$lib/db' -import type { RequestHandler } from '@sveltejs/kit' export const GET: RequestHandler = async () => { const questions = await prisma.question.findMany() diff --git a/apps/discord-bot-frontend/src/routes/api/switch-guild/+server.ts b/apps/discord-bot-frontend/src/routes/api/switch-guild/+server.ts index 2072d66a..d3a52bcc 100644 --- a/apps/discord-bot-frontend/src/routes/api/switch-guild/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/switch-guild/+server.ts @@ -1,5 +1,5 @@ import { type RequestHandler } from '@sveltejs/kit' -import cookie from 'cookie' +import * as cookie from 'cookie' import { GUILD_COOKIE } from '$lib/constants' export const POST: RequestHandler = async ({ request, locals }) => { diff --git a/apps/discord-bot-frontend/src/routes/api/webhooks/github-org-membership/+server.ts b/apps/discord-bot-frontend/src/routes/api/webhooks/github-org-membership/+server.ts index 2fb5cb06..56c8dbec 100644 --- a/apps/discord-bot-frontend/src/routes/api/webhooks/github-org-membership/+server.ts +++ b/apps/discord-bot-frontend/src/routes/api/webhooks/github-org-membership/+server.ts @@ -1,10 +1,10 @@ +import type { RequestHandler } from '@sveltejs/kit' import { json } from '@sveltejs/kit' +import { verifyGithubWebhookEvent } from '../_verifyWebhook' import { addRole } from '$lib/discord/roles/addRole' import { ACCESS_LEVELS } from '$lib/constants' import { prisma } from '$lib/db' import { removeRole } from '$lib/discord/roles/removeRole' -import { verifyGithubWebhookEvent } from '../_verifyWebhook' -import type { RequestHandler } from '@sveltejs/kit' async function getDiscordUserId(ghUserId: string) { const data = await prisma.user.findFirst({ diff --git a/apps/discord-bot-frontend/src/routes/dashboard/+layout.server.ts b/apps/discord-bot-frontend/src/routes/dashboard/+layout.server.ts index 9d7d8331..8f1b9548 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/+layout.server.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/+layout.server.ts @@ -1,5 +1,5 @@ -import { redirect } from '@sveltejs/kit' import type { LayoutServerLoad } from './$types' +import { redirect } from '@sveltejs/kit' export const load: LayoutServerLoad = async ({ parent }) => { const { session } = await parent() diff --git a/apps/discord-bot-frontend/src/routes/dashboard/+page.server.ts b/apps/discord-bot-frontend/src/routes/dashboard/+page.server.ts index 7852b97a..c1eb2b3e 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/+page.server.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/+page.server.ts @@ -1,13 +1,13 @@ +import type { APIGuildPreview } from 'discord-api-types/v10' +import type { PageServerLoad } from './$types' import { error } from '@sveltejs/kit' import { Routes } from 'discord-api-types/v10' -import { api } from '$lib/discord/api' -import { prisma } from '$lib/db' -import { getGitHubMembers } from '$lib/github/get-github-members' import { getStaffContributors } from './helpers/get-staff-contributors' import { getAllContributors } from './helpers/get-all-contributors' import { fetchHelpChannels } from './helpers/fetch-help-channels' -import type { APIGuildPreview } from 'discord-api-types/v10' -import type { PageServerLoad } from './$types' +import { api } from '$lib/discord/api' +import { prisma } from '$lib/db' +import { getGitHubMembers } from '$lib/github/get-github-members' export const load: PageServerLoad = async ({ locals }) => { console.debug('[dashboard] server load') diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/fetch-help-channels.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/fetch-help-channels.ts index 1b985bd5..a67dd74f 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/fetch-help-channels.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/fetch-help-channels.ts @@ -1,8 +1,8 @@ +import type { APIPartialChannel } from 'discord-api-types/v10' +import type { ForumChannel, TextChannel } from 'discord.js' import { Routes } from 'discord-api-types/v10' import { api } from '$lib/discord/api' import { isHelpChannel } from '$lib/discord/support' -import type { APIPartialChannel } from 'discord-api-types/v10' -import type { ForumChannel, TextChannel } from 'discord.js' export async function fetchHelpChannels(guildId: string): Promise { let channels: string[] = [] diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-answers.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-answers.ts index c67339b9..675b54c0 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-answers.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-answers.ts @@ -1,6 +1,6 @@ +import type { Contributor } from '../types' import { filterQuestionsByChannel } from './filter-questions-by-channel' import { filterQuestionsByDateRange } from './filter-questions-by-date-range' -import type { Contributor } from '../types' /** * Filter answers by channel and date range diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-questions.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-questions.ts index 9428ca57..fd3b6588 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-questions.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/filter-questions.ts @@ -1,7 +1,7 @@ +import type { Question } from '../types' import { filterQuestionsByDateRange } from './filter-questions-by-date-range' import { filterQuestionsByChannel } from './filter-questions-by-channel' import { filterQuestionsByTag } from './filter-questions-by-tag' -import type { Question } from '../types' type DateRange = [Date, Date] type FilterOptions = { diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-all-contributors.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-all-contributors.ts index 44f11904..81abc2f7 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-all-contributors.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-all-contributors.ts @@ -1,6 +1,6 @@ +import type { Contributor } from '../types' import { ACCESS_LEVELS } from '$lib/constants' import { prisma } from '$lib/db' -import type { Contributor } from '../types' export async function getAllContributors( guildId: string diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-community-contributors.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-community-contributors.ts index b249cebc..d2f71d91 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-community-contributors.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-community-contributors.ts @@ -1,6 +1,6 @@ +import type { Contributor } from '../types' import { ACCESS_LEVELS } from '$lib/constants' import { prisma } from '$lib/db' -import type { Contributor } from '../types' /** * Currently not displaying community contributors but leaving this here in case it's wanted in the future diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-staff-contributors.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-staff-contributors.ts index 28f0db23..a59c9951 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-staff-contributors.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/get-staff-contributors.ts @@ -1,6 +1,6 @@ +import type { Contributor } from '../types' import { ACCESS_LEVELS } from '$lib/constants' import { prisma } from '$lib/db' -import type { Contributor } from '../types' export async function getStaffContributors( guildId: string diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-cohort.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-cohort.ts index 0838c7f0..bbed50d1 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-cohort.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-cohort.ts @@ -1,6 +1,6 @@ -import { ACCESS_LEVELS } from '$lib/constants' -import { COHORTS } from '../constants' import type { Question } from '../types' +import { COHORTS } from '../constants' +import { ACCESS_LEVELS } from '$lib/constants' /** * Group questions by cohort. This will group questions by their answer's cohort. diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-date.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-date.ts index db999861..5b700642 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-date.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions-by-date.ts @@ -1,5 +1,5 @@ -import { getMonday } from './get-monday' import type { TimePeriod, Question } from '../types' +import { getMonday } from './get-monday' export type GroupByDateOptions = { /** diff --git a/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions.ts b/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions.ts index 83f295ed..9361a367 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/helpers/group-questions.ts @@ -1,9 +1,9 @@ +import type { GroupByDateOptions } from './group-questions-by-date' +import type { Question } from '../types' import { groupQuestionsByChannel } from './group-questions-by-channel' import { groupQuestionsByCohort } from './group-questions-by-cohort' import { groupQuestionsByDate } from './group-questions-by-date' import { groupQuestionsByTag } from './group-questions-by-tag' -import type { GroupByDateOptions } from './group-questions-by-date' -import type { Question } from '../types' type GroupOptions = { by: 'channel' | 'cohort' | 'date' | 'tag' diff --git a/apps/discord-bot-frontend/src/routes/dashboard/types.ts b/apps/discord-bot-frontend/src/routes/dashboard/types.ts index e6cdc213..ff4dc375 100644 --- a/apps/discord-bot-frontend/src/routes/dashboard/types.ts +++ b/apps/discord-bot-frontend/src/routes/dashboard/types.ts @@ -1,10 +1,10 @@ -import { TIME_PERIODS, HEALTH_STATUS } from './constants' import type { Answer as PrismaAnswer, Question as PrismaQuestion, AccessLevelRole, QuestionTag, } from '@prisma/client' +import type { TIME_PERIODS, HEALTH_STATUS } from './constants' export type TimePeriod = ValueOf export type HealthStatus = ValueOf diff --git a/apps/discord-bot-frontend/src/routes/questions/+page.server.ts b/apps/discord-bot-frontend/src/routes/questions/+page.server.ts index d3e91982..97d17c2b 100644 --- a/apps/discord-bot-frontend/src/routes/questions/+page.server.ts +++ b/apps/discord-bot-frontend/src/routes/questions/+page.server.ts @@ -1,5 +1,5 @@ -import { prisma } from '$lib/db' import type { PageServerLoad } from './$types' +import { prisma } from '$lib/db' export const load: PageServerLoad = async () => { const questions = await prisma.question.findMany({ diff --git a/apps/discord-bot-frontend/src/routes/questions/[id]/+page.server.ts b/apps/discord-bot-frontend/src/routes/questions/[id]/+page.server.ts index 2e65d4ff..823fd88a 100644 --- a/apps/discord-bot-frontend/src/routes/questions/[id]/+page.server.ts +++ b/apps/discord-bot-frontend/src/routes/questions/[id]/+page.server.ts @@ -1,6 +1,6 @@ +import type { PageServerLoad } from './$types' import { error } from '@sveltejs/kit' import { prisma } from '$lib/db' -import type { PageServerLoad } from './$types' export const load: PageServerLoad = async ({ params }) => { const question = await prisma.question.findUnique({ diff --git a/apps/discord-bot-frontend/src/server.ts b/apps/discord-bot-frontend/src/server.ts index fbb7f20b..96ba66c6 100644 --- a/apps/discord-bot-frontend/src/server.ts +++ b/apps/discord-bot-frontend/src/server.ts @@ -1,6 +1,6 @@ +import express from 'express' import { createBot } from '$lib/discord/client' import { init } from '$lib/db' -import express from 'express' // export for e2e tests export const app = express() diff --git a/apps/discord-bot-frontend/tests/api/p/color/[code].test.ts b/apps/discord-bot-frontend/tests/api/p/color/[code].test.ts index 6829333a..7322c177 100644 --- a/apps/discord-bot-frontend/tests/api/p/color/[code].test.ts +++ b/apps/discord-bot-frontend/tests/api/p/color/[code].test.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test' -import prettier from 'prettier' +import { format } from 'prettier' test.describe('GET /api/p/color/[code]', () => { test('should return 200 if color code is valid', async ({ request }) => { @@ -13,8 +13,8 @@ test.describe('GET /api/p/color/[code]', () => { test.skip('should return an SVG if color code is valid', async ({ request }) => { const response = await request.get('/api/p/color/f3f.svg') expect(response.headers()['content-type']).toBe('image/svg+xml') - expect(prettier.format(await response.text())).toBe( - prettier.format( + expect(format(await response.text())).toBe( + format( '' ) ) diff --git a/apps/discord-bot-frontend/tests/setup/seed.ts b/apps/discord-bot-frontend/tests/setup/seed.ts index 88af991b..536d8cf7 100644 --- a/apps/discord-bot-frontend/tests/setup/seed.ts +++ b/apps/discord-bot-frontend/tests/setup/seed.ts @@ -2,6 +2,7 @@ import { PrismaClient } from '@prisma/client' import { ACCESS_LEVELS } from '../../src/lib/constants' import { init } from '../../src/lib/db' import { env } from '../../playwright.config' + const prisma = new PrismaClient() export async function seed() { diff --git a/cdk/src/app-github-actions.ts b/cdk/src/app-github-actions.ts index fc53ed24..004a08a8 100644 --- a/cdk/src/app-github-actions.ts +++ b/cdk/src/app-github-actions.ts @@ -1,7 +1,7 @@ import 'source-map-support/register.js' +import type { Construct } from 'constructs' import * as cdk from 'aws-cdk-lib' import * as iam from 'aws-cdk-lib/aws-iam' -import { Construct } from 'constructs' const app = new cdk.App({ context: { diff --git a/cdk/src/components/hey-amplify-app.ts b/cdk/src/components/hey-amplify-app.ts index 1baed5ee..defd6ea6 100644 --- a/cdk/src/components/hey-amplify-app.ts +++ b/cdk/src/components/hey-amplify-app.ts @@ -1,19 +1,19 @@ +import type * as s3 from 'aws-cdk-lib/aws-s3' +import type { AmplifyAwsSubdomain } from './amplify-aws-subdomain' +import type * as efs from 'aws-cdk-lib/aws-efs' +import type * as ssm from 'aws-cdk-lib/aws-ssm' import { Construct } from 'constructs' import { Port } from 'aws-cdk-lib/aws-ec2' import * as cdk from 'aws-cdk-lib' import * as cloudfront from 'aws-cdk-lib/aws-cloudfront' import * as ecs from 'aws-cdk-lib/aws-ecs' import * as ecs_patterns from 'aws-cdk-lib/aws-ecs-patterns' -import * as efs from 'aws-cdk-lib/aws-efs' import * as elb from 'aws-cdk-lib/aws-elasticloadbalancingv2' import * as origins from 'aws-cdk-lib/aws-cloudfront-origins' import * as route53 from 'aws-cdk-lib/aws-route53' import * as route53Targets from 'aws-cdk-lib/aws-route53-targets' -import * as ssm from 'aws-cdk-lib/aws-ssm' import { v4 as uuid } from 'uuid' import { WAF } from './waf' -import type * as s3 from 'aws-cdk-lib/aws-s3' -import type { AmplifyAwsSubdomain } from './amplify-aws-subdomain' interface DockerProps { name: string diff --git a/cdk/src/components/privacy-notification-function/privacy-notification-function.ts b/cdk/src/components/privacy-notification-function/privacy-notification-function.ts index c70413ac..3078a47d 100644 --- a/cdk/src/components/privacy-notification-function/privacy-notification-function.ts +++ b/cdk/src/components/privacy-notification-function/privacy-notification-function.ts @@ -1,3 +1,4 @@ +import type * as ssm from 'aws-cdk-lib/aws-ssm' import * as url from 'node:url' import * as cdk from 'aws-cdk-lib' import * as events from 'aws-cdk-lib/aws-events' @@ -6,7 +7,6 @@ import * as iam from 'aws-cdk-lib/aws-iam' import * as lambda from 'aws-cdk-lib/aws-lambda' import * as nodejsLambda from 'aws-cdk-lib/aws-lambda-nodejs' import * as targets from 'aws-cdk-lib/aws-events-targets' -import * as ssm from 'aws-cdk-lib/aws-ssm' import { Construct } from 'constructs' // Define the properties for the PrivacyNotificationFunction construct diff --git a/cdk/src/components/waf.ts b/cdk/src/components/waf.ts index ae50930a..296178b8 100644 --- a/cdk/src/components/waf.ts +++ b/cdk/src/components/waf.ts @@ -1,4 +1,4 @@ -import { Construct } from 'constructs' +import type { Construct } from 'constructs' import * as wafv2 from 'aws-cdk-lib/aws-wafv2' type WAFProps = { diff --git a/cdk/src/constants.ts b/cdk/src/constants.ts index b44d0340..e6b08dbb 100644 --- a/cdk/src/constants.ts +++ b/cdk/src/constants.ts @@ -1,2 +1,3 @@ import { fileURLToPath } from 'node:url' + export const PROJECT_ROOT = fileURLToPath(new URL('../..', import.meta.url)) diff --git a/cdk/src/stack.ts b/cdk/src/stack.ts index 9b4e48a2..92550c1d 100644 --- a/cdk/src/stack.ts +++ b/cdk/src/stack.ts @@ -1,5 +1,7 @@ -import { Stack, StackProps, Tags, RemovalPolicy } from 'aws-cdk-lib' -import { Construct } from 'constructs' +import type { StackProps} from 'aws-cdk-lib'; +import type { Construct } from 'constructs' +import type { AmplifyAwsSubdomainProps } from './components/amplify-aws-subdomain' +import { Stack, Tags, RemovalPolicy } from 'aws-cdk-lib' import * as ec2 from 'aws-cdk-lib/aws-ec2' import * as ecs from 'aws-cdk-lib/aws-ecs' import * as efs from 'aws-cdk-lib/aws-efs' @@ -11,8 +13,6 @@ import { getSvelteKitEnvironmentVariables } from './support' import { AmplifyAwsSubdomain } from './components/amplify-aws-subdomain' import { PrivacyNotificationFunction } from './components/privacy-notification-function/privacy-notification-function' -import type { AmplifyAwsSubdomainProps } from './components/amplify-aws-subdomain' - type HeyAmplifyStackProps = Partial & { subdomain: AmplifyAwsSubdomainProps | undefined } diff --git a/cdk/src/types.d.ts b/cdk/src/types.d.ts index 008e5410..86eaa4fc 100644 --- a/cdk/src/types.d.ts +++ b/cdk/src/types.d.ts @@ -1,7 +1,7 @@ -import { NestedStackProps } from 'aws-cdk-lib' import type * as ecs from 'aws-cdk-lib/aws-ecs' import type * as efs from 'aws-cdk-lib/aws-efs' import type * as ssm from 'aws-cdk-lib/aws-ssm' +import type { NestedStackProps } from 'aws-cdk-lib' export interface HeyAmplifyAppStackProps extends NestedStackProps { secrets: Record diff --git a/package.json b/package.json index 48e6185c..61311cea 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,8 @@ "@typescript-eslint/parser": "^6.20.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-svelte3": "^4.0.0", "lint-staged": "^15.2.0", "prettier": "^3.2.4", @@ -47,12 +49,15 @@ "extends": [ "eslint:recommended", "prettier", + "plugin:import/recommended", + "plugin:import/typescript", "plugin:@typescript-eslint/recommended" ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaVersion": 2022, - "sourceType": "module" + "sourceType": "module", + "project": "./tsconfig.eslint.json" }, "env": { "browser": true, @@ -76,11 +81,47 @@ } ], "settings": { - "svelte3/typescript": true + "svelte3/typescript": true, + "import/resolver": { + "typescript": {}, + "node": {} + } }, "rules": { "@typescript-eslint/prefer-ts-expect-error": "warn", - "@typescript-eslint/no-non-null-assertion": "off" + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/consistent-type-exports": [ + "error", + { + "fixMixedExportsWithInlineTypeSpecifier": false + } + ], + "@typescript-eslint/consistent-type-imports": [ + "error", + { + "prefer": "type-imports" + } + ], + "import/first": "error", + "import/newline-after-import": "error", + "import/no-default-export": "warn", + "import/no-unresolved": "off", + "import/order": [ + "error", + { + "newlines-between": "never", + "groups": [ + "type", + "builtin", + "external", + "internal", + "parent", + "sibling", + "index", + "object" + ] + } + ] } }, "packageManager": "pnpm@8.10.5", diff --git a/packages/support/src/secrets.ts b/packages/support/src/secrets.ts index 3d6048d6..f5f39685 100644 --- a/packages/support/src/secrets.ts +++ b/packages/support/src/secrets.ts @@ -1,3 +1,4 @@ +import type { PutParameterCommandInput } from '@aws-sdk/client-ssm' import { SSMClient, GetParametersByPathCommand, @@ -5,7 +6,6 @@ import { PutParameterCommand, } from '@aws-sdk/client-ssm' import { loadEnv } from 'vite' -import type { PutParameterCommandInput } from '@aws-sdk/client-ssm' const REGION = process.env.REGION || 'us-east-1' const PROJECT_NAME = 'hey-amplify' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0973c99..1b145b67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,12 @@ importers: eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.56.0) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.20.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) eslint-plugin-svelte3: specifier: ^4.0.0 version: 4.0.0(eslint@8.56.0)(svelte@3.59.2) @@ -46,7 +52,7 @@ importers: version: 0.15.2 '@auth/sveltekit': specifier: ^0.3.6 - version: 0.3.16(@sveltejs/kit@2.5.0)(svelte@4.2.1) + version: 0.3.16(@sveltejs/kit@2.5.1)(svelte@4.2.1) '@aws-crypto/sha256-js': specifier: ^2.0.1 version: 2.0.2 @@ -95,9 +101,6 @@ importers: prisma: specifier: ^4.5.0 version: 4.16.2 - svelte: - specifier: 4.2.1 - version: 4.2.1 uuid: specifier: ^8.3.2 version: 8.3.2 @@ -125,10 +128,10 @@ importers: version: 1.41.2 '@sveltejs/adapter-node': specifier: ^4.0.1 - version: 4.0.1(@sveltejs/kit@2.5.0) + version: 4.0.1(@sveltejs/kit@2.5.1) '@sveltejs/kit': specifier: ^2.5.0 - version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.1.4) + version: 2.5.1(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.0.12) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.2 version: 3.0.2(svelte@4.2.1)(vite@5.1.4) @@ -174,6 +177,9 @@ importers: jsdom: specifier: ^20.0.0 version: 20.0.3 + svelte: + specifier: 4.2.1 + version: 4.2.1 svelte-check: specifier: ^3.5.0 version: 3.6.4(svelte@4.2.1) @@ -337,14 +343,14 @@ packages: preact-render-to-string: 5.2.3(preact@10.11.3) dev: false - /@auth/sveltekit@0.3.16(@sveltejs/kit@2.5.0)(svelte@4.2.1): + /@auth/sveltekit@0.3.16(@sveltejs/kit@2.5.1)(svelte@4.2.1): resolution: {integrity: sha512-p0GpzNfdQeWjn87HuWLNhQ/gq6w0JOm/e3Qp5bQ73sMfkyIVtaCmkRmXWqbTZ8tFaZdr5IGveHy3FtEIPrrMEQ==} peerDependencies: '@sveltejs/kit': ^1.0.0 svelte: ^3.54.0 || ^4.0.0 dependencies: '@auth/core': 0.18.5 - '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.1.4) + '@sveltejs/kit': 2.5.1(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.0.12) svelte: 4.2.1 transitivePeerDependencies: - nodemailer @@ -2413,20 +2419,20 @@ packages: '@smithy/types': 2.9.1 tslib: 2.6.2 - /@sveltejs/adapter-node@4.0.1(@sveltejs/kit@2.5.0): + /@sveltejs/adapter-node@4.0.1(@sveltejs/kit@2.5.1): resolution: {integrity: sha512-IviiTtKCDp+0QoTmmMlGGZBA1EoUNsjecU6XGV9k62S3f01SNsVhpqi2e4nbI62BLGKh/YKKfFii+Vz/b9XIxg==} peerDependencies: '@sveltejs/kit': ^2.4.0 dependencies: - '@rollup/plugin-commonjs': 25.0.7(rollup@4.12.0) - '@rollup/plugin-json': 6.1.0(rollup@4.12.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.12.0) - '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.1.4) - rollup: 4.12.0 + '@rollup/plugin-commonjs': 25.0.7(rollup@4.9.6) + '@rollup/plugin-json': 6.1.0(rollup@4.9.6) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.9.6) + '@sveltejs/kit': 2.5.1(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.0.12) + rollup: 4.9.6 dev: true - /@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.1.4): - resolution: {integrity: sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==} + /@sveltejs/kit@2.5.1(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.1)(vite@5.0.12): + resolution: {integrity: sha512-TKj08o3mJCoQNLTdRdGkHPePTCPUGTgkew65RDqjVU3MtPVxljsofXQYfXndHfq0P7KoPRO/0/reF6HesU0Djw==} engines: {node: '>=18.13'} hasBin: true requiresBuild: true @@ -2553,6 +2559,10 @@ packages: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + /@types/jsonwebtoken@9.0.5: resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: @@ -2931,15 +2941,90 @@ packages: engines: {node: '>=8'} dev: false + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: false + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true + /array.prototype.filter@1.0.3: + resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.findlastindex@1.2.4: + resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -2948,6 +3033,13 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + /aws-cdk-lib@2.124.0(constructs@10.3.0): resolution: {integrity: sha512-K/Tey8TMw30GO6UD0qb19CPhBMZhleGshz520ZnbDUJwNfFtejwZOnpmRMOdUP9f4tHc5BrXl1VGsZtXtUaGhg==} engines: {node: '>= 14.15.0'} @@ -3077,6 +3169,16 @@ packages: engines: {node: '>=8'} dev: true + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + /call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -3086,15 +3188,15 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.1 - dev: false + dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001588: - resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} + /caniuse-lite@1.0.30001589: + resolution: {integrity: sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==} dev: false /carbon-components-svelte@0.82.10: @@ -3691,6 +3793,17 @@ packages: ms: 2.0.0 dev: false + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -3733,7 +3846,25 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: false + has-property-descriptors: 1.0.1 + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true /delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} @@ -3815,6 +3946,13 @@ packages: - utf-8-validate dev: false + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -3853,22 +3991,109 @@ packages: engines: {node: '>= 0.8'} dev: false + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true + /es-abstract@1.22.4: + resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.1 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.14 + dev: true + + /es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + /es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - dev: false + dev: true /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dev: false + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.1 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} @@ -3970,6 +4195,104 @@ packages: eslint: 8.56.0 dev: true + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.20.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + debug: 3.2.7 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.20.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-svelte3@4.0.0(eslint@8.56.0)(svelte@3.59.2): resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} peerDependencies: @@ -4259,6 +4582,12 @@ packages: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -4300,6 +4629,20 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.4 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + /get-east-asian-width@1.2.0: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} @@ -4317,14 +4660,39 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 + hasown: 2.0.0 + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 hasown: 2.0.1 - dev: false + dev: true /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} dev: true + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -4367,6 +4735,13 @@ packages: type-fest: 0.20.2 dev: true + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} @@ -4388,8 +4763,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.4 - dev: false + get-intrinsic: 1.2.2 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4398,6 +4772,10 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -4408,21 +4786,36 @@ packages: engines: {node: '>=8'} dev: true + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + get-intrinsic: 1.2.2 + /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - dev: false + dev: true /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} - dev: false + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: false + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true /hasown@2.0.1: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} @@ -4430,6 +4823,13 @@ packages: dependencies: function-bind: 1.1.2 + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -4527,6 +4927,15 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.1 + side-channel: 1.0.4 + dev: true + /internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} dev: true @@ -4541,10 +4950,24 @@ packages: engines: {node: '>= 0.10'} dev: false + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: false + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -4552,6 +4975,14 @@ packages: binary-extensions: 2.2.0 dev: true + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -4559,12 +4990,24 @@ packages: builtin-modules: 3.3.0 dev: true + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.1 dev: true + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4591,6 +5034,18 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -4620,11 +5075,57 @@ packages: dependencies: '@types/estree': 1.0.5 + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.14 + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true @@ -4705,6 +5206,13 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + /jsonc-parser@3.2.1: resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true @@ -5029,7 +5537,6 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} @@ -5067,8 +5574,8 @@ packages: next: 14.1.0 oauth: 0.9.15 openid-client: 5.6.4 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) + preact: 10.19.6 + preact-render-to-string: 5.2.6(preact@10.19.6) uuid: 8.3.2 dev: false @@ -5094,7 +5601,7 @@ packages: '@next/env': 14.1.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001588 + caniuse-lite: 1.0.30001589 graceful-fs: 4.2.11 postcss: 8.4.31 styled-jsx: 5.1.1 @@ -5156,7 +5663,49 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + dev: true + + /object.groupby@1.0.2: + resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} + dependencies: + array.prototype.filter: 1.0.3 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-errors: 1.3.0 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.4 + dev: true /oidc-token-hash@5.0.3: resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} @@ -5339,6 +5888,11 @@ packages: fsevents: 2.3.2 dev: true + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss-selector-parser@6.0.15: resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} engines: {node: '>=4'} @@ -5373,10 +5927,23 @@ packages: pretty-format: 3.8.0 dev: false + /preact-render-to-string@5.2.6(preact@10.19.6): + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.19.6 + pretty-format: 3.8.0 + dev: false + /preact@10.11.3: resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} dev: false + /preact@10.19.6: + resolution: {integrity: sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw==} + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5512,6 +6079,16 @@ packages: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: false + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true @@ -5521,6 +6098,10 @@ packages: engines: {node: '>=4'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -5601,10 +6182,29 @@ packages: dependencies: mri: 1.2.0 + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5624,8 +6224,13 @@ packages: xmlchars: 2.2.0 dev: true - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -5667,6 +6272,17 @@ packages: /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + /set-function-length@1.2.1: resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} @@ -5677,7 +6293,17 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: false + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5703,7 +6329,6 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: false /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -5811,6 +6436,31 @@ packages: strip-ansi: 7.1.0 dev: true + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.4 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.4 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.4 + dev: true + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -5831,6 +6481,11 @@ packages: ansi-regex: 6.0.1 dev: true + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -6068,6 +6723,11 @@ packages: wordwrapjs: 4.0.1 dev: false + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + /tasuku@2.0.1: resolution: {integrity: sha512-BXWDEJzpC1mUiOz5Csba85LS93o9a5pGKRTArLiXJZ2HGF/mXHIl+4SBF706Yxqg+GlJDQurvLxds8tC7EwyRA==} dependencies: @@ -6162,6 +6822,15 @@ packages: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} dev: false + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -6198,6 +6867,62 @@ packages: mime-types: 2.1.35 dev: false + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + + /typescript@4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /typescript@4.8.3: + resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: false + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -6223,6 +6948,15 @@ packages: resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} dev: true + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -6523,6 +7257,27 @@ packages: webidl-conversions: 3.0.1 dev: false + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..4d079a09 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSources": false, + "isolatedModules": true, + "module": "esnext", + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true, + "target": "esnext", + "sourceMap": false, + "inlineSourceMap": true, + "importsNotUsedAsValues": "remove" + }, + "exclude": ["node_modules"] +} diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 00000000..576871e5 --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.base.json", + "include": [ + "**/*.ts", + "**/*.tsx", + "**/*.svelte", + "**/*.astro", + "**/*.mjs", + "**/*.js", + "**/*.cjs" + ] +} \ No newline at end of file