From 90597389c9315117f33f107b37a0626b27213daf Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 14 Jul 2022 12:47:26 +0000 Subject: [PATCH 01/12] fix: more types for API --- apps/api/src/index.ts | 2 +- apps/api/src/lib/common.ts | 4 +- .../routes/api/v1/applications/handlers.ts | 67 +++++----- .../src/routes/api/v1/applications/index.ts | 84 ++++--------- .../src/routes/api/v1/applications/types.ts | 117 +++++++++++++++++ apps/api/src/routes/api/v1/base/index.ts | 4 +- .../src/routes/api/v1/databases/handlers.ts | 29 +++-- apps/api/src/routes/api/v1/databases/index.ts | 31 ++--- apps/api/src/routes/api/v1/databases/types.ts | 5 + .../routes/api/v1/destinations/handlers.ts | 22 ++-- .../src/routes/api/v1/destinations/index.ts | 26 ++-- .../src/routes/api/v1/destinations/types.ts | 26 ++++ apps/api/src/routes/api/v1/handlers.ts | 14 +-- apps/api/src/routes/api/v1/iam/handlers.ts | 32 ++--- apps/api/src/routes/api/v1/iam/index.ts | 25 ++-- apps/api/src/routes/api/v1/iam/types.ts | 27 ++++ apps/api/src/routes/api/v1/index.ts | 6 +- .../src/routes/api/v1/services/handlers.ts | 119 +++++++++--------- apps/api/src/routes/api/v1/services/index.ts | 51 ++++---- apps/api/src/routes/api/v1/services/types.ts | 87 +++++++++++++ .../src/routes/api/v1/settings/handlers.ts | 11 +- apps/api/src/routes/api/v1/settings/index.ts | 13 +- apps/api/src/routes/api/v1/settings/types.ts | 31 +++++ .../api/src/routes/api/v1/sources/handlers.ts | 12 +- apps/api/src/routes/api/v1/sources/index.ts | 15 +-- apps/api/src/routes/api/v1/sources/types.ts | 29 +++++ apps/api/src/routes/api/v1/types.ts | 3 + .../src/routes/webhooks/github/handlers.ts | 12 +- apps/api/src/routes/webhooks/github/index.ts | 8 +- apps/api/src/routes/webhooks/github/types.ts | 20 +++ .../src/routes/webhooks/gitlab/handlers.ts | 13 +- apps/api/src/routes/webhooks/gitlab/index.ts | 8 +- apps/api/src/routes/webhooks/gitlab/types.ts | 24 ++++ .../src/routes/webhooks/traefik/handlers.ts | 3 +- apps/api/src/routes/webhooks/traefik/index.ts | 5 +- apps/api/src/routes/webhooks/traefik/types.ts | 9 ++ apps/api/src/types.ts | 38 ++++++ apps/ui/src/routes/iam/index.svelte | 2 +- apps/ui/src/routes/webhooks/success.svelte | 2 +- package.json | 2 +- 40 files changed, 722 insertions(+), 316 deletions(-) create mode 100644 apps/api/src/routes/api/v1/applications/types.ts create mode 100644 apps/api/src/routes/api/v1/databases/types.ts create mode 100644 apps/api/src/routes/api/v1/destinations/types.ts create mode 100644 apps/api/src/routes/api/v1/iam/types.ts create mode 100644 apps/api/src/routes/api/v1/services/types.ts create mode 100644 apps/api/src/routes/api/v1/settings/types.ts create mode 100644 apps/api/src/routes/api/v1/sources/types.ts create mode 100644 apps/api/src/routes/api/v1/types.ts create mode 100644 apps/api/src/routes/webhooks/github/types.ts create mode 100644 apps/api/src/routes/webhooks/gitlab/types.ts create mode 100644 apps/api/src/routes/webhooks/traefik/types.ts create mode 100644 apps/api/src/types.ts diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 073732c5f..e302df635 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -77,7 +77,7 @@ if (!isDev) { root: path.join(__dirname, './public'), preCompressed: true }); - fastify.setNotFoundHandler({}, function (request, reply) { + fastify.setNotFoundHandler(async function (request, reply) { if (request.raw.url && request.raw.url.startsWith('/api')) { return reply.status(404).send({ success: false diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index 06a06d21c..96edde3fc 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -16,7 +16,7 @@ import { day } from './dayjs'; import * as serviceFields from './serviceFields' import axios from 'axios'; -export const version = '3.1.2'; +export const version = '3.1.3'; export const isDev = process.env.NODE_ENV === 'development'; const algorithm = 'aes-256-ctr'; @@ -825,7 +825,7 @@ export type ComposeFileService = { context: string; dockerfile: string; args?: Record; - }; + } | string; deploy?: { restart_policy?: { condition?: string; diff --git a/apps/api/src/routes/api/v1/applications/handlers.ts b/apps/api/src/routes/api/v1/applications/handlers.ts index b5e235335..7d794e2d3 100644 --- a/apps/api/src/routes/api/v1/applications/handlers.ts +++ b/apps/api/src/routes/api/v1/applications/handlers.ts @@ -2,18 +2,16 @@ import cuid from 'cuid'; import crypto from 'node:crypto' import jsonwebtoken from 'jsonwebtoken'; import axios from 'axios'; -import { day } from '../../../../lib/dayjs'; - - -import type { FastifyRequest } from 'fastify'; import { FastifyReply } from 'fastify'; - -import { CheckDNS, DeleteApplication, DeployApplication, GetApplication, SaveApplication, SaveApplicationSettings } from '.'; +import { day } from '../../../../lib/dayjs'; import { setDefaultBaseImage, setDefaultConfiguration } from '../../../../lib/buildPacks/common'; import { asyncExecShell, checkDomainsIsValidInDNS, checkDoubleBranch, decrypt, encrypt, errorHandler, generateSshKeyPair, getContainerUsage, getDomain, isDev, isDomainConfigured, prisma, stopBuild, uniqueName } from '../../../../lib/common'; import { checkContainer, dockerInstance, getEngine, isContainerExited, removeContainer } from '../../../../lib/docker'; import { scheduler } from '../../../../lib/scheduler'; +import type { FastifyRequest } from 'fastify'; +import type { GetImages, CancelDeployment, CheckDNS, CheckRepository, DeleteApplication, DeleteSecret, DeleteStorage, GetApplicationLogs, GetBuildIdLogs, GetBuildLogs, OnlyId, SaveApplication, SaveApplicationSettings, SaveApplicationSource, SaveDeployKey, SaveDestination, SaveSecret, SaveStorage, DeployApplication } from './types'; +import { Application, DestinationDocker } from '@prisma/client'; export async function listApplications(request: FastifyRequest) { try { @@ -31,7 +29,7 @@ export async function listApplications(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function getImages(request: FastifyRequest) { +export async function getImages(request: FastifyRequest) { try { const { buildPack, deploymentType } = request.body let publishDirectory = undefined; @@ -65,14 +63,14 @@ export async function getImages(request: FastifyRequest) { } } -export async function getApplication(request: FastifyRequest) { +export async function getApplication(request: FastifyRequest) { try { const { id } = request.params const { teamId } = request.user const appId = process.env['COOLIFY_APP_ID']; let isRunning = false; let isExited = false; - const application = await getApplicationFromDB(id, teamId); + const application: any = await getApplicationFromDB(id, teamId); if (application?.destinationDockerId && application.destinationDocker?.engine) { isRunning = await checkContainer(application.destinationDocker.engine, id); isExited = await isContainerExited(application.destinationDocker.engine, id); @@ -281,11 +279,11 @@ export async function saveApplicationSettings(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { teamId } = request.user - const application = await getApplicationFromDB(id, teamId); + const application: any = await getApplicationFromDB(id, teamId); if (application?.destinationDockerId && application.destinationDocker?.engine) { const { engine } = application.destinationDocker; const found = await checkContainer(engine, id); @@ -373,8 +371,9 @@ export async function getUsage(request) { try { const { id } = request.params const teamId = request.user?.teamId; - const application = await getApplicationFromDB(id, teamId); let usage = {}; + + const application: any = await getApplicationFromDB(id, teamId); if (application.destinationDockerId) { [usage] = await Promise.all([getContainerUsage(application.destinationDocker.engine, id)]); } @@ -389,7 +388,6 @@ export async function deployApplication(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { gitSourceId } = request.body @@ -464,11 +462,11 @@ export async function saveApplicationSource(request: FastifyRequest, reply: Fast } } -export async function getGitHubToken(request: FastifyRequest, reply: FastifyReply) { +export async function getGitHubToken(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { teamId } = request.user - const application = await getApplicationFromDB(id, teamId); + const application: any = await getApplicationFromDB(id, teamId); const payload = { iat: Math.round(new Date().getTime() / 1000), exp: Math.round(new Date().getTime() / 1000 + 60), @@ -490,7 +488,7 @@ export async function getGitHubToken(request: FastifyRequest, reply: FastifyRepl } } -export async function checkRepository(request: FastifyRequest) { +export async function checkRepository(request: FastifyRequest) { try { const { id } = request.params const { repository, branch } = request.query @@ -537,7 +535,7 @@ export async function saveRepository(request, reply) { } } -export async function saveDestination(request: FastifyRequest, reply: FastifyReply) { +export async function saveDestination(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { destinationId } = request.body @@ -555,7 +553,7 @@ export async function getBuildPack(request) { try { const { id } = request.params const teamId = request.user?.teamId; - const application = await getApplicationFromDB(id, teamId); + const application: any = await getApplicationFromDB(id, teamId); return { type: application.gitSource.type, projectId: application.projectId, @@ -579,7 +577,7 @@ export async function saveBuildPack(request, reply) { } } -export async function getSecrets(request: FastifyRequest) { +export async function getSecrets(request: FastifyRequest) { try { const { id } = request.params let secrets = await prisma.secret.findMany({ @@ -601,7 +599,7 @@ export async function getSecrets(request: FastifyRequest) { } } -export async function saveSecret(request: FastifyRequest, reply: FastifyReply) { +export async function saveSecret(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params let { name, value, isBuildSecret, isPRMRSecret, isNew } = request.body @@ -636,7 +634,7 @@ export async function saveSecret(request: FastifyRequest, reply: FastifyReply) { return errorHandler({ status, message }) } } -export async function deleteSecret(request: FastifyRequest) { +export async function deleteSecret(request: FastifyRequest) { try { const { id } = request.params const { name } = request.body @@ -647,7 +645,7 @@ export async function deleteSecret(request: FastifyRequest) { } } -export async function getStorages(request: FastifyRequest) { +export async function getStorages(request: FastifyRequest) { try { const { id } = request.params const persistentStorages = await prisma.applicationPersistentStorage.findMany({ where: { applicationId: id } }); @@ -659,7 +657,7 @@ export async function getStorages(request: FastifyRequest) { } } -export async function saveStorage(request: FastifyRequest, reply: FastifyReply) { +export async function saveStorage(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { path, newStorage, storageId } = request.body @@ -680,7 +678,7 @@ export async function saveStorage(request: FastifyRequest, reply: FastifyReply) } } -export async function deleteStorage(request: FastifyRequest) { +export async function deleteStorage(request: FastifyRequest) { try { const { id } = request.params const { path } = request.body @@ -691,7 +689,7 @@ export async function deleteStorage(request: FastifyRequest) { } } -export async function getPreviews(request: FastifyRequest) { +export async function getPreviews(request: FastifyRequest) { try { const { id } = request.params const { teamId } = request.user @@ -739,7 +737,7 @@ export async function getPreviews(request: FastifyRequest) { } } -export async function getApplicationLogs(request: FastifyRequest) { +export async function getApplicationLogs(request: FastifyRequest) { try { const { id } = request.params let { since = 0 } = request.query @@ -783,7 +781,7 @@ export async function getApplicationLogs(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function getBuildLogs(request: FastifyRequest) { +export async function getBuildLogs(request: FastifyRequest) { try { const { id } = request.params let { buildId, skip = 0 } = request.query @@ -820,9 +818,9 @@ export async function getBuildLogs(request: FastifyRequest) { } } -export async function getBuildIdLogs(request: FastifyRequest) { +export async function getBuildIdLogs(request: FastifyRequest) { try { - const { id, buildId } = request.params + const { buildId } = request.params let { sequence = 0 } = request.query if (typeof sequence !== 'number') { sequence = Number(sequence) @@ -841,7 +839,7 @@ export async function getBuildIdLogs(request: FastifyRequest) { } } -export async function getGitLabSSHKey(request: FastifyRequest) { +export async function getGitLabSSHKey(request: FastifyRequest) { try { const { id } = request.params const application = await prisma.application.findUnique({ @@ -854,7 +852,7 @@ export async function getGitLabSSHKey(request: FastifyRequest) { } } -export async function saveGitLabSSHKey(request: FastifyRequest, reply: FastifyReply) { +export async function saveGitLabSSHKey(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const application = await prisma.application.findUnique({ @@ -876,7 +874,7 @@ export async function saveGitLabSSHKey(request: FastifyRequest, reply: FastifyRe } } -export async function saveDeployKey(request: FastifyRequest, reply: FastifyReply) { +export async function saveDeployKey(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params let { deployKeyId } = request.body; @@ -896,9 +894,8 @@ export async function saveDeployKey(request: FastifyRequest, reply: FastifyReply } } -export async function cancelDeployment(request: FastifyRequest, reply: FastifyReply) { +export async function cancelDeployment(request: FastifyRequest, reply: FastifyReply) { try { - const { id } = request.params const { buildId, applicationId } = request.body; if (!buildId) { throw { status: 500, message: 'buildId is required' } diff --git a/apps/api/src/routes/api/v1/applications/index.ts b/apps/api/src/routes/api/v1/applications/index.ts index 224bacc22..aa359f973 100644 --- a/apps/api/src/routes/api/v1/applications/index.ts +++ b/apps/api/src/routes/api/v1/applications/index.ts @@ -1,90 +1,60 @@ import { FastifyPluginAsync } from 'fastify'; +import { OnlyId } from '../../../../types'; import { cancelDeployment, checkDNS, checkRepository, deleteApplication, deleteSecret, deleteStorage, deployApplication, getApplication, getApplicationLogs, getBuildIdLogs, getBuildLogs, getBuildPack, getGitHubToken, getGitLabSSHKey, getImages, getPreviews, getSecrets, getStorages, getUsage, listApplications, newApplication, saveApplication, saveApplicationSettings, saveApplicationSource, saveBuildPack, saveDeployKey, saveDestination, saveGitLabSSHKey, saveRepository, saveSecret, saveStorage, stopApplication } from './handlers'; -export interface GetApplication { - Params: { id: string; } -} +import type { CancelDeployment, CheckDNS, CheckRepository, DeleteApplication, DeleteSecret, DeleteStorage, DeployApplication, GetApplicationLogs, GetBuildIdLogs, GetBuildLogs, GetImages, SaveApplication, SaveApplicationSettings, SaveApplicationSource, SaveDeployKey, SaveDestination, SaveSecret, SaveStorage } from './types'; -export interface SaveApplication { - Params: { id: string; }, - Body: any -} - -export interface SaveApplicationSettings { - Params: { id: string; }; - Querystring: { domain: string; }; - Body: { debug: boolean; previews: boolean; dualCerts: boolean; autodeploy: boolean; branch: string; projectId: number; }; -} - -export interface DeleteApplication { - Params: { id: string; }; - Querystring: { domain: string; }; -} - -export interface CheckDNS { - Params: { id: string; }; - Querystring: { domain: string; }; -} - -export interface DeployApplication { - Params: { id: string }, - Querystring: { domain: string } - Body: { pullmergeRequestId: string | null, branch: string } -} - -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listApplications(request)); - fastify.post('/images', async (request) => await getImages(request)); + fastify.post('/images', async (request) => await getImages(request)); fastify.post('/new', async (request, reply) => await newApplication(request, reply)); - fastify.get('/:id', async (request) => await getApplication(request)); + fastify.get('/:id', async (request) => await getApplication(request)); fastify.post('/:id', async (request, reply) => await saveApplication(request, reply)); fastify.delete('/:id', async (request, reply) => await deleteApplication(request, reply)); - fastify.post('/:id/stop', async (request, reply) => await stopApplication(request, reply)); + fastify.post('/:id/stop', async (request, reply) => await stopApplication(request, reply)); fastify.post('/:id/settings', async (request, reply) => await saveApplicationSettings(request, reply)); - fastify.post('/:id/check', async (request) => await checkDNS(request)); + fastify.post('/:id/check', async (request) => await checkDNS(request)); - fastify.get('/:id/secrets', async (request) => await getSecrets(request)); - fastify.post('/:id/secrets', async (request, reply) => await saveSecret(request, reply)); - fastify.delete('/:id/secrets', async (request) => await deleteSecret(request)); + fastify.get('/:id/secrets', async (request) => await getSecrets(request)); + fastify.post('/:id/secrets', async (request, reply) => await saveSecret(request, reply)); + fastify.delete('/:id/secrets', async (request) => await deleteSecret(request)); - fastify.get('/:id/storages', async (request) => await getStorages(request)); - fastify.post('/:id/storages', async (request, reply) => await saveStorage(request, reply)); - fastify.delete('/:id/storages', async (request) => await deleteStorage(request)); + fastify.get('/:id/storages', async (request) => await getStorages(request)); + fastify.post('/:id/storages', async (request, reply) => await saveStorage(request, reply)); + fastify.delete('/:id/storages', async (request) => await deleteStorage(request)); - fastify.get('/:id/previews', async (request) => await getPreviews(request)); + fastify.get('/:id/previews', async (request) => await getPreviews(request)); - fastify.get('/:id/logs', async (request) => await getApplicationLogs(request)); - fastify.get('/:id/logs/build', async (request) => await getBuildLogs(request)); - fastify.get('/:id/logs/build/:buildId', async (request) => await getBuildIdLogs(request)); + fastify.get('/:id/logs', async (request) => await getApplicationLogs(request)); + fastify.get('/:id/logs/build', async (request) => await getBuildLogs(request)); + fastify.get('/:id/logs/build/:buildId', async (request) => await getBuildIdLogs(request)); - fastify.get('/:id/usage', async (request) => await getUsage(request)) + fastify.get('/:id/usage', async (request) => await getUsage(request)) fastify.post('/:id/deploy', async (request) => await deployApplication(request)) - fastify.post('/:id/cancel', async (request, reply) => await cancelDeployment(request, reply)); + fastify.post('/:id/cancel', async (request, reply) => await cancelDeployment(request, reply)); - fastify.post('/:id/configuration/source', async (request, reply) => await saveApplicationSource(request, reply)); + fastify.post('/:id/configuration/source', async (request, reply) => await saveApplicationSource(request, reply)); - fastify.get('/:id/configuration/repository', async (request) => await checkRepository(request)); + fastify.get('/:id/configuration/repository', async (request) => await checkRepository(request)); fastify.post('/:id/configuration/repository', async (request, reply) => await saveRepository(request, reply)); - fastify.post('/:id/configuration/destination', async (request, reply) => await saveDestination(request, reply)); + fastify.post('/:id/configuration/destination', async (request, reply) => await saveDestination(request, reply)); fastify.get('/:id/configuration/buildpack', async (request) => await getBuildPack(request)); fastify.post('/:id/configuration/buildpack', async (request, reply) => await saveBuildPack(request, reply)); - fastify.get('/:id/configuration/sshkey', async (request) => await getGitLabSSHKey(request)); - fastify.post('/:id/configuration/sshkey', async (request, reply) => await saveGitLabSSHKey(request, reply)); + fastify.get('/:id/configuration/sshkey', async (request) => await getGitLabSSHKey(request)); + fastify.post('/:id/configuration/sshkey', async (request, reply) => await saveGitLabSSHKey(request, reply)); - fastify.post('/:id/configuration/deploykey', async (request, reply) => await saveDeployKey(request, reply)); + fastify.post('/:id/configuration/deploykey', async (request, reply) => await saveDeployKey(request, reply)); - - - fastify.get('/:id/configuration/githubToken', async (request, reply) => await getGitHubToken(request, reply)); + fastify.get('/:id/configuration/githubToken', async (request, reply) => await getGitHubToken(request, reply)); }; export default root; diff --git a/apps/api/src/routes/api/v1/applications/types.ts b/apps/api/src/routes/api/v1/applications/types.ts new file mode 100644 index 000000000..2d9b9913d --- /dev/null +++ b/apps/api/src/routes/api/v1/applications/types.ts @@ -0,0 +1,117 @@ +import type { OnlyId } from "../../../../types"; + +export interface SaveApplication extends OnlyId { + Body: { + name: string, + buildPack: string, + fqdn: string, + port: number, + exposePort: number, + installCommand: string, + buildCommand: string, + startCommand: string, + baseDirectory: string, + publishDirectory: string, + pythonWSGI: string, + pythonModule: string, + pythonVariable: string, + dockerFileLocation: string, + denoMainFile: string, + denoOptions: string, + baseImage: string, + baseBuildImage: string, + deploymentType: string + } +} +export interface SaveApplicationSettings extends OnlyId { + Querystring: { domain: string; }; + Body: { debug: boolean; previews: boolean; dualCerts: boolean; autodeploy: boolean; branch: string; projectId: number; }; +} +export interface DeleteApplication extends OnlyId { + Querystring: { domain: string; }; +} +export interface CheckDNS extends OnlyId { + Querystring: { domain: string; }; + Body: { + exposePort: number, + fqdn: string, + forceSave: boolean, + dualCerts: boolean + } +} +export interface DeployApplication { + Querystring: { domain: string } + Body: { pullmergeRequestId: string | null, branch: string } +} +export interface GetImages { + Body: { buildPack: string, deploymentType: string } +} +export interface SaveApplicationSource extends OnlyId { + Body: { gitSourceId: string } +} +export interface CheckRepository extends OnlyId { + Querystring: { repository: string, branch: string } +} +export interface SaveDestination extends OnlyId { + Body: { destinationId: string } +} +export interface SaveSecret extends OnlyId { + Body: { + name: string, + value: string, + isBuildSecret: boolean, + isPRMRSecret: boolean, + isNew: boolean + } +} +export interface DeleteSecret extends OnlyId { + Body: { name: string } +} +export interface SaveStorage extends OnlyId { + Body: { + path: string, + newStorage: boolean, + storageId: string + } +} +export interface DeleteStorage extends OnlyId { + Body: { + path: string, + } +} +export interface GetApplicationLogs extends OnlyId { + Querystring: { + since: number, + } +} +export interface GetBuildLogs extends OnlyId { + Querystring: { + buildId: string + skip: number, + } +} +export interface GetBuildIdLogs { + Params: { + buildId: string + }, + Querystring: { + sequence: number + } +} +export interface SaveDeployKey extends OnlyId { + Body: { + deployKeyId: number + } +} +export interface CancelDeployment { + Body: { + buildId: string, + applicationId: string + } +} +export interface DeployApplication extends OnlyId { + Body: { + pullmergeRequestId: string | null, + branch: string + } +} diff --git a/apps/api/src/routes/api/v1/base/index.ts b/apps/api/src/routes/api/v1/base/index.ts index 37972a1a7..9eaa8c40a 100644 --- a/apps/api/src/routes/api/v1/base/index.ts +++ b/apps/api/src/routes/api/v1/base/index.ts @@ -1,8 +1,8 @@ import { FastifyPluginAsync } from 'fastify'; import { errorHandler, version } from '../../../../lib/common'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.get('/', async (request) => { +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.get('/', async () => { try { return { version, diff --git a/apps/api/src/routes/api/v1/databases/handlers.ts b/apps/api/src/routes/api/v1/databases/handlers.ts index 52110b8b7..8d05bb3a5 100644 --- a/apps/api/src/routes/api/v1/databases/handlers.ts +++ b/apps/api/src/routes/api/v1/databases/handlers.ts @@ -6,10 +6,11 @@ import fs from 'fs/promises'; import { asyncExecShell, ComposeFile, createDirectories, decrypt, encrypt, errorHandler, generateDatabaseConfiguration, generatePassword, getContainerUsage, getDatabaseImage, getDatabaseVersions, getFreePort, listSettings, makeLabelForStandaloneDatabase, prisma, startTcpProxy, startTraefikTCPProxy, stopDatabaseContainer, stopTcpHttpProxy, supportedDatabaseTypesAndVersions, uniqueName, updatePasswordInDb } from '../../../../lib/common'; import { dockerInstance, getEngine } from '../../../../lib/docker'; import { day } from '../../../../lib/dayjs'; +import { GetDatabaseLogs, OnlyId, SaveDatabase, SaveDatabaseDestination, SaveDatabaseSettings, SaveVersion } from '../../../../types'; +import { SaveDatabaseType } from './types'; export async function listDatabases(request: FastifyRequest) { try { - const userId = request.user.userId; const teamId = request.user.teamId; let databases = [] if (teamId === '0') { @@ -55,7 +56,7 @@ export async function newDatabase(request: FastifyRequest, reply: FastifyReply) return errorHandler({ status, message }) } } -export async function getDatabase(request: FastifyRequest) { +export async function getDatabase(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -107,7 +108,7 @@ export async function getDatabaseTypes(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveDatabaseType(request: FastifyRequest, reply: FastifyReply) { +export async function saveDatabaseType(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params; const { type } = request.body; @@ -120,7 +121,7 @@ export async function saveDatabaseType(request: FastifyRequest, reply: FastifyRe return errorHandler({ status, message }) } } -export async function getVersions(request: FastifyRequest) { +export async function getVersions(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -135,7 +136,7 @@ export async function getVersions(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveVersion(request: FastifyRequest, reply: FastifyReply) { +export async function saveVersion(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params; const { version } = request.body; @@ -144,7 +145,6 @@ export async function saveVersion(request: FastifyRequest, reply: FastifyReply) where: { id }, data: { version, - } }); return reply.code(201).send({}) @@ -152,7 +152,7 @@ export async function saveVersion(request: FastifyRequest, reply: FastifyReply) return errorHandler({ status, message }) } } -export async function saveDatabaseDestination(request: FastifyRequest, reply: FastifyReply) { +export async function saveDatabaseDestination(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params; const { destinationId } = request.body; @@ -181,7 +181,7 @@ export async function saveDatabaseDestination(request: FastifyRequest, reply: Fa return errorHandler({ status, message }) } } -export async function getDatabaseUsage(request: FastifyRequest) { +export async function getDatabaseUsage(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -203,7 +203,7 @@ export async function getDatabaseUsage(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function startDatabase(request: FastifyRequest) { +export async function startDatabase(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -226,7 +226,6 @@ export async function startDatabase(request: FastifyRequest) { const network = destinationDockerId && destinationDocker.network; const host = getEngine(destinationDocker.engine); - const engine = destinationDocker.engine; const volumeName = volume.split(':')[0]; const labels = await makeLabelForStandaloneDatabase({ id, image, volume }); @@ -285,7 +284,7 @@ export async function startDatabase(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function stopDatabase(request: FastifyRequest) { +export async function stopDatabase(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -310,7 +309,7 @@ export async function stopDatabase(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function getDatabaseLogs(request: FastifyRequest) { +export async function getDatabaseLogs(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -361,7 +360,7 @@ export async function getDatabaseLogs(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function deleteDatabase(request: FastifyRequest) { +export async function deleteDatabase(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -382,7 +381,7 @@ export async function deleteDatabase(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveDatabase(request: FastifyRequest, reply: FastifyReply) { +export async function saveDatabase(request: FastifyRequest, reply: FastifyReply) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -428,7 +427,7 @@ export async function saveDatabase(request: FastifyRequest, reply: FastifyReply) return errorHandler({ status, message }) } } -export async function saveDatabaseSettings(request: FastifyRequest) { +export async function saveDatabaseSettings(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; diff --git a/apps/api/src/routes/api/v1/databases/index.ts b/apps/api/src/routes/api/v1/databases/index.ts index cd4a8c159..0c52938f8 100644 --- a/apps/api/src/routes/api/v1/databases/index.ts +++ b/apps/api/src/routes/api/v1/databases/index.ts @@ -1,32 +1,35 @@ import { FastifyPluginAsync } from 'fastify'; import { deleteDatabase, getDatabase, getDatabaseLogs, getDatabaseTypes, getDatabaseUsage, getVersions, listDatabases, newDatabase, saveDatabase, saveDatabaseDestination, saveDatabaseSettings, saveDatabaseType, saveVersion, startDatabase, stopDatabase } from './handlers'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +import type { GetDatabaseLogs, OnlyId, SaveDatabase, SaveDatabaseDestination, SaveDatabaseSettings, SaveVersion } from '../../../../types'; +import type { SaveDatabaseType } from './types'; + +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listDatabases(request)); fastify.post('/new', async (request, reply) => await newDatabase(request, reply)); - fastify.get('/:id', async (request) => await getDatabase(request)); - fastify.post('/:id', async (request, reply) => await saveDatabase(request, reply)); - fastify.delete('/:id', async (request) => await deleteDatabase(request)); + fastify.get('/:id', async (request) => await getDatabase(request)); + fastify.post('/:id', async (request, reply) => await saveDatabase(request, reply)); + fastify.delete('/:id', async (request) => await deleteDatabase(request)); - fastify.post('/:id/settings', async (request) => await saveDatabaseSettings(request)); + fastify.post('/:id/settings', async (request) => await saveDatabaseSettings(request)); fastify.get('/:id/configuration/type', async (request) => await getDatabaseTypes(request)); - fastify.post('/:id/configuration/type', async (request, reply) => await saveDatabaseType(request, reply)); + fastify.post('/:id/configuration/type', async (request, reply) => await saveDatabaseType(request, reply)); - fastify.get('/:id/configuration/version', async (request) => await getVersions(request)); - fastify.post('/:id/configuration/version', async (request, reply) => await saveVersion(request, reply)); + fastify.get('/:id/configuration/version', async (request) => await getVersions(request)); + fastify.post('/:id/configuration/version', async (request, reply) => await saveVersion(request, reply)); - fastify.post('/:id/configuration/destination', async (request, reply) => await saveDatabaseDestination(request, reply)); + fastify.post('/:id/configuration/destination', async (request, reply) => await saveDatabaseDestination(request, reply)); - fastify.get('/:id/usage', async (request) => await getDatabaseUsage(request)); - fastify.get('/:id/logs', async (request) => await getDatabaseLogs(request)); + fastify.get('/:id/usage', async (request) => await getDatabaseUsage(request)); + fastify.get('/:id/logs', async (request) => await getDatabaseLogs(request)); - fastify.post('/:id/start', async (request) => await startDatabase(request)); - fastify.post('/:id/stop', async (request) => await stopDatabase(request)); + fastify.post('/:id/start', async (request) => await startDatabase(request)); + fastify.post('/:id/stop', async (request) => await stopDatabase(request)); }; export default root; diff --git a/apps/api/src/routes/api/v1/databases/types.ts b/apps/api/src/routes/api/v1/databases/types.ts new file mode 100644 index 000000000..b7e4c8692 --- /dev/null +++ b/apps/api/src/routes/api/v1/databases/types.ts @@ -0,0 +1,5 @@ +import type { OnlyId } from "../../../../types"; + +export interface SaveDatabaseType extends OnlyId { + Body: { type: string } +} \ No newline at end of file diff --git a/apps/api/src/routes/api/v1/destinations/handlers.ts b/apps/api/src/routes/api/v1/destinations/handlers.ts index dfc7f16ef..40d68a84b 100644 --- a/apps/api/src/routes/api/v1/destinations/handlers.ts +++ b/apps/api/src/routes/api/v1/destinations/handlers.ts @@ -3,6 +3,9 @@ import { FastifyReply } from 'fastify'; import { asyncExecShell, errorHandler, listSettings, prisma, startCoolifyProxy, startTraefikProxy, stopTraefikProxy } from '../../../../lib/common'; import { checkContainer, dockerInstance, getEngine } from '../../../../lib/docker'; +import type { OnlyId } from '../../../../types'; +import type { CheckDestination, NewDestination, Proxy, SaveDestinationSettings } from './types'; + export async function listDestinations(request: FastifyRequest) { try { const teamId = request.user.teamId; @@ -22,7 +25,7 @@ export async function listDestinations(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function checkDestination(request: FastifyRequest) { +export async function checkDestination(request: FastifyRequest) { try { const { network } = request.body; const found = await prisma.destinationDocker.findFirst({ where: { network } }); @@ -36,7 +39,7 @@ export async function checkDestination(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function getDestination(request: FastifyRequest) { +export async function getDestination(request: FastifyRequest) { try { const { id } = request.params const teamId = request.user?.teamId; @@ -74,7 +77,7 @@ export async function getDestination(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function newDestination(request: FastifyRequest, reply: FastifyReply) { +export async function newDestination(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params let { name, network, engine, isCoolifyProxyUsed } = request.body @@ -119,7 +122,7 @@ export async function newDestination(request: FastifyRequest, reply: FastifyRepl return errorHandler({ status, message }) } } -export async function deleteDestination(request: FastifyRequest) { +export async function deleteDestination(request: FastifyRequest) { try { const { id } = request.params const destination = await prisma.destinationDocker.delete({ where: { id } }); @@ -143,7 +146,7 @@ export async function deleteDestination(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveDestinationSettings(request: FastifyRequest, reply: FastifyReply) { +export async function saveDestinationSettings(request: FastifyRequest) { try { const { engine, isCoolifyProxyUsed } = request.body; await prisma.destinationDocker.updateMany({ @@ -159,7 +162,7 @@ export async function saveDestinationSettings(request: FastifyRequest, reply: Fa return errorHandler({ status, message }) } } -export async function startProxy(request: FastifyRequest, reply: FastifyReply) { +export async function startProxy(request: FastifyRequest) { const { engine } = request.body; try { await startTraefikProxy(engine); @@ -169,19 +172,16 @@ export async function startProxy(request: FastifyRequest, reply: FastifyReply) { return errorHandler({ status, message }) } } -export async function stopProxy(request: FastifyRequest, reply: FastifyReply) { - const settings = await prisma.setting.findFirst({}); +export async function stopProxy(request: FastifyRequest) { const { engine } = request.body; try { await stopTraefikProxy(engine); - return {} } catch ({ status, message }) { return errorHandler({ status, message }) } } -export async function restartProxy(request: FastifyRequest, reply: FastifyReply) { - const settings = await prisma.setting.findFirst({}); +export async function restartProxy(request: FastifyRequest) { const { engine } = request.body; try { await stopTraefikProxy(engine); diff --git a/apps/api/src/routes/api/v1/destinations/index.ts b/apps/api/src/routes/api/v1/destinations/index.ts index 0e395a787..43440cc1c 100644 --- a/apps/api/src/routes/api/v1/destinations/index.ts +++ b/apps/api/src/routes/api/v1/destinations/index.ts @@ -1,24 +1,24 @@ import { FastifyPluginAsync } from 'fastify'; import { checkDestination, deleteDestination, getDestination, listDestinations, newDestination, restartProxy, saveDestinationSettings, startProxy, stopProxy } from './handlers'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +import type { OnlyId } from '../../../../types'; +import type { CheckDestination, NewDestination, Proxy, SaveDestinationSettings } from './types'; + +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listDestinations(request)); - fastify.post('/check', async (request) => await checkDestination(request)); - - fastify.get('/:id', async (request) => await getDestination(request)); - fastify.post('/:id', async (request, reply) => await newDestination(request, reply)); - fastify.delete('/:id', async (request) => await deleteDestination(request)); - - fastify.post('/:id/settings', async (request, reply) => await saveDestinationSettings(request, reply)); - fastify.post('/:id/start', async (request, reply) => await startProxy(request, reply)); - fastify.post('/:id/stop', async (request, reply) => await stopProxy(request, reply)); - fastify.post('/:id/restart', async (request, reply) => await restartProxy(request, reply)); - + fastify.post('/check', async (request) => await checkDestination(request)); + fastify.get('/:id', async (request) => await getDestination(request)); + fastify.post('/:id', async (request, reply) => await newDestination(request, reply)); + fastify.delete('/:id', async (request) => await deleteDestination(request)); + fastify.post('/:id/settings', async (request, reply) => await saveDestinationSettings(request)); + fastify.post('/:id/start', async (request, reply) => await startProxy(request)); + fastify.post('/:id/stop', async (request, reply) => await stopProxy(request)); + fastify.post('/:id/restart', async (request, reply) => await restartProxy(request)); }; export default root; diff --git a/apps/api/src/routes/api/v1/destinations/types.ts b/apps/api/src/routes/api/v1/destinations/types.ts new file mode 100644 index 000000000..25691b9d8 --- /dev/null +++ b/apps/api/src/routes/api/v1/destinations/types.ts @@ -0,0 +1,26 @@ +import { OnlyId } from "../../../../types" + +export interface CheckDestination { + Body: { + network: string + } +} +export interface NewDestination extends OnlyId { + Body: { + name: string + network: string + engine: string + isCoolifyProxyUsed: boolean + } +} +export interface SaveDestinationSettings extends OnlyId { + Body: { + engine: string + isCoolifyProxyUsed: boolean + } +} +export interface Proxy extends OnlyId { + Body: { + engine: string + } +} \ No newline at end of file diff --git a/apps/api/src/routes/api/v1/handlers.ts b/apps/api/src/routes/api/v1/handlers.ts index c76181294..7f54a356b 100644 --- a/apps/api/src/routes/api/v1/handlers.ts +++ b/apps/api/src/routes/api/v1/handlers.ts @@ -8,7 +8,7 @@ import { asyncExecShell, asyncSleep, cleanupDockerStorage, errorHandler, isDev, import type { FastifyReply, FastifyRequest } from 'fastify'; import type { Login, Update } from '.'; - +import type { GetCurrentUser } from './types'; export async function hashPassword(password: string): Promise { const saltRounds = 15; @@ -253,9 +253,9 @@ export async function login(request: FastifyRequest, reply: FastifyReply) } } -export async function getCurrentUser(request: FastifyRequest, fastify) { +export async function getCurrentUser(request: FastifyRequest, fastify) { let token = null - + const { teamId } = request.query try { const user = await prisma.user.findUnique({ where: { id: request.user.userId } @@ -266,17 +266,17 @@ export async function getCurrentUser(request: FastifyRequest, fastify) { } catch (error) { throw { status: 401, message: error }; } - if (request.query.teamId) { + if (teamId) { try { const user = await prisma.user.findFirst({ - where: { id: request.user.userId, teams: { some: { id: request.query.teamId } } }, + where: { id: request.user.userId, teams: { some: { id: teamId } } }, include: { teams: true, permission: true } }) if (user) { - const permission = user.permission.find(p => p.teamId === request.query.teamId).permission + const permission = user.permission.find(p => p.teamId === teamId).permission const payload = { ...request.user, - teamId: request.query.teamId, + teamId, permission: permission || null, isAdmin: permission === 'owner' || permission === 'admin' diff --git a/apps/api/src/routes/api/v1/iam/handlers.ts b/apps/api/src/routes/api/v1/iam/handlers.ts index 0e3668f64..7009ec794 100644 --- a/apps/api/src/routes/api/v1/iam/handlers.ts +++ b/apps/api/src/routes/api/v1/iam/handlers.ts @@ -3,6 +3,10 @@ import type { FastifyRequest } from 'fastify'; import { FastifyReply } from 'fastify'; import { decrypt, errorHandler, prisma, uniqueName } from '../../../../lib/common'; import { day } from '../../../../lib/dayjs'; + +import type { OnlyId } from '../../../../types'; +import type { BodyId, InviteToTeam, SaveTeam, SetPermission } from './types'; + export async function listTeams(request: FastifyRequest) { try { const userId = request.user.userId; @@ -36,7 +40,7 @@ export async function listTeams(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function deleteTeam(request: FastifyRequest, reply: FastifyReply) { +export async function deleteTeam(request: FastifyRequest, reply: FastifyReply) { try { const userId = request.user.userId; const { id } = request.params; @@ -136,7 +140,7 @@ export async function newTeam(request: FastifyRequest, reply: FastifyReply) { return errorHandler({ status, message }) } } -export async function getTeam(request: FastifyRequest, reply: FastifyReply) { +export async function getTeam(request: FastifyRequest, reply: FastifyReply) { try { const userId = request.user.userId; const teamId = request.user.teamId; @@ -163,7 +167,7 @@ export async function getTeam(request: FastifyRequest, reply: FastifyReply) { return errorHandler({ status, message }) } } -export async function saveTeam(request: FastifyRequest, reply: FastifyReply) { +export async function saveTeam(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params; const { name } = request.body; @@ -263,7 +267,7 @@ export async function saveTeam(request: FastifyRequest, reply: FastifyReply) { // } // } -export async function inviteToTeam(request: FastifyRequest, reply: FastifyReply) { +export async function inviteToTeam(request: FastifyRequest, reply: FastifyReply) { try { const userId = request.user.userId; const { email, permission, teamId, teamName } = request.body; @@ -306,7 +310,7 @@ export async function inviteToTeam(request: FastifyRequest, reply: FastifyReply) } } -export async function acceptInvitation(request: FastifyRequest) { +export async function acceptInvitation(request: FastifyRequest) { try { const userId = request.user.userId; const { id } = request.body; @@ -331,7 +335,7 @@ export async function acceptInvitation(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function revokeInvitation(request: FastifyRequest) { +export async function revokeInvitation(request: FastifyRequest) { try { const { id } = request.body await prisma.teamInvitation.delete({ where: { id } }); @@ -341,15 +345,15 @@ export async function revokeInvitation(request: FastifyRequest) { } } -export async function removeUser(request: FastifyRequest, reply: FastifyReply) { +export async function removeUser(request: FastifyRequest, reply: FastifyReply) { try { - const { uid } = request.body; - const user = await prisma.user.findUnique({ where: { id: uid }, include: { teams: true, permission: true } }); + const { id } = request.body; + const user = await prisma.user.findUnique({ where: { id }, include: { teams: true, permission: true } }); if (user) { const permissions = user.permission; if (permissions.length > 0) { for (const permission of permissions) { - await prisma.permission.deleteMany({ where: { id: permission.id, userId: uid } }); + await prisma.permission.deleteMany({ where: { id: permission.id, userId: id } }); } } const teams = user.teams; @@ -357,7 +361,7 @@ export async function removeUser(request: FastifyRequest, reply: FastifyReply) { for (const team of teams) { const newTeam = await prisma.team.update({ where: { id: team.id }, - data: { users: { disconnect: { id: uid } } }, + data: { users: { disconnect: { id } } }, include: { applications: true, database: true, gitHubApps: true, gitLabApps: true, gitSources: true, destinationDocker: true, service: true, users: true } }); if (newTeam.users.length === 0) { @@ -422,14 +426,14 @@ export async function removeUser(request: FastifyRequest, reply: FastifyReply) { } } } - await prisma.user.delete({ where: { id: uid } }); + await prisma.user.delete({ where: { id } }); return reply.code(201).send() } catch ({ status, message }) { return errorHandler({ status, message }) } } -export async function setPermission(request: FastifyRequest, reply: FastifyReply) { +export async function setPermission(request: FastifyRequest, reply: FastifyReply) { try { const { userId, newPermission, permissionId } = request.body; await prisma.permission.updateMany({ @@ -442,7 +446,7 @@ export async function setPermission(request: FastifyRequest, reply: FastifyReply } } -export async function changePassword(request: FastifyRequest, reply: FastifyReply) { +export async function changePassword(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.body; await prisma.user.update({ where: { id }, data: { password: 'RESETME' } }); diff --git a/apps/api/src/routes/api/v1/iam/index.ts b/apps/api/src/routes/api/v1/iam/index.ts index d82c39878..539586b2d 100644 --- a/apps/api/src/routes/api/v1/iam/index.ts +++ b/apps/api/src/routes/api/v1/iam/index.ts @@ -1,27 +1,28 @@ import { FastifyPluginAsync } from 'fastify'; import { acceptInvitation, changePassword, deleteTeam, getTeam, inviteToTeam, listTeams, newTeam, removeUser, revokeInvitation, saveTeam, setPermission } from './handlers'; +import type { OnlyId } from '../../../../types'; +import type { BodyId, InviteToTeam, SaveTeam, SetPermission } from './types'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listTeams(request)); fastify.post('/new', async (request, reply) => await newTeam(request, reply)); - fastify.get('/team/:id', async (request, reply) => await getTeam(request, reply)); - fastify.post('/team/:id', async (request, reply) => await saveTeam(request, reply)); - fastify.delete('/team/:id', async (request, reply) => await deleteTeam(request, reply)); + fastify.get('/team/:id', async (request, reply) => await getTeam(request, reply)); + fastify.post('/team/:id', async (request, reply) => await saveTeam(request, reply)); + fastify.delete('/team/:id', async (request, reply) => await deleteTeam(request, reply)); - fastify.post('/team/:id/invitation/invite', async (request, reply) => await inviteToTeam(request, reply)) - fastify.post('/team/:id/invitation/accept', async (request) => await acceptInvitation(request)); - fastify.post('/team/:id/invitation/revoke', async (request) => await revokeInvitation(request)); + fastify.post('/team/:id/invitation/invite', async (request, reply) => await inviteToTeam(request, reply)) + fastify.post('/team/:id/invitation/accept', async (request) => await acceptInvitation(request)); + fastify.post('/team/:id/invitation/revoke', async (request) => await revokeInvitation(request)); + fastify.post('/team/:id/permission', async (request, reply) => await setPermission(request, reply)); - fastify.post('/team/:id/permission', async (request, reply) => await setPermission(request, reply)); - - fastify.delete('/user/remove', async (request, reply) => await removeUser(request, reply)); - fastify.post('/user/password', async (request, reply) => await changePassword(request, reply)); + fastify.delete('/user/remove', async (request, reply) => await removeUser(request, reply)); + fastify.post('/user/password', async (request, reply) => await changePassword(request, reply)); // fastify.delete('/user', async (request, reply) => await deleteUser(request, reply)); }; diff --git a/apps/api/src/routes/api/v1/iam/types.ts b/apps/api/src/routes/api/v1/iam/types.ts new file mode 100644 index 000000000..26a896b8e --- /dev/null +++ b/apps/api/src/routes/api/v1/iam/types.ts @@ -0,0 +1,27 @@ +import { OnlyId } from "../../../../types" + +export interface SaveTeam extends OnlyId { + Body: { + name: string + } +} +export interface InviteToTeam { + Body: { + email: string, + permission: string, + teamId: string, + teamName: string + } +} +export interface BodyId { + Body: { + id: string + } +} +export interface SetPermission { + Body: { + userId: string, + newPermission: string, + permissionId: string + } +} \ No newline at end of file diff --git a/apps/api/src/routes/api/v1/index.ts b/apps/api/src/routes/api/v1/index.ts index ef81b5792..0d145312d 100644 --- a/apps/api/src/routes/api/v1/index.ts +++ b/apps/api/src/routes/api/v1/index.ts @@ -1,6 +1,6 @@ import { FastifyPluginAsync } from 'fastify'; -import { scheduler } from '../../../lib/scheduler'; import { checkUpdate, login, showDashboard, update, showUsage, getCurrentUser, cleanupManually } from './handlers'; +import { GetCurrentUser } from './types'; export interface Update { Body: { latestVersion: string } @@ -9,7 +9,7 @@ export interface Login { Body: { email: string, password: string, isLogin: boolean } } -const root: FastifyPluginAsync = async (fastify, opts): Promise => { +const root: FastifyPluginAsync = async (fastify): Promise => { fastify.get('/', async function (_request, reply) { return reply.redirect(302, '/'); }); @@ -19,7 +19,7 @@ const root: FastifyPluginAsync = async (fastify, opts): Promise => { return { token, payload } }); - fastify.get('/user', { + fastify.get('/user', { onRequest: [fastify.authenticate] }, async (request) => await getCurrentUser(request, fastify)); diff --git a/apps/api/src/routes/api/v1/services/handlers.ts b/apps/api/src/routes/api/v1/services/handlers.ts index e2fa3404a..6f14102cc 100644 --- a/apps/api/src/routes/api/v1/services/handlers.ts +++ b/apps/api/src/routes/api/v1/services/handlers.ts @@ -2,12 +2,15 @@ import type { FastifyReply, FastifyRequest } from 'fastify'; import fs from 'fs/promises'; import yaml from 'js-yaml'; import bcrypt from 'bcryptjs'; -import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, supportedServiceTypesAndVersions, generatePassword, isDev, stopTcpHttpProxy, getAvailableServices } from '../../../../lib/common'; +import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, supportedServiceTypesAndVersions, generatePassword, isDev, stopTcpHttpProxy, getAvailableServices, convertTolOldVolumeNames } from '../../../../lib/common'; import { day } from '../../../../lib/dayjs'; import { checkContainer, dockerInstance, getEngine, removeContainer } from '../../../../lib/docker'; import cuid from 'cuid'; -async function startServiceNew(request: FastifyRequest) { +import type { OnlyId } from '../../../../types'; +import type { ActivateWordpressFtp, CheckService, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types'; + +async function startServiceNew(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -73,7 +76,6 @@ async function startServiceNew(request: FastifyRequest) { export async function listServices(request: FastifyRequest) { try { - const userId = request.user.userId; const teamId = request.user.teamId; let services = [] if (teamId === '0') { @@ -102,7 +104,7 @@ export async function newService(request: FastifyRequest, reply: FastifyReply) { return errorHandler({ status, message }) } } -export async function getService(request: FastifyRequest) { +export async function getService(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -155,7 +157,7 @@ export async function getServiceType(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveServiceType(request: FastifyRequest, reply: FastifyReply) { +export async function saveServiceType(request: FastifyRequest, reply: FastifyReply) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -166,7 +168,7 @@ export async function saveServiceType(request: FastifyRequest, reply: FastifyRep return errorHandler({ status, message }) } } -export async function getServiceVersions(request: FastifyRequest) { +export async function getServiceVersions(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -179,9 +181,8 @@ export async function getServiceVersions(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveServiceVersion(request: FastifyRequest, reply: FastifyReply) { +export async function saveServiceVersion(request: FastifyRequest, reply: FastifyReply) { try { - const teamId = request.user.teamId; const { id } = request.params; const { version } = request.body; await prisma.service.update({ @@ -193,9 +194,8 @@ export async function saveServiceVersion(request: FastifyRequest, reply: Fastify return errorHandler({ status, message }) } } -export async function saveServiceDestination(request: FastifyRequest, reply: FastifyReply) { +export async function saveServiceDestination(request: FastifyRequest, reply: FastifyReply) { try { - const teamId = request.user.teamId; const { id } = request.params; const { destinationId } = request.body; await prisma.service.update({ @@ -207,7 +207,7 @@ export async function saveServiceDestination(request: FastifyRequest, reply: Fas return errorHandler({ status, message }) } } -export async function getServiceUsage(request: FastifyRequest) { +export async function getServiceUsage(request: FastifyRequest) { try { const teamId = request.user.teamId; const { id } = request.params; @@ -225,9 +225,8 @@ export async function getServiceUsage(request: FastifyRequest) { } } -export async function getServiceLogs(request: FastifyRequest) { +export async function getServiceLogs(request: FastifyRequest) { try { - const teamId = request.user.teamId; const { id } = request.params; let { since = 0 } = request.query if (since !== 0) { @@ -276,7 +275,7 @@ export async function getServiceLogs(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function deleteService(request: FastifyRequest) { +export async function deleteService(request: FastifyRequest) { try { const { id } = request.params; await removeService({ id }); @@ -285,7 +284,7 @@ export async function deleteService(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveServiceSettings(request: FastifyRequest, reply: FastifyReply) { +export async function saveServiceSettings(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params; const { dualCerts } = request.body; @@ -298,7 +297,7 @@ export async function saveServiceSettings(request: FastifyRequest, reply: Fastif return errorHandler({ status, message }) } } -export async function checkService(request: FastifyRequest) { +export async function checkService(request: FastifyRequest) { try { const { id } = request.params; let { fqdn, exposePort, otherFqdns } = request.body; @@ -337,7 +336,7 @@ export async function checkService(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveService(request: FastifyRequest, reply: FastifyReply) { +export async function saveService(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params; let { name, fqdn, exposePort, type } = request.body; @@ -365,7 +364,7 @@ export async function saveService(request: FastifyRequest, reply: FastifyReply) } } -export async function getServiceSecrets(request: FastifyRequest) { +export async function getServiceSecrets(request: FastifyRequest) { try { const { id } = request.params let secrets = await prisma.serviceSecret.findMany({ @@ -385,10 +384,10 @@ export async function getServiceSecrets(request: FastifyRequest) { } } -export async function saveServiceSecret(request: FastifyRequest, reply: FastifyReply) { +export async function saveServiceSecret(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params - let { name, value, isBuildSecret, isPRMRSecret, isNew } = request.body + let { name, value, isNew } = request.body if (isNew) { const found = await prisma.serviceSecret.findFirst({ where: { name, serviceId: id } }); @@ -420,7 +419,7 @@ export async function saveServiceSecret(request: FastifyRequest, reply: FastifyR return errorHandler({ status, message }) } } -export async function deleteServiceSecret(request: FastifyRequest) { +export async function deleteServiceSecret(request: FastifyRequest) { try { const { id } = request.params const { name } = request.body @@ -431,7 +430,7 @@ export async function deleteServiceSecret(request: FastifyRequest) { } } -export async function getServiceStorages(request: FastifyRequest) { +export async function getServiceStorages(request: FastifyRequest) { try { const { id } = request.params const persistentStorages = await prisma.servicePersistentStorage.findMany({ @@ -445,7 +444,7 @@ export async function getServiceStorages(request: FastifyRequest) { } } -export async function saveServiceStorage(request: FastifyRequest, reply: FastifyReply) { +export async function saveServiceStorage(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { path, newStorage, storageId } = request.body @@ -466,7 +465,7 @@ export async function saveServiceStorage(request: FastifyRequest, reply: Fastify } } -export async function deleteServiceStorage(request: FastifyRequest) { +export async function deleteServiceStorage(request: FastifyRequest) { try { const { id } = request.params const { path } = request.body @@ -477,7 +476,7 @@ export async function deleteServiceStorage(request: FastifyRequest) { } } -export async function startService(request: FastifyRequest,) { +export async function startService(request: FastifyRequest) { try { const { type } = request.params if (type === 'plausibleanalytics') { @@ -527,7 +526,7 @@ export async function startService(request: FastifyRequest,) { throw { status: 500, message: error?.message || error } } } -export async function stopService(request: FastifyRequest) { +export async function stopService(request: FastifyRequest) { try { const { type } = request.params if (type === 'plausibleanalytics') { @@ -577,7 +576,7 @@ export async function stopService(request: FastifyRequest) { throw { status: 500, message: error?.message || error } } } -export async function setSettingsService(request: FastifyRequest, reply: FastifyReply) { +export async function setSettingsService(request: FastifyRequest, reply: FastifyReply) { try { const { type } = request.params if (type === 'wordpress') { @@ -588,7 +587,7 @@ export async function setSettingsService(request: FastifyRequest, reply: Fastify return errorHandler({ status, message }) } } -async function setWordpressSettings(request: FastifyRequest, reply: FastifyReply) { +async function setWordpressSettings(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const { ownMysql } = request.body @@ -602,7 +601,7 @@ async function setWordpressSettings(request: FastifyRequest, reply: FastifyReply } } -async function startPlausibleAnalyticsService(request: FastifyRequest) { +async function startPlausibleAnalyticsService(request: FastifyRequest) { try { const { id } = request.params const teamId = request.user.teamId; @@ -796,7 +795,7 @@ COPY ./init-db.sh /docker-entrypoint-initdb.d/init-db.sh`; return errorHandler({ status, message }) } } -async function stopPlausibleAnalyticsService(request: FastifyRequest) { +async function stopPlausibleAnalyticsService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -825,7 +824,7 @@ async function stopPlausibleAnalyticsService(request: FastifyRequest) { } } -async function startNocodbService(request: FastifyRequest) { +async function startNocodbService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -891,7 +890,7 @@ async function startNocodbService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopNocodbService(request: FastifyRequest) { +async function stopNocodbService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -910,7 +909,7 @@ async function stopNocodbService(request: FastifyRequest) { } } -async function startMinioService(request: FastifyRequest) { +async function startMinioService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -994,7 +993,7 @@ async function startMinioService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopMinioService(request: FastifyRequest) { +async function stopMinioService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1014,7 +1013,7 @@ async function stopMinioService(request: FastifyRequest) { } } -async function startVscodeService(request: FastifyRequest) { +async function startVscodeService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1119,7 +1118,7 @@ async function startVscodeService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopVscodeService(request: FastifyRequest) { +async function stopVscodeService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1138,7 +1137,7 @@ async function stopVscodeService(request: FastifyRequest) { } } -async function startWordpressService(request: FastifyRequest) { +async function startWordpressService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1146,7 +1145,6 @@ async function startWordpressService(request: FastifyRequest) { const { type, version, - fqdn, destinationDockerId, serviceSecret, destinationDocker, @@ -1264,7 +1262,7 @@ async function startWordpressService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopWordpressService(request: FastifyRequest) { +async function stopWordpressService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1313,7 +1311,7 @@ async function stopWordpressService(request: FastifyRequest) { } } -async function startVaultwardenService(request: FastifyRequest) { +async function startVaultwardenService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1380,7 +1378,7 @@ async function startVaultwardenService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopVaultwardenService(request: FastifyRequest) { +async function stopVaultwardenService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1404,7 +1402,7 @@ async function stopVaultwardenService(request: FastifyRequest) { } } -async function startLanguageToolService(request: FastifyRequest) { +async function startLanguageToolService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1472,7 +1470,7 @@ async function startLanguageToolService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopLanguageToolService(request: FastifyRequest) { +async function stopLanguageToolService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1496,7 +1494,7 @@ async function stopLanguageToolService(request: FastifyRequest) { } } -async function startN8nService(request: FastifyRequest) { +async function startN8nService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1564,7 +1562,7 @@ async function startN8nService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopN8nService(request: FastifyRequest) { +async function stopN8nService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1588,7 +1586,7 @@ async function stopN8nService(request: FastifyRequest) { } } -async function startUptimekumaService(request: FastifyRequest) { +async function startUptimekumaService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1655,7 +1653,7 @@ async function startUptimekumaService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopUptimekumaService(request: FastifyRequest) { +async function stopUptimekumaService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1679,7 +1677,7 @@ async function stopUptimekumaService(request: FastifyRequest) { } } -async function startGhostService(request: FastifyRequest) { +async function startGhostService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1708,6 +1706,7 @@ async function startGhostService(request: FastifyRequest) { const { workdir } = await createDirectories({ repository: type, buildId: id }); const image = getServiceImage(type); const domain = getDomain(fqdn); + const port = getServiceMainPort('ghost'); const isHttps = fqdn.startsWith('https://'); const config = { ghost: { @@ -1806,7 +1805,7 @@ async function startGhostService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopGhostService(request: FastifyRequest) { +async function stopGhostService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1834,7 +1833,7 @@ async function stopGhostService(request: FastifyRequest) { } } -async function startMeilisearchService(request: FastifyRequest) { +async function startMeilisearchService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1907,7 +1906,7 @@ async function startMeilisearchService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopMeilisearchService(request: FastifyRequest) { +async function stopMeilisearchService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -1931,7 +1930,7 @@ async function stopMeilisearchService(request: FastifyRequest) { } } -async function startUmamiService(request: FastifyRequest) { +async function startUmamiService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -2126,7 +2125,7 @@ async function startUmamiService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopUmamiService(request: FastifyRequest) { +async function stopUmamiService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -2158,7 +2157,7 @@ async function stopUmamiService(request: FastifyRequest) { } } -async function startHasuraService(request: FastifyRequest) { +async function startHasuraService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -2262,7 +2261,7 @@ async function startHasuraService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopHasuraService(request: FastifyRequest) { +async function stopHasuraService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -2294,7 +2293,7 @@ async function stopHasuraService(request: FastifyRequest) { } } -async function startFiderService(request: FastifyRequest) { +async function startFiderService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -2425,7 +2424,7 @@ async function startFiderService(request: FastifyRequest) { return errorHandler({ status, message }) } } -async function stopFiderService(request: FastifyRequest) { +async function stopFiderService(request: FastifyRequest) { try { const { id } = request.params; const teamId = request.user.teamId; @@ -2457,7 +2456,7 @@ async function stopFiderService(request: FastifyRequest) { } } -export async function activatePlausibleUsers(request: FastifyRequest, reply: FastifyReply) { +export async function activatePlausibleUsers(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params const teamId = request.user.teamId; @@ -2482,10 +2481,8 @@ export async function activatePlausibleUsers(request: FastifyRequest, reply: Fas return errorHandler({ status, message }) } } -export async function activateWordpressFtp(request: FastifyRequest, reply: FastifyReply) { +export async function activateWordpressFtp(request: FastifyRequest, reply: FastifyReply) { const { id } = request.params - const teamId = request.user.teamId; - const { ftpEnabled } = request.body; const publicPort = await getFreePort(); diff --git a/apps/api/src/routes/api/v1/services/index.ts b/apps/api/src/routes/api/v1/services/index.ts index be4b7964e..e4fcb20c7 100644 --- a/apps/api/src/routes/api/v1/services/index.ts +++ b/apps/api/src/routes/api/v1/services/index.ts @@ -27,46 +27,49 @@ import { stopService } from './handlers'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +import type { OnlyId } from '../../../../types'; +import type { ActivateWordpressFtp, CheckService, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types'; + +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listServices(request)); fastify.post('/new', async (request, reply) => await newService(request, reply)); - fastify.get('/:id', async (request) => await getService(request)); - fastify.post('/:id', async (request, reply) => await saveService(request, reply)); - fastify.delete('/:id', async (request) => await deleteService(request)); + fastify.get('/:id', async (request) => await getService(request)); + fastify.post('/:id', async (request, reply) => await saveService(request, reply)); + fastify.delete('/:id', async (request) => await deleteService(request)); - fastify.post('/:id/check', async (request) => await checkService(request)); + fastify.post('/:id/check', async (request) => await checkService(request)); - fastify.post('/:id/settings', async (request, reply) => await saveServiceSettings(request, reply)); + fastify.post('/:id/settings', async (request, reply) => await saveServiceSettings(request, reply)); - fastify.get('/:id/secrets', async (request) => await getServiceSecrets(request)); - fastify.post('/:id/secrets', async (request, reply) => await saveServiceSecret(request, reply)); - fastify.delete('/:id/secrets', async (request) => await deleteServiceSecret(request)); + fastify.get('/:id/secrets', async (request) => await getServiceSecrets(request)); + fastify.post('/:id/secrets', async (request, reply) => await saveServiceSecret(request, reply)); + fastify.delete('/:id/secrets', async (request) => await deleteServiceSecret(request)); - fastify.get('/:id/storages', async (request) => await getServiceStorages(request)); - fastify.post('/:id/storages', async (request, reply) => await saveServiceStorage(request, reply)); - fastify.delete('/:id/storages', async (request) => await deleteServiceStorage(request)); + fastify.get('/:id/storages', async (request) => await getServiceStorages(request)); + fastify.post('/:id/storages', async (request, reply) => await saveServiceStorage(request, reply)); + fastify.delete('/:id/storages', async (request) => await deleteServiceStorage(request)); fastify.get('/:id/configuration/type', async (request) => await getServiceType(request)); - fastify.post('/:id/configuration/type', async (request, reply) => await saveServiceType(request, reply)); + fastify.post('/:id/configuration/type', async (request, reply) => await saveServiceType(request, reply)); - fastify.get('/:id/configuration/version', async (request) => await getServiceVersions(request)); - fastify.post('/:id/configuration/version', async (request, reply) => await saveServiceVersion(request, reply)); + fastify.get('/:id/configuration/version', async (request) => await getServiceVersions(request)); + fastify.post('/:id/configuration/version', async (request, reply) => await saveServiceVersion(request, reply)); - fastify.post('/:id/configuration/destination', async (request, reply) => await saveServiceDestination(request, reply)); + fastify.post('/:id/configuration/destination', async (request, reply) => await saveServiceDestination(request, reply)); - fastify.get('/:id/usage', async (request) => await getServiceUsage(request)); - fastify.get('/:id/logs', async (request) => await getServiceLogs(request)); + fastify.get('/:id/usage', async (request) => await getServiceUsage(request)); + fastify.get('/:id/logs', async (request) => await getServiceLogs(request)); - fastify.post('/:id/:type/start', async (request) => await startService(request)); - fastify.post('/:id/:type/stop', async (request) => await stopService(request)); - fastify.post('/:id/:type/settings', async (request, reply) => await setSettingsService(request, reply)); + fastify.post('/:id/:type/start', async (request) => await startService(request)); + fastify.post('/:id/:type/stop', async (request) => await stopService(request)); + fastify.post('/:id/:type/settings', async (request, reply) => await setSettingsService(request, reply)); - fastify.post('/:id/plausibleanalytics/activate', async (request, reply) => await activatePlausibleUsers(request, reply)); - fastify.post('/:id/wordpress/ftp', async (request, reply) => await activateWordpressFtp(request, reply)); + fastify.post('/:id/plausibleanalytics/activate', async (request, reply) => await activatePlausibleUsers(request, reply)); + fastify.post('/:id/wordpress/ftp', async (request, reply) => await activateWordpressFtp(request, reply)); }; export default root; diff --git a/apps/api/src/routes/api/v1/services/types.ts b/apps/api/src/routes/api/v1/services/types.ts new file mode 100644 index 000000000..4ed631998 --- /dev/null +++ b/apps/api/src/routes/api/v1/services/types.ts @@ -0,0 +1,87 @@ +import { OnlyId } from "../../../../types"; + +export interface SaveServiceType extends OnlyId { + Body: { + type: string + } +} +export interface SaveServiceVersion extends OnlyId { + Body: { + version: string + } +} +export interface SaveServiceDestination extends OnlyId { + Body: { + destinationId: string + } +} +export interface GetServiceLogs extends OnlyId { + Querystring: { + since: number + } +} +export interface SaveServiceSettings extends OnlyId { + Body: { + dualCerts: boolean + } +} +export interface CheckService extends OnlyId { + Body: { + fqdn: string, + exposePort: number, + otherFqdns: Array + } +} +export interface SaveService extends OnlyId { + Body: { + name: string, + fqdn: string, + exposePort: number, + type: string + } +} +export interface SaveServiceSecret extends OnlyId { + Body: { + name: string, + value: string, + isNew: string, + } +} +export interface DeleteServiceSecret extends OnlyId { + Body: { + name: string, + } +} +export interface SaveServiceStorage extends OnlyId { + Body: { + path: string, + newStorage: string, + storageId: string, + } +} + +export interface DeleteServiceStorage extends OnlyId { + Body: { + path: string, + } +} +export interface ServiceStartStop { + Params: { + id?: string, + type: string, + } +} +export interface SetWordpressSettings extends OnlyId { + Body: { + ownMysql: boolean + } +} +export interface ActivateWordpressFtp extends OnlyId { + Body: { + ftpEnabled: boolean + } +} + + + + diff --git a/apps/api/src/routes/api/v1/settings/handlers.ts b/apps/api/src/routes/api/v1/settings/handlers.ts index f2bb90812..0c0c727d1 100644 --- a/apps/api/src/routes/api/v1/settings/handlers.ts +++ b/apps/api/src/routes/api/v1/settings/handlers.ts @@ -2,6 +2,7 @@ import { promises as dns } from 'dns'; import type { FastifyReply, FastifyRequest } from 'fastify'; import { checkDomainsIsValidInDNS, errorHandler, getDomain, isDNSValid, isDomainConfigured, listSettings, prisma } from '../../../../lib/common'; +import { CheckDNS, CheckDomain, DeleteDomain, SaveSettings } from './types'; export async function listAllSettings(request: FastifyRequest) { @@ -14,7 +15,7 @@ export async function listAllSettings(request: FastifyRequest) { return errorHandler({ status, message }) } } -export async function saveSettings(request: FastifyRequest, reply: FastifyReply) { +export async function saveSettings(request: FastifyRequest, reply: FastifyReply) { try { const { fqdn, @@ -41,7 +42,7 @@ export async function saveSettings(request: FastifyRequest, reply: FastifyReply) return errorHandler({ status, message }) } } -export async function deleteDomain(request: FastifyRequest, reply: FastifyReply) { +export async function deleteDomain(request: FastifyRequest, reply: FastifyReply) { try { const { fqdn } = request.body let ip; @@ -57,7 +58,7 @@ export async function deleteDomain(request: FastifyRequest, reply: FastifyReply) } } -export async function checkDomain(request: FastifyRequest, reply: FastifyReply) { +export async function checkDomain(request: FastifyRequest) { try { const { id } = request.params; let { fqdn, forceSave, dualCerts, isDNSCheckEnabled } = request.body @@ -74,9 +75,9 @@ export async function checkDomain(request: FastifyRequest, reply: FastifyReply) return errorHandler({ status, message }) } } -export async function checkDNS(request: FastifyRequest, reply: FastifyReply) { +export async function checkDNS(request: FastifyRequest) { try { - const { id, domain } = request.params; + const { domain } = request.params; await isDNSValid(request.hostname, domain); return {} } catch ({ status, message }) { diff --git a/apps/api/src/routes/api/v1/settings/index.ts b/apps/api/src/routes/api/v1/settings/index.ts index 2c7a69738..f5181a14e 100644 --- a/apps/api/src/routes/api/v1/settings/index.ts +++ b/apps/api/src/routes/api/v1/settings/index.ts @@ -1,17 +1,18 @@ import { FastifyPluginAsync } from 'fastify'; import { checkDNS, checkDomain, deleteDomain, listAllSettings, saveSettings } from './handlers'; +import { CheckDNS, CheckDomain, DeleteDomain, SaveSettings } from './types'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listAllSettings(request)); - fastify.post('/', async (request, reply) => await saveSettings(request, reply)); - fastify.delete('/', async (request, reply) => await deleteDomain(request, reply)); + fastify.post('/', async (request, reply) => await saveSettings(request, reply)); + fastify.delete('/', async (request, reply) => await deleteDomain(request, reply)); - fastify.get('/check', async (request, reply) => await checkDNS(request, reply)); - fastify.post('/check', async (request, reply) => await checkDomain(request, reply)); + fastify.get('/check', async (request) => await checkDNS(request)); + fastify.post('/check', async (request) => await checkDomain(request)); }; export default root; diff --git a/apps/api/src/routes/api/v1/settings/types.ts b/apps/api/src/routes/api/v1/settings/types.ts new file mode 100644 index 000000000..aa7398804 --- /dev/null +++ b/apps/api/src/routes/api/v1/settings/types.ts @@ -0,0 +1,31 @@ +import { OnlyId } from "../../../../types" + +export interface SaveSettings { + Body: { + fqdn: string, + isRegistrationEnabled: boolean, + dualCerts: boolean, + minPort: number, + maxPort: number, + isAutoUpdateEnabled: boolean, + isDNSCheckEnabled: boolean + } +} +export interface DeleteDomain { + Body: { + fqdn: string + } +} +export interface CheckDomain extends OnlyId { + Body: { + fqdn: string, + forceSave: boolean, + dualCerts: boolean, + isDNSCheckEnabled: boolean, + } +} +export interface CheckDNS { + Params: { + domain: string, + } +} \ No newline at end of file diff --git a/apps/api/src/routes/api/v1/sources/handlers.ts b/apps/api/src/routes/api/v1/sources/handlers.ts index 9bed930d7..8a1c19987 100644 --- a/apps/api/src/routes/api/v1/sources/handlers.ts +++ b/apps/api/src/routes/api/v1/sources/handlers.ts @@ -2,6 +2,8 @@ import cuid from 'cuid'; import type { FastifyRequest } from 'fastify'; import { FastifyReply } from 'fastify'; import { decrypt, encrypt, errorHandler, prisma } from '../../../../lib/common'; +import { OnlyId } from '../../../../types'; +import { CheckGitLabOAuthId, SaveGitHubSource, SaveGitLabSource } from './types'; export async function listSources(request: FastifyRequest) { try { @@ -31,7 +33,7 @@ export async function saveSource(request, reply) { return errorHandler({ status, message }) } } -export async function getSource(request: FastifyRequest) { +export async function getSource(request: FastifyRequest) { try { const { id } = request.params const { teamId } = request.user @@ -97,12 +99,12 @@ export async function deleteSource(request) { } } -export async function saveGitHubSource(request: FastifyRequest, reply: FastifyReply) { +export async function saveGitHubSource(request: FastifyRequest) { try { const { teamId } = request.user const { id } = request.params - let { name, type, htmlUrl, apiUrl, organization, customPort } = request.body + let { name, htmlUrl, apiUrl, organization, customPort } = request.body if (customPort) customPort = Number(customPort) if (id === 'new') { @@ -128,7 +130,7 @@ export async function saveGitHubSource(request: FastifyRequest, reply: FastifyRe return errorHandler({ status, message }) } } -export async function saveGitLabSource(request: FastifyRequest, reply: FastifyReply) { +export async function saveGitLabSource(request: FastifyRequest) { try { const { id } = request.params const { teamId } = request.user @@ -175,7 +177,7 @@ export async function saveGitLabSource(request: FastifyRequest, reply: FastifyRe } } -export async function checkGitLabOAuthID(request: FastifyRequest) { +export async function checkGitLabOAuthID(request: FastifyRequest) { try { const { oauthId } = request.body const found = await prisma.gitlabApp.findFirst({ where: { oauthId: Number(oauthId) } }); diff --git a/apps/api/src/routes/api/v1/sources/index.ts b/apps/api/src/routes/api/v1/sources/index.ts index f741627f3..3d904162f 100644 --- a/apps/api/src/routes/api/v1/sources/index.ts +++ b/apps/api/src/routes/api/v1/sources/index.ts @@ -1,21 +1,22 @@ import { FastifyPluginAsync } from 'fastify'; import { checkGitLabOAuthID, deleteSource, getSource, listSources, saveGitHubSource, saveGitLabSource, saveSource } from './handlers'; +import type { OnlyId } from '../../../../types'; +import type { CheckGitLabOAuthId, SaveGitHubSource, SaveGitLabSource } from './types'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.addHook('onRequest', async (request, reply) => { +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.addHook('onRequest', async (request) => { return await request.jwtVerify() }) fastify.get('/', async (request) => await listSources(request)); - fastify.get('/:id', async (request) => await getSource(request)); + fastify.get('/:id', async (request) => await getSource(request)); fastify.post('/:id', async (request, reply) => await saveSource(request, reply)); fastify.delete('/:id', async (request) => await deleteSource(request)); - fastify.post('/:id/check', async (request) => await checkGitLabOAuthID(request)); - fastify.post('/:id/github', async (request, reply) => await saveGitHubSource(request, reply)); - fastify.post('/:id/gitlab', async (request, reply) => await saveGitLabSource(request, reply)); - + fastify.post('/:id/check', async (request) => await checkGitLabOAuthID(request)); + fastify.post('/:id/github', async (request) => await saveGitHubSource(request)); + fastify.post('/:id/gitlab', async (request) => await saveGitLabSource(request)); }; export default root; diff --git a/apps/api/src/routes/api/v1/sources/types.ts b/apps/api/src/routes/api/v1/sources/types.ts new file mode 100644 index 000000000..a748b3943 --- /dev/null +++ b/apps/api/src/routes/api/v1/sources/types.ts @@ -0,0 +1,29 @@ +import { OnlyId } from "../../../../types"; + +export interface SaveGitHubSource extends OnlyId { + Body: { + name: string, + htmlUrl: string, + apiUrl: string, + organization: string, + customPort: number, + } +} +export interface SaveGitLabSource extends OnlyId { + Body: { + type: string, + name: string, + htmlUrl: string, + apiUrl: string, + oauthId: number, + appId: string, + appSecret: string, + groupName: string, + customPort: number, + } +} +export interface CheckGitLabOAuthId extends OnlyId { + Body: { + oauthId: number, + } +} \ No newline at end of file diff --git a/apps/api/src/routes/api/v1/types.ts b/apps/api/src/routes/api/v1/types.ts new file mode 100644 index 000000000..945355df7 --- /dev/null +++ b/apps/api/src/routes/api/v1/types.ts @@ -0,0 +1,3 @@ +export interface GetCurrentUser { + Querystring: { teamId: string } +} \ No newline at end of file diff --git a/apps/api/src/routes/webhooks/github/handlers.ts b/apps/api/src/routes/webhooks/github/handlers.ts index 5e9e403ee..cb37029f4 100644 --- a/apps/api/src/routes/webhooks/github/handlers.ts +++ b/apps/api/src/routes/webhooks/github/handlers.ts @@ -1,13 +1,15 @@ import axios from "axios"; import cuid from "cuid"; import crypto from "crypto"; -import type { FastifyReply, FastifyRequest } from "fastify"; -import { encrypt, errorHandler, getAPIUrl, getUIUrl, isDev, prisma } from "../../../lib/common"; +import { encrypt, errorHandler, getUIUrl, isDev, prisma } from "../../../lib/common"; import { checkContainer, removeContainer } from "../../../lib/docker"; import { scheduler } from "../../../lib/scheduler"; -import { getApplicationFromDB, getApplicationFromDBWebhook } from "../../api/v1/applications/handlers"; +import { getApplicationFromDBWebhook } from "../../api/v1/applications/handlers"; -export async function installGithub(request: FastifyRequest, reply: FastifyReply): Promise { +import type { FastifyReply, FastifyRequest } from "fastify"; +import type { GitHubEvents, InstallGithub } from "./types"; + +export async function installGithub(request: FastifyRequest, reply: FastifyReply): Promise { try { const { gitSourceId, installation_id } = request.query; const source = await prisma.gitSource.findUnique({ @@ -63,7 +65,7 @@ export async function configureGitHubApp(request, reply) { return errorHandler({ status, message }) } } -export async function gitHubEvents(request: FastifyRequest, reply: FastifyReply): Promise { +export async function gitHubEvents(request: FastifyRequest): Promise { try { const buildId = cuid(); const allowedGithubEvents = ['push', 'pull_request']; diff --git a/apps/api/src/routes/webhooks/github/index.ts b/apps/api/src/routes/webhooks/github/index.ts index 2af33366a..c4a3afbb9 100644 --- a/apps/api/src/routes/webhooks/github/index.ts +++ b/apps/api/src/routes/webhooks/github/index.ts @@ -1,10 +1,12 @@ import { FastifyPluginAsync } from 'fastify'; import { configureGitHubApp, gitHubEvents, installGithub } from './handlers'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { +import type { GitHubEvents, InstallGithub } from './types'; + +const root: FastifyPluginAsync = async (fastify): Promise => { fastify.get('/', async (request, reply) => configureGitHubApp(request, reply)); - fastify.get('/install', async (request, reply) => installGithub(request, reply)); - fastify.post('/events', async (request, reply) => gitHubEvents(request, reply)); + fastify.get('/install', async (request, reply) => installGithub(request, reply)); + fastify.post('/events', async (request, reply) => gitHubEvents(request)); }; export default root; diff --git a/apps/api/src/routes/webhooks/github/types.ts b/apps/api/src/routes/webhooks/github/types.ts new file mode 100644 index 000000000..c7502ec6d --- /dev/null +++ b/apps/api/src/routes/webhooks/github/types.ts @@ -0,0 +1,20 @@ +export interface InstallGithub { + Querystring: { + gitSourceId: string, + installation_id: string + } +} +export interface GitHubEvents { + Body: { + number: string, + action: string, + repository: string, + ref: string, + pull_request: { + head: { + ref: string, + repo: string + } + } + } +} \ No newline at end of file diff --git a/apps/api/src/routes/webhooks/gitlab/handlers.ts b/apps/api/src/routes/webhooks/gitlab/handlers.ts index fab40cf05..dfe310ed7 100644 --- a/apps/api/src/routes/webhooks/gitlab/handlers.ts +++ b/apps/api/src/routes/webhooks/gitlab/handlers.ts @@ -2,16 +2,18 @@ import axios from "axios"; import cuid from "cuid"; import crypto from "crypto"; import type { FastifyReply, FastifyRequest } from "fastify"; -import { encrypt, errorHandler, getAPIUrl, isDev, listSettings, prisma } from "../../../lib/common"; +import { errorHandler, getAPIUrl, isDev, listSettings, prisma } from "../../../lib/common"; import { checkContainer, removeContainer } from "../../../lib/docker"; import { scheduler } from "../../../lib/scheduler"; import { getApplicationFromDB, getApplicationFromDBWebhook } from "../../api/v1/applications/handlers"; -export async function configureGitLabApp(request: FastifyRequest, reply: FastifyReply) { +import type { ConfigureGitLabApp, GitLabEvents } from "./types"; + +export async function configureGitLabApp(request: FastifyRequest, reply: FastifyReply) { try { const { code, state } = request.query; const { fqdn } = await listSettings(); - const { gitSource: { gitlabApp: { appId, appSecret }, htmlUrl } } = await getApplicationFromDB(state, undefined); + const { gitSource: { gitlabApp: { appId, appSecret }, htmlUrl } }: any = await getApplicationFromDB(state, undefined); let domain = `http://${request.hostname}`; if (fqdn) domain = fqdn; @@ -36,12 +38,13 @@ export async function configureGitLabApp(request: FastifyRequest, reply: Fastify return errorHandler({ status, message }) } } -export async function gitLabEvents(request: FastifyRequest, reply: FastifyReply) { +export async function gitLabEvents(request: FastifyRequest) { + const { object_kind: objectKind, ref, project_id } = request.body try { const buildId = cuid(); const allowedActions = ['opened', 'reopen', 'close', 'open', 'update']; - const { object_kind: objectKind, ref, project_id } = request.body + const webhookToken = request.headers['x-gitlab-token']; if (!webhookToken) { throw { status: 500, message: 'Invalid webhookToken.' } diff --git a/apps/api/src/routes/webhooks/gitlab/index.ts b/apps/api/src/routes/webhooks/gitlab/index.ts index 22badd03f..77f3067e4 100644 --- a/apps/api/src/routes/webhooks/gitlab/index.ts +++ b/apps/api/src/routes/webhooks/gitlab/index.ts @@ -1,9 +1,11 @@ import { FastifyPluginAsync } from 'fastify'; import { configureGitLabApp, gitLabEvents } from './handlers'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { - fastify.get('/', async (request, reply) => configureGitLabApp(request, reply)); - fastify.post('/events', async (request, reply) => gitLabEvents(request, reply)); +import type { ConfigureGitLabApp, GitLabEvents } from './types'; + +const root: FastifyPluginAsync = async (fastify): Promise => { + fastify.get('/', async (request, reply) => configureGitLabApp(request, reply)); + fastify.post('/events', async (request) => gitLabEvents(request)); }; export default root; diff --git a/apps/api/src/routes/webhooks/gitlab/types.ts b/apps/api/src/routes/webhooks/gitlab/types.ts new file mode 100644 index 000000000..42af0f6ae --- /dev/null +++ b/apps/api/src/routes/webhooks/gitlab/types.ts @@ -0,0 +1,24 @@ +export interface ConfigureGitLabApp { + Querystring: { + code: string, + state: string + } +} +export interface GitLabEvents { + Body: { + object_attributes: { + work_in_progress: string + isDraft: string + action: string + source_branch: string + target_branch: string + iid: string + }, + project: { + id: string + }, + object_kind: string, + ref: string, + project_id: string + } +} \ No newline at end of file diff --git a/apps/api/src/routes/webhooks/traefik/handlers.ts b/apps/api/src/routes/webhooks/traefik/handlers.ts index 2c91c851d..879ccd960 100644 --- a/apps/api/src/routes/webhooks/traefik/handlers.ts +++ b/apps/api/src/routes/webhooks/traefik/handlers.ts @@ -1,6 +1,7 @@ import { FastifyRequest } from "fastify"; import { asyncExecShell, errorHandler, getDomain, isDev, listServicesWithIncludes, prisma, supportedServiceTypesAndVersions } from "../../../lib/common"; import { getEngine } from "../../../lib/docker"; +import { TraefikOtherConfiguration } from "./types"; function configureMiddleware( { id, container, port, domain, nakedDomain, isHttps, isWWW, isDualCerts, scriptName, type }, @@ -362,7 +363,7 @@ export async function traefikConfiguration(request, reply) { } } -export async function traefikOtherConfiguration(request: FastifyRequest, reply) { +export async function traefikOtherConfiguration(request: FastifyRequest) { try { const { id } = request.query if (id) { diff --git a/apps/api/src/routes/webhooks/traefik/index.ts b/apps/api/src/routes/webhooks/traefik/index.ts index bb79c6b05..1d69be739 100644 --- a/apps/api/src/routes/webhooks/traefik/index.ts +++ b/apps/api/src/routes/webhooks/traefik/index.ts @@ -1,9 +1,10 @@ import { FastifyPluginAsync } from 'fastify'; import { traefikConfiguration, traefikOtherConfiguration } from './handlers'; +import { TraefikOtherConfiguration } from './types'; -const root: FastifyPluginAsync = async (fastify, opts): Promise => { +const root: FastifyPluginAsync = async (fastify): Promise => { fastify.get('/main.json', async (request, reply) => traefikConfiguration(request, reply)); - fastify.get('/other.json', async (request, reply) => traefikOtherConfiguration(request, reply)); + fastify.get('/other.json', async (request, reply) => traefikOtherConfiguration(request)); }; export default root; diff --git a/apps/api/src/routes/webhooks/traefik/types.ts b/apps/api/src/routes/webhooks/traefik/types.ts new file mode 100644 index 000000000..237d746fe --- /dev/null +++ b/apps/api/src/routes/webhooks/traefik/types.ts @@ -0,0 +1,9 @@ +export interface TraefikOtherConfiguration { + Querystring: { + id: string, + privatePort: number, + publicPort: number, + type: string, + address: string + } +} \ No newline at end of file diff --git a/apps/api/src/types.ts b/apps/api/src/types.ts new file mode 100644 index 000000000..71f3db158 --- /dev/null +++ b/apps/api/src/types.ts @@ -0,0 +1,38 @@ +export interface OnlyId { + Params: { id: string }, +} +export interface SaveVersion extends OnlyId { + Body: { + version: string + } +} +export interface SaveDatabaseDestination extends OnlyId { + Body: { + destinationId: string + } +} +export interface GetDatabaseLogs extends OnlyId { + Querystring: { + since: number + } +} +export interface SaveDatabase extends OnlyId { + Body: { + name: string, + defaultDatabase: string, + dbUser: string, + dbUserPassword: string, + rootUser: string, + rootUserPassword: string, + version: string, + isRunning: boolean + } +} +export interface SaveDatabaseSettings extends OnlyId { + Body: { + isPublic: boolean, + appendOnly: boolean + } +} + + diff --git a/apps/ui/src/routes/iam/index.svelte b/apps/ui/src/routes/iam/index.svelte index 4f000dc16..4e75d98ae 100644 --- a/apps/ui/src/routes/iam/index.svelte +++ b/apps/ui/src/routes/iam/index.svelte @@ -53,7 +53,7 @@ return; } try { - await del(`/iam/user/remove`, { uid: id }); + await del(`/iam/user/remove`, { id }); toast.push('Account deleted.'); const data = await get('/iam'); accounts = data.accounts; diff --git a/apps/ui/src/routes/webhooks/success.svelte b/apps/ui/src/routes/webhooks/success.svelte index a216b8276..469e4f8da 100644 --- a/apps/ui/src/routes/webhooks/success.svelte +++ b/apps/ui/src/routes/webhooks/success.svelte @@ -1,6 +1,6 @@ diff --git a/package.json b/package.json index e6b7f6407..042e0a2cc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coolify", "description": "An open-source & self-hostable Heroku / Netlify alternative.", - "version": "3.1.2", + "version": "3.1.3", "license": "AGPL-3.0", "scripts": { "db:studio": "pnpm run --filter coolify-api db:studio", From 7bf6041d8caf194200d3eab54251bce3afbbae56 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 14 Jul 2022 13:04:00 +0000 Subject: [PATCH 02/12] fix: more types --- apps/api/src/routes/api/v1/applications/handlers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/api/src/routes/api/v1/applications/handlers.ts b/apps/api/src/routes/api/v1/applications/handlers.ts index 7d794e2d3..5cb32db22 100644 --- a/apps/api/src/routes/api/v1/applications/handlers.ts +++ b/apps/api/src/routes/api/v1/applications/handlers.ts @@ -10,8 +10,8 @@ import { checkContainer, dockerInstance, getEngine, isContainerExited, removeCon import { scheduler } from '../../../../lib/scheduler'; import type { FastifyRequest } from 'fastify'; -import type { GetImages, CancelDeployment, CheckDNS, CheckRepository, DeleteApplication, DeleteSecret, DeleteStorage, GetApplicationLogs, GetBuildIdLogs, GetBuildLogs, OnlyId, SaveApplication, SaveApplicationSettings, SaveApplicationSource, SaveDeployKey, SaveDestination, SaveSecret, SaveStorage, DeployApplication } from './types'; -import { Application, DestinationDocker } from '@prisma/client'; +import type { GetImages, CancelDeployment, CheckDNS, CheckRepository, DeleteApplication, DeleteSecret, DeleteStorage, GetApplicationLogs, GetBuildIdLogs, GetBuildLogs, SaveApplication, SaveApplicationSettings, SaveApplicationSource, SaveDeployKey, SaveDestination, SaveSecret, SaveStorage, DeployApplication } from './types'; +import { OnlyId } from '../../../../types'; export async function listApplications(request: FastifyRequest) { try { From 0904d1ff9c4b0e53c0304a16876d2364d9469cc1 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 15 Jul 2022 08:00:19 +0000 Subject: [PATCH 03/12] fix: do not rebuild in case image exists and sha not changed --- apps/api/src/jobs/deployApplication.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/api/src/jobs/deployApplication.ts b/apps/api/src/jobs/deployApplication.ts index d553e69c9..b5dbe24d9 100644 --- a/apps/api/src/jobs/deployApplication.ts +++ b/apps/api/src/jobs/deployApplication.ts @@ -189,7 +189,7 @@ import * as buildpacks from '../lib/buildPacks'; let imageFound = false; try { await image.inspect(); - imageFound = false; + imageFound = true; } catch (error) { // } @@ -235,7 +235,7 @@ import * as buildpacks from '../lib/buildPacks'; throw new Error(`Build pack ${buildPack} not found.`); } } else { - await saveBuildLog({ line: 'Nothing changed.', buildId, applicationId }); + await saveBuildLog({ line: 'Build image already available - no rebuild required.', buildId, applicationId }); } try { await asyncExecShell(`DOCKER_HOST=${host} docker stop -t 0 ${imageId}`); From 047df77195c219f277f07a4869698743e4cf5a74 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 15 Jul 2022 08:00:32 +0000 Subject: [PATCH 04/12] fix: gitpod urls --- .../routes/applications/[id]/__layout.svelte | 74 +++++++++++++++++++ .../src/routes/applications/[id]/index.svelte | 69 +---------------- .../applications/[id]/logs/build.svelte | 64 ---------------- .../applications/[id]/logs/index.svelte | 64 ---------------- .../routes/applications/[id]/previews.svelte | 64 ---------------- .../routes/applications/[id]/secrets.svelte | 64 ---------------- .../routes/applications/[id]/storages.svelte | 64 ---------------- apps/ui/src/routes/applications/index.svelte | 2 +- 8 files changed, 78 insertions(+), 387 deletions(-) diff --git a/apps/ui/src/routes/applications/[id]/__layout.svelte b/apps/ui/src/routes/applications/[id]/__layout.svelte index d88e445f9..645463921 100644 --- a/apps/ui/src/routes/applications/[id]/__layout.svelte +++ b/apps/ui/src/routes/applications/[id]/__layout.svelte @@ -75,6 +75,14 @@ !application.repository || !application.destinationDocker || !application.buildPack; + let location = application.fqdn || null; + if (GITPOD_WORKSPACE_URL && application.exposePort) { + const { href } = new URL(GITPOD_WORKSPACE_URL); + const newURL = href + .replace('https://', `https://${application.exposePort}-`) + .replace(/\/$/, ''); + location = newURL; + } const { id } = $page.params; async function handleDeploySubmit() { @@ -147,6 +155,72 @@ {#if loading} {:else} + {#if location} + + + + + + + {/if} + {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if} +
{#if $status.application.isExited} Configuration
- {application.name} + {application.name} - - {#if application.fqdn} - - - - - - - {/if} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} -
diff --git a/apps/ui/src/routes/applications/[id]/logs/build.svelte b/apps/ui/src/routes/applications/[id]/logs/build.svelte index 17bb3f2dc..21dc8fab9 100644 --- a/apps/ui/src/routes/applications/[id]/logs/build.svelte +++ b/apps/ui/src/routes/applications/[id]/logs/build.svelte @@ -88,70 +88,6 @@
{application.name} - - {#if application.fqdn} - - - - - - - {/if} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} -
diff --git a/apps/ui/src/routes/applications/[id]/logs/index.svelte b/apps/ui/src/routes/applications/[id]/logs/index.svelte index e327442bd..a4991f34a 100644 --- a/apps/ui/src/routes/applications/[id]/logs/index.svelte +++ b/apps/ui/src/routes/applications/[id]/logs/index.svelte @@ -104,70 +104,6 @@
{application.name}
- - {#if application.fqdn} - - - - - - - {/if} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} -
{#if logs.length === 0} diff --git a/apps/ui/src/routes/applications/[id]/previews.svelte b/apps/ui/src/routes/applications/[id]/previews.svelte index bc1db63cb..638ad04cd 100644 --- a/apps/ui/src/routes/applications/[id]/previews.svelte +++ b/apps/ui/src/routes/applications/[id]/previews.svelte @@ -64,70 +64,6 @@
{application.name} - - {#if application.fqdn} - - - - - - - {/if} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} -
diff --git a/apps/ui/src/routes/applications/[id]/secrets.svelte b/apps/ui/src/routes/applications/[id]/secrets.svelte index 1206681e2..83cb1d3e3 100644 --- a/apps/ui/src/routes/applications/[id]/secrets.svelte +++ b/apps/ui/src/routes/applications/[id]/secrets.svelte @@ -70,70 +70,6 @@
{application.name}
- - {#if application.fqdn} - - - - - - - {/if} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} -
diff --git a/apps/ui/src/routes/applications/[id]/storages.svelte b/apps/ui/src/routes/applications/[id]/storages.svelte index d2184e914..50e3d0ee2 100644 --- a/apps/ui/src/routes/applications/[id]/storages.svelte +++ b/apps/ui/src/routes/applications/[id]/storages.svelte @@ -41,70 +41,6 @@ {application.name} - - {#if application.fqdn} - - - - - - - {/if} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} -
diff --git a/apps/ui/src/routes/applications/index.svelte b/apps/ui/src/routes/applications/index.svelte index 7effdbb47..e24ecaf72 100644 --- a/apps/ui/src/routes/applications/index.svelte +++ b/apps/ui/src/routes/applications/index.svelte @@ -140,7 +140,7 @@ {#if application.fqdn}
{getDomain(application.fqdn) || ''}
{/if} - {#if !application.gitSourceId} + {#if !application.gitSourceId || !application.repository || !application.branch}
Git Source Missing
From 49ecb157737dbd1d82225da8a0c51796a246d9d4 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 15 Jul 2022 09:18:16 +0000 Subject: [PATCH 05/12] fix: remove new service start process --- apps/api/src/lib/common.ts | 8 +- .../src/routes/api/v1/services/handlers.ts | 192 ++++++++++++------ 2 files changed, 134 insertions(+), 66 deletions(-) diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index 96edde3fc..a0eabf4b9 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -1502,10 +1502,10 @@ export function convertTolOldVolumeNames(type) { return 'nc' } } -export async function getAvailableServices(): Promise { - const { data } = await axios.get(`https://gist.githubusercontent.com/andrasbacsai/4aac36d8d6214dbfc34fa78110554a50/raw/291a957ee6ac01d480465623e183a30230ad921f/availableServices.json`) - return data -} +// export async function getAvailableServices(): Promise { +// const { data } = await axios.get(`https://gist.githubusercontent.com/andrasbacsai/4aac36d8d6214dbfc34fa78110554a50/raw/5b27e6c37d78aaeedc1148d797112c827a2f43cf/availableServices.json`) +// return data +// } export async function cleanupDockerStorage(host, lowDiskSpace, force) { // Cleanup old coolify images try { diff --git a/apps/api/src/routes/api/v1/services/handlers.ts b/apps/api/src/routes/api/v1/services/handlers.ts index 6f14102cc..186fee566 100644 --- a/apps/api/src/routes/api/v1/services/handlers.ts +++ b/apps/api/src/routes/api/v1/services/handlers.ts @@ -2,7 +2,7 @@ import type { FastifyReply, FastifyRequest } from 'fastify'; import fs from 'fs/promises'; import yaml from 'js-yaml'; import bcrypt from 'bcryptjs'; -import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, supportedServiceTypesAndVersions, generatePassword, isDev, stopTcpHttpProxy, getAvailableServices, convertTolOldVolumeNames } from '../../../../lib/common'; +import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, supportedServiceTypesAndVersions, generatePassword, isDev, stopTcpHttpProxy } from '../../../../lib/common'; import { day } from '../../../../lib/dayjs'; import { checkContainer, dockerInstance, getEngine, removeContainer } from '../../../../lib/docker'; import cuid from 'cuid'; @@ -10,69 +10,137 @@ import cuid from 'cuid'; import type { OnlyId } from '../../../../types'; import type { ActivateWordpressFtp, CheckService, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types'; -async function startServiceNew(request: FastifyRequest) { - try { - const { id } = request.params; - const teamId = request.user.teamId; - const service = await getServiceFromDB({ id, teamId }); - const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } = - service; - const network = destinationDockerId && destinationDocker.network; - const host = getEngine(destinationDocker.engine); - const port = getServiceMainPort(type); +// async function startServiceNew(request: FastifyRequest) { +// try { +// const { id } = request.params; +// const teamId = request.user.teamId; +// const service = await getServiceFromDB({ id, teamId }); +// const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } = +// service; +// const network = destinationDockerId && destinationDocker.network; +// const host = getEngine(destinationDocker.engine); +// const port = getServiceMainPort(type); - const { workdir } = await createDirectories({ repository: type, buildId: id }); - const image = getServiceImage(type); - const config = (await getAvailableServices()).find((name) => name.name === type).compose - const environmentVariables = {} - if (serviceSecret.length > 0) { - serviceSecret.forEach((secret) => { - environmentVariables[secret.name] = secret.value; - }); - } - config.services[id] = JSON.parse(JSON.stringify(config.services[type])) - config.services[id].container_name = id - config.services[id].image = `${image}:${version}` - config.services[id].ports = (exposePort ? [`${exposePort}:${port}`] : []), - config.services[id].restart = "always" - config.services[id].networks = [network] - config.services[id].labels = makeLabelForServices(type) - config.services[id].deploy = { - restart_policy: { - condition: 'on-failure', - delay: '5s', - max_attempts: 3, - window: '120s' - } - } - config.networks = { - [network]: { - external: true - } - } - config.volumes = {} - config.services[id].volumes.forEach((volume, index) => { - let oldVolumeName = volume.split(':')[0] - const path = volume.split(':')[1] - oldVolumeName = convertTolOldVolumeNames(type) - const volumeName = `${id}-${oldVolumeName}` - config.volumes[volumeName] = { - name: volumeName - } - config.services[id].volumes[index] = `${volumeName}:${path}` - }) - delete config.services[type] - config.services[id].environment = environmentVariables - const composeFileDestination = `${workdir}/docker-compose.yaml`; - await fs.writeFile(composeFileDestination, yaml.dump(config)); - await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} pull`); - await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`); - return {} - } catch ({ status, message }) { - return errorHandler({ status, message }) - } -} +// const { workdir } = await createDirectories({ repository: type, buildId: id }); +// const image = getServiceImage(type); +// const config = (await getAvailableServices()).find((name) => name.name === type).compose +// const environmentVariables = {} +// if (serviceSecret.length > 0) { +// serviceSecret.forEach((secret) => { +// environmentVariables[secret.name] = secret.value; +// }); +// } +// config.newVolumes = {} +// for (const service of Object.entries(config.services)) { +// const name = service[0] +// const details: any = service[1] +// config.services[`${id}-${name}`] = JSON.parse(JSON.stringify(details)) +// config.services[`${id}-${name}`].container_name = `${id}-${name}` +// config.services[`${id}-${name}`].restart = "always" +// config.services[`${id}-${name}`].networks = [network] +// config.services[`${id}-${name}`].labels = makeLabelForServices(type) +// if (name === config.name) { +// config.services[`${id}-${name}`].image = `${details.image.split(':')[0]}:${version}` +// config.services[`${id}-${name}`].ports = (exposePort ? [`${exposePort}:${port}`] : []) +// config.services[`${id}-${name}`].environment = environmentVariables +// } +// config.services[`${id}-${name}`].deploy = { +// restart_policy: { +// condition: 'on-failure', +// delay: '5s', +// max_attempts: 3, +// window: '120s' +// } +// } +// if (config.services[`${id}-${name}`]?.volumes?.length > 0) { +// config.services[`${id}-${name}`].volumes.forEach((volume, index) => { +// let oldVolumeName = volume.split(':')[0] +// const path = volume.split(':')[1] +// // if (config?.volumes[oldVolumeName]) delete config?.volumes[oldVolumeName] +// const newName = convertTolOldVolumeNames(type) +// if (newName) oldVolumeName = newName +// const volumeName = `${id}-${oldVolumeName}` +// config.newVolumes[volumeName] = { +// name: volumeName +// } +// config.services[`${id}-${name}`].volumes[index] = `${volumeName}:${path}` +// }) +// config.services[`${id}-${config.name}`] = { +// ...config.services[`${id}-${config.name}`], +// environment: environmentVariables +// } +// } +// config.networks = { +// [network]: { +// external: true +// } +// } + +// config.volumes = config.newVolumes + +// // config.services[`${id}-${name}`]?.volumes?.length > 0 && config.services[`${id}-${name}`].volumes.forEach((volume, index) => { +// // let oldVolumeName = volume.split(':')[0] +// // const path = volume.split(':')[1] +// // oldVolumeName = convertTolOldVolumeNames(type) +// // const volumeName = `${id}-${oldVolumeName}` +// // config.volumes[volumeName] = { +// // name: volumeName +// // } +// // config.services[`${id}-${name}`].volumes[index] = `${volumeName}:${path}` +// // }) +// // config.services[`${id}-${config.name}`] = { +// // ...config.services[`${id}-${config.name}`], +// // environment: environmentVariables +// // } +// delete config.services[name] + +// } +// console.log(config.services) +// console.log(config.volumes) + +// // config.services[id] = JSON.parse(JSON.stringify(config.services[type])) +// // config.services[id].container_name = id +// // config.services[id].image = `${image}:${version}` +// // config.services[id].ports = (exposePort ? [`${exposePort}:${port}`] : []), +// // config.services[id].restart = "always" +// // config.services[id].networks = [network] +// // config.services[id].labels = makeLabelForServices(type) +// // config.services[id].deploy = { +// // restart_policy: { +// // condition: 'on-failure', +// // delay: '5s', +// // max_attempts: 3, +// // window: '120s' +// // } +// // } +// // config.networks = { +// // [network]: { +// // external: true +// // } +// // } +// // config.volumes = {} +// // config.services[id].volumes.forEach((volume, index) => { +// // let oldVolumeName = volume.split(':')[0] +// // const path = volume.split(':')[1] +// // oldVolumeName = convertTolOldVolumeNames(type) +// // const volumeName = `${id}-${oldVolumeName}` +// // config.volumes[volumeName] = { +// // name: volumeName +// // } +// // config.services[id].volumes[index] = `${volumeName}:${path}` +// // }) +// // delete config.services[type] +// // config.services[id].environment = environmentVariables +// const composeFileDestination = `${workdir}/docker-compose.yaml`; +// // await fs.writeFile(composeFileDestination, yaml.dump(config)); +// // await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} pull`); +// // await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`); +// return {} +// } catch ({ status, message }) { +// return errorHandler({ status, message }) +// } +// } export async function listServices(request: FastifyRequest) { try { From 866070b9ea5a8addc6a7667cd07cfcdd9116c793 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 15 Jul 2022 12:31:54 +0000 Subject: [PATCH 06/12] feat: init moodle and separate stuffs to shared package --- .devcontainer/devcontainer.json | 7 +- apps/api/nodemon.json | 2 +- apps/api/package.json | 3 +- apps/api/prisma/schema.prisma | 18 + apps/api/src/lib/common.ts | 199 +- apps/api/src/lib/serviceFields.ts | 70 +- .../src/routes/api/v1/services/handlers.ts | 174 +- .../src/routes/webhooks/traefik/handlers.ts | 3 +- apps/shared/index.ts | 160 ++ apps/shared/nodemon.json | 7 + apps/shared/package.json | 14 + apps/ui/package.json | 1 + apps/ui/src/lib/common.ts | 368 +-- .../lib/components/svg/services/Moodle.svelte | 8 + .../src/lib/components/svg/services/index.ts | 17 + .../routes/applications/[id]/__layout.svelte | 44 +- .../src/routes/applications/[id]/index.svelte | 43 + .../applications/[id]/logs/build.svelte | 43 + .../applications/[id]/logs/index.svelte | 43 + .../routes/applications/[id]/previews.svelte | 43 + .../routes/applications/[id]/secrets.svelte | 45 +- .../routes/applications/[id]/storages.svelte | 43 + .../routes/services/[id]/_ServiceLinks.svelte | 51 +- .../src/routes/services/[id]/_Services.svelte | 36 + .../services/[id]/_Services/_Moodle.svelte | 102 + .../services/[id]/_Services/_Services.svelte | 6 +- .../src/routes/services/[id]/__layout.svelte | 34 +- .../services/[id]/configuration/type.svelte | 47 +- .../[id]/configuration/version.svelte | 3 +- apps/ui/src/routes/services/[id]/index.svelte | 24 - apps/ui/src/routes/services/index.svelte | 77 +- apps/ui/static/moodle.png | Bin 0 -> 9749 bytes package.json | 6 +- pnpm-lock.yaml | 2493 +---------------- 34 files changed, 1118 insertions(+), 3116 deletions(-) create mode 100644 apps/shared/index.ts create mode 100644 apps/shared/nodemon.json create mode 100644 apps/shared/package.json create mode 100644 apps/ui/src/lib/components/svg/services/Moodle.svelte create mode 100644 apps/ui/src/lib/components/svg/services/index.ts create mode 100644 apps/ui/src/routes/services/[id]/_Services.svelte create mode 100644 apps/ui/src/routes/services/[id]/_Services/_Moodle.svelte create mode 100644 apps/ui/static/moodle.png diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f898e8827..90b882e41 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,7 +14,12 @@ // Set *default* container specific settings.json values on container create. "settings": {}, // Add the IDs of extensions you want installed when the container is created. - "extensions": ["dbaeumer.vscode-eslint", "svelte.svelte-vscode"], + "extensions": [ + "dbaeumer.vscode-eslint", + "svelte.svelte-vscode", + "ardenivanov.svelte-intellisense", + "Prisma.prisma" + ], // Use 'forwardPorts' to make a list of ports inside the container available locally. "forwardPorts": [3000], // Use 'postCreateCommand' to run commands after the container is created. diff --git a/apps/api/nodemon.json b/apps/api/nodemon.json index b19da37f0..796707b71 100644 --- a/apps/api/nodemon.json +++ b/apps/api/nodemon.json @@ -2,6 +2,6 @@ "watch": ["src"], "ignore": ["src/**/*.test.ts"], "ext": "ts,mjs,json,graphql", - "exec": "rimraf build && esbuild `find src \\( -name '*.ts' \\) | grep -v client/` --platform=node --outdir=build --format=cjs && node build", + "exec": "rimraf build && esbuild `find src \\( -name '*.ts' \\)` --minify=true --platform=node --outdir=build --format=cjs && node build", "legacyWatch": true } \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json index 8aacd775f..74f770240 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -14,6 +14,7 @@ "start": "NODE_ENV=production npx -y prisma migrate deploy && npx prisma generate && npx prisma db seed && node index.js" }, "dependencies": { + "shared": "workspace:*", "@breejs/ts-worker": "2.0.0", "@fastify/autoload": "5.0.0", "@fastify/cookie": "7.0.0", @@ -51,7 +52,7 @@ "@types/node-os-utils": "1.3.0", "@typescript-eslint/eslint-plugin": "5.30.5", "@typescript-eslint/parser": "5.30.5", - "esbuild": "0.14.48", + "esbuild": "0.14.49", "eslint": "8.19.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-prettier": "4.2.1", diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 862c34e14..8d1e0bbfe 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -313,6 +313,7 @@ model Service { umami Umami? hasura Hasura? fider Fider? + moodle Moodle? } model PlausibleAnalytics { @@ -451,3 +452,20 @@ model Fider { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } + +model Moodle { + id String @id @default(cuid()) + serviceId String @unique + defaultUsername String + defaultPassword String + defaultEmail String + mariadbUser String + mariadbPassword String + mariadbRootUser String + mariadbRootUserPassword String + mariadbDatabase String + mariadbPublicPort Int? + service Service @relation(fields: [serviceId], references: [id]) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index a0eabf4b9..e3ad542aa 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -69,7 +69,8 @@ export const include: any = { meiliSearch: true, umami: true, hasura: true, - fider: true + fider: true, + moodle: true }; export const uniqueName = (): string => uniqueNamesGenerator(customConfig); @@ -112,6 +113,7 @@ export const encrypt = (text: string) => { }); } }; +import { supportedServiceTypesAndVersions } from 'shared'; export async function checkDoubleBranch(branch: string, projectId: number): Promise { const applications = await prisma.application.findMany({ where: { branch, projectId } }); return applications.length > 1; @@ -308,167 +310,6 @@ export const supportedDatabaseTypesAndVersions = [ }, { name: 'couchdb', fancyName: 'CouchDB', baseImage: 'bitnami/couchdb', versions: ['3.2.1'] } ]; -export const supportedServiceTypesAndVersions = [ - { - name: 'plausibleanalytics', - fancyName: 'Plausible Analytics', - baseImage: 'plausible/analytics', - images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], - versions: ['latest', 'stable'], - recommendedVersion: 'stable', - ports: { - main: 8000 - } - }, - { - name: 'nocodb', - fancyName: 'NocoDB', - baseImage: 'nocodb/nocodb', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8080 - } - }, - { - name: 'minio', - fancyName: 'MinIO', - baseImage: 'minio/minio', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 9001 - } - }, - { - name: 'vscodeserver', - fancyName: 'VSCode Server', - baseImage: 'codercom/code-server', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8080 - } - }, - { - name: 'wordpress', - fancyName: 'Wordpress', - baseImage: 'wordpress', - images: ['bitnami/mysql:5.7'], - versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], - recommendedVersion: 'latest', - ports: { - main: 80 - } - }, - { - name: 'vaultwarden', - fancyName: 'Vaultwarden', - baseImage: 'vaultwarden/server', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 80 - } - }, - { - name: 'languagetool', - fancyName: 'LanguageTool', - baseImage: 'silviof/docker-languagetool', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8010 - } - }, - { - name: 'n8n', - fancyName: 'n8n', - baseImage: 'n8nio/n8n', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 5678 - } - }, - { - name: 'uptimekuma', - fancyName: 'Uptime Kuma', - baseImage: 'louislam/uptime-kuma', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 3001 - } - }, - { - name: 'ghost', - fancyName: 'Ghost', - baseImage: 'bitnami/ghost', - images: ['bitnami/mariadb'], - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 2368 - } - }, - { - name: 'meilisearch', - fancyName: 'Meilisearch', - baseImage: 'getmeili/meilisearch', - images: [], - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 7700 - } - }, - { - name: 'umami', - fancyName: 'Umami', - baseImage: 'ghcr.io/mikecao/umami', - images: ['postgres:12-alpine'], - versions: ['postgresql-latest'], - recommendedVersion: 'postgresql-latest', - ports: { - main: 3000 - } - }, - { - name: 'hasura', - fancyName: 'Hasura', - baseImage: 'hasura/graphql-engine', - images: ['postgres:12-alpine'], - versions: ['latest', 'v2.8.3'], - recommendedVersion: 'v2.8.3', - ports: { - main: 8080 - } - }, - { - name: 'fider', - fancyName: 'Fider', - baseImage: 'getfider/fider', - images: ['postgres:12-alpine'], - versions: ['stable'], - recommendedVersion: 'stable', - ports: { - main: 3000 - } - // }, - // { - // name: 'appwrite', - // fancyName: 'AppWrite', - // baseImage: 'appwrite/appwrite', - // images: ['appwrite/influxdb', 'appwrite/telegraf', 'mariadb:10.7', 'redis:6.0-alpine3.12'], - // versions: ['latest', '0.13.0'], - // recommendedVersion: '0.13.0', - // ports: { - // main: 3000 - // } - // } - } -]; export async function startTraefikProxy(engine: string): Promise { const host = getEngine(engine); @@ -1347,6 +1188,40 @@ export async function configureServiceType({ } } }); + } else if (type === 'moodle') { + const defaultUsername = cuid(); + const defaultPassword = encrypt(generatePassword()); + const defaultEmail = `${cuid()}@example.com`; + const mariadbUser = cuid(); + const mariadbPassword = encrypt(generatePassword()); + const mariadbDatabase = 'moodle_db'; + const mariadbRootUser = cuid(); + const mariadbRootUserPassword = encrypt(generatePassword()); + await prisma.service.update({ + where: { id }, + data: { + type, + moodle: { + create: { + defaultUsername, + defaultPassword, + defaultEmail, + mariadbUser, + mariadbPassword, + mariadbDatabase, + mariadbRootUser, + mariadbRootUserPassword + } + } + } + }); + } else { + await prisma.service.update({ + where: { id }, + data: { + type + } + }); } } diff --git a/apps/api/src/lib/serviceFields.ts b/apps/api/src/lib/serviceFields.ts index dadbc6713..7a6b00a85 100644 --- a/apps/api/src/lib/serviceFields.ts +++ b/apps/api/src/lib/serviceFields.ts @@ -15,7 +15,7 @@ export const plausibleAnalytics = [{ isNumber: false, isBoolean: false, isEncrypted: false -},{ +}, { name: 'username', isEditable: true, isLowerCase: false, @@ -86,7 +86,7 @@ export const minio = [{ isNumber: false, isBoolean: false, isEncrypted: false -},{ +}, { name: 'rootUser', isEditable: false, isLowerCase: false, @@ -325,7 +325,7 @@ export const fider = [{ isNumber: false, isBoolean: false, isEncrypted: true -},{ +}, { name: 'postgreslUser', isEditable: false, isLowerCase: false, @@ -412,4 +412,68 @@ export const fider = [{ isNumber: false, isBoolean: false, isEncrypted: false +}] +export const moodle = [{ + name: 'defaultEmail', + isEditable: true, + isLowerCase: true, + isNumber: false, + isBoolean: false, + isEncrypted: false +}, +{ + name: 'defaultUsername', + isEditable: true, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: false +}, +{ + name: 'defaultPassword', + isEditable: false, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: true +}, +{ + name: 'mariadbUser', + isEditable: false, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: false +}, +{ + name: 'mariadbPassword', + isEditable: false, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: true +}, +{ + name: 'mariadbRootUser', + isEditable: false, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: false +}, +{ + name: 'mariadbRootUserPassword', + isEditable: false, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: true +}, +{ + name: 'mariadbDatabase', + isEditable: true, + isLowerCase: false, + isNumber: false, + isBoolean: false, + isEncrypted: false }] \ No newline at end of file diff --git a/apps/api/src/routes/api/v1/services/handlers.ts b/apps/api/src/routes/api/v1/services/handlers.ts index 186fee566..f48839f85 100644 --- a/apps/api/src/routes/api/v1/services/handlers.ts +++ b/apps/api/src/routes/api/v1/services/handlers.ts @@ -2,13 +2,14 @@ import type { FastifyReply, FastifyRequest } from 'fastify'; import fs from 'fs/promises'; import yaml from 'js-yaml'; import bcrypt from 'bcryptjs'; -import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, supportedServiceTypesAndVersions, generatePassword, isDev, stopTcpHttpProxy } from '../../../../lib/common'; +import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, generatePassword, isDev, stopTcpHttpProxy } from '../../../../lib/common'; import { day } from '../../../../lib/dayjs'; import { checkContainer, dockerInstance, getEngine, removeContainer } from '../../../../lib/docker'; import cuid from 'cuid'; import type { OnlyId } from '../../../../types'; import type { ActivateWordpressFtp, CheckService, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types'; +import { supportedServiceTypesAndVersions } from 'shared'; // async function startServiceNew(request: FastifyRequest) { // try { @@ -227,7 +228,6 @@ export async function getServiceType(request: FastifyRequest) { } export async function saveServiceType(request: FastifyRequest, reply: FastifyReply) { try { - const teamId = request.user.teamId; const { id } = request.params; const { type } = request.body; await configureServiceType({ id, type }); @@ -589,6 +589,9 @@ export async function startService(request: FastifyRequest) { if (type === 'fider') { return await startFiderService(request) } + if (type === 'moodle') { + return await startMoodleService(request) + } throw `Service type ${type} not supported.` } catch (error) { throw { status: 500, message: error?.message || error } @@ -639,6 +642,9 @@ export async function stopService(request: FastifyRequest) { if (type === 'fider') { return await stopFiderService(request) } + if (type === 'moodle') { + return await stopMoodleService(request) + } throw `Service type ${type} not supported.` } catch (error) { throw { status: 500, message: error?.message || error } @@ -2524,6 +2530,170 @@ async function stopFiderService(request: FastifyRequest) { } } +async function startMoodleService(request: FastifyRequest) { + try { + const { id } = request.params; + const teamId = request.user.teamId; + const service = await getServiceFromDB({ id, teamId }); + const { + type, + version, + fqdn, + destinationDockerId, + destinationDocker, + serviceSecret, + exposePort, + moodle: { + defaultUsername, + defaultPassword, + defaultEmail, + mariadbRootUser, + mariadbRootUserPassword, + mariadbDatabase, + mariadbPassword, + mariadbUser + } + } = service; + const network = destinationDockerId && destinationDocker.network; + const host = getEngine(destinationDocker.engine); + const port = getServiceMainPort('moodle'); + + const { workdir } = await createDirectories({ repository: type, buildId: id }); + const image = getServiceImage(type); + const domain = getDomain(fqdn); + const config = { + moodle: { + image: `${image}:${version}`, + volume: `${id}-data:/bitnami/moodle`, + environmentVariables: { + MOODLE_USERNAME: defaultUsername, + MOODLE_PASSWORD: defaultPassword, + MOODLE_EMAIL: defaultEmail, + MOODLE_DATABASE_HOST: `${id}-mariadb`, + MOODLE_DATABASE_USER: mariadbUser, + MOODLE_DATABASE_PASSWORD: mariadbPassword, + MOODLE_DATABASE_NAME: mariadbDatabase, + MOODLE_REVERSEPROXY: 'yes' + } + }, + mariadb: { + image: 'bitnami/mariadb:latest', + volume: `${id}-mariadb-data:/bitnami/mariadb`, + environmentVariables: { + MARIADB_USER: mariadbUser, + MARIADB_PASSWORD: mariadbPassword, + MARIADB_DATABASE: mariadbDatabase, + MARIADB_ROOT_USER: mariadbRootUser, + MARIADB_ROOT_PASSWORD: mariadbRootUserPassword + } + } + }; + if (serviceSecret.length > 0) { + serviceSecret.forEach((secret) => { + config.moodle.environmentVariables[secret.name] = secret.value; + }); + } + + const composeFile: ComposeFile = { + version: '3.8', + services: { + [id]: { + container_name: id, + image: config.moodle.image, + environment: config.moodle.environmentVariables, + networks: [network], + volumes: [], + restart: 'always', + labels: makeLabelForServices('moodle'), + ...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}), + deploy: { + restart_policy: { + condition: 'on-failure', + delay: '5s', + max_attempts: 3, + window: '120s' + } + }, + depends_on: [`${id}-mariadb`] + }, + [`${id}-mariadb`]: { + container_name: `${id}-mariadb`, + image: config.mariadb.image, + environment: config.mariadb.environmentVariables, + networks: [network], + volumes: [], + restart: 'always', + deploy: { + restart_policy: { + condition: 'on-failure', + delay: '5s', + max_attempts: 3, + window: '120s' + } + }, + depends_on: [] + } + + }, + networks: { + [network]: { + external: true + } + }, + volumes: { + [config.moodle.volume.split(':')[0]]: { + name: config.moodle.volume.split(':')[0] + }, + [config.mariadb.volume.split(':')[0]]: { + name: config.mariadb.volume.split(':')[0] + } + } + + }; + const composeFileDestination = `${workdir}/docker-compose.yaml`; + await fs.writeFile(composeFileDestination, yaml.dump(composeFile)); + + await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} pull`); + await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`); + + return {} + } catch ({ status, message }) { + return errorHandler({ status, message }) + } +} +async function stopMoodleService(request: FastifyRequest) { + try { + const { id } = request.params; + const teamId = request.user.teamId; + const service = await getServiceFromDB({ id, teamId }); + const { destinationDockerId, destinationDocker, fqdn } = service; + if (destinationDockerId) { + const engine = destinationDocker.engine; + + try { + const found = await checkContainer(engine, id); + if (found) { + await removeContainer({ id, engine }); + } + } catch (error) { + console.error(error); + } + try { + const found = await checkContainer(engine, `${id}-mariadb`); + if (found) { + await removeContainer({ id: `${id}-mariadb`, engine }); + } + } catch (error) { + console.error(error); + } + } + return {} + } catch ({ status, message }) { + return errorHandler({ status, message }) + } +} + + export async function activatePlausibleUsers(request: FastifyRequest, reply: FastifyReply) { try { const { id } = request.params diff --git a/apps/api/src/routes/webhooks/traefik/handlers.ts b/apps/api/src/routes/webhooks/traefik/handlers.ts index 879ccd960..4d2d04db1 100644 --- a/apps/api/src/routes/webhooks/traefik/handlers.ts +++ b/apps/api/src/routes/webhooks/traefik/handlers.ts @@ -1,5 +1,6 @@ import { FastifyRequest } from "fastify"; -import { asyncExecShell, errorHandler, getDomain, isDev, listServicesWithIncludes, prisma, supportedServiceTypesAndVersions } from "../../../lib/common"; +import { supportedServiceTypesAndVersions } from "shared"; +import { asyncExecShell, errorHandler, getDomain, isDev, listServicesWithIncludes, prisma } from "../../../lib/common"; import { getEngine } from "../../../lib/docker"; import { TraefikOtherConfiguration } from "./types"; diff --git a/apps/shared/index.ts b/apps/shared/index.ts new file mode 100644 index 000000000..4ee99c339 --- /dev/null +++ b/apps/shared/index.ts @@ -0,0 +1,160 @@ +export const supportedServiceTypesAndVersions = [ + { + name: 'plausibleanalytics', + fancyName: 'Plausible Analytics', + baseImage: 'plausible/analytics', + images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], + versions: ['latest', 'stable'], + recommendedVersion: 'stable', + ports: { + main: 8000 + } + }, + { + name: 'nocodb', + fancyName: 'NocoDB', + baseImage: 'nocodb/nocodb', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8080 + } + }, + { + name: 'minio', + fancyName: 'MinIO', + baseImage: 'minio/minio', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 9001 + } + }, + { + name: 'vscodeserver', + fancyName: 'VSCode Server', + baseImage: 'codercom/code-server', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8080 + } + }, + { + name: 'wordpress', + fancyName: 'Wordpress', + baseImage: 'wordpress', + images: ['bitnami/mysql:5.7'], + versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], + recommendedVersion: 'latest', + ports: { + main: 80 + } + }, + { + name: 'vaultwarden', + fancyName: 'Vaultwarden', + baseImage: 'vaultwarden/server', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 80 + } + }, + { + name: 'languagetool', + fancyName: 'LanguageTool', + baseImage: 'silviof/docker-languagetool', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8010 + } + }, + { + name: 'n8n', + fancyName: 'n8n', + baseImage: 'n8nio/n8n', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 5678 + } + }, + { + name: 'uptimekuma', + fancyName: 'Uptime Kuma', + baseImage: 'louislam/uptime-kuma', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 3001 + } + }, + { + name: 'ghost', + fancyName: 'Ghost', + baseImage: 'bitnami/ghost', + images: ['bitnami/mariadb'], + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 2368 + } + }, + { + name: 'meilisearch', + fancyName: 'Meilisearch', + baseImage: 'getmeili/meilisearch', + images: [], + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 7700 + } + }, + { + name: 'umami', + fancyName: 'Umami', + baseImage: 'ghcr.io/mikecao/umami', + images: ['postgres:12-alpine'], + versions: ['postgresql-latest'], + recommendedVersion: 'postgresql-latest', + ports: { + main: 3000 + } + }, + { + name: 'hasura', + fancyName: 'Hasura', + baseImage: 'hasura/graphql-engine', + images: ['postgres:12-alpine'], + versions: ['latest', 'v2.5.1'], + recommendedVersion: 'v2.5.1', + ports: { + main: 8080 + } + }, + { + name: 'fider', + fancyName: 'Fider', + baseImage: 'getfider/fider', + images: ['postgres:12-alpine'], + versions: ['stable'], + recommendedVersion: 'stable', + ports: { + main: 3000 + } + }, + // { + // name: 'moodle', + // fancyName: 'Moodle', + // baseImage: 'bitnami/moodle', + // images: [], + // versions: ['latest', 'v4.0.2'], + // recommendedVersion: 'latest', + // ports: { + // main: 8080 + // } + // } +]; diff --git a/apps/shared/nodemon.json b/apps/shared/nodemon.json new file mode 100644 index 000000000..67caf105e --- /dev/null +++ b/apps/shared/nodemon.json @@ -0,0 +1,7 @@ +{ + "watch": ["src"], + "ignore": ["src/**/*.test.ts"], + "ext": "ts,mjs,json,graphql", + "exec": "rimraf build && esbuild index.ts --watch=true --minify=true --platform=node --outdir=build --format=cjs", + "legacyWatch": true + } \ No newline at end of file diff --git a/apps/shared/package.json b/apps/shared/package.json new file mode 100644 index 000000000..d97933164 --- /dev/null +++ b/apps/shared/package.json @@ -0,0 +1,14 @@ +{ + "name": "shared", + "version": "1.0.0", + "main": "build/index.js", + "scripts": { + "dev": "nodemon", + "build": "rimraf build && esbuild index.ts --minify=true --platform=node --outdir=build --format=cjs" + }, + "devDependencies": { + "esbuild": "0.14.49", + "nodemon": "2.0.19", + "rimraf": "3.0.2" + } +} \ No newline at end of file diff --git a/apps/ui/package.json b/apps/ui/package.json index 5e069312f..0e3d1122c 100644 --- a/apps/ui/package.json +++ b/apps/ui/package.json @@ -39,6 +39,7 @@ }, "type": "module", "dependencies": { + "shared": "workspace:*", "@sveltejs/adapter-static": "1.0.0-next.34", "@zerodevx/svelte-toast": "0.7.2", "cuid": "2.1.8", diff --git a/apps/ui/src/lib/common.ts b/apps/ui/src/lib/common.ts index 4b0ae7fb4..8d35562a3 100644 --- a/apps/ui/src/lib/common.ts +++ b/apps/ui/src/lib/common.ts @@ -1,4 +1,5 @@ import { toast } from '@zerodevx/svelte-toast'; +import { supportedServiceTypesAndVersions } from 'shared/index'; export const asyncSleep = (delay: number) => new Promise((resolve) => setTimeout(resolve, delay)); @@ -62,195 +63,34 @@ export function changeQueryParams(buildId: string) { return history.pushState(null, null, '?' + queryParams.toString()); } -// export const supportedDatabaseTypesAndVersions = [ -// { -// name: 'mongodb', -// fancyName: 'MongoDB', -// baseImage: 'bitnami/mongodb', -// versions: ['5.0', '4.4', '4.2'] -// }, -// { name: 'mysql', fancyName: 'MySQL', baseImage: 'bitnami/mysql', versions: ['8.0', '5.7'] }, -// { -// name: 'mariadb', -// fancyName: 'MariaDB', -// baseImage: 'bitnami/mariadb', -// versions: ['10.7', '10.6', '10.5', '10.4', '10.3', '10.2'] -// }, -// { -// name: 'postgresql', -// fancyName: 'PostgreSQL', -// baseImage: 'bitnami/postgresql', -// versions: ['14.2.0', '13.6.0', '12.10.0 ', '11.15.0', '10.20.0'] -// }, -// { -// name: 'redis', -// fancyName: 'Redis', -// baseImage: 'bitnami/redis', -// versions: ['6.2', '6.0', '5.0'] -// }, -// { name: 'couchdb', fancyName: 'CouchDB', baseImage: 'bitnami/couchdb', versions: ['3.2.1'] } -// ]; -// export const supportedServiceTypesAndVersions = [ -// { -// name: 'plausibleanalytics', -// fancyName: 'Plausible Analytics', -// baseImage: 'plausible/analytics', -// images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], -// versions: ['latest', 'stable'], -// recommendedVersion: 'stable', -// ports: { -// main: 8000 -// } -// }, -// { -// name: 'nocodb', -// fancyName: 'NocoDB', -// baseImage: 'nocodb/nocodb', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 8080 -// } -// }, -// { -// name: 'minio', -// fancyName: 'MinIO', -// baseImage: 'minio/minio', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 9001 -// } -// }, -// { -// name: 'vscodeserver', -// fancyName: 'VSCode Server', -// baseImage: 'codercom/code-server', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 8080 -// } -// }, -// { -// name: 'wordpress', -// fancyName: 'Wordpress', -// baseImage: 'wordpress', -// images: ['bitnami/mysql:5.7'], -// versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], -// recommendedVersion: 'latest', -// ports: { -// main: 80 -// } -// }, -// { -// name: 'vaultwarden', -// fancyName: 'Vaultwarden', -// baseImage: 'vaultwarden/server', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 80 -// } -// }, -// { -// name: 'languagetool', -// fancyName: 'LanguageTool', -// baseImage: 'silviof/docker-languagetool', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 8010 -// } -// }, -// { -// name: 'n8n', -// fancyName: 'n8n', -// baseImage: 'n8nio/n8n', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 5678 -// } -// }, -// { -// name: 'uptimekuma', -// fancyName: 'Uptime Kuma', -// baseImage: 'louislam/uptime-kuma', -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 3001 -// } -// }, -// { -// name: 'ghost', -// fancyName: 'Ghost', -// baseImage: 'bitnami/ghost', -// images: ['bitnami/mariadb'], -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 2368 -// } -// }, -// { -// name: 'meilisearch', -// fancyName: 'Meilisearch', -// baseImage: 'getmeili/meilisearch', -// images: [], -// versions: ['latest'], -// recommendedVersion: 'latest', -// ports: { -// main: 7700 -// } -// }, -// { -// name: 'umami', -// fancyName: 'Umami', -// baseImage: 'ghcr.io/mikecao/umami', -// images: ['postgres:12-alpine'], -// versions: ['postgresql-latest'], -// recommendedVersion: 'postgresql-latest', -// ports: { -// main: 3000 -// } -// }, -// { -// name: 'hasura', -// fancyName: 'Hasura', -// baseImage: 'hasura/graphql-engine', -// images: ['postgres:12-alpine'], -// versions: ['latest', 'v2.5.1'], -// recommendedVersion: 'v2.5.1', -// ports: { -// main: 8080 -// } -// }, -// { -// name: 'fider', -// fancyName: 'Fider', -// baseImage: 'getfider/fider', -// images: ['postgres:12-alpine'], -// versions: ['stable'], -// recommendedVersion: 'stable', -// ports: { -// main: 3000 -// } -// // }, -// // { -// // name: 'appwrite', -// // fancyName: 'AppWrite', -// // baseImage: 'appwrite/appwrite', -// // images: ['appwrite/influxdb', 'appwrite/telegraf', 'mariadb:10.7', 'redis:6.0-alpine3.12'], -// // versions: ['latest', '0.13.0'], -// // recommendedVersion: '0.13.0', -// // ports: { -// // main: 3000 -// // } -// // } -// } -// ]; +export const supportedDatabaseTypesAndVersions = [ + { + name: 'mongodb', + fancyName: 'MongoDB', + baseImage: 'bitnami/mongodb', + versions: ['5.0', '4.4', '4.2'] + }, + { name: 'mysql', fancyName: 'MySQL', baseImage: 'bitnami/mysql', versions: ['8.0', '5.7'] }, + { + name: 'mariadb', + fancyName: 'MariaDB', + baseImage: 'bitnami/mariadb', + versions: ['10.7', '10.6', '10.5', '10.4', '10.3', '10.2'] + }, + { + name: 'postgresql', + fancyName: 'PostgreSQL', + baseImage: 'bitnami/postgresql', + versions: ['14.2.0', '13.6.0', '12.10.0 ', '11.15.0', '10.20.0'] + }, + { + name: 'redis', + fancyName: 'Redis', + baseImage: 'bitnami/redis', + versions: ['6.2', '6.0', '5.0'] + }, + { name: 'couchdb', fancyName: 'CouchDB', baseImage: 'bitnami/couchdb', versions: ['3.2.1'] } +]; export const getServiceMainPort = (service: string) => { const serviceType = supportedServiceTypesAndVersions.find((s) => s.name === service); @@ -260,155 +100,7 @@ export const getServiceMainPort = (service: string) => { return null; }; -export const supportedServiceTypesAndVersions = [ - { - name: 'plausibleanalytics', - fancyName: 'Plausible Analytics', - baseImage: 'plausible/analytics', - images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], - versions: ['latest', 'stable'], - recommendedVersion: 'stable', - ports: { - main: 8000 - } - }, - { - name: 'nocodb', - fancyName: 'NocoDB', - baseImage: 'nocodb/nocodb', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8080 - } - }, - { - name: 'minio', - fancyName: 'MinIO', - baseImage: 'minio/minio', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 9001 - } - }, - { - name: 'vscodeserver', - fancyName: 'VSCode Server', - baseImage: 'codercom/code-server', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8080 - } - }, - { - name: 'wordpress', - fancyName: 'Wordpress', - baseImage: 'wordpress', - images: ['bitnami/mysql:5.7'], - versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], - recommendedVersion: 'latest', - ports: { - main: 80 - } - }, - { - name: 'vaultwarden', - fancyName: 'Vaultwarden', - baseImage: 'vaultwarden/server', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 80 - } - }, - { - name: 'languagetool', - fancyName: 'LanguageTool', - baseImage: 'silviof/docker-languagetool', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8010 - } - }, - { - name: 'n8n', - fancyName: 'n8n', - baseImage: 'n8nio/n8n', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 5678 - } - }, - { - name: 'uptimekuma', - fancyName: 'Uptime Kuma', - baseImage: 'louislam/uptime-kuma', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 3001 - } - }, - { - name: 'ghost', - fancyName: 'Ghost', - baseImage: 'bitnami/ghost', - images: ['bitnami/mariadb'], - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 2368 - } - }, - { - name: 'meilisearch', - fancyName: 'Meilisearch', - baseImage: 'getmeili/meilisearch', - images: [], - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 7700 - } - }, - { - name: 'umami', - fancyName: 'Umami', - baseImage: 'ghcr.io/mikecao/umami', - images: ['postgres:12-alpine'], - versions: ['postgresql-latest'], - recommendedVersion: 'postgresql-latest', - ports: { - main: 3000 - } - }, - { - name: 'hasura', - fancyName: 'Hasura', - baseImage: 'hasura/graphql-engine', - images: ['postgres:12-alpine'], - versions: ['latest', 'v2.5.1'], - recommendedVersion: 'v2.5.1', - ports: { - main: 8080 - } - }, - { - name: 'fider', - fancyName: 'Fider', - baseImage: 'getfider/fider', - images: ['postgres:12-alpine'], - versions: ['stable'], - recommendedVersion: 'stable', - ports: { - main: 3000 - } - } -]; + export function handlerNotFoundLoad(error: any, url: URL) { if (error?.status === 404) { diff --git a/apps/ui/src/lib/components/svg/services/Moodle.svelte b/apps/ui/src/lib/components/svg/services/Moodle.svelte new file mode 100644 index 000000000..ad8aec880 --- /dev/null +++ b/apps/ui/src/lib/components/svg/services/Moodle.svelte @@ -0,0 +1,8 @@ + +moodle logo diff --git a/apps/ui/src/lib/components/svg/services/index.ts b/apps/ui/src/lib/components/svg/services/index.ts new file mode 100644 index 000000000..007ded1ce --- /dev/null +++ b/apps/ui/src/lib/components/svg/services/index.ts @@ -0,0 +1,17 @@ +//@ts-nocheck +export { default as PlausibleAnalytics } from './PlausibleAnalytics.svelte'; +export { default as NocoDb } from './NocoDB.svelte'; +export { default as MinIo } from './MinIO.svelte'; +export { default as VsCodeServer } from './VSCodeServer.svelte'; +export { default as Wordpress } from './Wordpress.svelte'; +export { default as VaultWarden } from './VaultWarden.svelte'; +export { default as LanguageTool } from './LanguageTool.svelte'; +export { default as N8n } from './N8n.svelte'; +export { default as UptimeKuma } from './UptimeKuma.svelte'; +export { default as Ghost } from './Ghost.svelte'; +export { default as MeiliSearch } from './MeiliSearch.svelte'; +export { default as Umami } from './Umami.svelte'; +export { default as Hasura } from './Hasura.svelte'; +export { default as Fider } from './Fider.svelte'; +export { default as Moodle } from './Moodle.svelte'; + diff --git a/apps/ui/src/routes/applications/[id]/__layout.svelte b/apps/ui/src/routes/applications/[id]/__layout.svelte index 645463921..d016346dc 100644 --- a/apps/ui/src/routes/applications/[id]/__layout.svelte +++ b/apps/ui/src/routes/applications/[id]/__layout.svelte @@ -177,49 +177,7 @@ {/if} - {#if application.gitSource?.htmlUrl && application.repository && application.branch} - - {#if application.gitSource?.type === 'gitlab'} - - - - {:else if application.gitSource?.type === 'github'} - - - - {/if} - - {/if} +
{#if $status.application.isExited} {application.name}
+ {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if}
diff --git a/apps/ui/src/routes/applications/[id]/logs/build.svelte b/apps/ui/src/routes/applications/[id]/logs/build.svelte index 21dc8fab9..eb213c85e 100644 --- a/apps/ui/src/routes/applications/[id]/logs/build.svelte +++ b/apps/ui/src/routes/applications/[id]/logs/build.svelte @@ -88,6 +88,49 @@
{application.name} + {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if}
diff --git a/apps/ui/src/routes/applications/[id]/logs/index.svelte b/apps/ui/src/routes/applications/[id]/logs/index.svelte index a4991f34a..74eee8f95 100644 --- a/apps/ui/src/routes/applications/[id]/logs/index.svelte +++ b/apps/ui/src/routes/applications/[id]/logs/index.svelte @@ -104,6 +104,49 @@
{application.name}
+ {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if}
{#if logs.length === 0} diff --git a/apps/ui/src/routes/applications/[id]/previews.svelte b/apps/ui/src/routes/applications/[id]/previews.svelte index 638ad04cd..4653594bb 100644 --- a/apps/ui/src/routes/applications/[id]/previews.svelte +++ b/apps/ui/src/routes/applications/[id]/previews.svelte @@ -64,6 +64,49 @@
{application.name} + {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if}
diff --git a/apps/ui/src/routes/applications/[id]/secrets.svelte b/apps/ui/src/routes/applications/[id]/secrets.svelte index 83cb1d3e3..f5c64ea81 100644 --- a/apps/ui/src/routes/applications/[id]/secrets.svelte +++ b/apps/ui/src/routes/applications/[id]/secrets.svelte @@ -5,7 +5,7 @@ const response = await get(`/applications/${params.id}/secrets`); return { props: { - application: stuff.application, + application: stuff.application, ...response } }; @@ -70,6 +70,49 @@
{application.name}
+ {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if}
diff --git a/apps/ui/src/routes/applications/[id]/storages.svelte b/apps/ui/src/routes/applications/[id]/storages.svelte index 50e3d0ee2..96908fa89 100644 --- a/apps/ui/src/routes/applications/[id]/storages.svelte +++ b/apps/ui/src/routes/applications/[id]/storages.svelte @@ -41,6 +41,49 @@ {application.name} + {#if application.gitSource?.htmlUrl && application.repository && application.branch} + + {#if application.gitSource?.type === 'gitlab'} + + + + {:else if application.gitSource?.type === 'github'} + + + + {/if} + + {/if}
diff --git a/apps/ui/src/routes/services/[id]/_ServiceLinks.svelte b/apps/ui/src/routes/services/[id]/_ServiceLinks.svelte index 5b07d38f3..e25f3d2d0 100644 --- a/apps/ui/src/routes/services/[id]/_ServiceLinks.svelte +++ b/apps/ui/src/routes/services/[id]/_ServiceLinks.svelte @@ -1,76 +1,63 @@ {#if service.type === 'plausibleanalytics'} - + {:else if service.type === 'nocodb'} - + {:else if service.type === 'minio'} - + {:else if service.type === 'vscodeserver'} - + {:else if service.type === 'wordpress'} - + {:else if service.type === 'vaultwarden'} - + {:else if service.type === 'languagetool'} - + {:else if service.type === 'n8n'} - + {:else if service.type === 'uptimekuma'} - + {:else if service.type === 'ghost'} - + {:else if service.type === 'umami'} - + {:else if service.type === 'hasura'} - + {:else if service.type === 'fider'} - + + +{:else if service.type === 'moodle'} + + {/if} + diff --git a/apps/ui/src/routes/services/[id]/_Services.svelte b/apps/ui/src/routes/services/[id]/_Services.svelte new file mode 100644 index 000000000..65777df36 --- /dev/null +++ b/apps/ui/src/routes/services/[id]/_Services.svelte @@ -0,0 +1,36 @@ + + +{#if type === 'plausibleanalytics'} + +{:else if type === 'nocodb'} + +{:else if type === 'minio'} + +{:else if type === 'vscodeserver'} + +{:else if type === 'wordpress'} + +{:else if type === 'vaultwarden'} + +{:else if type === 'languagetool'} + +{:else if type === 'n8n'} + +{:else if type === 'uptimekuma'} + +{:else if type === 'ghost'} + +{:else if type === 'meilisearch'} + +{:else if type === 'umami'} + +{:else if type === 'hasura'} + +{:else if type === 'fider'} + +{:else if type === 'moodle'} + +{/if} diff --git a/apps/ui/src/routes/services/[id]/_Services/_Moodle.svelte b/apps/ui/src/routes/services/[id]/_Services/_Moodle.svelte new file mode 100644 index 000000000..6cc8cc1fd --- /dev/null +++ b/apps/ui/src/routes/services/[id]/_Services/_Moodle.svelte @@ -0,0 +1,102 @@ + + +
+
Moodle
+
+
+ + +
+
+ + +
+
+ + +
+
+
MariaDB
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
diff --git a/apps/ui/src/routes/services/[id]/_Services/_Services.svelte b/apps/ui/src/routes/services/[id]/_Services/_Services.svelte index 587ab4acd..76efc26f2 100644 --- a/apps/ui/src/routes/services/[id]/_Services/_Services.svelte +++ b/apps/ui/src/routes/services/[id]/_Services/_Services.svelte @@ -16,7 +16,7 @@ import { appSession, disabledButton, status } from '$lib/store'; import CopyPasswordField from '$lib/components/CopyPasswordField.svelte'; import Explainer from '$lib/components/Explainer.svelte'; - import Setting from '$lib/components/Setting.svelte' + import Setting from '$lib/components/Setting.svelte'; import Fider from './_Fider.svelte'; import Ghost from './_Ghost.svelte'; @@ -27,6 +27,7 @@ import Umami from './_Umami.svelte'; import VsCodeServer from './_VSCodeServer.svelte'; import Wordpress from './_Wordpress.svelte'; + import Moodle from './_Moodle.svelte'; const { id } = $page.params; @@ -97,6 +98,7 @@ } }); +
@@ -271,6 +273,8 @@ {:else if service.type === 'fider'} + {:else if service.type === 'moodle'} + {/if}
diff --git a/apps/ui/src/routes/services/[id]/__layout.svelte b/apps/ui/src/routes/services/[id]/__layout.svelte index 30866b1e7..52febf4dd 100644 --- a/apps/ui/src/routes/services/[id]/__layout.svelte +++ b/apps/ui/src/routes/services/[id]/__layout.svelte @@ -47,6 +47,7 @@ } }; } catch (error) { + console.log(error); return handlerNotFoundLoad(error, url); } }; @@ -62,6 +63,7 @@ import { errorNotification, handlerNotFoundLoad } from '$lib/common'; import { appSession, disabledButton, status } from '$lib/store'; import { onDestroy, onMount } from 'svelte'; + import ServiceLinks from './_ServiceLinks.svelte'; const { id } = $page.params; export let service: any; @@ -76,6 +78,13 @@ let loading = false; let statusInterval: any; + let location = service.fqdn || null; + if (GITPOD_WORKSPACE_URL && service.exposePort) { + const { href } = new URL(GITPOD_WORKSPACE_URL); + const newURL = href.replace('https://', `https://${service.exposePort}-`).replace(/\/$/, ''); + location = newURL; + } + async function deleteService() { const sure = confirm($t('application.confirm_to_delete', { name: service.name })); if (sure) { @@ -109,7 +118,7 @@ loading = true; try { await post(`/services/${service.id}/${service.type}/start`, {}); - return window.location.reload() + return window.location.reload(); } catch (error) { return errorNotification(error); } finally { @@ -147,6 +156,29 @@ {:else} {#if service.type && service.destinationDockerId && service.version} + {#if location} + + + + + + + {/if} +
{#if $status.service.initialLoading}
diff --git a/apps/ui/src/routes/services/[id]/configuration/version.svelte b/apps/ui/src/routes/services/[id]/configuration/version.svelte index 1bbaad1ac..889a96160 100644 --- a/apps/ui/src/routes/services/[id]/configuration/version.svelte +++ b/apps/ui/src/routes/services/[id]/configuration/version.svelte @@ -31,7 +31,8 @@ import { goto } from '$app/navigation'; import { get, post } from '$lib/api'; import { t } from '$lib/translations'; - import { errorNotification, supportedServiceTypesAndVersions } from '$lib/common'; + import { errorNotification } from '$lib/common'; + import { supportedServiceTypesAndVersions } from 'shared/index'; const { id } = $page.params; const from = $page.url.searchParams.get('from'); diff --git a/apps/ui/src/routes/services/[id]/index.svelte b/apps/ui/src/routes/services/[id]/index.svelte index bc6edd71f..c503e3552 100644 --- a/apps/ui/src/routes/services/[id]/index.svelte +++ b/apps/ui/src/routes/services/[id]/index.svelte @@ -57,30 +57,6 @@
{service.name}
- - {#if service.fqdn} - - - - - - - {/if} -
diff --git a/apps/ui/src/routes/services/index.svelte b/apps/ui/src/routes/services/index.svelte index dff275142..a32e11711 100644 --- a/apps/ui/src/routes/services/index.svelte +++ b/apps/ui/src/routes/services/index.svelte @@ -24,22 +24,9 @@ import { t } from '$lib/translations'; import { appSession } from '$lib/store'; - import PlausibleAnalytics from '$lib/components/svg/services/PlausibleAnalytics.svelte'; - import NocoDb from '$lib/components/svg/services/NocoDB.svelte'; - import MinIo from '$lib/components/svg/services/MinIO.svelte'; - import VsCodeServer from '$lib/components/svg/services/VSCodeServer.svelte'; - import Wordpress from '$lib/components/svg/services/Wordpress.svelte'; - import VaultWarden from '$lib/components/svg/services/VaultWarden.svelte'; - import LanguageTool from '$lib/components/svg/services/LanguageTool.svelte'; - - import N8n from '$lib/components/svg/services/N8n.svelte'; - import UptimeKuma from '$lib/components/svg/services/UptimeKuma.svelte'; - import Ghost from '$lib/components/svg/services/Ghost.svelte'; - import MeiliSearch from '$lib/components/svg/services/MeiliSearch.svelte'; - import Umami from '$lib/components/svg/services/Umami.svelte'; - import Hasura from '$lib/components/svg/services/Hasura.svelte'; - import Fider from '$lib/components/svg/services/Fider.svelte'; + import * as Icons from '$lib/components/svg/services'; import { getDomain } from '$lib/common'; + import Services from './[id]/_Services.svelte'; async function newService() { const { id } = await post('/services/new', {}); @@ -88,35 +75,7 @@ {#each ownServices as service}
- {#if service.type === 'plausibleanalytics'} - - {:else if service.type === 'nocodb'} - - {:else if service.type === 'minio'} - - {:else if service.type === 'vscodeserver'} - - {:else if service.type === 'wordpress'} - - {:else if service.type === 'vaultwarden'} - - {:else if service.type === 'languagetool'} - - {:else if service.type === 'n8n'} - - {:else if service.type === 'uptimekuma'} - - {:else if service.type === 'ghost'} - - {:else if service.type === 'meilisearch'} - - {:else if service.type === 'umami'} - - {:else if service.type === 'hasura'} - - {:else if service.type === 'fider'} - - {/if} +
{service.name}
@@ -141,35 +100,7 @@ {#each otherServices as service}
- {#if service.type === 'plausibleanalytics'} - - {:else if service.type === 'nocodb'} - - {:else if service.type === 'minio'} - - {:else if service.type === 'vscodeserver'} - - {:else if service.type === 'wordpress'} - - {:else if service.type === 'vaultwarden'} - - {:else if service.type === 'languagetool'} - - {:else if service.type === 'n8n'} - - {:else if service.type === 'uptimekuma'} - - {:else if service.type === 'ghost'} - - {:else if service.type === 'meilisearch'} - - {:else if service.type === 'umami'} - - {:else if service.type === 'hasura'} - - {:else if service.type === 'fider'} - - {/if} +
{service.name}
diff --git a/apps/ui/static/moodle.png b/apps/ui/static/moodle.png new file mode 100644 index 0000000000000000000000000000000000000000..a5cec5be7cab4afda7116412efdbef3603dd5dd2 GIT binary patch literal 9749 zcmaKSbyOTr@aMw924{ibZV3stSdgHLOR$jO?yig5!eYTS5ZoaIm*5UTf&~cf!EJGe z<9q+yyL<0`Z(dJLbxn13Pgi$W_k1E$m1S|UD6jwk0Is~8l=?I6`7dFBp6_A-h2NhE znx(`C2>_rv7W>{9{h3E`RhNYVDn_YxpBXw+IrR?!fcGl^AP@ln+&*Uo?f?KV2mr8W z1ON!70sy2=8O>_K&jL&*Ic?WxD)+yW%%H94^8?64QC14@^xu`!R-6a`Fm1|9NoaV^ zA7)zHna#mg0{DKB03*`u%Fp!vvAyAr3cgJ(LbCz!v z{TDY9gk(U97zqRxHB+mGvxkZU)aZc17{2J&W=Jh+0Aqfc8g&#Q@-6aL=Wr(!nY#Rz zrI#cKi~=!=PUs?WDYK9mI@s*HS*Qgn#wKF44yYufLTD2gIUwpa`3d zwoTwoD|Q|OR?vquu@H?|;BJY8`-M(S*Y;@l#$}*Ck6Z<-CMp6#M@CLp0RRDm)Lx^| zSI}wuqh9L+gC=nCdc}b4u+jn@15`BZMn<_5Tnrih8f7$h-xo&ZrMWG^#Cptyx~( zCs1PK%pcWYs|qN_>*48VC4*IYcoyMFVs-R{SR>7+B5F|YROIiMi{)LFqlC2NSHpW9 zQSG2i`O5goG;!BURUg9LfQnQ2YqZ<~ypWH$=|pbkxqtNE`RjV}Ot=S=J?JFsbs-Z9 z_PWB(625Ogwf+m$ia95YMBGfLi!$wNj9|8&mmXH1T**R=|KMp%2Tzzss^fyNNrpdl z-AGGJ5J$0NlCYv`V!q8fMpxj2gUke!HQQr3RFH`x`Am`(f@xpz6OXF7&amy{4bFo5 z@y$72GWRGZU`r2bsBt&3rE(~~N?{K9p0j106#C_LP-RXX{+F`PJ~;H~X?7`g9K+?i zgdLt%sSgtj^tr#$8(S^I)6@^`A>QShz$%U8jI7$!xAOfdev-6?)ntY#o(dm7s(wV( zwAMqfAZ)~H{mV~OhHGdWZ5NRar4REpq)n4b9m7*PQ#xi^TKgUmPzeQv+VbAsYN}vk z{nw!M+@QYeFMUnYkrT|32@9=>GcOwzHr_~lD8HoCsT{>d`#QFT0QastdwcurM%ei8 zZb>*Ol7uh3;^l_eC9bjJDnxc7jjaZ^e7m;p^QZwvwR&f`ZAEBV#lbBiR&GwgGiB?{ zZ$A6Pm$gOeHhj?JkmX3+l5LtL`wRm(@%9fw8WdU2<$Qs`)Og?`V+j>(+5%f1TV(GTM9p+ zbbf@TfP>_C6)K9u?7G)#Z`87OvvY^JPH2&|SHPGcW8WKj)yOXTOH6>bzg??Os~o=e2aqH@2<7W7 z?IYtHD-hHVuhC0nIgCY?+-5$38gsGe!~0FlT3U7^bbVim{hoZNEubFL`T;lQ0|5Bg zwVdrqY~InnBy4?`zV-l(D*R?e_OPc$({|>wiUDV4j?nn#>k$fY)3>w zPWIOu&OBo=fy-4#xG~+tv8*GfR-%If_|Cl6Rvjga0pCE#Th^WzF)pTOt=+T{QORkj zg#v-W7*Wkd%#nOyX*Q`d+qJD+D}8crg8pKapA(b&`+2&_zLC=_NRl#fu9@SwELxqr z$56Q(O~CR3A(X=;&_1{P6Z}0x6{_fLkhZ^e2>q6@A0}}zL&uSgW?Nn@Ne^|$phugw zNwz5r`m+oxUTUCTFXi={L*sw_`8vcee=$?Ps0d+gKRXDKt|3V-RuH1I_x0tEnD1y5sKqA3Mq)~zZ02AQx;~`9=v=5zWT(T(9%&^kQNh}?RyVwT8|uj`7RG#E z1J1__mdGJMRmd9AU>~(&9<+`0Yi&!yCMoxPwB<0(gKcPLLFFX4)0i@q6P1exx6i1A ze8YVmISbX(k~fL-s#&&$e-cF1kDQ|(6S;Kvezd-X{c2*Z9jLv*JUY-RvgytneKrse zt=*AME$tKdICSEjo89GtrD@$Mi8a!9x)gfCieJt*VU^@2B>5_lekFYyxh9E&b3mUy zOo$hzt)*pT=83pk5$h|xQsxrkRwz`LP>6V$r)}Om;#Cuu;KZcxHgV1A@A~dNnaY&` zow1L`2dyb>$P_(`Cqe)BH_Pl7r^^cXjLBvIIF?K3MUh6wnQb{{SdSSu`LiFmG*JP4 zKs(2@beYOT(b8{-BcozsPH*=soiBT8ad2^~>*^3-R04!#iup|~o_#a%LW(q7nhD+4 zRns|c6<91%+<~U>*`OK(gZDF_%Zk0H)P>WL4c{r3MDk6DczHT_QfI@9X6U0J zQ@u)4CWz^ET9kHheI<~k}i8y$8T*AV??-zZ0kRetS0s9jM z)`+BD6X*3oCUq>5EsIng12eDB$j1y;`ct z%H6!us%n^Nc+t3e0P9ay;oyJ`v{S}dR45XL{#dFuU_%MZ+JQtZT6 zy=W@-XI8gsv~O?k2CvS?XJ!;t+F$%~R#o8Q5$TzoB@5nuK~6($>|%mi?zVAch+nwZ zU%3Zr2O5PV7@7XOd0tElq44f*;d&kW=_kC$W=xdDzlSIH6K_?hOX4H?d-pzQx@i&wc``^a#6zw7?hkN=LxRLq zYTzhS3$3ku_FSKEctw8Yy(oEi6^5WMN zw<=$^y4dqIEpi2d4ZcZ{_D?7#RzZRczKM@zg`AoILh3g<8()zzVc|!rC2s?d0hTsE zoSB*=JynNjDTc1jPGfJMv-7K~#K8jR3`nvYvY?P`NTTYUVr_Ot` z{A4_ZDv!%sgM|iprjJslTwnT#v9KePh6{5D#Ca4+C~-DJnUu=q+MS1t^Q=x(j!K;B z$|$0^?f+;cZ3o9uh#$4!$9E7P*D{*g9vR0_a8W#8Q2qpBp;M*aF%&5tQ^y13O*oV6- zf=KBT;Xd`;&g)(@q79;`=vXd6!4TatdY%4+`y1dij+c&+);_sAG_@d!fiOBjuBeJF z^4VE7yYpzV8pKySq7Be{Y*=^|;P#j_f>tN>D*cV@T#+1{xrKhPEOAz;C+dMkF$O!}j5j}XDE+IEJUZU5lz*nz}QZq8loSji-&VphlP!}3J+;&{m(kCep zbZH6%icHS7d|MV4EX11k4A5%-ciMUkOyfFqi2e)S6&k{%1Bjv5J-z6}`xu@((IMA# z%)LIDfTXY;p}^LQ+Hl=0=us18cPaIb3}g7?0>Q&iNf^4|CF9f%<<8oSYVb;!4p*Sb ziyk_)DGcY7biv)F-o{zU#wQC==N-V^)gg15k~+uNw5%)(Gqa?V6X&9$A}s?0yrCZt z7p)Coma&%Hs19ov(Z&Y*M5V$AseCq0_G%3l)$$}xYoun1$F*_aaIqze%pG~tlX8}* zThe04SGACcX!tnA5Af-=3cceU>gjk7cyN*I^;85So=6aE73F-Qm_U*Ux z4OY&0+SY;0X2ZSmOqbX4a$4XEB zm2g;Lwsgm7*iJS7gK7z0=HIxTuI6LX_}8Mb153W9ct}Occ(IsiSDdCRgQ+>k+~tSt zoxwz-ka-fJxv#_6BvPcuLknc?F$t}^qBH{TL0Nh!eNZ^QsKChcRGawm<4Y`b;TdV$ zxReku7AyqY@f}f-oiCW|P&!NV(N&=|avP`1HF^eg^QDey*DX|wLAhStymUO{J=oS% zzU^qC?AET@GeggVpSI%;?=(y-6k{bgb3W{9o;Fvx1A{N1;DgzviO8w#0Fhy1LwpW3 z57TP`poj4VmGrX%9FK@e`yoF#v3|uQ`bhwS7qR7K)W$mNEDtGck^NkG!nnIU=i%Y$ zDXVPn-Bb*FKe}v z{t76EOEJK0(tssT_QN%UX53PFY5@oZ{vO&oF$ASchD@HWO40u9+P;{PgT=SxWa34g z!qF^O6U;d3LDlPc~jNY2XSo{=dZ(?*dwL5BkF#9^4Px3oT#y9 z8@559UQDEVlRc}%slQ|NY7A?HT?9n_d*4i z3^gy}W&Kgv!j|4nz`*QvUp^Q3_mBxJdodgxt>4VCXU3P9BxW&QX^iAwoQ6My z4Q$oiUzaET=3paGEQ%=ngFzn$1zrA~xBDqrr0f?XK4~)Uzce~Dgq5Xhd+tWcJ4~)O zV_K?;0ZqA8ax|*Sk}cIL(Bt4gzWt6FrA||^eFG{>?)+*qXe7> zH+yC+tb188HNn6dU?J;iG}LdE`VV41Jzr~Os!WL`0SE$@8s`iTDpvN`E9g|J4#E0O z4q2Y3@}d`|Dg?2HCX$7j0%pzSCyHcVI|PW$Ygg{=CkNfYs&x7U+3&o+BL+LHlvcIU zM5GQ>a*9=4td3gBEU+G`@(KrRVH#^slXBnZp|;g~&b%dYIVKAue}GHj%cb7PyX_vf zA98i(wM>(q7XhCt!GVcAUG!R2)aNoOO@!sN- zXAvdOh-S8chk5Oy-`P*xn!uqT}ABfWMNJ{RrcR zk#_FsOYBjGprx=;$a|deMN<{S5OpVR$e-GjjO8kE`^=kq5)Qfbui}+lR*QP>|Ec(; zgwcA(In5p{_zKef>w2+v#JNG-KM``mPU+ru-XixRk38T@>ymNaIsOmuA3}^b@lb|B zDY=NayiH^_kvbg$=X29U&HM-6_Kw*Jq{~IN?yBR3R9@d>Q|NAv5Qfhs?dr)dnvH5% zT4oX+%1Q%gJm>YZfrV`R(BupEo}4bcyTSQ;uswSYA%&t18>WI#d-YF>_Lp5j{sC$o z;78YexR(9meurcKT^`?JzCjqVC(gv_?$4ZqM!fE2;0w>&wBnoH>_^lly-~88X_gG} zfb4XD68SSHSbzAnAK~CP-r-RA2OoA2 z_kow9$C)ZXK2QCTt*ICpWJm<%56Xo#^?bhzG_*PLT5VnqEkE2ZBrP{EJ}g6knG)nd zmxtSf&(lk!;k}@@Hx9e!TW{hDOEs`4MdTTtmO~50= z0F2%Gd6N^-w=vs5eXes#iO(YLIn$t{tPo)i-$oZP)XmQsPSVAomn)p45^zg>@$75a z{B(BKRP+vBSSM>wXJ3<#6v(8&4Dt~&6*}ynX_b-#?dODzt!VRnr@*{oe0Y;-JX8 z!an64fBJ6ufAAL*!7Cj_i^j6ubm-^(d>ega>N>m><3F|1sA~obc$hv~BVPJRWJM-|wkl4+*C93c2my^z*rNI-ljr^10Ne@i|a~=8lh=i#M%)9`7SRzt;7i<>C)F zpt9YPp9_v#4%-n7+UWoi3|{BQ%+xC@Jcp`MX81SL? z_Btp3@giW((B4BtG(T=2%XCMIwi(h;3ikRHD({m(QAXI6@-Aj0?s%UuaTn{hs<~u; zQKX2EKTe$xD`aQLVs2rfZ*3MUdoc5#r!U^F_0&Q@OxF9bi`h!XtAO?9C6Sq6Rq4#T zcgr4+(H*@mJWU~&IeOx4XDbt~+tu0E?7i)GmDpgDRpo($;J)||nH$vmpc3pL2CW_%MPZITA_#L)us0gnmV@)NBYK^moKqIic%HC9rQYeJeQij%Z} z$Q{ud;3*Jajka|n@+ANfki$+P^6Q+hSv!8{9L-BMGnEsy;$!Ronk zr+={Rf7M(mKaNei)^;nqlUA#1Q|G<+a+&oBWq_m3r|R>QrGIR-@L^o7z)B#g=72`ZsGn8}SIT;0Wg^34v0 zh<({YDDFj<-#-EOH=g45-?8ncs0FV``XMzJ2uDj21K`59IP0^n_J%2MTkvx7$sxrc%|nbG%an{T5m>Lha}!9RdvAnhggM2ccb3gIx|+OX88mO^m@P2 zTou(sTR=HgicRU=T3mzex!~|(_P5o`YhErdV&n9DL$VI9R93Wq{ghG*fI#o~IM{S!BPu#Zts<%Pb6Jvt z`S;|vS%0VYBHR^!;j(|*T!C5_Y>HWiK?PzYc`29=1f*C=oiyU@tU{K@v0ike$MkLu z&TZy!3}yos&&df;+XVJvmou*Q7G(9^tZDep)pZkeVMi?ke%T1QyHmzF7=U=hK~=)N z9D>F^BF!?toN10goG-&j*(jo2o}*JLF@Ia5e_u*Vv44+@@Nfxs9sH(x{$ki?XD=0{ z(SmHsWeWc&+3{($HevilF_zze?8b0=xiL@i_=h9_CxMK$>|mO;%I(e{ZwR`;et0kzh&8}I_8f7 znoG+0{^kdS`_HoGbxnr`dYpnfz%b8YJ;CNJy60iW3Jd!W4wRLy1X5oRWO0 zF@dt0?f@fiduQ+0es01$2pJ3u2f+PrjJ<9s=9(u01j-)`>I$0OTh3;nk~ORTAI0@|j#N^8AD#;fPj`RO;{asTCJa+up1Y!jC2pw19fl-vH?0#kN@=Es17RW6|7Q5)$#PU_&G%dsj}h3P&)nD-NY?!r zWV=BgCDhMjwKRL+OU=@4H*E8)fN{SGpS1iv$Hko`(emlMTXtVCqJW^O=anU7FDIjm z{l$pYO#3|E=8iQ5!C1TsGN8{AOdg#!a z)x~k!?4FroA5hL`s7lB26(KkGo)sD3i)+c6=7=`;o)ekWII1)9Zi|f^)@%uWTsccB^P%AcPlg&V7`#&`f8KO#^j16C zy{y7%SQcg4d}=n9V4f$UPVIFM00X-X5@nEe>QhZY4r9Yv<;O(6J-DTIh*BDL>Z4DL zkB4^+40IZqnHfR2xgliaa~Cd78QRw;hwsBe<~_98bP` zxB5MlInEcO2np7ysW*#Hcf%NS6#;73E$Izqra8pW%m-Z-<)8M6Ui$hH>^PGRMR+>- z7GvxFXER{;#t&cBa%2N`j(A|7`PsSl`GlR0QIQ<}bI+ zr~#I@DmF%O6YEazcn>Y!jET9|I^^tI5nBC^Eto--B&bzOSF=$rCTCJeW`FMEo258@5WbI*MD@JBh)^9P1y+1r?9jd@~;C&HF_YMfO#t(d7p^t;s z7&NyvgsmM2LE<3)!*cjXJ3zpHaq}IpKtP1r>p-VINF9Ixg$CUp=sA$#m`|O-_JoJj z*BN4OzzHRxgLYHgsDr>U80OMzni^~IS zwV~5B6-FSlz)X#hItGDT!wqf!Igp?=bQ|gBgrlwf*$(6c%A)-G_fkeTgGl2@NnMogl&&h2 zmuLp`po14QnB65la4BrEZiI%6EtK|o&+iiVqBVSF)SRrNUNPUf@3VLnJ46o+i#%`* z@PDvEMB=7Xb8pujV$%_=Na)Ss@T12!xN#J@Wrjuy-`Gw($D@D@Zwy z@;@t(|7YQ&qlKG?v5Pt2d95)qr<1ogwlr5aH#YNf9yI?Co&}JXR+g%O8U_6?+wzgM literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 042e0a2cc..fe319b255 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,14 @@ "dev": "run-p -l -n dev:*", "dev:api": "NODE_ENV=development pnpm run --filter coolify-api dev", "dev:ui": "NODE_ENV=development pnpm run --filter coolify-ui dev", - "build": "NODE_ENV=production run-p -n build:*", + "dev:shared": "NODE_ENV=development pnpm run --filter shared dev", + "build": "NODE_ENV=production pnpm build:shared && run-p -n build:api build:ui", "build:api": "NODE_ENV=production pnpm run --filter coolify-api build", "build:ui": "NODE_ENV=production pnpm run --filter coolify-ui build", + "build:shared": "NODE_ENV=production pnpm run --filter shared build", "dockerlogin":"echo $DOCKER_PASS | docker login --username=$DOCKER_USER --password-stdin", "release:staging:amd": "cross-var docker buildx build --platform linux/amd64 -t coollabsio/coolify:$npm_package_version --push .", - "release:local":"rm -fr ./local-serve && mkdir ./local-serve && pnpm build && cp -Rp apps/api/build/* ./local-serve && cp -Rp apps/ui/build/ ./local-serve/public && cp -Rp apps/api/prisma/ ./local-serve/prisma && cp -Rp apps/api/package.json ./local-serve && cp .env ./local-serve && cd ./local-serve && pnpm install . && pnpm start" + "release:local":"rm -fr ./local-serve && mkdir ./local-serve && pnpm build && cp -Rp apps/api/build/* ./local-serve && cp -Rp apps/ui/build/ ./local-serve/public && cp -Rp apps/api/prisma/ ./local-serve/prisma && cp -Rp apps/api/package.json ./local-serve && env | grep '^COOLIFY_' > ./local-serve/.env && cd ./local-serve && pnpm install . && pnpm start" }, "devDependencies": { "cross-var": "1.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a295a0786..b4e3a6231 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,15 +2,7 @@ lockfileVersion: 5.4 importers: - .: - specifiers: - cross-var: 1.1.0 - npm-run-all: 4.1.5 - devDependencies: - cross-var: 1.1.0 - npm-run-all: 4.1.5 - - apps/api: + local-serve: specifiers: '@breejs/ts-worker': 2.0.0 '@fastify/autoload': 5.0.0 @@ -30,11 +22,12 @@ importers: bree: 9.1.1 cabin: 9.1.2 compare-versions: 4.1.3 + coolify-api: 'link:' cuid: 2.1.8 dayjs: 1.11.3 dockerode: 3.3.2 dotenv-extended: 2.9.0 - esbuild: 0.14.48 + esbuild: 0.14.49 eslint: 8.19.0 eslint-config-prettier: 8.5.0 eslint-plugin-prettier: 4.2.1 @@ -53,6 +46,7 @@ importers: prettier: 2.7.1 prisma: 3.15.2 rimraf: 3.0.2 + shared: workspace:* strip-ansi: 7.0.1 tsconfig-paths: 4.0.0 typescript: 4.7.4 @@ -72,6 +66,7 @@ importers: bree: 9.1.1 cabin: 9.1.2 compare-versions: 4.1.3 + coolify-api: 'link:' cuid: 2.1.8 dayjs: 1.11.3 dockerode: 3.3.2 @@ -87,6 +82,7 @@ importers: node-forge: 1.3.1 node-os-utils: 1.3.7 p-queue: 7.2.0 + shared: link:../apps/shared strip-ansi: 7.0.1 unique-names-generator: 4.7.1 devDependencies: @@ -94,7 +90,7 @@ importers: '@types/node-os-utils': 1.3.0 '@typescript-eslint/eslint-plugin': 5.30.5_6zdoc3rn4mpiddqwhppni2mnnm '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm - esbuild: 0.14.48 + esbuild: 0.14.49 eslint: 8.19.0 eslint-config-prettier: 8.5.0_eslint@8.19.0 eslint-plugin-prettier: 4.2.1_7uxdfn2xinezdgvmbammh6ev5i @@ -105,67 +101,6 @@ importers: tsconfig-paths: 4.0.0 typescript: 4.7.4 - apps/ui: - specifiers: - '@playwright/test': 1.23.1 - '@sveltejs/adapter-auto': 1.0.0-next.53 - '@sveltejs/adapter-static': 1.0.0-next.34 - '@sveltejs/kit': 1.0.0-next.359 - '@types/js-cookie': 3.0.2 - '@typescript-eslint/eslint-plugin': 5.30.5 - '@typescript-eslint/parser': 5.30.5 - '@zerodevx/svelte-toast': 0.7.2 - autoprefixer: 10.4.7 - cuid: 2.1.8 - eslint: 8.19.0 - eslint-config-prettier: 8.5.0 - eslint-plugin-svelte3: 4.0.0 - js-cookie: 3.0.1 - p-limit: 4.0.0 - postcss: 8.4.14 - prettier: 2.7.1 - prettier-plugin-svelte: 2.7.0 - svelte: 3.48.0 - svelte-check: 2.8.0 - svelte-preprocess: 4.10.7 - svelte-select: 4.4.7 - sveltekit-i18n: 2.2.2 - tailwindcss: 3.1.4 - tailwindcss-scrollbar: 0.1.0 - tslib: 2.4.0 - typescript: 4.7.4 - vite: ^2.9.13 - dependencies: - '@sveltejs/adapter-static': 1.0.0-next.34 - '@zerodevx/svelte-toast': 0.7.2 - cuid: 2.1.8 - js-cookie: 3.0.1 - p-limit: 4.0.0 - svelte-select: 4.4.7 - sveltekit-i18n: 2.2.2_svelte@3.48.0 - devDependencies: - '@playwright/test': 1.23.1 - '@sveltejs/adapter-auto': 1.0.0-next.53 - '@sveltejs/kit': 1.0.0-next.359_svelte@3.48.0+vite@2.9.13 - '@types/js-cookie': 3.0.2 - '@typescript-eslint/eslint-plugin': 5.30.5_6zdoc3rn4mpiddqwhppni2mnnm - '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm - autoprefixer: 10.4.7_postcss@8.4.14 - eslint: 8.19.0 - eslint-config-prettier: 8.5.0_eslint@8.19.0 - eslint-plugin-svelte3: 4.0.0_m4jpobot6gi3xtcba7bv5cflma - postcss: 8.4.14 - prettier: 2.7.1 - prettier-plugin-svelte: 2.7.0_nakrehnrzdf7fdea5k3a4dfy4m - svelte: 3.48.0 - svelte-check: 2.8.0_s3dopqgs4h45owyu2kxaf6kyfu - svelte-preprocess: 4.10.7_jr4mgafwdbjtobsadg2hrd5qfy - tailwindcss: 3.1.4 - tailwindcss-scrollbar: 0.1.0_tailwindcss@3.1.4 - tslib: 2.4.0 - typescript: 4.7.4 - vite: 2.9.13 - packages: /@babel/code-frame/7.16.7: @@ -327,20 +262,16 @@ packages: /@iarna/toml/2.2.5: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + dev: false /@jridgewell/resolve-uri/3.0.7: resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} engines: {node: '>=6.0.0'} + dev: false /@jridgewell/sourcemap-codec/1.4.13: resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} - - /@jridgewell/trace-mapping/0.3.13: - resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} - dependencies: - '@jridgewell/resolve-uri': 3.0.7 - '@jridgewell/sourcemap-codec': 1.4.13 - dev: true + dev: false /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -358,24 +289,6 @@ packages: engines: {node: '>=8'} dev: false - /@mapbox/node-pre-gyp/1.0.9: - resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==} - hasBin: true - dependencies: - detect-libc: 2.0.1 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.6.7 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.3.7 - tar: 6.1.11 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -397,15 +310,6 @@ packages: fastq: 1.13.0 dev: true - /@playwright/test/1.23.1: - resolution: {integrity: sha512-dKplLPSYPZgnsBk1xxOophhpx3ZVg8DveoNJgLPe096lDCfmaIIreLsYF+4hqzy3PG61IP+aEnG5VAOjC3bhbA==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@types/node': 18.0.1 - playwright-core: 1.23.1 - dev: true - /@prisma/client/3.15.2_prisma@3.15.2: resolution: {integrity: sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==} engines: {node: '>=12.6'} @@ -428,117 +332,11 @@ packages: resolution: {integrity: sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==} requiresBuild: true - /@rollup/pluginutils/4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - /@sindresorhus/is/4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} dev: false - /@sveltejs/adapter-auto/1.0.0-next.53: - resolution: {integrity: sha512-LyaeU0rkcymGWvV/3K26AZxqG/+ZQHwa+hrx3xsbmOykjQ2WQPTXRVwmH23zV4A5ABvni76LRMsQOoqWzP3G9Q==} - dependencies: - '@sveltejs/adapter-cloudflare': 1.0.0-next.24 - '@sveltejs/adapter-netlify': 1.0.0-next.66 - '@sveltejs/adapter-vercel': 1.0.0-next.59 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@sveltejs/adapter-cloudflare/1.0.0-next.24: - resolution: {integrity: sha512-g1QSrjWYjM6sfJB+pQn52EIfbVFjpk23GYsj5PLt2Gi3zRNfLRbpkFkPeyAOZbAfT4k/9lUqfLW+pkh+W3yxlg==} - dependencies: - esbuild: 0.14.48 - worktop: 0.8.0-next.14 - dev: true - - /@sveltejs/adapter-netlify/1.0.0-next.66: - resolution: {integrity: sha512-UypTRnTd+R1O6SaDdc8l3A3c9/mQF8xLNoVb3Ay5ipb7uPU5WmjVYjfLVGyeVy67gztFfeFC/9Esu4OI2Ayx1A==} - dependencies: - '@iarna/toml': 2.2.5 - esbuild: 0.14.48 - set-cookie-parser: 2.4.8 - tiny-glob: 0.2.9 - dev: true - - /@sveltejs/adapter-static/1.0.0-next.34: - resolution: {integrity: sha512-XjuMhemme5z0L/B2nTZpA6k+RJjF+b6L96ts6gIQ6ixiCzJQSbBqJhrrBYBCaeLAKvdUMoGEmX8m862JhKjRFg==} - dependencies: - tiny-glob: 0.2.9 - dev: false - - /@sveltejs/adapter-vercel/1.0.0-next.59: - resolution: {integrity: sha512-1lq5IFLWiLUXmNJVUXjwaInDb07BJg5er43xlMilpFpTA9BZI2hqjYCgtdtk7O6ee5EYJk876b2riM1m+y1M4Q==} - dependencies: - '@vercel/nft': 0.20.1 - esbuild: 0.14.48 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@sveltejs/kit/1.0.0-next.359_svelte@3.48.0+vite@2.9.13: - resolution: {integrity: sha512-3WH198JhOI9rmDlVSPPHlgg+/R/gS4x5cETjYsIw3XckpN2zExDqlYHUBUwk/dEG/12BfPB3rDMNzdZ0QHtubQ==} - engines: {node: '>=16.7'} - hasBin: true - peerDependencies: - svelte: ^3.44.0 - vite: ^2.9.10 - dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.0-next.49_svelte@3.48.0+vite@2.9.13 - chokidar: 3.5.3 - sade: 1.8.1 - svelte: 3.48.0 - vite: 2.9.13 - transitivePeerDependencies: - - diff-match-patch - - supports-color - dev: true - - /@sveltejs/vite-plugin-svelte/1.0.0-next.49_svelte@3.48.0+vite@2.9.13: - resolution: {integrity: sha512-AKh0Ka8EDgidnxWUs8Hh2iZLZovkETkefO99XxZ4sW4WGJ7VFeBx5kH/NIIGlaNHLcrIvK3CK0HkZwC3Cici0A==} - engines: {node: ^14.13.1 || >= 16} - peerDependencies: - diff-match-patch: ^1.0.5 - svelte: ^3.44.0 - vite: ^2.9.0 - peerDependenciesMeta: - diff-match-patch: - optional: true - dependencies: - '@rollup/pluginutils': 4.2.1 - debug: 4.3.4 - deepmerge: 4.2.2 - kleur: 4.1.4 - magic-string: 0.26.2 - svelte: 3.48.0 - svelte-hmr: 0.14.12_svelte@3.48.0 - vite: 2.9.13 - transitivePeerDependencies: - - supports-color - dev: true - - /@sveltekit-i18n/base/1.2.1_svelte@3.48.0: - resolution: {integrity: sha512-F8gqG2+KAOeT0o2wYlUrW3TRCX7zaD7rBy/1CEVNw0irfw9TgFf/ODmhubkHHT3+6Zk+SMz8RNgeuffBfAMbJw==} - peerDependencies: - svelte: ^3.x - dependencies: - svelte: 3.48.0 - optionalDependencies: - '@sveltekit-i18n/parser-default': 1.0.3 - dev: false - - /@sveltekit-i18n/parser-default/1.0.3: - resolution: {integrity: sha512-HheveklTjp3hxpYQhoHfyA6B4bQaUeSV5MQf2usIv/58UF2jY/YqhCAWj9bDBjufbuZc5pSz4BXvdX3WVT+viA==} - dev: false - /@szmarczak/http-timer/5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -575,10 +373,6 @@ packages: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: false - /@types/js-cookie/3.0.2: - resolution: {integrity: sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==} - dev: true - /@types/json-buffer/3.0.0: resolution: {integrity: sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==} dev: false @@ -601,10 +395,6 @@ packages: resolution: {integrity: sha512-XwVteWQx/XkfRPyaGkw8dEbrCAkoRZ73pI3XznUYIpzbCfpQB3UnDlR5TnmdhetlT889tUJGF8QWo9xrgTpsiA==} dev: true - /@types/node/18.0.1: - resolution: {integrity: sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==} - dev: true - /@types/node/18.0.3: resolution: {integrity: sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==} @@ -612,22 +402,12 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: false - /@types/pug/2.0.6: - resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} - dev: true - /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: '@types/node': 18.0.3 dev: false - /@types/sass/1.43.1: - resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} - dependencies: - '@types/node': 18.0.1 - dev: true - /@typescript-eslint/eslint-plugin/5.30.5_6zdoc3rn4mpiddqwhppni2mnnm: resolution: {integrity: sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -754,29 +534,6 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vercel/nft/0.20.1: - resolution: {integrity: sha512-hSLcr64KHOkcNiTAlv154K4p4faEFBwYIi2eIgu1QCDhB1qyQYvFuEhtw3eaapNjA4/7x/2jcclfCAjILua/ag==} - hasBin: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.9 - acorn: 8.7.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - node-gyp-build: 4.4.0 - resolve-from: 5.0.0 - rollup-pluginutils: 2.8.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@zerodevx/svelte-toast/0.7.2: - resolution: {integrity: sha512-vWiY6IqsstcOoQ8PFBuFuxgPkj1JFAGhUF9gC7wLx7c5A9SSfdtxWs/39ekGSIeyJK0yqWhTcmzGrCEWSELzDw==} - dev: false - /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true @@ -800,44 +557,16 @@ packages: acorn: 8.7.1 dev: true - /acorn-node/1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: false - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /acorn/8.7.1: resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} engines: {node: '>=0.4.0'} hasBin: true - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /ajv-formats/2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependenciesMeta: @@ -870,11 +599,6 @@ packages: engines: {node: '>=6'} dev: false - /ansi-regex/2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: true - /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -885,16 +609,12 @@ packages: engines: {node: '>=12'} dev: false - /ansi-styles/2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - dev: true - /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: false /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -911,30 +631,14 @@ packages: picomatch: 2.3.1 dev: true - /aproba/2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true - /archy/1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: false - /are-we-there-yet/2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 - dev: true - /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: false - /arg/5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -977,22 +681,6 @@ packages: typpy: 2.3.11 dev: false - /autoprefixer/10.4.7_postcss@8.4.14: - resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.20.3 - caniuse-lite: 1.0.30001343 - fraction.js: 4.2.0 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - dev: true - /avvio/8.1.3: resolution: {integrity: sha512-tl9TC0yDRKzP6gFLkrInqPyx8AkfBC/0QRnwkE9Jo31+OJjLrE/73GJuE0QgSB0Vpv38CTJJZGqU9hczowclWw==} dependencies: @@ -1032,681 +720,6 @@ packages: - debug dev: false - /babel-code-frame/6.26.0: - resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - dev: true - - /babel-core/6.26.3: - resolution: {integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==} - dependencies: - babel-code-frame: 6.26.0 - babel-generator: 6.26.1 - babel-helpers: 6.24.1 - babel-messages: 6.23.0 - babel-register: 6.26.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - convert-source-map: 1.8.0 - debug: 2.6.9 - json5: 0.5.1 - lodash: 4.17.21 - minimatch: 3.1.2 - path-is-absolute: 1.0.1 - private: 0.1.8 - slash: 1.0.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-generator/6.26.1: - resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} - dependencies: - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - detect-indent: 4.0.0 - jsesc: 1.3.0 - lodash: 4.17.21 - source-map: 0.5.7 - trim-right: 1.0.1 - dev: true - - /babel-helper-bindify-decorators/6.24.1: - resolution: {integrity: sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ==} - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: - resolution: {integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==} - dependencies: - babel-helper-explode-assignable-expression: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-call-delegate/6.24.1: - resolution: {integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==} - dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-define-map/6.26.0: - resolution: {integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==} - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-explode-assignable-expression/6.24.1: - resolution: {integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==} - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-explode-class/6.24.1: - resolution: {integrity: sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA==} - dependencies: - babel-helper-bindify-decorators: 6.24.1 - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-function-name/6.24.1: - resolution: {integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==} - dependencies: - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-get-function-arity/6.24.1: - resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-helper-hoist-variables/6.24.1: - resolution: {integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-helper-optimise-call-expression/6.24.1: - resolution: {integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-helper-regex/6.26.0: - resolution: {integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - dev: true - - /babel-helper-remap-async-to-generator/6.24.1: - resolution: {integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==} - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helper-replace-supers/6.24.1: - resolution: {integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==} - dependencies: - babel-helper-optimise-call-expression: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-helpers/6.24.1: - resolution: {integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==} - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-messages/6.23.0: - resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-check-es2015-constants/6.22.0: - resolution: {integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-syntax-async-functions/6.13.0: - resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} - dev: true - - /babel-plugin-syntax-async-generators/6.13.0: - resolution: {integrity: sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg==} - dev: true - - /babel-plugin-syntax-class-constructor-call/6.18.0: - resolution: {integrity: sha512-EEuBcXz/wZ81Jaac0LnMHtD4Mfz9XWn2oH2Xj+CHwz2SZWUqqdtR2BgWPSdTGMmxN/5KLSh4PImt9+9ZedDarA==} - dev: true - - /babel-plugin-syntax-class-properties/6.13.0: - resolution: {integrity: sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==} - dev: true - - /babel-plugin-syntax-decorators/6.13.0: - resolution: {integrity: sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw==} - dev: true - - /babel-plugin-syntax-do-expressions/6.13.0: - resolution: {integrity: sha512-HD/5qJB9oSXzl0caxM+aRD7ENICXqcc3Up/8toDQk7zNIDE7TzsqtxC5f4t9Rwhu2Ya8l9l4j6b3vOsy+a6qxg==} - dev: true - - /babel-plugin-syntax-dynamic-import/6.18.0: - resolution: {integrity: sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==} - dev: true - - /babel-plugin-syntax-exponentiation-operator/6.13.0: - resolution: {integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==} - dev: true - - /babel-plugin-syntax-export-extensions/6.13.0: - resolution: {integrity: sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg==} - dev: true - - /babel-plugin-syntax-function-bind/6.13.0: - resolution: {integrity: sha512-m8yMoh9LIiNyeLdQs5I9G+3YXo4nqVsKQkk7YplrG4qAFbNi9hkZlow8HDHxhH9QOVFPHmy8+03NzRCdyChIKw==} - dev: true - - /babel-plugin-syntax-object-rest-spread/6.13.0: - resolution: {integrity: sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==} - dev: true - - /babel-plugin-syntax-trailing-function-commas/6.22.0: - resolution: {integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==} - dev: true - - /babel-plugin-transform-async-generator-functions/6.24.1: - resolution: {integrity: sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg==} - dependencies: - babel-helper-remap-async-to-generator: 6.24.1 - babel-plugin-syntax-async-generators: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-async-to-generator/6.24.1: - resolution: {integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==} - dependencies: - babel-helper-remap-async-to-generator: 6.24.1 - babel-plugin-syntax-async-functions: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-class-constructor-call/6.24.1: - resolution: {integrity: sha512-RvYukT1Nh7njz8P8326ztpQUGCKwmjgu6aRIx1lkvylWITYcskg29vy1Kp8WXIq7FvhXsz0Crf2kS94bjB690A==} - dependencies: - babel-plugin-syntax-class-constructor-call: 6.18.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-class-properties/6.24.1: - resolution: {integrity: sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==} - dependencies: - babel-helper-function-name: 6.24.1 - babel-plugin-syntax-class-properties: 6.13.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-decorators/6.24.1: - resolution: {integrity: sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew==} - dependencies: - babel-helper-explode-class: 6.24.1 - babel-plugin-syntax-decorators: 6.13.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-do-expressions/6.22.0: - resolution: {integrity: sha512-yQwYqYg+Tnj1InA8W1rsItsZVhkv1Euc4KVua9ledtPz5PDWYz7LVyy6rDBpVYUWFZj5k6GUm3YZpCbIm8Tqew==} - dependencies: - babel-plugin-syntax-do-expressions: 6.13.0 - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-arrow-functions/6.22.0: - resolution: {integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-block-scoped-functions/6.22.0: - resolution: {integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-block-scoping/6.26.0: - resolution: {integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==} - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-classes/6.24.1: - resolution: {integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==} - dependencies: - babel-helper-define-map: 6.26.0 - babel-helper-function-name: 6.24.1 - babel-helper-optimise-call-expression: 6.24.1 - babel-helper-replace-supers: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-computed-properties/6.24.1: - resolution: {integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==} - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-destructuring/6.23.0: - resolution: {integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-duplicate-keys/6.24.1: - resolution: {integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-for-of/6.23.0: - resolution: {integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-function-name/6.24.1: - resolution: {integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==} - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-literals/6.22.0: - resolution: {integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-modules-amd/6.24.1: - resolution: {integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==} - dependencies: - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-modules-commonjs/6.26.2: - resolution: {integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==} - dependencies: - babel-plugin-transform-strict-mode: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-modules-systemjs/6.24.1: - resolution: {integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==} - dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-modules-umd/6.24.1: - resolution: {integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==} - dependencies: - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-object-super/6.24.1: - resolution: {integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==} - dependencies: - babel-helper-replace-supers: 6.24.1 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-parameters/6.24.1: - resolution: {integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==} - dependencies: - babel-helper-call-delegate: 6.24.1 - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-es2015-shorthand-properties/6.24.1: - resolution: {integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-spread/6.22.0: - resolution: {integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-sticky-regex/6.24.1: - resolution: {integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==} - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-template-literals/6.22.0: - resolution: {integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-typeof-symbol/6.23.0: - resolution: {integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==} - dependencies: - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-es2015-unicode-regex/6.24.1: - resolution: {integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==} - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - regexpu-core: 2.0.0 - dev: true - - /babel-plugin-transform-exponentiation-operator/6.24.1: - resolution: {integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==} - dependencies: - babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 - babel-plugin-syntax-exponentiation-operator: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-transform-export-extensions/6.22.0: - resolution: {integrity: sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg==} - dependencies: - babel-plugin-syntax-export-extensions: 6.13.0 - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-function-bind/6.22.0: - resolution: {integrity: sha512-9Ec4KYf1GurT39mlUjDSlN7HWSlB3u3mWRMogQbb+Y88lO0ZM3rJ0ADhPnQwWK9TbO6e/4E+Et1rrfGY9mFimA==} - dependencies: - babel-plugin-syntax-function-bind: 6.13.0 - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-object-rest-spread/6.26.0: - resolution: {integrity: sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==} - dependencies: - babel-plugin-syntax-object-rest-spread: 6.13.0 - babel-runtime: 6.26.0 - dev: true - - /babel-plugin-transform-regenerator/6.26.0: - resolution: {integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==} - dependencies: - regenerator-transform: 0.10.1 - dev: true - - /babel-plugin-transform-strict-mode/6.24.1: - resolution: {integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-preset-es2015/6.24.1: - resolution: {integrity: sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ==} - deprecated: '🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!' - dependencies: - babel-plugin-check-es2015-constants: 6.22.0 - babel-plugin-transform-es2015-arrow-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoping: 6.26.0 - babel-plugin-transform-es2015-classes: 6.24.1 - babel-plugin-transform-es2015-computed-properties: 6.24.1 - babel-plugin-transform-es2015-destructuring: 6.23.0 - babel-plugin-transform-es2015-duplicate-keys: 6.24.1 - babel-plugin-transform-es2015-for-of: 6.23.0 - babel-plugin-transform-es2015-function-name: 6.24.1 - babel-plugin-transform-es2015-literals: 6.22.0 - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-plugin-transform-es2015-modules-systemjs: 6.24.1 - babel-plugin-transform-es2015-modules-umd: 6.24.1 - babel-plugin-transform-es2015-object-super: 6.24.1 - babel-plugin-transform-es2015-parameters: 6.24.1 - babel-plugin-transform-es2015-shorthand-properties: 6.24.1 - babel-plugin-transform-es2015-spread: 6.22.0 - babel-plugin-transform-es2015-sticky-regex: 6.24.1 - babel-plugin-transform-es2015-template-literals: 6.22.0 - babel-plugin-transform-es2015-typeof-symbol: 6.23.0 - babel-plugin-transform-es2015-unicode-regex: 6.24.1 - babel-plugin-transform-regenerator: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-preset-stage-0/6.24.1: - resolution: {integrity: sha512-MJD+xBbpsApbKlzAX0sOBF+VeFaUmv5s8FSOO7SSZpes1QgphCjq/UIGRFWSmQ/0i5bqQjLGCTXGGXqcLQ9JDA==} - dependencies: - babel-plugin-transform-do-expressions: 6.22.0 - babel-plugin-transform-function-bind: 6.22.0 - babel-preset-stage-1: 6.24.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-preset-stage-1/6.24.1: - resolution: {integrity: sha512-rn+UOcd7BHDniq1SVxv2/AVVSVI1NK+hfS0I/iR6m6KbOi/aeBRcqBilqO73pd9VUpRXF2HFtlDuC9F2BEQqmg==} - dependencies: - babel-plugin-transform-class-constructor-call: 6.24.1 - babel-plugin-transform-export-extensions: 6.22.0 - babel-preset-stage-2: 6.24.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-preset-stage-2/6.24.1: - resolution: {integrity: sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og==} - dependencies: - babel-plugin-syntax-dynamic-import: 6.18.0 - babel-plugin-transform-class-properties: 6.24.1 - babel-plugin-transform-decorators: 6.24.1 - babel-preset-stage-3: 6.24.1 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-preset-stage-3/6.24.1: - resolution: {integrity: sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA==} - dependencies: - babel-plugin-syntax-trailing-function-commas: 6.22.0 - babel-plugin-transform-async-generator-functions: 6.24.1 - babel-plugin-transform-async-to-generator: 6.24.1 - babel-plugin-transform-exponentiation-operator: 6.24.1 - babel-plugin-transform-object-rest-spread: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-register/6.26.0: - resolution: {integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==} - dependencies: - babel-core: 6.26.3 - babel-runtime: 6.26.0 - core-js: 2.6.12 - home-or-tmp: 2.0.0 - lodash: 4.17.21 - mkdirp: 0.5.6 - source-map-support: 0.4.18 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-runtime/6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - dev: true - - /babel-template/6.26.0: - resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-traverse/6.26.0: - resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} - dependencies: - babel-code-frame: 6.26.0 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - debug: 2.6.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-types/6.26.0: - resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} - dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - dev: true - - /babylon/6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - dev: true - /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1729,12 +742,6 @@ packages: engines: {node: '>=8'} dev: true - /bindings/1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - dependencies: - file-uri-to-path: 1.0.0 - dev: true - /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -1791,26 +798,10 @@ packages: resolution: {integrity: sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==} dev: false - /browserslist/4.20.3: - resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001343 - electron-to-chromium: 1.4.139 - escalade: 3.1.1 - node-releases: 2.0.5 - picocolors: 1.0.0 - dev: true - /bson-objectid/1.3.1: resolution: {integrity: sha512-eQBNQXsisEAXlwiSy8zRNZdW2xDBJaEVkTPbodYR9hGxxtE548Qq7ilYOd8WAQ86xF7NRUdiWSQ1pa/TkKiE2A==} dev: false - /buffer-crc32/0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true - /buffer-equal-constant-time/1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: false @@ -1867,37 +858,18 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.1 + dev: false /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-css/2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true - /camelcase/5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: false - /caniuse-lite/1.0.30001343: - resolution: {integrity: sha512-8KeCrAtPMabo/XW14B+R9sZYoClx1n0b+WYgwDKZPtWR3TcdvWzdSy7mPyFEmR5WU1St9v1PW6sdO5dkFOEzfA==} - dev: true - - /chalk/1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - dev: true - /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1905,6 +877,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: false /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1933,11 +906,6 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true - /clf-date/0.2.0: resolution: {integrity: sha512-KmV+reIoSINOik5moU6eOqSUy3r/9t6J6Dbl4TCndg1g0R6Z3S3xHzd3u0ZeoTUSbUFr9hHbpiZ+36MrhlNEHQ==} hasBin: true @@ -1953,6 +921,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: false /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -1963,16 +932,12 @@ packages: /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: true - /combine-errors/3.0.3: resolution: {integrity: sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q==} dependencies: @@ -2007,10 +972,6 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - /console-polyfill/0.3.0: resolution: {integrity: sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ==} dev: false @@ -2027,12 +988,6 @@ packages: engines: {node: '>=8'} dev: false - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /cookie-signature/1.2.0: resolution: {integrity: sha512-R0BOPfLGTitaKhgKROKZQN6iyq2iDQcH1DOF8nJoaWapguX5bC2w+Q/I9NmmM5lfcvEarnLZr+cCvmEYYSXvYA==} engines: {node: '>=6.6.0'} @@ -2052,12 +1007,6 @@ packages: resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} dev: false - /core-js/2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: true - /cpu-features/0.0.4: resolution: {integrity: sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==} engines: {node: '>=10.0.0'} @@ -2082,25 +1031,6 @@ packages: yup: 0.32.9 dev: false - /cross-spawn/5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - - /cross-spawn/6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -2109,25 +1039,6 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /cross-var/1.1.0: - resolution: {integrity: sha512-wIcFax9RNm5ayuORUeJ5MLxPbfh8XdZhhUpKutIszU46Fs9UIhEdPJ7+YguM+7FxEj+68hSQVyathVsIu84SiA==} - hasBin: true - dependencies: - babel-preset-es2015: 6.24.1 - babel-preset-stage-0: 6.24.1 - babel-register: 6.26.0 - cross-spawn: 5.1.0 - exit: 0.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /cssesc/3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: true - /cuid/2.1.8: resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} dev: false @@ -2149,6 +1060,7 @@ packages: optional: true dependencies: ms: 2.0.0 + dev: false /debug/3.2.7_supports-color@5.5.0: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -2187,33 +1099,18 @@ packages: /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} + dev: false /defer-to-connect/2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} dev: false - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /defined/1.0.0: - resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} - dev: true - /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: false - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - /depd/2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -2224,33 +1121,6 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false - /detect-indent/4.0.0: - resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} - engines: {node: '>=0.10.0'} - dependencies: - repeating: 2.0.1 - dev: true - - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - - /detect-libc/2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} - dev: true - - /detective/5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.0 - minimist: 1.2.6 - dev: true - /dezalgo/1.0.3: resolution: {integrity: sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==} dependencies: @@ -2258,10 +1128,6 @@ packages: wrappy: 1.0.2 dev: false - /didyoumean/1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: true - /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -2274,10 +1140,6 @@ packages: path-type: 4.0.0 dev: true - /dlv/1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: true - /docker-modem/3.0.5: resolution: {integrity: sha512-x1E6jxWdtoK3+ifAUWj4w5egPdTDGBpesSCErm+aKET5BnnEOvDtTP6GxcnMB1zZiv2iQ0qJZvJie+1wfIRg6Q==} engines: {node: '>= 8.0'} @@ -2349,14 +1211,6 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium/1.4.139: - resolution: {integrity: sha512-lYxzcUCjWxxVug+A7UxBCUiVr13TCjfZFYJS9Lq1VpU/ErwV4a6zUQo9dfojuGpw/L/x9REGuBl6ICQPGgbs3g==} - dev: true - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -2385,51 +1239,10 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: false - /es-abstract/1.20.1: - resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.1 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.4 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.1 - object-keys: 1.1.1 - object.assign: 4.1.2 - regexp.prototype.flags: 1.4.3 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 - unbox-primitive: 1.0.2 - dev: true - - /es-to-primitive/1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.4 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /es6-promise/3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - dev: true - - /esbuild-android-64/0.14.48: - resolution: {integrity: sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==} + /esbuild-android-64/0.14.49: + resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2437,8 +1250,8 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.14.48: - resolution: {integrity: sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==} + /esbuild-android-arm64/0.14.49: + resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2446,8 +1259,8 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.14.48: - resolution: {integrity: sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==} + /esbuild-darwin-64/0.14.49: + resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2455,8 +1268,8 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.14.48: - resolution: {integrity: sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==} + /esbuild-darwin-arm64/0.14.49: + resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2464,8 +1277,8 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.14.48: - resolution: {integrity: sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==} + /esbuild-freebsd-64/0.14.49: + resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2473,8 +1286,8 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.14.48: - resolution: {integrity: sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==} + /esbuild-freebsd-arm64/0.14.49: + resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2482,8 +1295,8 @@ packages: dev: true optional: true - /esbuild-linux-32/0.14.48: - resolution: {integrity: sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==} + /esbuild-linux-32/0.14.49: + resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2491,8 +1304,8 @@ packages: dev: true optional: true - /esbuild-linux-64/0.14.48: - resolution: {integrity: sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==} + /esbuild-linux-64/0.14.49: + resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2500,8 +1313,8 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.14.48: - resolution: {integrity: sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==} + /esbuild-linux-arm/0.14.49: + resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2509,8 +1322,8 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.14.48: - resolution: {integrity: sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==} + /esbuild-linux-arm64/0.14.49: + resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2518,8 +1331,8 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.14.48: - resolution: {integrity: sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==} + /esbuild-linux-mips64le/0.14.49: + resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2527,8 +1340,8 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.14.48: - resolution: {integrity: sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==} + /esbuild-linux-ppc64le/0.14.49: + resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2536,8 +1349,8 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.14.48: - resolution: {integrity: sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==} + /esbuild-linux-riscv64/0.14.49: + resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2545,8 +1358,8 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.14.48: - resolution: {integrity: sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==} + /esbuild-linux-s390x/0.14.49: + resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2554,8 +1367,8 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.14.48: - resolution: {integrity: sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==} + /esbuild-netbsd-64/0.14.49: + resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2563,8 +1376,8 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.14.48: - resolution: {integrity: sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==} + /esbuild-openbsd-64/0.14.49: + resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2572,8 +1385,8 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.14.48: - resolution: {integrity: sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==} + /esbuild-sunos-64/0.14.49: + resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2581,8 +1394,8 @@ packages: dev: true optional: true - /esbuild-windows-32/0.14.48: - resolution: {integrity: sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==} + /esbuild-windows-32/0.14.49: + resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2590,8 +1403,8 @@ packages: dev: true optional: true - /esbuild-windows-64/0.14.48: - resolution: {integrity: sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==} + /esbuild-windows-64/0.14.49: + resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2599,8 +1412,8 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.14.48: - resolution: {integrity: sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==} + /esbuild-windows-arm64/0.14.49: + resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2608,37 +1421,32 @@ packages: dev: true optional: true - /esbuild/0.14.48: - resolution: {integrity: sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==} + /esbuild/0.14.49: + resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-64: 0.14.48 - esbuild-android-arm64: 0.14.48 - esbuild-darwin-64: 0.14.48 - esbuild-darwin-arm64: 0.14.48 - esbuild-freebsd-64: 0.14.48 - esbuild-freebsd-arm64: 0.14.48 - esbuild-linux-32: 0.14.48 - esbuild-linux-64: 0.14.48 - esbuild-linux-arm: 0.14.48 - esbuild-linux-arm64: 0.14.48 - esbuild-linux-mips64le: 0.14.48 - esbuild-linux-ppc64le: 0.14.48 - esbuild-linux-riscv64: 0.14.48 - esbuild-linux-s390x: 0.14.48 - esbuild-netbsd-64: 0.14.48 - esbuild-openbsd-64: 0.14.48 - esbuild-sunos-64: 0.14.48 - esbuild-windows-32: 0.14.48 - esbuild-windows-64: 0.14.48 - esbuild-windows-arm64: 0.14.48 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + esbuild-android-64: 0.14.49 + esbuild-android-arm64: 0.14.49 + esbuild-darwin-64: 0.14.49 + esbuild-darwin-arm64: 0.14.49 + esbuild-freebsd-64: 0.14.49 + esbuild-freebsd-arm64: 0.14.49 + esbuild-linux-32: 0.14.49 + esbuild-linux-64: 0.14.49 + esbuild-linux-arm: 0.14.49 + esbuild-linux-arm64: 0.14.49 + esbuild-linux-mips64le: 0.14.49 + esbuild-linux-ppc64le: 0.14.49 + esbuild-linux-riscv64: 0.14.49 + esbuild-linux-s390x: 0.14.49 + esbuild-netbsd-64: 0.14.49 + esbuild-openbsd-64: 0.14.49 + esbuild-sunos-64: 0.14.49 + esbuild-windows-32: 0.14.49 + esbuild-windows-64: 0.14.49 + esbuild-windows-arm64: 0.14.49 dev: true /escape-html/1.0.3: @@ -2648,6 +1456,7 @@ packages: /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: false /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -2680,16 +1489,6 @@ packages: prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-svelte3/4.0.0_m4jpobot6gi3xtcba7bv5cflma: - resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} - peerDependencies: - eslint: '>=8.0.0' - svelte: ^3.2.0 - dependencies: - eslint: 8.19.0 - svelte: 3.48.0 - dev: true - /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -2803,14 +1602,6 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-walker/0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - dev: true - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2830,11 +1621,6 @@ packages: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false - /exit/0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2951,10 +1737,6 @@ packages: flat-cache: 3.0.4 dev: true - /file-uri-to-path/1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: true - /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -3038,10 +1820,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /fraction.js/4.2.0: - resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} - dev: true - /fresh/0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -3051,13 +1829,6 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.1.6 - dev: true - /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3071,6 +1842,7 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: false /function.name/1.0.13: resolution: {integrity: sha512-mVrqdoy5npWZyoXl4DxCeuVF6delDcQjVS9aPdvLYlBxtMTZDR2B5GVEQEoM1jJyspCqg3C0v4ABkLE7tp9xFA==} @@ -3078,39 +1850,10 @@ packages: noop6: 1.0.9 dev: false - /function.prototype.name/1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - functions-have-names: 1.2.3 - dev: true - /functional-red-black-tree/1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: true - /functions-have-names/1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /gauge/3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: true - /generate-password/1.7.0: resolution: {integrity: sha512-WPCtlfy0jexf7W5IbwxGUgpIDvsZIohbI2DAq2Q6TSlKKis+G4GT9sxvPxrZUGL8kP6WUXMWNqYnxY6DDKAdFA==} dev: false @@ -3121,6 +1864,7 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 + dev: false /get-port/6.1.2: resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} @@ -3139,14 +1883,6 @@ packages: engines: {node: '>=10'} dev: false - /get-symbol-description/1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.1 - dev: true - /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3190,14 +1926,6 @@ packages: type-fest: 0.20.2 dev: true - /globals/9.18.0: - resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} - engines: {node: '>=0.10.0'} - dev: true - - /globalyzer/0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -3210,9 +1938,6 @@ packages: slash: 3.0.0 dev: true - /globrex/0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - /got/12.1.0: resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} engines: {node: '>=14.16'} @@ -3232,21 +1957,6 @@ packages: responselike: 2.0.0 dev: false - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true - - /has-ansi/2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - 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'} @@ -3256,48 +1966,26 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors/1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.1.1 - dev: true - /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - - /has-tostringtag/1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true + dev: false /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 + dev: false /hexoid/1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} dev: false - /home-or-tmp/2.0.0: - resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} - engines: {node: '>=0.10.0'} - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: true - /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: false /http-cache-semantics/4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} @@ -3328,16 +2016,6 @@ packages: resolve-alpn: 1.2.1 dev: false - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /human-interval/2.0.1: resolution: {integrity: sha512-r4Aotzf+OtKIGQCB3odUowy4GfUDTy3aTWTfLd7ZF2gBCy3XW3v/dJLRefZnOFFnjqs5B1TypvS8WarpBkYUNQ==} dependencies: @@ -3383,21 +2061,6 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: false - /internal-slot/1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.1 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - - /invariant/2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 - dev: true - /ip-regex/5.0.0: resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3414,12 +2077,7 @@ packages: /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - /is-bigint/1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true + dev: false /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -3428,35 +2086,16 @@ 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.2 - has-tostringtag: 1.0.0 - dev: true - /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: false - /is-callable/1.2.4: - resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} - engines: {node: '>= 0.4'} - dev: true - /is-core-module/2.9.0: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 - - /is-date-object/1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + dev: false /is-extglob/1.0.0: resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} @@ -3468,16 +2107,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-finite/1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - /is-glob/2.0.1: resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} engines: {node: '>=0.10.0'} @@ -3506,37 +2135,11 @@ packages: ip-regex: 5.0.0 dev: false - /is-negative-zero/2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - 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.0 - dev: true - /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-regex/1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-shared-array-buffer/1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: true - /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3553,20 +2156,6 @@ packages: resolution: {integrity: sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==} dev: false - /is-string/1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - 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-uuid/1.0.2: resolution: {integrity: sha512-tCByphFcJgf2qmiMo5hMCgNAquNSagOetVetDvBXswGkNfoyEMvGH1yDlF8cbZbKnbVBr4Y5/rlpMz9umxyBkQ==} dev: false @@ -3578,12 +2167,6 @@ packages: is-invalid-path: 0.1.0 dev: false - /is-weakref/1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true - /iserror/0.0.2: resolution: {integrity: sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==} dev: false @@ -3591,17 +2174,9 @@ packages: /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /js-cookie/3.0.1: - resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} - engines: {node: '>=12'} - dev: false - - /js-tokens/3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: true - /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: false /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -3609,24 +2184,10 @@ packages: dependencies: argparse: 2.0.1 - /jsesc/0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true - - /jsesc/1.3.0: - resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} - hasBin: true - dev: true - /json-buffer/3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: false - /json-parse-better-errors/1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false @@ -3643,11 +2204,6 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5/0.5.1: - resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} - hasBin: true - dev: true - /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} @@ -3691,11 +2247,6 @@ packages: json-buffer: 3.0.1 dev: false - /kleur/4.1.4: - resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} - engines: {node: '>=6'} - dev: true - /last-commit-log/3.1.2: resolution: {integrity: sha512-xCA2dLwhRxvTj/6oPcKD12ICOr+rxDNtc3byd1rfCGawBHYf1vTrS1oiPHjWBIa8drY25W7J3arLjfJa/JngAA==} dependencies: @@ -3719,25 +2270,10 @@ packages: set-cookie-parser: 2.4.8 dev: false - /lilconfig/2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} - engines: {node: '>=10'} - dev: true - /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /load-json-file/4.0.0: - resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.10 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -3833,13 +2369,7 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /loose-envify/1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: true + dev: false /lower-case/1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} @@ -3855,48 +2385,16 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false - /lru-cache/4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true - /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /magic-string/0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /magic-string/0.26.2: - resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true - /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: false - /memorystream/0.3.1: - resolution: {integrity: sha1-htcJCzDORV1j+64S3aUaR93K+bI=} - engines: {node: '>= 0.10.0'} - dev: true - /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -3949,11 +2447,6 @@ packages: engines: {node: '>=10'} dev: false - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - /minimalistic-assert/1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: false @@ -3974,56 +2467,19 @@ packages: /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - /minipass/3.1.6: - resolution: {integrity: sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.1.6 - yallist: 4.0.0 - dev: true - /mkdirp-classic/0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false - /mkdirp/0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.6 - dev: true - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true - /mnemonist/0.39.1: resolution: {integrity: sha512-bY13FSvcbKLj+FaJcR2+xFZ3m2R1+BrLpavAh0BMyGSq0iPowbvYllwitlkvVyEowEYSulCMzxDaju9bC4+cow==} dependencies: obliterator: 2.0.4 dev: false - /mri/1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true - - /mrmime/1.0.0: - resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==} - engines: {node: '>=10'} - dev: true - /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -4040,12 +2496,6 @@ packages: resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} dev: false - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -4054,46 +2504,21 @@ packages: resolution: {integrity: sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==} dev: false - /nice-try/1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true - /no-case/2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} dependencies: lower-case: 1.1.4 dev: false - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - /node-forge/1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} dev: false - /node-gyp-build/4.4.0: - resolution: {integrity: sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==} - hasBin: true - dev: true - /node-os-utils/1.3.7: resolution: {integrity: sha512-fvnX9tZbR7WfCG5BAy3yO/nCLyjVWD6MghEq0z5FDfN+ZXpLWNITBdbifxQkQ25ebr16G0N7eRWJisOcMEHG3Q==} dev: false - /node-releases/2.0.5: - resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} - dev: true - /nodemon/2.0.19: resolution: {integrity: sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==} engines: {node: '>=8.10.0'} @@ -4123,14 +2548,6 @@ packages: abbrev: 1.1.1 dev: true - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -4138,78 +2555,25 @@ packages: resolve: 1.22.0 semver: 5.7.1 validate-npm-package-license: 3.0.4 + dev: false /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /normalize-range/0.1.2: - resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=} - engines: {node: '>=0.10.0'} - dev: true - /normalize-url/6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: false - /npm-run-all/4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.5 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.7.3 - string.prototype.padend: 3.1.3 - dev: true - - /npmlog/5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - dev: true - /numbered/1.1.0: resolution: {integrity: sha512-pv/ue2Odr7IfYOO0byC1KgBI10wo5YDauLhxY6/saNzAdAs0r1SotGCPzzCLNPL0xtrAwWRialLu23AAu9xO1g==} dev: false - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true - - /object-hash/3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: true - /object-inspect/1.12.1: resolution: {integrity: sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==} - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign/4.1.2: - resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true + dev: false /obliterator/2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} @@ -4243,16 +2607,6 @@ packages: word-wrap: 1.2.3 dev: true - /os-homedir/1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: true - - /os-tmpdir/1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true - /p-cancelable/3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -4277,13 +2631,6 @@ packages: yocto-queue: 0.1.0 dev: false - /p-limit/4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: false - /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -4354,14 +2701,6 @@ packages: iserror: 0.0.2 dev: false - /parse-json/4.0.0: - resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -4413,55 +2752,24 @@ packages: engines: {node: '>=0.10.0'} dev: true - /path-key/2.0.1: - resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} - engines: {node: '>=4'} - dev: true - /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-type/3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true + dev: false /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pidtree/0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - - /pify/3.0.0: - resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} - engines: {node: '>=4'} - dev: true - /pino-abstract-transport/1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: @@ -4497,82 +2805,6 @@ packages: find-up: 3.0.0 dev: false - /playwright-core/1.23.1: - resolution: {integrity: sha512-9CXsE0gawph4KXl6oUaa0ehHRySZjHvly4TybcBXDvzK3N3o6L/eZ8Q6iVWUiMn0LLS5bRFxo1qEtOETlYJxjw==} - engines: {node: '>=14'} - hasBin: true - dev: true - - /postcss-import/14.1.0_postcss@8.4.14: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.14 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.0 - dev: true - - /postcss-js/4.0.0_postcss@8.4.14: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.3.3 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.14 - dev: true - - /postcss-load-config/3.1.4_postcss@8.4.14: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.0.5 - postcss: 8.4.14 - yaml: 1.10.2 - dev: true - - /postcss-nested/5.0.6_postcss@8.4.14: - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.14 - postcss-selector-parser: 6.0.10 - dev: true - - /postcss-selector-parser/6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: true - - /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true - - /postcss/8.4.14: - resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4585,16 +2817,6 @@ packages: fast-diff: 1.2.0 dev: true - /prettier-plugin-svelte/2.7.0_nakrehnrzdf7fdea5k3a4dfy4m: - resolution: {integrity: sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==} - peerDependencies: - prettier: ^1.16.4 || ^2.0.0 - svelte: ^3.2.0 - dependencies: - prettier: 2.7.1 - svelte: 3.48.0 - dev: true - /prettier/2.7.1: resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} engines: {node: '>=10.13.0'} @@ -4609,11 +2831,6 @@ packages: dependencies: '@prisma/engines': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e - /private/0.1.8: - resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} - engines: {node: '>= 0.6'} - dev: true - /process-warning/1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false @@ -4634,10 +2851,6 @@ packages: ipaddr.js: 1.9.1 dev: false - /pseudomap/1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true - /pstree.remy/1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} dev: true @@ -4679,18 +2892,13 @@ packages: /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + dev: false /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: false - /read-cache/1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - dependencies: - pify: 2.3.0 - dev: true - /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -4700,15 +2908,6 @@ packages: type-fest: 0.8.1 dev: false - /read-pkg/3.0.0: - resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -4726,6 +2925,7 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: false /readable-stream/4.0.0: resolution: {integrity: sha512-Mf7ilWBP6AV3tF3MjtBrHMH3roso7wIrpgzCwt9ybvqiJQVWIEBMnp/W+S//yvYSsUUi2cJIwD7q7m57l0AqZw==} @@ -4746,71 +2946,15 @@ packages: engines: {node: '>= 12.13.0'} dev: false - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true - - /regenerator-runtime/0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - dev: true - /regenerator-runtime/0.13.9: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} dev: false - /regenerator-transform/0.10.1: - resolution: {integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - private: 0.1.8 - dev: true - - /regexp.prototype.flags/1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - functions-have-names: 1.2.3 - dev: true - - /regexparam/2.0.0: - resolution: {integrity: sha512-gJKwd2MVPWHAIFLsaYDZfyKzHNS4o7E/v8YmNf44vmeV2e4YfVoDToTOKTvE7ab68cRJ++kLuEXJBaEeJVt5ow==} - engines: {node: '>=8'} - dev: true - /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true - /regexpu-core/2.0.0: - resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} - dependencies: - regenerate: 1.4.2 - regjsgen: 0.2.0 - regjsparser: 0.1.5 - dev: true - - /regjsgen/0.2.0: - resolution: {integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==} - dev: true - - /regjsparser/0.1.5: - resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - - /repeating/2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - dependencies: - is-finite: 1.1.0 - dev: true - /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -4829,11 +2973,6 @@ packages: engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - /resolve/1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true @@ -4841,6 +2980,7 @@ packages: is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false /responselike/2.0.0: resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==} @@ -4861,13 +3001,6 @@ packages: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: false - /rimraf/2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -4875,39 +3008,15 @@ packages: glob: 7.2.3 dev: true - /rollup-pluginutils/2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - dependencies: - estree-walker: 0.6.1 - dev: true - - /rollup/2.75.7: - resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /sade/1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - dependencies: - mri: 1.2.0 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false /safe-regex2/2.0.0: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} @@ -4928,15 +3037,6 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sander/0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - dependencies: - es6-promise: 3.3.1 - graceful-fs: 4.2.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - dev: true - /secure-json-parse/2.4.0: resolution: {integrity: sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==} dev: false @@ -4945,11 +3045,6 @@ packages: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - /semver/7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true @@ -4987,53 +3082,31 @@ packages: resolution: {integrity: sha512-6oGOAj9wPBKEuzJxqrN1sxMHJKbWOg7D2zNYOXaKrDC4lP6FpAw2MVuZd4okp/KqtRxkgLMweEd6HM1+c4m8Yg==} dev: false - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - /set-cookie-parser/2.4.8: resolution: {integrity: sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg==} + dev: false /setprototypeof/1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false - /shebang-command/1.2.0: - resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex/1.0.0: - resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} - engines: {node: '>=0.10.0'} - dev: true - /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.7.3: - resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} - dev: true - /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.1 object-inspect: 1.12.1 - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + dev: false /simple-update-notifier/1.0.7: resolution: {integrity: sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==} @@ -5042,11 +3115,6 @@ packages: semver: 7.0.0 dev: true - /slash/1.0.0: - resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} - engines: {node: '>=0.10.0'} - dev: true - /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -5058,53 +3126,27 @@ packages: atomic-sleep: 1.0.0 dev: false - /sorcery/0.10.0: - resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} - hasBin: true - dependencies: - buffer-crc32: 0.2.13 - minimist: 1.2.6 - sander: 0.5.1 - sourcemap-codec: 1.4.8 - dev: true - - /source-map-js/1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map-support/0.4.18: - resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} - dependencies: - source-map: 0.5.7 - dev: true - - /source-map/0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: true - - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - dev: true - /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.11 + dev: false /spdx-exceptions/2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: false /spdx-expression-parse/3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.11 + dev: false /spdx-license-ids/3.0.11: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + dev: false /split-ca/1.0.1: resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} @@ -5142,51 +3184,11 @@ packages: reusify: 1.0.4 dev: false - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string.prototype.padend/3.1.3: - resolution: {integrity: sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - dev: true - - /string.prototype.trimend/1.0.5: - resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - dev: true - - /string.prototype.trimstart/1.0.5: - resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.1 - dev: true - /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - - /strip-ansi/3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true + dev: false /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -5206,13 +3208,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -5237,11 +3232,6 @@ packages: - supports-color dev: false - /supports-color/2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - dev: true - /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -5258,153 +3248,8 @@ packages: /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - - /svelte-check/2.8.0_s3dopqgs4h45owyu2kxaf6kyfu: - resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==} - hasBin: true - peerDependencies: - svelte: ^3.24.0 - dependencies: - '@jridgewell/trace-mapping': 0.3.13 - chokidar: 3.5.3 - fast-glob: 3.2.11 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 3.48.0 - svelte-preprocess: 4.10.7_jr4mgafwdbjtobsadg2hrd5qfy - typescript: 4.7.4 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - node-sass - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - dev: true - - /svelte-hmr/0.14.12_svelte@3.48.0: - resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: '>=3.19.0' - dependencies: - svelte: 3.48.0 - dev: true - - /svelte-preprocess/4.10.7_jr4mgafwdbjtobsadg2hrd5qfy: - resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} - engines: {node: '>= 9.11.2'} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - node-sass: '*' - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 - svelte: ^3.23.0 - typescript: ^3.9.5 || ^4.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - node-sass: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - dependencies: - '@types/pug': 2.0.6 - '@types/sass': 1.43.1 - detect-indent: 6.1.0 - magic-string: 0.25.9 - postcss: 8.4.14 - sorcery: 0.10.0 - strip-indent: 3.0.0 - svelte: 3.48.0 - typescript: 4.7.4 - dev: true - - /svelte-select/4.4.7: - resolution: {integrity: sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A==} dev: false - /svelte/3.48.0: - resolution: {integrity: sha512-fN2YRm/bGumvjUpu6yI3BpvZnpIm9I6A7HR4oUNYd7ggYyIwSA/BX7DJ+UXXffLp6XNcUijyLvttbPVCYa/3xQ==} - engines: {node: '>= 8'} - - /sveltekit-i18n/2.2.2_svelte@3.48.0: - resolution: {integrity: sha512-6eygICleGCSL7elY7A3trF8XUhV+mlW56ZSoD0UUKXlw+Y6u0MTTHDq48u1LyY73SfnlbPHXgTarhTjZ0BvUKA==} - peerDependencies: - svelte: ^3.x - dependencies: - '@sveltekit-i18n/base': 1.2.1_svelte@3.48.0 - '@sveltekit-i18n/parser-default': 1.0.3 - svelte: 3.48.0 - dev: false - - /tailwindcss-scrollbar/0.1.0_tailwindcss@3.1.4: - resolution: {integrity: sha512-egipxw4ooQDh94x02XQpPck0P0sfwazwoUGfA9SedPATIuYDR+6qe8d31Gl7YsSMRiOKDkkqfI0kBvEw9lT/Hg==} - peerDependencies: - tailwindcss: '>= 2.x.x' - dependencies: - tailwindcss: 3.1.4 - dev: true - - /tailwindcss/3.1.4: - resolution: {integrity: sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - arg: 5.0.2 - chokidar: 3.5.3 - color-name: 1.1.4 - detective: 5.2.1 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.2.11 - glob-parent: 6.0.2 - is-glob: 4.0.3 - lilconfig: 2.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.14 - postcss-import: 14.1.0_postcss@8.4.14 - postcss-js: 4.0.0_postcss@8.4.14 - postcss-load-config: 3.1.4_postcss@8.4.14 - postcss-nested: 5.0.6_postcss@8.4.14 - postcss-selector-parser: 6.0.10 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.0 - transitivePeerDependencies: - - ts-node - dev: true - /tar-fs/2.0.1: resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==} dependencies: @@ -5425,18 +3270,6 @@ packages: readable-stream: 3.6.0 dev: false - /tar/6.1.11: - resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} - engines: {node: '>= 10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 3.1.6 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: true - /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -5447,22 +3280,11 @@ packages: real-require: 0.1.0 dev: false - /tiny-glob/0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - /tiny-lru/8.0.2: resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} engines: {node: '>=6'} dev: false - /to-fast-properties/1.0.3: - resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} - engines: {node: '>=0.10.0'} - dev: true - /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5486,15 +3308,6 @@ packages: nopt: 1.0.10 dev: true - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - - /trim-right/1.0.1: - resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} - engines: {node: '>=0.10.0'} - dev: true - /ts-node/10.8.2_fxk5i3xm3ivo7fjwhcizcinpla: resolution: {integrity: sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==} hasBin: true @@ -5537,10 +3350,6 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - dev: true - /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -5588,15 +3397,6 @@ packages: function.name: 1.0.13 dev: false - /unbox-primitive/1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - /undefsafe/2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true @@ -5620,6 +3420,7 @@ packages: /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -5634,64 +3435,13 @@ packages: dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 + dev: false /vary/1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false - /vite/2.9.13: - resolution: {integrity: sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==} - engines: {node: '>=12.2.0'} - hasBin: true - peerDependencies: - less: '*' - sass: '*' - stylus: '*' - peerDependenciesMeta: - less: - optional: true - sass: - optional: true - stylus: - optional: true - dependencies: - esbuild: 0.14.48 - postcss: 8.4.14 - resolve: 1.22.0 - rollup: 2.75.7 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: true - - /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/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -5699,44 +3449,22 @@ packages: dependencies: isexe: 2.0.0 - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: true - /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /worktop/0.8.0-next.14: - resolution: {integrity: sha512-RZgqHu1w/JcUdWOE/BUEAzarrUUHh39eWkLdX8XpA6MfgLJF6X5Vl26CV7/wcm4O/UpZvHMGJUtB9eYTqDjc9g==} - engines: {node: '>=12'} - dependencies: - mrmime: 1.0.0 - regexparam: 2.0.0 - dev: true - /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - - /yallist/2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true + dev: false /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -5747,11 +3475,6 @@ packages: engines: {node: '>=10'} dev: false - /yocto-queue/1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: false - /yup/0.32.9: resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} engines: {node: '>=10'} From b5d82dc87bcbe240a96b821cd697a4e5026410ec Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 15 Jul 2022 15:40:26 +0200 Subject: [PATCH 07/12] fix: remove shared dir, deployment does not work --- apps/api/package.json | 17 +- apps/api/src/lib/common.ts | 165 +- apps/api/src/routes/api/v1/handlers.ts | 5 +- .../src/routes/api/v1/services/handlers.ts | 3 +- .../src/routes/webhooks/traefik/handlers.ts | 3 +- apps/shared/index.ts | 160 -- apps/shared/nodemon.json | 7 - apps/shared/package.json | 14 - apps/ui/package.json | 18 +- apps/ui/src/lib/common.ts | 163 +- .../[id]/configuration/version.svelte | 3 +- apps/ui/vite.config.js | 1 + package.json | 4 +- pnpm-lock.yaml | 2198 ++++++++++++++++- 14 files changed, 2441 insertions(+), 320 deletions(-) delete mode 100644 apps/shared/index.ts delete mode 100644 apps/shared/nodemon.json delete mode 100644 apps/shared/package.json diff --git a/apps/api/package.json b/apps/api/package.json index 74f770240..9a37a9366 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -14,13 +14,12 @@ "start": "NODE_ENV=production npx -y prisma migrate deploy && npx prisma generate && npx prisma db seed && node index.js" }, "dependencies": { - "shared": "workspace:*", "@breejs/ts-worker": "2.0.0", - "@fastify/autoload": "5.0.0", - "@fastify/cookie": "7.0.0", + "@fastify/autoload": "5.1.0", + "@fastify/cookie": "7.1.0", "@fastify/cors": "8.0.0", "@fastify/env": "4.0.0", - "@fastify/jwt": "6.2.0", + "@fastify/jwt": "6.3.1", "@fastify/static": "6.4.0", "@iarna/toml": "2.2.5", "@prisma/client": "3.15.2", @@ -33,8 +32,8 @@ "dayjs": "1.11.3", "dockerode": "3.3.2", "dotenv-extended": "2.9.0", - "fastify": "4.2.0", - "fastify-plugin": "3.0.1", + "fastify": "4.2.1", + "fastify-plugin": "4.0.0", "generate-password": "1.7.0", "get-port": "6.1.2", "got": "12.1.0", @@ -48,10 +47,10 @@ "unique-names-generator": "4.7.1" }, "devDependencies": { - "@types/node": "18.0.3", + "@types/node": "18.0.4", "@types/node-os-utils": "1.3.0", - "@typescript-eslint/eslint-plugin": "5.30.5", - "@typescript-eslint/parser": "5.30.5", + "@typescript-eslint/eslint-plugin": "5.30.6", + "@typescript-eslint/parser": "5.30.6", "esbuild": "0.14.49", "eslint": "8.19.0", "eslint-config-prettier": "8.5.0", diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index e3ad542aa..b18bfd003 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -14,7 +14,6 @@ import cuid from 'cuid'; import { checkContainer, getEngine, removeContainer } from './docker'; import { day } from './dayjs'; import * as serviceFields from './serviceFields' -import axios from 'axios'; export const version = '3.1.3'; export const isDev = process.env.NODE_ENV === 'development'; @@ -70,7 +69,6 @@ export const include: any = { umami: true, hasura: true, fider: true, - moodle: true }; export const uniqueName = (): string => uniqueNamesGenerator(customConfig); @@ -113,7 +111,168 @@ export const encrypt = (text: string) => { }); } }; -import { supportedServiceTypesAndVersions } from 'shared'; + +export const supportedServiceTypesAndVersions = [ + { + name: 'plausibleanalytics', + fancyName: 'Plausible Analytics', + baseImage: 'plausible/analytics', + images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], + versions: ['latest', 'stable'], + recommendedVersion: 'stable', + ports: { + main: 8000 + } + }, + { + name: 'nocodb', + fancyName: 'NocoDB', + baseImage: 'nocodb/nocodb', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8080 + } + }, + { + name: 'minio', + fancyName: 'MinIO', + baseImage: 'minio/minio', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 9001 + } + }, + { + name: 'vscodeserver', + fancyName: 'VSCode Server', + baseImage: 'codercom/code-server', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8080 + } + }, + { + name: 'wordpress', + fancyName: 'Wordpress', + baseImage: 'wordpress', + images: ['bitnami/mysql:5.7'], + versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], + recommendedVersion: 'latest', + ports: { + main: 80 + } + }, + { + name: 'vaultwarden', + fancyName: 'Vaultwarden', + baseImage: 'vaultwarden/server', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 80 + } + }, + { + name: 'languagetool', + fancyName: 'LanguageTool', + baseImage: 'silviof/docker-languagetool', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8010 + } + }, + { + name: 'n8n', + fancyName: 'n8n', + baseImage: 'n8nio/n8n', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 5678 + } + }, + { + name: 'uptimekuma', + fancyName: 'Uptime Kuma', + baseImage: 'louislam/uptime-kuma', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 3001 + } + }, + { + name: 'ghost', + fancyName: 'Ghost', + baseImage: 'bitnami/ghost', + images: ['bitnami/mariadb'], + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 2368 + } + }, + { + name: 'meilisearch', + fancyName: 'Meilisearch', + baseImage: 'getmeili/meilisearch', + images: [], + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 7700 + } + }, + { + name: 'umami', + fancyName: 'Umami', + baseImage: 'ghcr.io/mikecao/umami', + images: ['postgres:12-alpine'], + versions: ['postgresql-latest'], + recommendedVersion: 'postgresql-latest', + ports: { + main: 3000 + } + }, + { + name: 'hasura', + fancyName: 'Hasura', + baseImage: 'hasura/graphql-engine', + images: ['postgres:12-alpine'], + versions: ['latest', 'v2.5.1'], + recommendedVersion: 'v2.5.1', + ports: { + main: 8080 + } + }, + { + name: 'fider', + fancyName: 'Fider', + baseImage: 'getfider/fider', + images: ['postgres:12-alpine'], + versions: ['stable'], + recommendedVersion: 'stable', + ports: { + main: 3000 + } + }, + // { + // name: 'moodle', + // fancyName: 'Moodle', + // baseImage: 'bitnami/moodle', + // images: [], + // versions: ['latest', 'v4.0.2'], + // recommendedVersion: 'latest', + // ports: { + // main: 8080 + // } + // } +]; + export async function checkDoubleBranch(branch: string, projectId: number): Promise { const applications = await prisma.application.findMany({ where: { branch, projectId } }); return applications.length > 1; diff --git a/apps/api/src/routes/api/v1/handlers.ts b/apps/api/src/routes/api/v1/handlers.ts index 7f54a356b..4b62f3845 100644 --- a/apps/api/src/routes/api/v1/handlers.ts +++ b/apps/api/src/routes/api/v1/handlers.ts @@ -25,17 +25,18 @@ export async function cleanupManually() { } export async function checkUpdate(request: FastifyRequest) { try { + const isStaging = request.hostname === 'staging.coolify.io' const currentVersion = version; const { data: versions } = await axios.get( `https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}&version=${currentVersion}` ); const latestVersion = - request.hostname === 'staging.coolify.io' + isStaging ? versions['coolify'].next.version : versions['coolify'].main.version; const isUpdateAvailable = compare(latestVersion, currentVersion); return { - isUpdateAvailable: isUpdateAvailable === 1, + isUpdateAvailable: isStaging ? true : isUpdateAvailable === 1, latestVersion }; } catch ({ status, message }) { diff --git a/apps/api/src/routes/api/v1/services/handlers.ts b/apps/api/src/routes/api/v1/services/handlers.ts index f48839f85..74658fc47 100644 --- a/apps/api/src/routes/api/v1/services/handlers.ts +++ b/apps/api/src/routes/api/v1/services/handlers.ts @@ -2,14 +2,13 @@ import type { FastifyReply, FastifyRequest } from 'fastify'; import fs from 'fs/promises'; import yaml from 'js-yaml'; import bcrypt from 'bcryptjs'; -import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, generatePassword, isDev, stopTcpHttpProxy } from '../../../../lib/common'; +import { prisma, uniqueName, asyncExecShell, getServiceImage, getServiceImages, configureServiceType, getServiceFromDB, getContainerUsage, removeService, isDomainConfigured, saveUpdateableFields, fixType, decrypt, encrypt, getServiceMainPort, createDirectories, ComposeFile, makeLabelForServices, getFreePort, getDomain, errorHandler, generatePassword, isDev, stopTcpHttpProxy, supportedServiceTypesAndVersions } from '../../../../lib/common'; import { day } from '../../../../lib/dayjs'; import { checkContainer, dockerInstance, getEngine, removeContainer } from '../../../../lib/docker'; import cuid from 'cuid'; import type { OnlyId } from '../../../../types'; import type { ActivateWordpressFtp, CheckService, DeleteServiceSecret, DeleteServiceStorage, GetServiceLogs, SaveService, SaveServiceDestination, SaveServiceSecret, SaveServiceSettings, SaveServiceStorage, SaveServiceType, SaveServiceVersion, ServiceStartStop, SetWordpressSettings } from './types'; -import { supportedServiceTypesAndVersions } from 'shared'; // async function startServiceNew(request: FastifyRequest) { // try { diff --git a/apps/api/src/routes/webhooks/traefik/handlers.ts b/apps/api/src/routes/webhooks/traefik/handlers.ts index 4d2d04db1..879ccd960 100644 --- a/apps/api/src/routes/webhooks/traefik/handlers.ts +++ b/apps/api/src/routes/webhooks/traefik/handlers.ts @@ -1,6 +1,5 @@ import { FastifyRequest } from "fastify"; -import { supportedServiceTypesAndVersions } from "shared"; -import { asyncExecShell, errorHandler, getDomain, isDev, listServicesWithIncludes, prisma } from "../../../lib/common"; +import { asyncExecShell, errorHandler, getDomain, isDev, listServicesWithIncludes, prisma, supportedServiceTypesAndVersions } from "../../../lib/common"; import { getEngine } from "../../../lib/docker"; import { TraefikOtherConfiguration } from "./types"; diff --git a/apps/shared/index.ts b/apps/shared/index.ts deleted file mode 100644 index 4ee99c339..000000000 --- a/apps/shared/index.ts +++ /dev/null @@ -1,160 +0,0 @@ -export const supportedServiceTypesAndVersions = [ - { - name: 'plausibleanalytics', - fancyName: 'Plausible Analytics', - baseImage: 'plausible/analytics', - images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], - versions: ['latest', 'stable'], - recommendedVersion: 'stable', - ports: { - main: 8000 - } - }, - { - name: 'nocodb', - fancyName: 'NocoDB', - baseImage: 'nocodb/nocodb', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8080 - } - }, - { - name: 'minio', - fancyName: 'MinIO', - baseImage: 'minio/minio', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 9001 - } - }, - { - name: 'vscodeserver', - fancyName: 'VSCode Server', - baseImage: 'codercom/code-server', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8080 - } - }, - { - name: 'wordpress', - fancyName: 'Wordpress', - baseImage: 'wordpress', - images: ['bitnami/mysql:5.7'], - versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], - recommendedVersion: 'latest', - ports: { - main: 80 - } - }, - { - name: 'vaultwarden', - fancyName: 'Vaultwarden', - baseImage: 'vaultwarden/server', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 80 - } - }, - { - name: 'languagetool', - fancyName: 'LanguageTool', - baseImage: 'silviof/docker-languagetool', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 8010 - } - }, - { - name: 'n8n', - fancyName: 'n8n', - baseImage: 'n8nio/n8n', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 5678 - } - }, - { - name: 'uptimekuma', - fancyName: 'Uptime Kuma', - baseImage: 'louislam/uptime-kuma', - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 3001 - } - }, - { - name: 'ghost', - fancyName: 'Ghost', - baseImage: 'bitnami/ghost', - images: ['bitnami/mariadb'], - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 2368 - } - }, - { - name: 'meilisearch', - fancyName: 'Meilisearch', - baseImage: 'getmeili/meilisearch', - images: [], - versions: ['latest'], - recommendedVersion: 'latest', - ports: { - main: 7700 - } - }, - { - name: 'umami', - fancyName: 'Umami', - baseImage: 'ghcr.io/mikecao/umami', - images: ['postgres:12-alpine'], - versions: ['postgresql-latest'], - recommendedVersion: 'postgresql-latest', - ports: { - main: 3000 - } - }, - { - name: 'hasura', - fancyName: 'Hasura', - baseImage: 'hasura/graphql-engine', - images: ['postgres:12-alpine'], - versions: ['latest', 'v2.5.1'], - recommendedVersion: 'v2.5.1', - ports: { - main: 8080 - } - }, - { - name: 'fider', - fancyName: 'Fider', - baseImage: 'getfider/fider', - images: ['postgres:12-alpine'], - versions: ['stable'], - recommendedVersion: 'stable', - ports: { - main: 3000 - } - }, - // { - // name: 'moodle', - // fancyName: 'Moodle', - // baseImage: 'bitnami/moodle', - // images: [], - // versions: ['latest', 'v4.0.2'], - // recommendedVersion: 'latest', - // ports: { - // main: 8080 - // } - // } -]; diff --git a/apps/shared/nodemon.json b/apps/shared/nodemon.json deleted file mode 100644 index 67caf105e..000000000 --- a/apps/shared/nodemon.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "watch": ["src"], - "ignore": ["src/**/*.test.ts"], - "ext": "ts,mjs,json,graphql", - "exec": "rimraf build && esbuild index.ts --watch=true --minify=true --platform=node --outdir=build --format=cjs", - "legacyWatch": true - } \ No newline at end of file diff --git a/apps/shared/package.json b/apps/shared/package.json deleted file mode 100644 index d97933164..000000000 --- a/apps/shared/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "shared", - "version": "1.0.0", - "main": "build/index.js", - "scripts": { - "dev": "nodemon", - "build": "rimraf build && esbuild index.ts --minify=true --platform=node --outdir=build --format=cjs" - }, - "devDependencies": { - "esbuild": "0.14.49", - "nodemon": "2.0.19", - "rimraf": "3.0.2" - } -} \ No newline at end of file diff --git a/apps/ui/package.json b/apps/ui/package.json index 0e3d1122c..babb6755c 100644 --- a/apps/ui/package.json +++ b/apps/ui/package.json @@ -15,12 +15,11 @@ "format": "prettier --write --plugin-search-dir=. ." }, "devDependencies": { - "@playwright/test": "1.23.1", - "@sveltejs/adapter-auto": "1.0.0-next.53", - "@sveltejs/kit": "1.0.0-next.359", + "@playwright/test": "1.23.3", + "@sveltejs/kit": "1.0.0-next.375", "@types/js-cookie": "3.0.2", - "@typescript-eslint/eslint-plugin": "5.30.5", - "@typescript-eslint/parser": "5.30.5", + "@typescript-eslint/eslint-plugin": "5.30.6", + "@typescript-eslint/parser": "5.30.6", "autoprefixer": "10.4.7", "eslint": "8.19.0", "eslint-config-prettier": "8.5.0", @@ -28,19 +27,18 @@ "postcss": "8.4.14", "prettier": "2.7.1", "prettier-plugin-svelte": "2.7.0", - "svelte": "3.48.0", + "svelte": "3.49.0", "svelte-check": "2.8.0", "svelte-preprocess": "4.10.7", - "tailwindcss": "3.1.4", + "tailwindcss": "3.1.6", "tailwindcss-scrollbar": "0.1.0", "tslib": "2.4.0", "typescript": "4.7.4", - "vite": "^2.9.13" + "vite": "^3.0.0" }, "type": "module", "dependencies": { - "shared": "workspace:*", - "@sveltejs/adapter-static": "1.0.0-next.34", + "@sveltejs/adapter-static": "1.0.0-next.36", "@zerodevx/svelte-toast": "0.7.2", "cuid": "2.1.8", "js-cookie": "3.0.1", diff --git a/apps/ui/src/lib/common.ts b/apps/ui/src/lib/common.ts index 8d35562a3..e0396f19c 100644 --- a/apps/ui/src/lib/common.ts +++ b/apps/ui/src/lib/common.ts @@ -1,5 +1,166 @@ import { toast } from '@zerodevx/svelte-toast'; -import { supportedServiceTypesAndVersions } from 'shared/index'; + +export const supportedServiceTypesAndVersions = [ + { + name: 'plausibleanalytics', + fancyName: 'Plausible Analytics', + baseImage: 'plausible/analytics', + images: ['bitnami/postgresql:13.2.0', 'yandex/clickhouse-server:21.3.2.5'], + versions: ['latest', 'stable'], + recommendedVersion: 'stable', + ports: { + main: 8000 + } + }, + { + name: 'nocodb', + fancyName: 'NocoDB', + baseImage: 'nocodb/nocodb', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8080 + } + }, + { + name: 'minio', + fancyName: 'MinIO', + baseImage: 'minio/minio', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 9001 + } + }, + { + name: 'vscodeserver', + fancyName: 'VSCode Server', + baseImage: 'codercom/code-server', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8080 + } + }, + { + name: 'wordpress', + fancyName: 'Wordpress', + baseImage: 'wordpress', + images: ['bitnami/mysql:5.7'], + versions: ['latest', 'php8.1', 'php8.0', 'php7.4', 'php7.3'], + recommendedVersion: 'latest', + ports: { + main: 80 + } + }, + { + name: 'vaultwarden', + fancyName: 'Vaultwarden', + baseImage: 'vaultwarden/server', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 80 + } + }, + { + name: 'languagetool', + fancyName: 'LanguageTool', + baseImage: 'silviof/docker-languagetool', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 8010 + } + }, + { + name: 'n8n', + fancyName: 'n8n', + baseImage: 'n8nio/n8n', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 5678 + } + }, + { + name: 'uptimekuma', + fancyName: 'Uptime Kuma', + baseImage: 'louislam/uptime-kuma', + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 3001 + } + }, + { + name: 'ghost', + fancyName: 'Ghost', + baseImage: 'bitnami/ghost', + images: ['bitnami/mariadb'], + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 2368 + } + }, + { + name: 'meilisearch', + fancyName: 'Meilisearch', + baseImage: 'getmeili/meilisearch', + images: [], + versions: ['latest'], + recommendedVersion: 'latest', + ports: { + main: 7700 + } + }, + { + name: 'umami', + fancyName: 'Umami', + baseImage: 'ghcr.io/mikecao/umami', + images: ['postgres:12-alpine'], + versions: ['postgresql-latest'], + recommendedVersion: 'postgresql-latest', + ports: { + main: 3000 + } + }, + { + name: 'hasura', + fancyName: 'Hasura', + baseImage: 'hasura/graphql-engine', + images: ['postgres:12-alpine'], + versions: ['latest', 'v2.5.1'], + recommendedVersion: 'v2.5.1', + ports: { + main: 8080 + } + }, + { + name: 'fider', + fancyName: 'Fider', + baseImage: 'getfider/fider', + images: ['postgres:12-alpine'], + versions: ['stable'], + recommendedVersion: 'stable', + ports: { + main: 3000 + } + }, + // { + // name: 'moodle', + // fancyName: 'Moodle', + // baseImage: 'bitnami/moodle', + // images: [], + // versions: ['latest', 'v4.0.2'], + // recommendedVersion: 'latest', + // ports: { + // main: 8080 + // } + // } +]; + export const asyncSleep = (delay: number) => new Promise((resolve) => setTimeout(resolve, delay)); diff --git a/apps/ui/src/routes/services/[id]/configuration/version.svelte b/apps/ui/src/routes/services/[id]/configuration/version.svelte index 889a96160..1bbaad1ac 100644 --- a/apps/ui/src/routes/services/[id]/configuration/version.svelte +++ b/apps/ui/src/routes/services/[id]/configuration/version.svelte @@ -31,8 +31,7 @@ import { goto } from '$app/navigation'; import { get, post } from '$lib/api'; import { t } from '$lib/translations'; - import { errorNotification } from '$lib/common'; - import { supportedServiceTypesAndVersions } from 'shared/index'; + import { errorNotification, supportedServiceTypesAndVersions } from '$lib/common'; const { id } = $page.params; const from = $page.url.searchParams.get('from'); diff --git a/apps/ui/vite.config.js b/apps/ui/vite.config.js index f60afcdf9..99685581c 100644 --- a/apps/ui/vite.config.js +++ b/apps/ui/vite.config.js @@ -7,6 +7,7 @@ export default { 'GITPOD_WORKSPACE_URL': JSON.stringify(process.env.GITPOD_WORKSPACE_URL) }, server: { + port: 3000, hmr: process.env.GITPOD_WORKSPACE_URL ? { // Due to port fowarding, we have to replace diff --git a/package.json b/package.json index fe319b255..4d7071d38 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,9 @@ "dev": "run-p -l -n dev:*", "dev:api": "NODE_ENV=development pnpm run --filter coolify-api dev", "dev:ui": "NODE_ENV=development pnpm run --filter coolify-ui dev", - "dev:shared": "NODE_ENV=development pnpm run --filter shared dev", - "build": "NODE_ENV=production pnpm build:shared && run-p -n build:api build:ui", + "build": "NODE_ENV=production run-p -n build:*", "build:api": "NODE_ENV=production pnpm run --filter coolify-api build", "build:ui": "NODE_ENV=production pnpm run --filter coolify-ui build", - "build:shared": "NODE_ENV=production pnpm run --filter shared build", "dockerlogin":"echo $DOCKER_PASS | docker login --username=$DOCKER_USER --password-stdin", "release:staging:amd": "cross-var docker buildx build --platform linux/amd64 -t coollabsio/coolify:$npm_package_version --push .", "release:local":"rm -fr ./local-serve && mkdir ./local-serve && pnpm build && cp -Rp apps/api/build/* ./local-serve && cp -Rp apps/ui/build/ ./local-serve/public && cp -Rp apps/api/prisma/ ./local-serve/prisma && cp -Rp apps/api/package.json ./local-serve && env | grep '^COOLIFY_' > ./local-serve/.env && cd ./local-serve && pnpm install . && pnpm start" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4e3a6231..88ef19cd0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,27 +2,34 @@ lockfileVersion: 5.4 importers: - local-serve: + .: + specifiers: + cross-var: 1.1.0 + npm-run-all: 4.1.5 + devDependencies: + cross-var: 1.1.0 + npm-run-all: 4.1.5 + + apps/api: specifiers: '@breejs/ts-worker': 2.0.0 - '@fastify/autoload': 5.0.0 - '@fastify/cookie': 7.0.0 + '@fastify/autoload': 5.1.0 + '@fastify/cookie': 7.1.0 '@fastify/cors': 8.0.0 '@fastify/env': 4.0.0 - '@fastify/jwt': 6.2.0 + '@fastify/jwt': 6.3.1 '@fastify/static': 6.4.0 '@iarna/toml': 2.2.5 '@prisma/client': 3.15.2 - '@types/node': 18.0.3 + '@types/node': 18.0.4 '@types/node-os-utils': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.30.5 - '@typescript-eslint/parser': 5.30.5 + '@typescript-eslint/eslint-plugin': 5.30.6 + '@typescript-eslint/parser': 5.30.6 axios: 0.27.2 bcryptjs: 2.4.3 bree: 9.1.1 cabin: 9.1.2 compare-versions: 4.1.3 - coolify-api: 'link:' cuid: 2.1.8 dayjs: 1.11.3 dockerode: 3.3.2 @@ -31,8 +38,8 @@ importers: eslint: 8.19.0 eslint-config-prettier: 8.5.0 eslint-plugin-prettier: 4.2.1 - fastify: 4.2.0 - fastify-plugin: 3.0.1 + fastify: 4.2.1 + fastify-plugin: 4.0.0 generate-password: 1.7.0 get-port: 6.1.2 got: 12.1.0 @@ -52,12 +59,12 @@ importers: typescript: 4.7.4 unique-names-generator: 4.7.1 dependencies: - '@breejs/ts-worker': 2.0.0_6iibbo7rh4755pyipjtynkbezq - '@fastify/autoload': 5.0.0 - '@fastify/cookie': 7.0.0 + '@breejs/ts-worker': 2.0.0_t3dw2jfpvj5qtbx4qztd4nt754 + '@fastify/autoload': 5.1.0 + '@fastify/cookie': 7.1.0 '@fastify/cors': 8.0.0 '@fastify/env': 4.0.0 - '@fastify/jwt': 6.2.0 + '@fastify/jwt': 6.3.1 '@fastify/static': 6.4.0 '@iarna/toml': 2.2.5 '@prisma/client': 3.15.2_prisma@3.15.2 @@ -66,13 +73,12 @@ importers: bree: 9.1.1 cabin: 9.1.2 compare-versions: 4.1.3 - coolify-api: 'link:' cuid: 2.1.8 dayjs: 1.11.3 dockerode: 3.3.2 dotenv-extended: 2.9.0 - fastify: 4.2.0 - fastify-plugin: 3.0.1 + fastify: 4.2.1 + fastify-plugin: 4.0.0 generate-password: 1.7.0 get-port: 6.1.2 got: 12.1.0 @@ -82,14 +88,14 @@ importers: node-forge: 1.3.1 node-os-utils: 1.3.7 p-queue: 7.2.0 - shared: link:../apps/shared + shared: link:../shared strip-ansi: 7.0.1 unique-names-generator: 4.7.1 devDependencies: - '@types/node': 18.0.3 + '@types/node': 18.0.4 '@types/node-os-utils': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.30.5_6zdoc3rn4mpiddqwhppni2mnnm - '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/eslint-plugin': 5.30.6_2vt5mtrqleafs33qg2bhpmbaqm + '@typescript-eslint/parser': 5.30.6_4x5o4skxv6sl53vpwefgt23khm esbuild: 0.14.49 eslint: 8.19.0 eslint-config-prettier: 8.5.0_eslint@8.19.0 @@ -101,6 +107,77 @@ importers: tsconfig-paths: 4.0.0 typescript: 4.7.4 + apps/shared: + specifiers: + esbuild: 0.14.49 + nodemon: 2.0.19 + rimraf: 3.0.2 + devDependencies: + esbuild: 0.14.49 + nodemon: 2.0.19 + rimraf: 3.0.2 + + apps/ui: + specifiers: + '@playwright/test': 1.23.3 + '@sveltejs/adapter-static': 1.0.0-next.36 + '@sveltejs/kit': 1.0.0-next.375 + '@types/js-cookie': 3.0.2 + '@typescript-eslint/eslint-plugin': 5.30.6 + '@typescript-eslint/parser': 5.30.6 + '@zerodevx/svelte-toast': 0.7.2 + autoprefixer: 10.4.7 + cuid: 2.1.8 + eslint: 8.19.0 + eslint-config-prettier: 8.5.0 + eslint-plugin-svelte3: 4.0.0 + js-cookie: 3.0.1 + p-limit: 4.0.0 + postcss: 8.4.14 + prettier: 2.7.1 + prettier-plugin-svelte: 2.7.0 + shared: workspace:* + svelte: 3.49.0 + svelte-check: 2.8.0 + svelte-preprocess: 4.10.7 + svelte-select: 4.4.7 + sveltekit-i18n: 2.2.2 + tailwindcss: 3.1.6 + tailwindcss-scrollbar: 0.1.0 + tslib: 2.4.0 + typescript: 4.7.4 + vite: ^3.0.0 + dependencies: + '@sveltejs/adapter-static': 1.0.0-next.36 + '@zerodevx/svelte-toast': 0.7.2 + cuid: 2.1.8 + js-cookie: 3.0.1 + p-limit: 4.0.0 + shared: link:../shared + svelte-select: 4.4.7 + sveltekit-i18n: 2.2.2_svelte@3.49.0 + devDependencies: + '@playwright/test': 1.23.3 + '@sveltejs/kit': 1.0.0-next.375_svelte@3.49.0+vite@3.0.0 + '@types/js-cookie': 3.0.2 + '@typescript-eslint/eslint-plugin': 5.30.6_2vt5mtrqleafs33qg2bhpmbaqm + '@typescript-eslint/parser': 5.30.6_4x5o4skxv6sl53vpwefgt23khm + autoprefixer: 10.4.7_postcss@8.4.14 + eslint: 8.19.0 + eslint-config-prettier: 8.5.0_eslint@8.19.0 + eslint-plugin-svelte3: 4.0.0_jxmmfmurkts274jdspwh3cyqve + postcss: 8.4.14 + prettier: 2.7.1 + prettier-plugin-svelte: 2.7.0_o3ioganyptcsrh6x4hnxvjkpqi + svelte: 3.49.0 + svelte-check: 2.8.0_nxvsp6sjiltnatqa6jdm4mr6zu + svelte-preprocess: 4.10.7_bgntxiihuqhg5mwaa7nczjwpga + tailwindcss: 3.1.6 + tailwindcss-scrollbar: 0.1.0_tailwindcss@3.1.6 + tslib: 2.4.0 + typescript: 4.7.4 + vite: 3.0.0 + packages: /@babel/code-frame/7.16.7: @@ -136,14 +213,14 @@ packages: engines: {node: '>= 10'} dev: false - /@breejs/ts-worker/2.0.0_6iibbo7rh4755pyipjtynkbezq: + /@breejs/ts-worker/2.0.0_t3dw2jfpvj5qtbx4qztd4nt754: resolution: {integrity: sha512-6anHRcmgYlF7mrm/YVRn6rx2cegLuiY3VBxkkimOTWC/dVQeH336imVSuIKEGKTwiuNTPr2hswVdDSneNuXg3A==} engines: {node: '>= 12.11'} peerDependencies: bree: '>=9.0.0' dependencies: bree: 9.1.1 - ts-node: 10.8.2_fxk5i3xm3ivo7fjwhcizcinpla + ts-node: 10.8.2_2zqz24ol5yhbv2blv4fh7akzrq tsconfig-paths: 4.0.0 transitivePeerDependencies: - '@swc/core' @@ -184,15 +261,16 @@ packages: fast-uri: 2.1.0 dev: false - /@fastify/autoload/5.0.0: - resolution: {integrity: sha512-hayrT8U3cUxQDvQSINGb5+TX9n9KPh9wSAB2LxPFXiKPFzfu+G1+lZ2Uh26Ej9trzq9jZlsYbx4xUzEeFVkJZw==} + /@fastify/autoload/5.1.0: + resolution: {integrity: sha512-FcZf3sy/8P6GObc6g2MrRqW1ricDtUm/xDK9i1PNH4Aaqj83DkkmADWTyQvE92OR0gy5EjPGPUcBHY7NzvHRUg==} dependencies: pkg-up: 3.1.0 dev: false - /@fastify/cookie/7.0.0: - resolution: {integrity: sha512-/JQcHR4bsFGRo39esT1GTxB0MsMd3loJxNfHYV0MRduXvdiDJd94okiCBlPOesRxwA5dJCqFNo80J7muHG+T+w==} + /@fastify/cookie/7.1.0: + resolution: {integrity: sha512-ofAlIthvJ2aWOrzdbUen1Lx09AKk2zvdaUrWh2+0aNt+gajRA7KyR8bzwCD2AwS+2nacjEuSRIyckotMHG95hQ==} dependencies: + cookie: 0.5.0 cookie-signature: 1.2.0 fastify-plugin: 3.0.1 dev: false @@ -221,13 +299,13 @@ packages: fast-json-stringify: 5.0.5 dev: false - /@fastify/jwt/6.2.0: - resolution: {integrity: sha512-j2hjMi0XP6WRZGVKUuhDHUeEg7QQ5edJoiKIYFPWON6hDdDRrUcDOsRQkNi2KPbjlzDPFGNq0d5iDK9gFVs2dA==} + /@fastify/jwt/6.3.1: + resolution: {integrity: sha512-JRcm+l7CEsK66aOraxgGGie1VuiQtg/4RALVeQULEPDWvKGL08zK0JXCtibsX3dmdzpaFxYE/9oA8vAbnQ9YTg==} dependencies: + '@fastify/error': 3.0.0 '@lukeed/ms': 2.0.0 fast-jwt: 1.5.4 - fastify-plugin: 3.0.1 - http-errors: 2.0.0 + fastify-plugin: 4.0.0 steed: 1.1.3 dev: false @@ -267,18 +345,15 @@ packages: /@jridgewell/resolve-uri/3.0.7: resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} engines: {node: '>=6.0.0'} - dev: false /@jridgewell/sourcemap-codec/1.4.13: resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} - dev: false /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.0.7 '@jridgewell/sourcemap-codec': 1.4.13 - dev: false /@ladjs/format-util/1.0.4: resolution: {integrity: sha512-hZere0rUga8kTzSTFbHREXpD9E/jwi94+B5RyLAmMIzl/w/EK1z7rFEnMHzPkU4AZkL42JWSsGXoV8LXMihybg==} @@ -310,6 +385,15 @@ packages: fastq: 1.13.0 dev: true + /@playwright/test/1.23.3: + resolution: {integrity: sha512-kR4vo2UGHC84DGqE6EwvAeaehj3xCAK6LoC1P1eu6ZGdC79rlqRKf8cFDx6q6c9T8MQSL1O9eOlup0BpwqNF0w==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@types/node': 18.0.3 + playwright-core: 1.23.3 + dev: true + /@prisma/client/3.15.2_prisma@3.15.2: resolution: {integrity: sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==} engines: {node: '>=12.6'} @@ -332,11 +416,80 @@ packages: resolution: {integrity: sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==} requiresBuild: true + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@sindresorhus/is/4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} dev: false + /@sveltejs/adapter-static/1.0.0-next.36: + resolution: {integrity: sha512-1g3W4wHPyBtUGy5zCDBA2nMG3mM36FKTP1zb0vNRBpoUmtNuzVFF74UVsHCpMC1GpPyrgOq9idfjkm4gRabisw==} + dependencies: + tiny-glob: 0.2.9 + dev: false + + /@sveltejs/kit/1.0.0-next.375_svelte@3.49.0+vite@3.0.0: + resolution: {integrity: sha512-9+gKm97TW/xIz6DfWOqdsIwGY4yckUkmMFlsJmEGkjcTy60Q6ZCfrQhMULzL/fILLydF0wZcD/fWE/urAbp2nw==} + engines: {node: '>=16.9'} + hasBin: true + peerDependencies: + svelte: ^3.44.0 + vite: ^3.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.0.0 + chokidar: 3.5.3 + sade: 1.8.1 + svelte: 3.49.0 + vite: 3.0.0 + transitivePeerDependencies: + - diff-match-patch + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.49.0+vite@3.0.0: + resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + diff-match-patch: ^1.0.5 + svelte: ^3.44.0 + vite: ^3.0.0 + peerDependenciesMeta: + diff-match-patch: + optional: true + dependencies: + '@rollup/pluginutils': 4.2.1 + debug: 4.3.4 + deepmerge: 4.2.2 + kleur: 4.1.5 + magic-string: 0.26.2 + svelte: 3.49.0 + svelte-hmr: 0.14.12_svelte@3.49.0 + vite: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltekit-i18n/base/1.2.1_svelte@3.49.0: + resolution: {integrity: sha512-F8gqG2+KAOeT0o2wYlUrW3TRCX7zaD7rBy/1CEVNw0irfw9TgFf/ODmhubkHHT3+6Zk+SMz8RNgeuffBfAMbJw==} + peerDependencies: + svelte: ^3.x + dependencies: + svelte: 3.49.0 + optionalDependencies: + '@sveltekit-i18n/parser-default': 1.0.3 + dev: false + + /@sveltekit-i18n/parser-default/1.0.3: + resolution: {integrity: sha512-HheveklTjp3hxpYQhoHfyA6B4bQaUeSV5MQf2usIv/58UF2jY/YqhCAWj9bDBjufbuZc5pSz4BXvdX3WVT+viA==} + dev: false + /@szmarczak/http-timer/5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -365,7 +518,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.0.3 + '@types/node': 18.0.4 '@types/responselike': 1.0.0 dev: false @@ -373,6 +526,10 @@ packages: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: false + /@types/js-cookie/3.0.2: + resolution: {integrity: sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==} + dev: true + /@types/json-buffer/3.0.0: resolution: {integrity: sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==} dev: false @@ -384,7 +541,7 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.0.3 + '@types/node': 18.0.4 dev: false /@types/lodash/4.14.182: @@ -397,19 +554,33 @@ packages: /@types/node/18.0.3: resolution: {integrity: sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==} + dev: true + + /@types/node/18.0.4: + resolution: {integrity: sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: false + /@types/pug/2.0.6: + resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + dev: true + /@types/responselike/1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.0.3 + '@types/node': 18.0.4 dev: false - /@typescript-eslint/eslint-plugin/5.30.5_6zdoc3rn4mpiddqwhppni2mnnm: - resolution: {integrity: sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==} + /@types/sass/1.43.1: + resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} + dependencies: + '@types/node': 18.0.3 + dev: true + + /@typescript-eslint/eslint-plugin/5.30.6_2vt5mtrqleafs33qg2bhpmbaqm: + resolution: {integrity: sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -419,10 +590,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm - '@typescript-eslint/scope-manager': 5.30.5 - '@typescript-eslint/type-utils': 5.30.5_4x5o4skxv6sl53vpwefgt23khm - '@typescript-eslint/utils': 5.30.5_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/parser': 5.30.6_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/scope-manager': 5.30.6 + '@typescript-eslint/type-utils': 5.30.6_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/utils': 5.30.6_4x5o4skxv6sl53vpwefgt23khm debug: 4.3.4 eslint: 8.19.0 functional-red-black-tree: 1.0.1 @@ -435,8 +606,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.30.5_4x5o4skxv6sl53vpwefgt23khm: - resolution: {integrity: sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==} + /@typescript-eslint/parser/5.30.6_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -445,9 +616,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.30.5 - '@typescript-eslint/types': 5.30.5 - '@typescript-eslint/typescript-estree': 5.30.5_typescript@4.7.4 + '@typescript-eslint/scope-manager': 5.30.6 + '@typescript-eslint/types': 5.30.6 + '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.7.4 debug: 4.3.4 eslint: 8.19.0 typescript: 4.7.4 @@ -455,16 +626,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.30.5: - resolution: {integrity: sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==} + /@typescript-eslint/scope-manager/5.30.6: + resolution: {integrity: sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.30.5 - '@typescript-eslint/visitor-keys': 5.30.5 + '@typescript-eslint/types': 5.30.6 + '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/type-utils/5.30.5_4x5o4skxv6sl53vpwefgt23khm: - resolution: {integrity: sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==} + /@typescript-eslint/type-utils/5.30.6_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -473,7 +644,7 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.30.5_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/utils': 5.30.6_4x5o4skxv6sl53vpwefgt23khm debug: 4.3.4 eslint: 8.19.0 tsutils: 3.21.0_typescript@4.7.4 @@ -482,13 +653,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.30.5: - resolution: {integrity: sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==} + /@typescript-eslint/types/5.30.6: + resolution: {integrity: sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.30.5_typescript@4.7.4: - resolution: {integrity: sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==} + /@typescript-eslint/typescript-estree/5.30.6_typescript@4.7.4: + resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -496,8 +667,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.30.5 - '@typescript-eslint/visitor-keys': 5.30.5 + '@typescript-eslint/types': 5.30.6 + '@typescript-eslint/visitor-keys': 5.30.6 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -508,16 +679,16 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.30.5_4x5o4skxv6sl53vpwefgt23khm: - resolution: {integrity: sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==} + /@typescript-eslint/utils/5.30.6_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.30.5 - '@typescript-eslint/types': 5.30.5 - '@typescript-eslint/typescript-estree': 5.30.5_typescript@4.7.4 + '@typescript-eslint/scope-manager': 5.30.6 + '@typescript-eslint/types': 5.30.6 + '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.7.4 eslint: 8.19.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.19.0 @@ -526,14 +697,18 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.30.5: - resolution: {integrity: sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==} + /@typescript-eslint/visitor-keys/5.30.6: + resolution: {integrity: sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.30.5 + '@typescript-eslint/types': 5.30.6 eslint-visitor-keys: 3.3.0 dev: true + /@zerodevx/svelte-toast/0.7.2: + resolution: {integrity: sha512-vWiY6IqsstcOoQ8PFBuFuxgPkj1JFAGhUF9gC7wLx7c5A9SSfdtxWs/39ekGSIeyJK0yqWhTcmzGrCEWSELzDw==} + dev: false + /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true @@ -557,11 +732,30 @@ packages: acorn: 8.7.1 dev: true + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: false + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn/8.7.1: resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} engines: {node: '>=0.4.0'} @@ -599,6 +793,11 @@ packages: engines: {node: '>=6'} dev: false + /ansi-regex/2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -609,12 +808,16 @@ packages: engines: {node: '>=12'} dev: false + /ansi-styles/2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: false /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -639,6 +842,10 @@ packages: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: false + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -681,6 +888,22 @@ packages: typpy: 2.3.11 dev: false + /autoprefixer/10.4.7_postcss@8.4.14: + resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.2 + caniuse-lite: 1.0.30001366 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + /avvio/8.1.3: resolution: {integrity: sha512-tl9TC0yDRKzP6gFLkrInqPyx8AkfBC/0QRnwkE9Jo31+OJjLrE/73GJuE0QgSB0Vpv38CTJJZGqU9hczowclWw==} dependencies: @@ -720,6 +943,681 @@ packages: - debug dev: false + /babel-code-frame/6.26.0: + resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + dev: true + + /babel-core/6.26.3: + resolution: {integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==} + dependencies: + babel-code-frame: 6.26.0 + babel-generator: 6.26.1 + babel-helpers: 6.24.1 + babel-messages: 6.23.0 + babel-register: 6.26.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + convert-source-map: 1.8.0 + debug: 2.6.9 + json5: 0.5.1 + lodash: 4.17.21 + minimatch: 3.1.2 + path-is-absolute: 1.0.1 + private: 0.1.8 + slash: 1.0.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-generator/6.26.1: + resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} + dependencies: + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + detect-indent: 4.0.0 + jsesc: 1.3.0 + lodash: 4.17.21 + source-map: 0.5.7 + trim-right: 1.0.1 + dev: true + + /babel-helper-bindify-decorators/6.24.1: + resolution: {integrity: sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ==} + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: + resolution: {integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==} + dependencies: + babel-helper-explode-assignable-expression: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-call-delegate/6.24.1: + resolution: {integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==} + dependencies: + babel-helper-hoist-variables: 6.24.1 + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-define-map/6.26.0: + resolution: {integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==} + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-explode-assignable-expression/6.24.1: + resolution: {integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==} + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-explode-class/6.24.1: + resolution: {integrity: sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA==} + dependencies: + babel-helper-bindify-decorators: 6.24.1 + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-function-name/6.24.1: + resolution: {integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==} + dependencies: + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-get-function-arity/6.24.1: + resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-hoist-variables/6.24.1: + resolution: {integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-optimise-call-expression/6.24.1: + resolution: {integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-helper-regex/6.26.0: + resolution: {integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + dev: true + + /babel-helper-remap-async-to-generator/6.24.1: + resolution: {integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==} + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-replace-supers/6.24.1: + resolution: {integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==} + dependencies: + babel-helper-optimise-call-expression: 6.24.1 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helpers/6.24.1: + resolution: {integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==} + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-messages/6.23.0: + resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-check-es2015-constants/6.22.0: + resolution: {integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-syntax-async-functions/6.13.0: + resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} + dev: true + + /babel-plugin-syntax-async-generators/6.13.0: + resolution: {integrity: sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg==} + dev: true + + /babel-plugin-syntax-class-constructor-call/6.18.0: + resolution: {integrity: sha512-EEuBcXz/wZ81Jaac0LnMHtD4Mfz9XWn2oH2Xj+CHwz2SZWUqqdtR2BgWPSdTGMmxN/5KLSh4PImt9+9ZedDarA==} + dev: true + + /babel-plugin-syntax-class-properties/6.13.0: + resolution: {integrity: sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==} + dev: true + + /babel-plugin-syntax-decorators/6.13.0: + resolution: {integrity: sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw==} + dev: true + + /babel-plugin-syntax-do-expressions/6.13.0: + resolution: {integrity: sha512-HD/5qJB9oSXzl0caxM+aRD7ENICXqcc3Up/8toDQk7zNIDE7TzsqtxC5f4t9Rwhu2Ya8l9l4j6b3vOsy+a6qxg==} + dev: true + + /babel-plugin-syntax-dynamic-import/6.18.0: + resolution: {integrity: sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==} + dev: true + + /babel-plugin-syntax-exponentiation-operator/6.13.0: + resolution: {integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==} + dev: true + + /babel-plugin-syntax-export-extensions/6.13.0: + resolution: {integrity: sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg==} + dev: true + + /babel-plugin-syntax-function-bind/6.13.0: + resolution: {integrity: sha512-m8yMoh9LIiNyeLdQs5I9G+3YXo4nqVsKQkk7YplrG4qAFbNi9hkZlow8HDHxhH9QOVFPHmy8+03NzRCdyChIKw==} + dev: true + + /babel-plugin-syntax-object-rest-spread/6.13.0: + resolution: {integrity: sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==} + dev: true + + /babel-plugin-syntax-trailing-function-commas/6.22.0: + resolution: {integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==} + dev: true + + /babel-plugin-transform-async-generator-functions/6.24.1: + resolution: {integrity: sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg==} + dependencies: + babel-helper-remap-async-to-generator: 6.24.1 + babel-plugin-syntax-async-generators: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-async-to-generator/6.24.1: + resolution: {integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==} + dependencies: + babel-helper-remap-async-to-generator: 6.24.1 + babel-plugin-syntax-async-functions: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-class-constructor-call/6.24.1: + resolution: {integrity: sha512-RvYukT1Nh7njz8P8326ztpQUGCKwmjgu6aRIx1lkvylWITYcskg29vy1Kp8WXIq7FvhXsz0Crf2kS94bjB690A==} + dependencies: + babel-plugin-syntax-class-constructor-call: 6.18.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-class-properties/6.24.1: + resolution: {integrity: sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==} + dependencies: + babel-helper-function-name: 6.24.1 + babel-plugin-syntax-class-properties: 6.13.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-decorators/6.24.1: + resolution: {integrity: sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew==} + dependencies: + babel-helper-explode-class: 6.24.1 + babel-plugin-syntax-decorators: 6.13.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-do-expressions/6.22.0: + resolution: {integrity: sha512-yQwYqYg+Tnj1InA8W1rsItsZVhkv1Euc4KVua9ledtPz5PDWYz7LVyy6rDBpVYUWFZj5k6GUm3YZpCbIm8Tqew==} + dependencies: + babel-plugin-syntax-do-expressions: 6.13.0 + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-arrow-functions/6.22.0: + resolution: {integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-block-scoped-functions/6.22.0: + resolution: {integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-block-scoping/6.26.0: + resolution: {integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==} + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-classes/6.24.1: + resolution: {integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==} + dependencies: + babel-helper-define-map: 6.26.0 + babel-helper-function-name: 6.24.1 + babel-helper-optimise-call-expression: 6.24.1 + babel-helper-replace-supers: 6.24.1 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-computed-properties/6.24.1: + resolution: {integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==} + dependencies: + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-destructuring/6.23.0: + resolution: {integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-duplicate-keys/6.24.1: + resolution: {integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-for-of/6.23.0: + resolution: {integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-function-name/6.24.1: + resolution: {integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==} + dependencies: + babel-helper-function-name: 6.24.1 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-literals/6.22.0: + resolution: {integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-modules-amd/6.24.1: + resolution: {integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==} + dependencies: + babel-plugin-transform-es2015-modules-commonjs: 6.26.2 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-commonjs/6.26.2: + resolution: {integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==} + dependencies: + babel-plugin-transform-strict-mode: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-systemjs/6.24.1: + resolution: {integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==} + dependencies: + babel-helper-hoist-variables: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-modules-umd/6.24.1: + resolution: {integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==} + dependencies: + babel-plugin-transform-es2015-modules-amd: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-object-super/6.24.1: + resolution: {integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==} + dependencies: + babel-helper-replace-supers: 6.24.1 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-parameters/6.24.1: + resolution: {integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==} + dependencies: + babel-helper-call-delegate: 6.24.1 + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-es2015-shorthand-properties/6.24.1: + resolution: {integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-spread/6.22.0: + resolution: {integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-sticky-regex/6.24.1: + resolution: {integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==} + dependencies: + babel-helper-regex: 6.26.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-template-literals/6.22.0: + resolution: {integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-typeof-symbol/6.23.0: + resolution: {integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-es2015-unicode-regex/6.24.1: + resolution: {integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==} + dependencies: + babel-helper-regex: 6.26.0 + babel-runtime: 6.26.0 + regexpu-core: 2.0.0 + dev: true + + /babel-plugin-transform-exponentiation-operator/6.24.1: + resolution: {integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==} + dependencies: + babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 + babel-plugin-syntax-exponentiation-operator: 6.13.0 + babel-runtime: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-export-extensions/6.22.0: + resolution: {integrity: sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg==} + dependencies: + babel-plugin-syntax-export-extensions: 6.13.0 + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-function-bind/6.22.0: + resolution: {integrity: sha512-9Ec4KYf1GurT39mlUjDSlN7HWSlB3u3mWRMogQbb+Y88lO0ZM3rJ0ADhPnQwWK9TbO6e/4E+Et1rrfGY9mFimA==} + dependencies: + babel-plugin-syntax-function-bind: 6.13.0 + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-object-rest-spread/6.26.0: + resolution: {integrity: sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==} + dependencies: + babel-plugin-syntax-object-rest-spread: 6.13.0 + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-regenerator/6.26.0: + resolution: {integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==} + dependencies: + regenerator-transform: 0.10.1 + dev: true + + /babel-plugin-transform-strict-mode/6.24.1: + resolution: {integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + dev: true + + /babel-preset-es2015/6.24.1: + resolution: {integrity: sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ==} + deprecated: '🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!' + dependencies: + babel-plugin-check-es2015-constants: 6.22.0 + babel-plugin-transform-es2015-arrow-functions: 6.22.0 + babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 + babel-plugin-transform-es2015-block-scoping: 6.26.0 + babel-plugin-transform-es2015-classes: 6.24.1 + babel-plugin-transform-es2015-computed-properties: 6.24.1 + babel-plugin-transform-es2015-destructuring: 6.23.0 + babel-plugin-transform-es2015-duplicate-keys: 6.24.1 + babel-plugin-transform-es2015-for-of: 6.23.0 + babel-plugin-transform-es2015-function-name: 6.24.1 + babel-plugin-transform-es2015-literals: 6.22.0 + babel-plugin-transform-es2015-modules-amd: 6.24.1 + babel-plugin-transform-es2015-modules-commonjs: 6.26.2 + babel-plugin-transform-es2015-modules-systemjs: 6.24.1 + babel-plugin-transform-es2015-modules-umd: 6.24.1 + babel-plugin-transform-es2015-object-super: 6.24.1 + babel-plugin-transform-es2015-parameters: 6.24.1 + babel-plugin-transform-es2015-shorthand-properties: 6.24.1 + babel-plugin-transform-es2015-spread: 6.22.0 + babel-plugin-transform-es2015-sticky-regex: 6.24.1 + babel-plugin-transform-es2015-template-literals: 6.22.0 + babel-plugin-transform-es2015-typeof-symbol: 6.23.0 + babel-plugin-transform-es2015-unicode-regex: 6.24.1 + babel-plugin-transform-regenerator: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-preset-stage-0/6.24.1: + resolution: {integrity: sha512-MJD+xBbpsApbKlzAX0sOBF+VeFaUmv5s8FSOO7SSZpes1QgphCjq/UIGRFWSmQ/0i5bqQjLGCTXGGXqcLQ9JDA==} + dependencies: + babel-plugin-transform-do-expressions: 6.22.0 + babel-plugin-transform-function-bind: 6.22.0 + babel-preset-stage-1: 6.24.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-preset-stage-1/6.24.1: + resolution: {integrity: sha512-rn+UOcd7BHDniq1SVxv2/AVVSVI1NK+hfS0I/iR6m6KbOi/aeBRcqBilqO73pd9VUpRXF2HFtlDuC9F2BEQqmg==} + dependencies: + babel-plugin-transform-class-constructor-call: 6.24.1 + babel-plugin-transform-export-extensions: 6.22.0 + babel-preset-stage-2: 6.24.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-preset-stage-2/6.24.1: + resolution: {integrity: sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og==} + dependencies: + babel-plugin-syntax-dynamic-import: 6.18.0 + babel-plugin-transform-class-properties: 6.24.1 + babel-plugin-transform-decorators: 6.24.1 + babel-preset-stage-3: 6.24.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-preset-stage-3/6.24.1: + resolution: {integrity: sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA==} + dependencies: + babel-plugin-syntax-trailing-function-commas: 6.22.0 + babel-plugin-transform-async-generator-functions: 6.24.1 + babel-plugin-transform-async-to-generator: 6.24.1 + babel-plugin-transform-exponentiation-operator: 6.24.1 + babel-plugin-transform-object-rest-spread: 6.26.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-register/6.26.0: + resolution: {integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==} + dependencies: + babel-core: 6.26.3 + babel-runtime: 6.26.0 + core-js: 2.6.12 + home-or-tmp: 2.0.0 + lodash: 4.17.21 + mkdirp: 0.5.6 + source-map-support: 0.4.18 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-runtime/6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + dev: true + + /babel-template/6.26.0: + resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-traverse/6.26.0: + resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-types/6.26.0: + resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + dev: true + + /babylon/6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + dev: true + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -798,10 +1696,25 @@ packages: resolution: {integrity: sha512-kzXheikaJsBtzUBlyVtPIY5r0soQePzjwVwT4IlDpU2RvfB5Py52gpU98M77rgqMCheoSSZvrcrdj3t6cZ3suA==} dev: false + /browserslist/4.21.2: + resolution: {integrity: sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001366 + electron-to-chromium: 1.4.191 + node-releases: 2.0.6 + update-browserslist-db: 1.0.4_browserslist@4.21.2 + dev: true + /bson-objectid/1.3.1: resolution: {integrity: sha512-eQBNQXsisEAXlwiSy8zRNZdW2xDBJaEVkTPbodYR9hGxxtE548Qq7ilYOd8WAQ86xF7NRUdiWSQ1pa/TkKiE2A==} dev: false + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + /buffer-equal-constant-time/1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: false @@ -858,18 +1771,37 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.1 - dev: false /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + /camelcase/5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: false + /caniuse-lite/1.0.30001366: + resolution: {integrity: sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==} + dev: true + + /chalk/1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -877,7 +1809,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: false /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -921,7 +1852,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: false /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -932,7 +1862,6 @@ packages: /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -988,6 +1917,12 @@ packages: engines: {node: '>=8'} dev: false + /convert-source-map/1.8.0: + resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} + dependencies: + safe-buffer: 5.1.2 + dev: true + /cookie-signature/1.2.0: resolution: {integrity: sha512-R0BOPfLGTitaKhgKROKZQN6iyq2iDQcH1DOF8nJoaWapguX5bC2w+Q/I9NmmM5lfcvEarnLZr+cCvmEYYSXvYA==} engines: {node: '>=6.6.0'} @@ -1007,6 +1942,12 @@ packages: resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} dev: false + /core-js/2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + /cpu-features/0.0.4: resolution: {integrity: sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==} engines: {node: '>=10.0.0'} @@ -1031,6 +1972,25 @@ packages: yup: 0.32.9 dev: false + /cross-spawn/5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1039,6 +1999,25 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /cross-var/1.1.0: + resolution: {integrity: sha512-wIcFax9RNm5ayuORUeJ5MLxPbfh8XdZhhUpKutIszU46Fs9UIhEdPJ7+YguM+7FxEj+68hSQVyathVsIu84SiA==} + hasBin: true + dependencies: + babel-preset-es2015: 6.24.1 + babel-preset-stage-0: 6.24.1 + babel-register: 6.26.0 + cross-spawn: 5.1.0 + exit: 0.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + /cuid/2.1.8: resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} dev: false @@ -1060,7 +2039,6 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: false /debug/3.2.7_supports-color@5.5.0: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -1099,13 +2077,24 @@ packages: /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} - dev: false /defer-to-connect/2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} dev: false + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /defined/1.0.0: + resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} + dev: true + /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1121,6 +2110,28 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: false + /detect-indent/4.0.0: + resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} + engines: {node: '>=0.10.0'} + dependencies: + repeating: 2.0.1 + dev: true + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detective/5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.0 + minimist: 1.2.6 + dev: true + /dezalgo/1.0.3: resolution: {integrity: sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==} dependencies: @@ -1128,6 +2139,10 @@ packages: wrappy: 1.0.2 dev: false + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -1140,6 +2155,10 @@ packages: path-type: 4.0.0 dev: true + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /docker-modem/3.0.5: resolution: {integrity: sha512-x1E6jxWdtoK3+ifAUWj4w5egPdTDGBpesSCErm+aKET5BnnEOvDtTP6GxcnMB1zZiv2iQ0qJZvJie+1wfIRg6Q==} engines: {node: '>= 8.0'} @@ -1211,6 +2230,10 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false + /electron-to-chromium/1.4.191: + resolution: {integrity: sha512-MeEaiuoSFh4G+rrN+Ilm1KJr8pTTZloeLurcZ+PRcthvdK1gWThje+E6baL7/7LoNctrzCncavAG/j/vpES9jg==} + dev: true + /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -1239,7 +2262,48 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: false + + /es-abstract/1.20.1: + resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.1 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.1 + object-keys: 1.1.1 + object.assign: 4.1.2 + regexp.prototype.flags: 1.4.3 + string.prototype.trimend: 1.0.5 + string.prototype.trimstart: 1.0.5 + unbox-primitive: 1.0.2 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es6-promise/3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true /esbuild-android-64/0.14.49: resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==} @@ -1449,6 +2513,11 @@ packages: esbuild-windows-arm64: 0.14.49 dev: true + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + /escape-html/1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false @@ -1456,7 +2525,6 @@ packages: /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: false /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -1489,6 +2557,16 @@ packages: prettier-linter-helpers: 1.0.0 dev: true + /eslint-plugin-svelte3/4.0.0_jxmmfmurkts274jdspwh3cyqve: + resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} + peerDependencies: + eslint: '>=8.0.0' + svelte: ^3.2.0 + dependencies: + eslint: 8.19.0 + svelte: 3.49.0 + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -1602,6 +2680,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1621,6 +2703,11 @@ packages: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false + /exit/0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1690,8 +2777,12 @@ packages: resolution: {integrity: sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==} dev: false - /fastify/4.2.0: - resolution: {integrity: sha512-0QXEp+8ceKc0fwVakeBLM/1Ss/+fc7a3auuygT+1GjbSAgHfwqxSucUuu0rYjziu32UgEZXfjItYN/a89HWKhw==} + /fastify-plugin/4.0.0: + resolution: {integrity: sha512-ZJcXPPcqkj7HFDYqbsCuOIAgIZ/sd2b+OnBxNGyxAcUDUJfIpxp4t23CwxO2E7LZpqUrIliA4TnjxTXG8mLoqw==} + dev: false + + /fastify/4.2.1: + resolution: {integrity: sha512-eyAWHN9+8IPTnhvGz+leseASGV/JZ75Y+jXXV7tid4awUjCMInY1gazZXuTD95xUW+Ve5vfgLjQ2i1i0/XJjdw==} dependencies: '@fastify/ajv-compiler': 3.1.1 '@fastify/error': 3.0.0 @@ -1820,6 +2911,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true + /fresh/0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -1842,7 +2937,6 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: false /function.name/1.0.13: resolution: {integrity: sha512-mVrqdoy5npWZyoXl4DxCeuVF6delDcQjVS9aPdvLYlBxtMTZDR2B5GVEQEoM1jJyspCqg3C0v4ABkLE7tp9xFA==} @@ -1850,10 +2944,24 @@ packages: noop6: 1.0.9 dev: false + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + functions-have-names: 1.2.3 + dev: true + /functional-red-black-tree/1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: true + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + /generate-password/1.7.0: resolution: {integrity: sha512-WPCtlfy0jexf7W5IbwxGUgpIDvsZIohbI2DAq2Q6TSlKKis+G4GT9sxvPxrZUGL8kP6WUXMWNqYnxY6DDKAdFA==} dev: false @@ -1864,7 +2972,6 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 - dev: false /get-port/6.1.2: resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} @@ -1883,6 +2990,14 @@ packages: engines: {node: '>=10'} dev: false + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + dev: true + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1926,6 +3041,15 @@ packages: type-fest: 0.20.2 dev: true + /globals/9.18.0: + resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} + engines: {node: '>=0.10.0'} + dev: true + + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -1938,6 +3062,10 @@ packages: slash: 3.0.0 dev: true + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false + /got/12.1.0: resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} engines: {node: '>=14.16'} @@ -1957,6 +3085,21 @@ packages: responselike: 2.0.0 dev: false + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /has-ansi/2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + 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'} @@ -1966,26 +3109,44 @@ packages: engines: {node: '>=8'} dev: true + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.1 + dev: true + /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: false + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: false /hexoid/1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} dev: false + /home-or-tmp/2.0.0: + resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} + engines: {node: '>=0.10.0'} + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: true + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false /http-cache-semantics/4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} @@ -2061,6 +3222,21 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: false + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /invariant/2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: true + /ip-regex/5.0.0: resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2077,7 +3253,12 @@ packages: /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - 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==} @@ -2086,16 +3267,35 @@ 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.2 + has-tostringtag: 1.0.0 + dev: true + /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: false + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + dev: true + /is-core-module/2.9.0: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 - dev: false + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true /is-extglob/1.0.0: resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} @@ -2107,6 +3307,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-finite/1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + dev: true + /is-glob/2.0.1: resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} engines: {node: '>=0.10.0'} @@ -2135,11 +3340,37 @@ packages: ip-regex: 5.0.0 dev: false + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + 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.0 + dev: true + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -2156,6 +3387,20 @@ packages: resolution: {integrity: sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==} dev: false + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + 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-uuid/1.0.2: resolution: {integrity: sha512-tCByphFcJgf2qmiMo5hMCgNAquNSagOetVetDvBXswGkNfoyEMvGH1yDlF8cbZbKnbVBr4Y5/rlpMz9umxyBkQ==} dev: false @@ -2167,6 +3412,12 @@ packages: is-invalid-path: 0.1.0 dev: false + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + /iserror/0.0.2: resolution: {integrity: sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==} dev: false @@ -2174,9 +3425,17 @@ packages: /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /js-cookie/3.0.1: + resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} + engines: {node: '>=12'} + dev: false + + /js-tokens/3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} + dev: true + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -2184,10 +3443,24 @@ packages: dependencies: argparse: 2.0.1 + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc/1.3.0: + resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} + hasBin: true + dev: true + /json-buffer/3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: false + /json-parse-better-errors/1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false @@ -2204,6 +3477,11 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5/0.5.1: + resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} + hasBin: true + dev: true + /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} @@ -2247,6 +3525,11 @@ packages: json-buffer: 3.0.1 dev: false + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + /last-commit-log/3.1.2: resolution: {integrity: sha512-xCA2dLwhRxvTj/6oPcKD12ICOr+rxDNtc3byd1rfCGawBHYf1vTrS1oiPHjWBIa8drY25W7J3arLjfJa/JngAA==} dependencies: @@ -2270,10 +3553,25 @@ packages: set-cookie-parser: 2.4.8 dev: false + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false + /load-json-file/4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.10 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -2369,7 +3667,13 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: true /lower-case/1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} @@ -2385,16 +3689,41 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /lru-cache/4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string/0.26.2: + resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: false + /memorystream/0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true + /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2447,6 +3776,11 @@ packages: engines: {node: '>=10'} dev: false + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimalistic-assert/1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: false @@ -2471,15 +3805,26 @@ packages: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.6 + dev: true + /mnemonist/0.39.1: resolution: {integrity: sha512-bY13FSvcbKLj+FaJcR2+xFZ3m2R1+BrLpavAh0BMyGSq0iPowbvYllwitlkvVyEowEYSulCMzxDaju9bC4+cow==} dependencies: obliterator: 2.0.4 dev: false + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2496,6 +3841,12 @@ packages: resolution: {integrity: sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==} dev: false + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -2504,6 +3855,10 @@ packages: resolution: {integrity: sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==} dev: false + /nice-try/1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: true + /no-case/2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} dependencies: @@ -2519,6 +3874,10 @@ packages: resolution: {integrity: sha512-fvnX9tZbR7WfCG5BAy3yO/nCLyjVWD6MghEq0z5FDfN+ZXpLWNITBdbifxQkQ25ebr16G0N7eRWJisOcMEHG3Q==} dev: false + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + dev: true + /nodemon/2.0.19: resolution: {integrity: sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==} engines: {node: '>=8.10.0'} @@ -2555,25 +3914,64 @@ packages: resolve: 1.22.0 semver: 5.7.1 validate-npm-package-license: 3.0.4 - dev: false /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + /normalize-url/6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: false + /npm-run-all/4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.7.3 + string.prototype.padend: 3.1.3 + dev: true + /numbered/1.1.0: resolution: {integrity: sha512-pv/ue2Odr7IfYOO0byC1KgBI10wo5YDauLhxY6/saNzAdAs0r1SotGCPzzCLNPL0xtrAwWRialLu23AAu9xO1g==} dev: false + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /object-inspect/1.12.1: resolution: {integrity: sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==} - dev: false + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.2: + resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true /obliterator/2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} @@ -2607,6 +4005,16 @@ packages: word-wrap: 1.2.3 dev: true + /os-homedir/1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + /p-cancelable/3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -2631,6 +4039,13 @@ packages: yocto-queue: 0.1.0 dev: false + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: false + /p-locate/3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -2701,6 +4116,14 @@ packages: iserror: 0.0.2 dev: false + /parse-json/4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -2752,24 +4175,55 @@ packages: engines: {node: '>=0.10.0'} dev: true + /path-key/2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true + /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false + + /path-type/3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true + /pidtree/0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify/3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + /pino-abstract-transport/1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: @@ -2805,6 +4259,82 @@ packages: find-up: 3.0.0 dev: false + /playwright-core/1.23.3: + resolution: {integrity: sha512-x35yzsXDyo0BIXYimLnUFNyb42c//NadUNH6IPGOteZm96oTGA1kn4Hq6qJTI1/f9wEc1F9O1DsznXIgXMil7A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /postcss-import/14.1.0_postcss@8.4.14: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-js/4.0.0_postcss@8.4.14: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.14 + dev: true + + /postcss-load-config/3.1.4_postcss@8.4.14: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.14 + yaml: 1.10.2 + dev: true + + /postcss-nested/5.0.6_postcss@8.4.14: + resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss/8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2817,6 +4347,16 @@ packages: fast-diff: 1.2.0 dev: true + /prettier-plugin-svelte/2.7.0_o3ioganyptcsrh6x4hnxvjkpqi: + resolution: {integrity: sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==} + peerDependencies: + prettier: ^1.16.4 || ^2.0.0 + svelte: ^3.2.0 + dependencies: + prettier: 2.7.1 + svelte: 3.49.0 + dev: true + /prettier/2.7.1: resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} engines: {node: '>=10.13.0'} @@ -2831,6 +4371,11 @@ packages: dependencies: '@prisma/engines': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e + /private/0.1.8: + resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} + engines: {node: '>= 0.6'} + dev: true + /process-warning/1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false @@ -2851,6 +4396,10 @@ packages: ipaddr.js: 1.9.1 dev: false + /pseudomap/1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + /pstree.remy/1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} dev: true @@ -2892,13 +4441,18 @@ packages: /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - dev: false /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: false + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -2908,6 +4462,15 @@ packages: type-fest: 0.8.1 dev: false + /read-pkg/3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -2946,15 +4509,66 @@ packages: engines: {node: '>= 12.13.0'} dev: false + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime/0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: true + /regenerator-runtime/0.13.9: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} dev: false + /regenerator-transform/0.10.1: + resolution: {integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==} + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + private: 0.1.8 + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true + /regexpu-core/2.0.0: + resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} + dependencies: + regenerate: 1.4.2 + regjsgen: 0.2.0 + regjsparser: 0.1.5 + dev: true + + /regjsgen/0.2.0: + resolution: {integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==} + dev: true + + /regjsparser/0.1.5: + resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /repeating/2.0.1: + resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} + engines: {node: '>=0.10.0'} + dependencies: + is-finite: 1.1.0 + dev: true + /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -2980,7 +4594,15 @@ packages: is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true /responselike/2.0.0: resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==} @@ -3001,6 +4623,13 @@ packages: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: false + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -3008,12 +4637,31 @@ packages: glob: 7.2.3 dev: true + /rollup/2.77.0: + resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false @@ -3037,6 +4685,15 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false + /sander/0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + /secure-json-parse/2.4.0: resolution: {integrity: sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==} dev: false @@ -3090,23 +4747,38 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false + /shebang-command/1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + /shebang-regex/1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shell-quote/1.7.3: + resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} + dev: true + /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.1 object-inspect: 1.12.1 - dev: false /simple-update-notifier/1.0.7: resolution: {integrity: sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==} @@ -3115,6 +4787,11 @@ packages: semver: 7.0.0 dev: true + /slash/1.0.0: + resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} + engines: {node: '>=0.10.0'} + dev: true + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -3126,27 +4803,53 @@ packages: atomic-sleep: 1.0.0 dev: false + /sorcery/0.10.0: + resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} + hasBin: true + dependencies: + buffer-crc32: 0.2.13 + minimist: 1.2.6 + sander: 0.5.1 + sourcemap-codec: 1.4.8 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-support/0.4.18: + resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} + dependencies: + source-map: 0.5.7 + dev: true + + /source-map/0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + dev: true + /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.11 - dev: false /spdx-exceptions/2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: false /spdx-expression-parse/3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.11 - dev: false /spdx-license-ids/3.0.11: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} - dev: false /split-ca/1.0.1: resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} @@ -3184,12 +4887,44 @@ packages: reusify: 1.0.4 dev: false + /string.prototype.padend/3.1.3: + resolution: {integrity: sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.trimend/1.0.5: + resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.trimstart/1.0.5: + resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: false + /strip-ansi/3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3208,6 +4943,13 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -3232,6 +4974,11 @@ packages: - supports-color dev: false + /supports-color/2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -3248,8 +4995,153 @@ packages: /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + + /svelte-check/2.8.0_nxvsp6sjiltnatqa6jdm4mr6zu: + resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==} + hasBin: true + peerDependencies: + svelte: ^3.24.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + chokidar: 3.5.3 + fast-glob: 3.2.11 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 3.49.0 + svelte-preprocess: 4.10.7_bgntxiihuqhg5mwaa7nczjwpga + typescript: 4.7.4 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - node-sass + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-hmr/0.14.12_svelte@3.49.0: + resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: '>=3.19.0' + dependencies: + svelte: 3.49.0 + dev: true + + /svelte-preprocess/4.10.7_bgntxiihuqhg5mwaa7nczjwpga: + resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} + engines: {node: '>= 9.11.2'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + node-sass: '*' + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 + svelte: ^3.23.0 + typescript: ^3.9.5 || ^4.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + node-sass: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': 2.0.6 + '@types/sass': 1.43.1 + detect-indent: 6.1.0 + magic-string: 0.25.9 + postcss: 8.4.14 + sorcery: 0.10.0 + strip-indent: 3.0.0 + svelte: 3.49.0 + typescript: 4.7.4 + dev: true + + /svelte-select/4.4.7: + resolution: {integrity: sha512-fIf9Z8rPI6F8naHZ9wjXT0Pv5gLyhdHAFkHFJnCfVVfELE8e82uOoF0xEVQP6Kir+b4Q5yOvNAzZ61WbSU6A0A==} dev: false + /svelte/3.49.0: + resolution: {integrity: sha512-+lmjic1pApJWDfPCpUUTc1m8azDqYCG1JN9YEngrx/hUyIcFJo6VZhj0A1Ai0wqoHcEIuQy+e9tk+4uDgdtsFA==} + engines: {node: '>= 8'} + + /sveltekit-i18n/2.2.2_svelte@3.49.0: + resolution: {integrity: sha512-6eygICleGCSL7elY7A3trF8XUhV+mlW56ZSoD0UUKXlw+Y6u0MTTHDq48u1LyY73SfnlbPHXgTarhTjZ0BvUKA==} + peerDependencies: + svelte: ^3.x + dependencies: + '@sveltekit-i18n/base': 1.2.1_svelte@3.49.0 + '@sveltekit-i18n/parser-default': 1.0.3 + svelte: 3.49.0 + dev: false + + /tailwindcss-scrollbar/0.1.0_tailwindcss@3.1.6: + resolution: {integrity: sha512-egipxw4ooQDh94x02XQpPck0P0sfwazwoUGfA9SedPATIuYDR+6qe8d31Gl7YsSMRiOKDkkqfI0kBvEw9lT/Hg==} + peerDependencies: + tailwindcss: '>= 2.x.x' + dependencies: + tailwindcss: 3.1.6 + dev: true + + /tailwindcss/3.1.6: + resolution: {integrity: sha512-7skAOY56erZAFQssT1xkpk+kWt2NrO45kORlxFPXUt3CiGsVPhH1smuH5XoDH6sGPXLyBv+zgCKA2HWBsgCytg==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.11 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.14 + postcss-import: 14.1.0_postcss@8.4.14 + postcss-js: 4.0.0_postcss@8.4.14 + postcss-load-config: 3.1.4_postcss@8.4.14 + postcss-nested: 5.0.6_postcss@8.4.14 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: true + /tar-fs/2.0.1: resolution: {integrity: sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==} dependencies: @@ -3280,11 +5172,23 @@ packages: real-require: 0.1.0 dev: false + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: false + /tiny-lru/8.0.2: resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} engines: {node: '>=6'} dev: false + /to-fast-properties/1.0.3: + resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + engines: {node: '>=0.10.0'} + dev: true + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3308,7 +5212,12 @@ packages: nopt: 1.0.10 dev: true - /ts-node/10.8.2_fxk5i3xm3ivo7fjwhcizcinpla: + /trim-right/1.0.1: + resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} + engines: {node: '>=0.10.0'} + dev: true + + /ts-node/10.8.2_2zqz24ol5yhbv2blv4fh7akzrq: resolution: {integrity: sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==} hasBin: true peerDependencies: @@ -3327,7 +5236,7 @@ packages: '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 18.0.3 + '@types/node': 18.0.4 acorn: 8.7.1 acorn-walk: 8.2.0 arg: 4.1.3 @@ -3350,6 +5259,10 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: true + /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -3397,6 +5310,15 @@ packages: function.name: 1.0.13 dev: false + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + /undefsafe/2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true @@ -3406,6 +5328,17 @@ packages: engines: {node: '>=8'} dev: false + /update-browserslist-db/1.0.4_browserslist@4.21.2: + resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -3420,7 +5353,6 @@ packages: /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -3435,13 +5367,56 @@ packages: dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 - dev: false /vary/1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false + /vite/3.0.0: + resolution: {integrity: sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA==} + engines: {node: '>=14.18.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.14.49 + postcss: 8.4.14 + resolve: 1.22.1 + rollup: 2.77.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /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/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3460,11 +5435,19 @@ packages: /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - dev: false + + /yallist/2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -3475,6 +5458,11 @@ packages: engines: {node: '>=10'} dev: false + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: false + /yup/0.32.9: resolution: {integrity: sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==} engines: {node: '>=10'} From 017ba61dc9458be5f99f7bbc9b3e9ecd5a843cdf Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Mon, 18 Jul 2022 07:26:32 +0000 Subject: [PATCH 08/12] fix: gitlab custom url --- apps/ui/src/routes/sources/[id]/_Gitlab.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ui/src/routes/sources/[id]/_Gitlab.svelte b/apps/ui/src/routes/sources/[id]/_Gitlab.svelte index 77db14eea..694f41c53 100644 --- a/apps/ui/src/routes/sources/[id]/_Gitlab.svelte +++ b/apps/ui/src/routes/sources/[id]/_Gitlab.svelte @@ -225,7 +225,7 @@ disabled={source.gitlabAppId} readonly={source.gitlabAppId} required - value={source.apiUrl} + bind:value={source.apiUrl} />
From 60a53bb812506f8c4357564a2501667d298d8d1b Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Mon, 18 Jul 2022 07:45:29 +0000 Subject: [PATCH 09/12] fix: location url for services and apps --- apps/ui/src/lib/store.ts | 16 +++++++++++++- .../routes/applications/[id]/__layout.svelte | 21 ++++++++----------- .../src/routes/applications/[id]/index.svelte | 4 ++-- .../services/[id]/_Services/_Services.svelte | 3 ++- .../src/routes/services/[id]/__layout.svelte | 18 ++++++---------- 5 files changed, 34 insertions(+), 28 deletions(-) diff --git a/apps/ui/src/lib/store.ts b/apps/ui/src/lib/store.ts index 668477fa8..245e8d6eb 100644 --- a/apps/ui/src/lib/store.ts +++ b/apps/ui/src/lib/store.ts @@ -44,7 +44,7 @@ export const status: Writable = writable({ initialLoading: true, loading: false, isRunning: false - }, + }, database: { initialLoading: true, loading: false, @@ -57,3 +57,17 @@ export const features = readable({ beta: window.localStorage.getItem('beta') === 'true', latestVersion: window.localStorage.getItem('latestVersion') }); + +export const location: Writable = writable(null) +export const setLocation = (resource: any) => { + console.log(GITPOD_WORKSPACE_URL) + if (GITPOD_WORKSPACE_URL && resource.exposePort) { + const { href } = new URL(GITPOD_WORKSPACE_URL); + const newURL = href + .replace('https://', `https://${resource.exposePort}-`) + .replace(/\/$/, ''); + location.set(newURL) + } else { + location.set(resource.fqdn) + } +} \ No newline at end of file diff --git a/apps/ui/src/routes/applications/[id]/__layout.svelte b/apps/ui/src/routes/applications/[id]/__layout.svelte index d016346dc..02a1bd330 100644 --- a/apps/ui/src/routes/applications/[id]/__layout.svelte +++ b/apps/ui/src/routes/applications/[id]/__layout.svelte @@ -62,12 +62,13 @@ import { toast } from '@zerodevx/svelte-toast'; import { onDestroy, onMount } from 'svelte'; import { t } from '$lib/translations'; - import { appSession, disabledButton, status } from '$lib/store'; + import { appSession, disabledButton, status, location, setLocation } from '$lib/store'; import { errorNotification, handlerNotFoundLoad } from '$lib/common'; import Loading from '$lib/components/Loading.svelte'; let loading = false; let statusInterval: any; + $disabledButton = !$appSession.isAdmin || !application.fqdn || @@ -75,14 +76,7 @@ !application.repository || !application.destinationDocker || !application.buildPack; - let location = application.fqdn || null; - if (GITPOD_WORKSPACE_URL && application.exposePort) { - const { href } = new URL(GITPOD_WORKSPACE_URL); - const newURL = href - .replace('https://', `https://${application.exposePort}-`) - .replace(/\/$/, ''); - location = newURL; - } + const { id } = $page.params; async function handleDeploySubmit() { @@ -134,9 +128,12 @@ } onDestroy(() => { $status.application.initialLoading = true; + $location = null; clearInterval(statusInterval); }); onMount(async () => { + setLocation(application); + $status.application.isRunning = false; $status.application.isExited = false; $status.application.loading = false; @@ -155,9 +152,9 @@ {#if loading} {:else} - {#if location} + {#if $location} {/if} - +
{#if $status.application.isExited} { $status.service.initialLoading = true; + $location = null; clearInterval(statusInterval); }); onMount(async () => { + setLocation(service); $status.service.isRunning = false; $status.service.loading = false; if (service.type && service.destinationDockerId && service.version && service.fqdn) { @@ -156,9 +150,9 @@ {:else} {#if service.type && service.destinationDockerId && service.version} - {#if location} + {#if $location} +
{/if} -
{#if $status.service.initialLoading}