From 5fc730b5bcbe3f7408a3b10dccf3fa36d68a9d02 Mon Sep 17 00:00:00 2001 From: Jonas Zohren <git-pbkyr@jzohren.de> Date: Sat, 8 Jul 2023 17:04:38 +0200 Subject: [PATCH] Move to SvelteKit --- .dockerignore | 19 +- .eslintignore | 13 + .eslintrc.cjs | 14 + .gitignore | 11 +- .gitlab-ci.yml | 98 +- .npmrc | 2 + .prettierignore | 13 + .prettierrc | 9 + Dockerfile | 46 +- LICENSE | 15 + README.md | 101 +- check_envs.js | 63 - docker-compose.yml | 26 + generate_template_file.sh | 4 - generate_transcript.js | 233 -- jsconfig.json | 17 + package-lock.json | 1979 -------------- package.json | 49 +- pnpm-lock.yaml | 2286 +++++++++++++++++ public/app.html | 204 -- public/index.html | 48 - router.js | 28 - screenshot.png | Bin 0 -> 148003 bytes server.js | 77 - src/app.d.ts | 12 + src/app.html | 14 + src/index.test.js | 7 + src/lib/oauth/gitlab.js | 32 + src/lib/oauth/zammad.js | 46 + src/lib/templating/gitlab.js | 129 + src/lib/templating/templating.js | 40 + src/lib/templating/utils.js | 31 + src/lib/templating/zammad.js | 58 + src/routes/+layout.svelte | 33 + src/routes/+page.server.js | 15 + src/routes/+page.svelte | 131 + .../auth/gitlab/callback/+page.server.js | 17 + src/routes/auth/gitlab/login/+page.server.js | 19 + .../auth/zammad/callback/+page.server.js | 17 + src/routes/auth/zammad/login/+page.server.js | 18 + src/routes/template/+page.server.js | 33 + src/routes/template/+page.svelte | 47 + src/template.mustache.md | 165 ++ static/favicon.png | Bin 0 -> 861 bytes static/gitlab-logo-500.svg | 56 + static/water.min.css | 1220 +++++++++ static/zammad_logo_70x61.png | Bin 0 -> 3316 bytes svelte.config.js | 13 + transcript_template.md | 184 -- vite.config.js | 9 + 50 files changed, 4757 insertions(+), 2944 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 LICENSE delete mode 100644 check_envs.js create mode 100644 docker-compose.yml delete mode 100644 generate_template_file.sh delete mode 100644 generate_transcript.js create mode 100644 jsconfig.json delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml delete mode 100644 public/app.html delete mode 100644 public/index.html delete mode 100644 router.js create mode 100644 screenshot.png delete mode 100644 server.js create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/index.test.js create mode 100644 src/lib/oauth/gitlab.js create mode 100644 src/lib/oauth/zammad.js create mode 100644 src/lib/templating/gitlab.js create mode 100644 src/lib/templating/templating.js create mode 100644 src/lib/templating/utils.js create mode 100644 src/lib/templating/zammad.js create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.server.js create mode 100644 src/routes/+page.svelte create mode 100644 src/routes/auth/gitlab/callback/+page.server.js create mode 100644 src/routes/auth/gitlab/login/+page.server.js create mode 100644 src/routes/auth/zammad/callback/+page.server.js create mode 100644 src/routes/auth/zammad/login/+page.server.js create mode 100644 src/routes/template/+page.server.js create mode 100644 src/routes/template/+page.svelte create mode 100644 src/template.mustache.md create mode 100644 static/favicon.png create mode 100644 static/gitlab-logo-500.svg create mode 100644 static/water.min.css create mode 100644 static/zammad_logo_70x61.png create mode 100644 svelte.config.js delete mode 100644 transcript_template.md create mode 100644 vite.config.js diff --git a/.dockerignore b/.dockerignore index 8526990..cb36e78 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,20 @@ +.DS_Store node_modules -npm-debug.log +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* Dockerfile .dockerignore -launch.sh +.docker-compose.yml +README.md +.prettier* +.gitignore +.gitlab-ci.yml +.exlint* +*.env +LICENSE \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..29c1d31 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,14 @@ +module.exports = { + root: true, + extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + } +}; diff --git a/.gitignore b/.gitignore index 2053e57..6635cf5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ -node_modules/ -launch.sh +.DS_Store +node_modules +/build +/.svelte-kit +/package .env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9b37268..6bbb91e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,11 +1,89 @@ -build: - stage: build +stages: + - 'test' + - 'build' + - 'deploy' + +.pnpm: + image: node:20-alpine + before_script: + - corepack enable + - corepack prepare pnpm@latest-8 --activate + - pnpm config set store-dir .pnpm-store + cache: + key: + files: + - pnpm-lock.yaml + paths: + - .pnpm-store + +unit tests: + extends: '.pnpm' + stage: 'test' + script: + - pnpm install --ignore-scripts + - pnpm run test:unit run --reporter junit --outputFile vitest.junit.xml --passWithNoTests + artifacts: + when: 'always' + expire_in: '30 days' + paths: + - 'vitest.junit.xml' + reports: + junit: 'vitest.junit.xml' + +build test: + extends: '.pnpm' + stage: 'test' + variables: + PUBLIC_URL_SOURCE_CODE: '${CI_PROJECT_URL}' + PUBLIC_BUILD_INFO: '${CI_JOB_STARTED_AT}' + script: + - pnpm install --ignore-scripts + - time pnpm run build + +lint: + extends: '.pnpm' + stage: 'test' + script: + - pnpm install --ignore-scripts + - pnpm lint + +docker: + stage: 'build' + variables: + GIT_SUBMODULE_STRATEGY: 'recursive' + DOCKER_TLS_CERTDIR: '/certs' + DOCKER_BUILDKIT: 1 + IMAGE_TAG_SLUG: '${CI_REGISTRY_IMAGE}:latest' + IMAGE_TAG_ID_SHA: '${CI_REGISTRY_IMAGE}:commit-${CI_COMMIT_SHORT_SHA}' + BUILD_CACHE_TAG: '${CI_REGISTRY_IMAGE}/buildcache:ci' image: - name: gcr.io/kaniko-project/executor:debug - entrypoint: [""] - script: - - mkdir -p /kaniko/.docker - - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:latest --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - only: - - main + name: docker.io/docker + services: + - name: docker.io/docker:dind + alias: docker + before_script: + - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY} + script: + - docker context create ci-context + - docker buildx create --driver=docker-container --use ci-context + - docker buildx build + --pull + --cache-from=type=registry,ref=${BUILD_CACHE_TAG} + --cache-to=type=registry,mode=max,compression=zstd,ignore-error=true,ref=${BUILD_CACHE_TAG} + --build-arg "PUBLIC_URL_SOURCE_CODE=${CI_PROJECT_URL}" + --provenance=false + --tag ${IMAGE_TAG_SLUG} + --tag ${IMAGE_TAG_ID_SHA} + --push + --ulimit nofile=2048 + ${CI_PROJECT_DIR} + rules: + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + +include: + # Do not run duplicate pipelines for branches + merge requests + # See https://docs.gitlab.com/ee/ci/yaml/workflow.html#workflowrules-templates + - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml' + # Scan for security issues in dependencies: + # See https://docs.gitlab.com/ee/user/application_security/dependency_scanning/ + - template: Jobs/Dependency-Scanning.gitlab-ci.yml diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..0c05da4 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +engine-strict=true +resolution-mode=highest diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a77fdde --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/Dockerfile b/Dockerfile index 87f60bc..a58b7b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,30 @@ -FROM node:18-alpine - -RUN apk add --no-cache ca-certificates wget \ - && wget -O /tmp/pandoc.tar.gz https://github.com/jgm/pandoc/releases/download/2.12/pandoc-2.12-linux-amd64.tar.gz \ - && tar xvzf /tmp/pandoc.tar.gz --strip-components 1 -C /usr/local/ \ - && update-ca-certificates \ - && apk del wget \ - && rm /tmp/pandoc.tar.gz - -RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app -WORKDIR /home/node/app -COPY package*.json ./ -RUN npm install -COPY --chown=node:node . . - -USER node +# syntax=docker/dockerfile:1.5 +FROM docker.io/node:20-alpine AS build + +# Enable the use of pnpm: +RUN corepack enable + +WORKDIR /app + +COPY --link package.json pnpm-lock.yaml ./ +RUN pnpm install --ignore-scripts + +COPY --link . . + +ARG PUBLIC_URL_SOURCE_CODE="" + +RUN PUBLIC_BUILD_INFO="built at $(date)" pnpm run build + +# Add SIGINT handler, so you can ctrl+c kill the docker container: +RUN echo "process.on('SIGINT', function() {process.exit();});" >> /app/build/index.js + +# ======================================================================= +FROM gcr.io/distroless/nodejs20-debian11 AS runtime + EXPOSE 3000 -CMD [ "node", "server.js" ] +CMD [ "/app/build" ] +WORKDIR /app + +# package.json needed for node to use the module format: +COPY --link package.json /app/ +COPY --link --from=build /app/build /app/build diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b424b3c --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) Jonas Zohren + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 2c420fb..5a26f43 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,49 @@ -# Template Generation Website +# FSR-Protokoll-Pad-Generator -Zur einfachen Erstellung von Protokollen gibt es Tooling, das automatisch TOPs, -To-Dos, Mails und FSRler zusammensucht und das ganze bereits in ein -vorausgefülltes Protokoll füllt. +Web-App, die für anstehende Sitzungen des Fachschaftrats Markdown-Pads vorgeneriert, in denen: -## Nutzung mit Docker (empfohlen) +- Die aktuellen Mitglieder des FSRs, +- Die anstehenden Tagesordnungspunkte (TOPs) aus GitLab-Issues, +- Die getrackten To-Dos und +- Als sitzungsrelevant markierte E-Mails aus zammad aufgelistet sind -### Vor der ersten Benutzung + -1. Installiere und starte docker auf deinem System. -2. Lege eine Datei namens `.env` an und befülle sie mit folgendem Inhalt: +## Wie kann ich das Pad-Template verändern? -```env -HEDGEDOC_URL=https://md.fachschaften.org/ -HEDGEDOC_USER=<mein-fachschaften.org-Benutzername> -HEDGEDOC_PASS=<mein-fachschaften.org-Passwort> -GITLAB_TOKEN=<mein-gitlab-token> -ZAMMAD_TOKEN=<mein-zammad-token> -``` - -3. Ersetze in der Datei `<mein-fachschaften.org-Benutzername>` und `<mein-fachschaften.org-Passwort>` durch deinen Fachschaften.org-Login -4. Ersetze in der Datei `<mein-gitlab-token>` durch einen echten Token. Gehe dazu in die [Gitlab-Einstellungen](https://gitlab.fachschaften.org/-/profile/personal_access_tokens) und generiere dir einen Access-Token (Haken bei `api` setzen). -5. Ersetze in der Datei `<mein-zammad-token>` durch einen echten Token. Hole dir dazu im [Zammad](https://zammad.oh14.de/#profile/token_access) einen Access-Token. Haken bei "Agent" setzen. -6. Falls noch nicht geschehen, logge dich mit Docker bei Gitlab ein. Führe dazu den folgenden Befehl aus, wobei du deinen Benutzernamen und den gerade generierten GitLab-Access-Token einsetzen musst: - -```bash -docker login https://registry.gitlab.fachschaften.org/v2/tudo-fsinfo/fsr/protokoll-generator/ -u <mein-fachschaften.org-Benutzername> -p <mein-gitlab-access-token> -``` +- Bearbeite die Datei [`src/template.mustache.md`](./src/template.mustache.md) +- Eine Dokumentation der für Variablen genutzten Templating-Sprache `mustache` gibt es [hier](https://mustache.github.io/mustache.5.html) +- Die im Template verfügbaren Variablen findet sich in [`/src/lib/templating/templating.js`](./src/lib/templating/templating.js) -### Bei jeder Nutzung: +## Deployment -Sorge dafür, dass Docker gestartet ist und führe dann den folgenden Befehl aus: +Für den Produktiveinsatz empfiehlt sich das (von der CI gebaute) Docker-Image: -```bash -docker run -p 3000:3000 --env-file .env registry.gitlab.fachschaften.org/tudo-fsinfo/fsr/protokoll-generator:latest +``` +registry.gitlab.fachschaften.org/oh14-dev/fsr-protokoll-pad-generator:latest ``` -Erreichbar ist die App dann auf Port 3000 per HTTP, also unter http://localhost:3000. - -## "Manuelle" Nutzung - -### Dependencies: - -- NodeJS > 10.x -- NPM -- Pandoc -- Permission to bind to Port 3000 -- rw on /tmp/ +Unter [`docker-compose.yml`](./docker-compose.yml) ist eine Beispiel-Deployment-Config verfügbar, die alle benötigten Environment-Variablen enthält. -### Launching +Insbesondere muss in GitLab (Scope: `read_api`) und im Zammad jeweils eine OAuth2-App angelegt und deren `application_id` und `application_secret` in den Environment Variables gesetzt werden. -Einstiegspunkt ist `./server.js` +## Entwicklung -Die Konfiguration erfolgt per Umgebungsvariablen, die man am Besten -in einer `.env` Datei ablegt: +Auf Linux mit einer aktuellen NodeJS-Version (18+) und [pnpm](https://pnpm.io/installation): -```envs -HEDGEDOC_URL=https://md.fachschaften.org/ -HEDGEDOC_USER=<mein-fachschaften.org-Benutzername> -HEDGEDOC_PASS=XXXXXXXXXX -GITLAB_TOKEN=XXXXXXXXXX -ZAMMAD_TOKEN=XXXXXXXXXX +```bash +pnpm install +pnpm run dev ``` -Der Node-Prozess lädt beim Start automatisch die `.env` Datei im aktuellen -Verzeichnis. +### Release-Variante bauen: -Mit Bash kann man das Programm dann so starten: +Auf Linux mit einem aktuellen Docker: ```bash -node ./server.js +docker buildx build --load --tag "fsr-protkoll-pad-generator:dev" . ``` -- `HEDGEDOC_PASS` ist euer LDAP-Passwort für Fachschaften.org -- `GITLAB_TOKEN` bekommt man [hier](https://gitlab.fachschaften.org/-/profile/personal_access_tokens). Scope: read_api -- `ZAMMAD_TOKEN` gibt es [hier](https://zammad.oh14.de/#profile/token_access). Haken bei "Agent" setzen. +## Lizenz -Erreichbar ist die App dann auf Port 3000 per HTTP, also unter http://localhost:3000. - -## Entwicklung - -### Aufbau des Codes - -``` -├── generate_transcript.js - Holt Infos und generiert ein Protokoll -├── node_modules -├── package.json -├── package-lock.json -├── public -│ └── index.html - HTML-Formular zum Generieren -├── README.md -├── router.js - Auslieferung Formular & API-Endpunkt zum Generieren -├── server.js - Glue-Script zum Server starten. -└── transcript_template.md - Das Protokoll-Template in Pandoc-Template-Syntax -``` +[ISC License](https://choosealicense.com/licenses/isc/), the simpler MIT license diff --git a/check_envs.js b/check_envs.js deleted file mode 100644 index d189055..0000000 --- a/check_envs.js +++ /dev/null @@ -1,63 +0,0 @@ -function isNonEmptyString(value) { - return typeof value === "string" && value.length > 0; -} - -/** - * If targetEnv is empty/not set, set it to the first alias that has contains a value - * @param {string} targetEnv the name of the env that aliases should map to - * @param {string[]} aliases aliases for targetEnv - * @returns targetEnv's value or the first non empty alias value - */ -function aliasEnv(targetEnv, aliases) { - targetEnv = targetEnv.toUpperCase(); - aliases = aliases.map((alias) => alias.toUpperCase()); - if ( - typeof process.env[targetEnv] === "string" && - process.env[targetEnv].length > 0 - ) { - return process.env[targetEnv]; - } else { - for (const alias of aliases) { - const value = process.env[alias]; - if (typeof value === "string" && value.length > 0) { - process.env[targetEnv] = value; - return value; - } - } - } - // Nothing found, all empty - return undefined; -} - -/** - * Check if all envs exist and print errors otherwise. - * @param {{name: string, aliases: string[], description: string, whereToGetIt: string?}[]} envsWithDescriptions - * @returns array of error messages - */ -function checkAllEnvsExist(envsWithDescriptions) { - let errorMessages = []; - - for (const { - name, - aliases, - description, - whereToGetIt, - } of envsWithDescriptions) { - const value = aliasEnv(name, aliases); - if (!isNonEmptyString(value)) { - const aliasMessage = - aliases.length > 0 ? " (Aliases: " + aliases.join(", ") + ")" : ""; - const whereToGetItText = whereToGetIt - ? "\n└ You can request it here: " + whereToGetIt - : ""; - const errrorMessage = ` -Environment variable ${name}${aliasMessage} is not set. -└ Description: ${description}${whereToGetItText} -`; - errorMessages.push(errrorMessage); - } - } - return errorMessages; -} - -module.exports.checkAllEnvsExist = checkAllEnvsExist; diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e325230 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +--- +version: '3' + +services: + fsr-protokoll-pad-generator: + build: + context: . + dockerfile: Dockerfile + image: 'registry.gitlab.fachschaften.org/oh14-dev/fsr-protokoll-pad-generator:latest' + restart: unless-stopped + environment: + PUBLIC_URL_PRIVACY: 'https://example.com/datenschutz.html' + PUBLIC_URL_IMPRINT: 'https://example.com/imprint.html' + PUBLIC_BASE_URL: 'https://generator.example.com' + GITLAB_BASE_URL: 'https://gitlab.example.com' + GITLAB_APP_ID: 'xxxxxxxxxxxxxxxxxxxxxxxx' + GITLAB_APP_SECRET: 'xxxxxxxxxxxxxxxxxxxxxxxx' + GITLAB_TODO_PROJECT_ID: '79' + GITLAB_TOP_PROJECT_ID: '77' + GITLAB_FSR_GROUP_ID: '29' + ZAMMAD_BASE_URL: 'https://zammad.example.com' + ZAMMAD_APP_ID: 'xxxxxxxxxxxxxxxxxxxxxxxx' + ZAMMAD_APP_SECRET: 'xxxxxxxxxxxxxxxxxxxxxxxx' + ZAMMAD_MARKER_TAG: 'sitzungsrelevant' + ports: + - '80:3000' diff --git a/generate_template_file.sh b/generate_template_file.sh deleted file mode 100644 index 7616000..0000000 --- a/generate_template_file.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - - -# pandoc --metadata-file=meta.yaml --template transcript_template.md /dev/null -o out.md diff --git a/generate_transcript.js b/generate_transcript.js deleted file mode 100644 index 743c610..0000000 --- a/generate_transcript.js +++ /dev/null @@ -1,233 +0,0 @@ -const phin = require("phin"); -const fs = require("fs"); -const util = require("util"); -const exec = util.promisify(require("child_process").exec); - -const gitLabToken = process.env.GITLAB_TOKEN; -const zammadToken = process.env.ZAMMAD_TOKEN; - -const gitLabToDoUrl = - "https://gitlab.fachschaften.org/tudo-fsinfo/fsr/meta/issues/"; - -async function gitLabApiCall(url) { - return phin({ - url: url, - headers: { - "Private-Token": gitLabToken, - }, - parse: "json", - }); -} - -async function hasUserGitlabFSRAccess() { - try { - const res = await gitLabApiCall( - "https://gitlab.fachschaften.org/api/v4/projects/77/issues?per_page=1" - ); - return Array.isArray(res.body); - } catch (e) { - return false; - } -} -module.exports.hasUserGitlabFSRAccess = hasUserGitlabFSRAccess; - -async function zammadApiCall(url) { - return phin({ - url: url, - headers: { - Authorization: "Token token=" + zammadToken, - }, - parse: "json", - }); -} - -async function fetchFSRMembers() { - console.error("> Fetching FSR members from GitLab project FSR"); - const memberRes = await gitLabApiCall( - "https://gitlab.fachschaften.org/api/v4/groups/29/members" - ); - const members = memberRes.body - .map((m) => m.name) - .sort(); - return members; -} - -async function fetchTOPs() { - console.log("> Fetching TOPs from GitLab"); - const issueRes = await gitLabApiCall( - "https://gitlab.fachschaften.org/api/v4/projects/77/issues?state=opened&per_page=100&sort=asc" - ); - - const tops = issueRes.body - // Filter for TOPs - .filter((i) => i.labels.some((l) => l === "TOP" || l === "Fin-TOP")) - .map((i) => ({ - isFin: i.labels.some((l) => l === "Fin-TOP"), - title: i.title, - origin: i.assignees.length > 0 ? i.assignees[0].name : i.author.name, - hasComments: i.user_notes_count > 0, - description: i.description, - issue: i.iid, - })); - return tops; -} - -async function fetchReports() { - console.log("> Fetching Reports from GitLab"); - const issueRes = await gitLabApiCall( - "https://gitlab.fachschaften.org/api/v4/projects/77/issues?state=opened&per_page=100&sort=asc" - ); - - const reports = issueRes.body - // Filter for Reports - .filter((i) => i.labels.some((l) => l === "Bericht")) - .map((i) => ({ - title: i.title, - origin: i.assignees.length > 0 ? i.assignees[0].name : i.author.name, - hasComments: i.user_notes_count > 0, - description: i.description, - issue: i.iid, - })); - return reports; -} - -async function fetchTOPNotes(issue_id) { - console.log("> Fetching comments for issue", issue_id); - const noteRes = await gitLabApiCall( - "https://gitlab.fachschaften.org/api/v4/projects/77/issues/" + - issue_id + - "/notes?per_page=100&sort=asc" - ); - - const notes = noteRes.body - .filter((n) => !n.system) // Filter out non-comment notes - .map((n) => ({ - author: n.author.name, - text: n.body, - })); - - console.debug(notes); - - return notes; -} - -async function fetchToDos() { - console.log("> Fetching Todos from GitLab Meta Project"); - const todosRes = await gitLabApiCall( - "https://gitlab.fachschaften.org/api/v4/projects/79/issues?state=opened&labels=To-Do&per_page=100" - ); - - const todos = todosRes.body.map((t) => { - return { - title: t.title, - id: t.iid, - assignees: t.assignees.map((a) => a.name).join(", "), - }; - }); - - return todos; -} - -async function fetchMails() { - console.log("> Fetching Mails from Zammad"); - const ticketSearchRes = await zammadApiCall( - "https://zammad.oh14.de/api/v1/search?query=%23sitzungsrelevant&sort_by=id&order_by=asc" - ); - const tickets = []; - for (let r of ticketSearchRes.body.result.filter( - (e) => e.type === "Ticket" - )) { - const tr = await zammadApiCall( - "https://zammad.oh14.de/api/v1/tickets/" + r.id - ); - const ur = await zammadApiCall( - "https://zammad.oh14.de/api/v1/users/" + tr.body.customer_id - ); - - const user = ur.body; - const ticket = tr.body; - - if (ticket.state_id === 4 || ticket.state_id === 7) { - continue; // Closed (4) or deleted (7) ticket - } - - const states = await zammadApiCall( - "https://zammad.oh14.de/api/v1/ticket_states" - ); - - tickets.push({ - from: user.firstname + (user.lastname ? " " + user.lastname : ""), - subject: ticket.title, - ticketId: ticket.id, - }); - } - return tickets; -} - -function getTodayAsString() { - const today = new Date(); - const dateStrgs = { - y: today.getFullYear(), - m: ("" + (today.getMonth() + 1)).padStart(2, "0"), - d: ("" + today.getDate()).padStart(2, "0"), - }; - const dateStr = `${dateStrgs.y}-${dateStrgs.m}-${dateStrgs.d}`; - - return dateStr; -} - -function getTodayAsFancyString() { - const today = new Date(); - const dateStrgs = { - y: today.getFullYear(), - m: ("" + (today.getMonth() + 1)).padStart(2, "0"), - d: ("" + today.getDate()).padStart(2, "0"), - }; - const dateStr = `${dateStrgs.d}.${dateStrgs.m}.${dateStrgs.y}`; - - return dateStr; -} - -async function main(number) { - console.debug("> Combining TOPs with their GitLab comments"); - // Combine TOPs and reports with their comments: - let tops = await fetchTOPs(); - let reports = await fetchReports(); - for (let top of tops) { - top.comments = await fetchTOPNotes(top.issue); - } - for (let report of reports) { - report.comments = await fetchTOPNotes(report.issue); - } - - const transcriptOptions = await gatherTranscriptInfo(tops, reports, number); - - console.debug("> Generating template with pandoc"); - fs.writeFileSync("/tmp/meta.json", JSON.stringify(transcriptOptions)); - const template = await exec( - 'echo "" | pandoc --metadata-file=/tmp/meta.json --wrap=preserve --template transcript_template.md --from gfm --to markdown' - ); - return template.stdout.trim() + "\n"; -} - -module.exports.generateTranscript = main; - -async function gatherTranscriptInfo(tops, reports, number) { - const mailPromise = fetchMails(); - - const transcriptOptions = { - number: number, - present: await fetchFSRMembers(), // Assume all FSR members are present. - date: process.env.DATE || getTodayAsString(), - fancyDate: getTodayAsFancyString(), - tops: tops, - reports: reports, - todos: await fetchToDos(), - mails: await mailPromise, - head: process.env.HEAD || undefined, - transcript: process.env.TRANSCRIPT || undefined, - resolutions: process.env.RESOLUTIONS || undefined, - }; - - return transcriptOptions; -} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..fe45e13 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 10b7599..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1979 +0,0 @@ -{ - "name": "fsinfo-issues-to-transcript", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "fsinfo-issues-to-transcript", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@sentry/node": "^6.13.3", - "dotenv": "^8.2.0", - "koa": "^2.11.0", - "koa-router": "^7.4.0", - "phin": "^3.4.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.8", - "tough-cookie": "latest" - } - }, - "node_modules/@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", - "dependencies": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", - "dependencies": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", - "dependencies": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "dependencies": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", - "dependencies": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "dependencies": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/centra": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.6.0.tgz", - "integrity": "sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==" - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "dependencies": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.1.tgz", - "integrity": "sha512-USJFyZgi2l0wDgqkfD27gL4YGno7TfUkcmOe6UOLFOVuN+J7FwnNu4Dydl4CUQzraM1lBAiGed0M9OVJoT0Kqw==", - "dependencies": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "^4.3.2", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^2.0.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "engines": { - "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" - } - }, - "node_modules/koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" - }, - "node_modules/koa-convert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", - "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", - "dependencies": { - "co": "^4.6.0", - "koa-compose": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/koa-router": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-7.4.0.tgz", - "integrity": "sha512-IWhaDXeAnfDBEpWS6hkGdZ1ablgr6Q6pGdXCyK38RbzuH4LkUOpPqPw+3f8l8aTDrQmBQ7xJc0bs2yV4dzcO+g==", - "dependencies": { - "debug": "^3.1.0", - "http-errors": "^1.3.1", - "koa-compose": "^3.0.0", - "methods": "^1.0.1", - "path-to-regexp": "^1.1.1", - "urijs": "^1.19.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/koa-router/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/koa-router/node_modules/koa-compose": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw==", - "dependencies": { - "any-promise": "^1.1.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/phin": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.0.tgz", - "integrity": "sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg==", - "dependencies": { - "centra": "^2.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/ylru": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", - "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", - "engines": { - "node": ">= 4.0.0" - } - } - }, - "dependencies": { - "@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", - "requires": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "requires": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - } - }, - "@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" - }, - "@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", - "requires": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "requires": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "centra": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.6.0.tgz", - "integrity": "sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "requires": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "requires": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - } - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "requires": { - "tsscmp": "1.0.6" - } - }, - "koa": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.1.tgz", - "integrity": "sha512-USJFyZgi2l0wDgqkfD27gL4YGno7TfUkcmOe6UOLFOVuN+J7FwnNu4Dydl4CUQzraM1lBAiGed0M9OVJoT0Kqw==", - "requires": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "^4.3.2", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^2.0.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - } - }, - "koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" - }, - "koa-convert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", - "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", - "requires": { - "co": "^4.6.0", - "koa-compose": "^4.1.0" - } - }, - "koa-router": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-7.4.0.tgz", - "integrity": "sha512-IWhaDXeAnfDBEpWS6hkGdZ1ablgr6Q6pGdXCyK38RbzuH4LkUOpPqPw+3f8l8aTDrQmBQ7xJc0bs2yV4dzcO+g==", - "requires": { - "debug": "^3.1.0", - "http-errors": "^1.3.1", - "koa-compose": "^3.0.0", - "methods": "^1.0.1", - "path-to-regexp": "^1.1.1", - "urijs": "^1.19.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "koa-compose": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw==", - "requires": { - "any-promise": "^1.1.0" - } - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "phin": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.0.tgz", - "integrity": "sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg==", - "requires": { - "centra": "^2.6.0" - } - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "punycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz", - "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==" - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "ylru": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", - "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==" - } - } -} diff --git a/package.json b/package.json index 8302c3b..91aa973 100644 --- a/package.json +++ b/package.json @@ -1,21 +1,32 @@ { - "name": "fsinfo-issues-to-transcript", - "version": "1.0.0", - "description": "", - "main": "index.js", - "dependencies": { - "@sentry/node": "^6.13.3", - "dotenv": "^8.2.0", - "koa": "^2.11.0", - "koa-router": "^7.4.0", - "phin": "^3.4.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.8", - "tough-cookie": "latest" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC" + "name": "my-app", + "version": "2.0.0", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "svelte-kit sync && vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", + "test": "vitest", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@gitbeaker/rest": "^39.5.1", + "@sveltejs/adapter-node": "^1.3.1", + "@sveltejs/kit": "^1.20.4", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.30.0", + "mustache": "^4.2.0", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.10.1", + "svelte": "^4.0.0", + "svelte-check": "^3.4.3", + "typescript": "^5.0.0", + "vite": "^4.3.6", + "vitest": "^0.32.2" + }, + "type": "module" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..7719825 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2286 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +devDependencies: + '@gitbeaker/rest': + specifier: ^39.5.1 + version: 39.5.1 + '@sveltejs/adapter-node': + specifier: ^1.3.1 + version: 1.3.1(@sveltejs/kit@1.22.1) + '@sveltejs/kit': + specifier: ^1.20.4 + version: 1.22.1(svelte@4.0.5)(vite@4.4.2) + eslint: + specifier: ^8.28.0 + version: 8.44.0 + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.8.0(eslint@8.44.0) + eslint-plugin-svelte: + specifier: ^2.30.0 + version: 2.32.2(eslint@8.44.0)(svelte@4.0.5) + mustache: + specifier: ^4.2.0 + version: 4.2.0 + prettier: + specifier: ^2.8.0 + version: 2.8.8 + prettier-plugin-svelte: + specifier: ^2.10.1 + version: 2.10.1(prettier@2.8.8)(svelte@4.0.5) + svelte: + specifier: ^4.0.0 + version: 4.0.5 + svelte-check: + specifier: ^3.4.3 + version: 3.4.5(postcss@8.4.25)(svelte@4.0.5) + typescript: + specifier: ^5.0.0 + version: 5.1.6 + vite: + specifier: ^4.3.6 + version: 4.4.2(@types/node@20.4.1) + vitest: + specifier: ^0.32.2 + version: 0.32.4 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@esbuild/android-arm64@0.18.11: + resolution: {integrity: sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.11: + resolution: {integrity: sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.11: + resolution: {integrity: sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.11: + resolution: {integrity: sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.11: + resolution: {integrity: sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.11: + resolution: {integrity: sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.11: + resolution: {integrity: sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.11: + resolution: {integrity: sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.11: + resolution: {integrity: sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.11: + resolution: {integrity: sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.11: + resolution: {integrity: sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.11: + resolution: {integrity: sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.11: + resolution: {integrity: sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.11: + resolution: {integrity: sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.11: + resolution: {integrity: sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.11: + resolution: {integrity: sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.11: + resolution: {integrity: sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.11: + resolution: {integrity: sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.11: + resolution: {integrity: sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.11: + resolution: {integrity: sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.11: + resolution: {integrity: sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.11: + resolution: {integrity: sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.44.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.0: + resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.0 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.44.0: + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@gitbeaker/core@39.5.1: + resolution: {integrity: sha512-14Tw/cGEijWI2NsjlqOLZt0BhePJc2ljHFNiwSv/lDuPAnbtpqGlAWma4hDdhtm2+s/4eKL6Y/taS6I3EdinwQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@gitbeaker/requester-utils': 39.5.1 + qs: 6.11.2 + xcase: 2.0.1 + dev: true + + /@gitbeaker/requester-utils@39.5.1: + resolution: {integrity: sha512-36Hy9WgRMjVSGWg+ZE1a9pO7zxNFcR3WPVyqaGECPmfrmFtwaClHxauGCRS3W0LwFPL9paKuPTYuQnc9PxqI6Q==} + engines: {node: '>=18.0.0'} + dependencies: + qs: 6.11.2 + xcase: 2.0.1 + dev: true + + /@gitbeaker/rest@39.5.1: + resolution: {integrity: sha512-BV5O45urALYCSC7i78KsRu4NabWIbkH+NfHMMQr0HJm8BP3FWiJZFqXEJuYBbDxE0Rw8yq4QPObF9cfOGAaX1w==} + engines: {node: '>=18.0.0'} + dependencies: + '@gitbeaker/core': 39.5.1 + '@gitbeaker/requester-utils': 39.5.1 + dev: true + + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@jest/schemas@29.6.0: + resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@polka/url@1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + + /@rollup/plugin-commonjs@25.0.2(rollup@3.26.2): + resolution: {integrity: sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 3.26.2 + dev: true + + /@rollup/plugin-json@6.0.0(rollup@3.26.2): + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + rollup: 3.26.2 + dev: true + + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.2): + resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.2 + rollup: 3.26.2 + dev: true + + /@rollup/pluginutils@5.0.2(rollup@3.26.2): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.26.2 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sveltejs/adapter-node@1.3.1(@sveltejs/kit@1.22.1): + resolution: {integrity: sha512-A0VgRQDCDPzdLNoiAbcOxGw4zT1Mc+n1LwT1OmO350R7WxrEqdMUChPPOd1iMfIDWlP4ie6E2d/WQf5es2d4Zw==} + peerDependencies: + '@sveltejs/kit': ^1.0.0 + dependencies: + '@rollup/plugin-commonjs': 25.0.2(rollup@3.26.2) + '@rollup/plugin-json': 6.0.0(rollup@3.26.2) + '@rollup/plugin-node-resolve': 15.1.0(rollup@3.26.2) + '@sveltejs/kit': 1.22.1(svelte@4.0.5)(vite@4.4.2) + rollup: 3.26.2 + dev: true + + /@sveltejs/kit@1.22.1(svelte@4.0.5)(vite@4.4.2): + resolution: {integrity: sha512-idFhKVEHuCKbTETvuo3V7UShqSYX9JMKVJXP546dOTkh5ZRejo5XtKtsB5TCSwNBa0TH8hIV44/bnylaFhM1Vg==} + engines: {node: ^16.14 || >=18} + hasBin: true + requiresBuild: true + peerDependencies: + svelte: ^3.54.0 || ^4.0.0-next.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.0.5)(vite@4.4.2) + '@types/cookie': 0.5.1 + cookie: 0.5.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.1 + mime: 3.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.3 + svelte: 4.0.5 + undici: 5.22.1 + vite: 4.4.2(@types/node@20.4.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.0.5)(vite@4.4.2): + resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^2.2.0 + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.0.5)(vite@4.4.2) + debug: 4.3.4 + svelte: 4.0.5 + vite: 4.4.2(@types/node@20.4.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.0.5)(vite@4.4.2): + resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 + vite: ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.0.5)(vite@4.4.2) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.1 + svelte: 4.0.5 + svelte-hmr: 0.15.2(svelte@4.0.5) + vite: 4.4.2(@types/node@20.4.1) + vitefu: 0.2.4(vite@4.4.2) + transitivePeerDependencies: + - supports-color + dev: true + + /@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.5 + dev: true + + /@types/chai@4.3.5: + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + dev: true + + /@types/cookie@0.5.1: + resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} + dev: true + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: true + + /@types/node@20.4.1: + resolution: {integrity: sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==} + dev: true + + /@types/pug@2.0.6: + resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + dev: true + + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + + /@vitest/expect@0.32.4: + resolution: {integrity: sha512-m7EPUqmGIwIeoU763N+ivkFjTzbaBn0n9evsTOcde03ugy2avPs3kZbYmw3DkcH1j5mxhMhdamJkLQ6dM1bk/A==} + dependencies: + '@vitest/spy': 0.32.4 + '@vitest/utils': 0.32.4 + chai: 4.3.7 + dev: true + + /@vitest/runner@0.32.4: + resolution: {integrity: sha512-cHOVCkiRazobgdKLnczmz2oaKK9GJOw6ZyRcaPdssO1ej+wzHVIkWiCiNacb3TTYPdzMddYkCgMjZ4r8C0JFCw==} + dependencies: + '@vitest/utils': 0.32.4 + p-limit: 4.0.0 + pathe: 1.1.1 + dev: true + + /@vitest/snapshot@0.32.4: + resolution: {integrity: sha512-IRpyqn9t14uqsFlVI2d7DFMImGMs1Q9218of40bdQQgMePwVdmix33yMNnebXcTzDU5eiV3eUsoxxH5v0x/IQA==} + dependencies: + magic-string: 0.30.1 + pathe: 1.1.1 + pretty-format: 29.6.1 + dev: true + + /@vitest/spy@0.32.4: + resolution: {integrity: sha512-oA7rCOqVOOpE6rEoXuCOADX7Lla1LIa4hljI2MSccbpec54q+oifhziZIJXxlE/CvI2E+ElhBHzVu0VEvJGQKQ==} + dependencies: + tinyspy: 2.1.1 + dev: true + + /@vitest/utils@0.32.4: + resolution: {integrity: sha512-Gwnl8dhd1uJ+HXrYyV0eRqfmk9ek1ASE/LWfTCuWMw+d07ogHqp4hEAV28NiecimK6UY9DpSEPh+pXBA5gtTBg==} + dependencies: + diff-sequences: 29.4.3 + loupe: 2.3.6 + pretty-format: 29.6.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chai@4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /check-error@1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /code-red@1.0.3: + resolution: {integrity: sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.1 + acorn: 8.10.0 + estree-walker: 3.0.3 + periscopic: 3.1.0 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /esbuild@0.18.11: + resolution: {integrity: sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.11 + '@esbuild/android-arm64': 0.18.11 + '@esbuild/android-x64': 0.18.11 + '@esbuild/darwin-arm64': 0.18.11 + '@esbuild/darwin-x64': 0.18.11 + '@esbuild/freebsd-arm64': 0.18.11 + '@esbuild/freebsd-x64': 0.18.11 + '@esbuild/linux-arm': 0.18.11 + '@esbuild/linux-arm64': 0.18.11 + '@esbuild/linux-ia32': 0.18.11 + '@esbuild/linux-loong64': 0.18.11 + '@esbuild/linux-mips64el': 0.18.11 + '@esbuild/linux-ppc64': 0.18.11 + '@esbuild/linux-riscv64': 0.18.11 + '@esbuild/linux-s390x': 0.18.11 + '@esbuild/linux-x64': 0.18.11 + '@esbuild/netbsd-x64': 0.18.11 + '@esbuild/openbsd-x64': 0.18.11 + '@esbuild/sunos-x64': 0.18.11 + '@esbuild/win32-arm64': 0.18.11 + '@esbuild/win32-ia32': 0.18.11 + '@esbuild/win32-x64': 0.18.11 + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@8.8.0(eslint@8.44.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.44.0 + dev: true + + /eslint-plugin-svelte@2.32.2(eslint@8.44.0)(svelte@4.0.5): + resolution: {integrity: sha512-Jgbop2fNZsoxxkklZAIbDNhwAPynvnCtUXLsEC6O2qax7N/pfe2cNqT0ZoBbubXKJitQQDEyVDQ1rZs4ZWcrTA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.44.0 + esutils: 2.0.3 + known-css-properties: 0.27.0 + postcss: 8.4.25 + postcss-load-config: 3.1.4(postcss@8.4.25) + postcss-safe-parser: 6.0.0(postcss@8.4.25) + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + svelte: 4.0.5 + svelte-eslint-parser: 0.32.0(svelte@4.0.5) + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.44.0: + resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.1.0 + '@eslint/js': 8.44.0 + '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.6.0 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + graphemer: 1.4.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + + /espree@9.6.0: + resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.1 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.1 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /get-func-name@2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + 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: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.1 + dev: true + + /is-reference@3.0.1: + resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + dependencies: + '@types/estree': 1.0.1 + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /known-css-properties@0.27.0: + resolution: {integrity: sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.0 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mlly@1.4.0: + resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.1.2 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + 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 + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /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: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.1 + estree-walker: 3.0.3 + is-reference: 3.0.1 + 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 + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.0 + pathe: 1.1.1 + dev: true + + /postcss-load-config@3.1.4(postcss@8.4.25): + 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.1.0 + postcss: 8.4.25 + yaml: 1.10.2 + dev: true + + /postcss-safe-parser@6.0.0(postcss@8.4.25): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.25 + dev: true + + /postcss-scss@4.0.6(postcss@8.4.25): + resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.19 + dependencies: + postcss: 8.4.25 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss@8.4.25: + resolution: {integrity: sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + 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'} + dev: true + + /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.0.5): + resolution: {integrity: sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==} + peerDependencies: + prettier: ^1.16.4 || ^2.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 + dependencies: + prettier: 2.8.8 + svelte: 4.0.5 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-format@29.6.1: + resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.0 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /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 + dependencies: + glob: 7.2.3 + dev: true + + /rollup@3.26.2: + resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} + engines: {node: '>=14.18.0', npm: '>=8.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 + + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: true + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: true + + /sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.3.3: + resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} + dev: true + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /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'} + dev: true + + /strip-literal@1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + dependencies: + acorn: 8.10.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svelte-check@3.4.5(postcss@8.4.25)(svelte@4.0.5): + resolution: {integrity: sha512-FsD/CUVdEI0F9sfylh1Fe15kDjvvbyBxzDpACPsdq0EASgaZukBXaMXofpxlgmWsgVET3OynMQlbtUQoWCz9Rw==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + chokidar: 3.5.3 + fast-glob: 3.3.0 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.0.5 + svelte-preprocess: 5.0.4(postcss@8.4.25)(svelte@4.0.5)(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-eslint-parser@0.32.0(svelte@4.0.5): + resolution: {integrity: sha512-Q8Nh3GHHoWZMv3Ej4zw+3+gyWPR8I5pPTJXEOvW+JOgwhGXqGKh7mOKNlVcEPtk+PCGiK9TPaRtvRkKoJR327A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.6.0 + postcss: 8.4.25 + postcss-scss: 4.0.6(postcss@8.4.25) + svelte: 4.0.5 + dev: true + + /svelte-hmr@0.15.2(svelte@4.0.5): + resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0-next.0 + dependencies: + svelte: 4.0.5 + dev: true + + /svelte-preprocess@5.0.4(postcss@8.4.25)(svelte@4.0.5)(typescript@5.1.6): + resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} + engines: {node: '>= 14.10.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + 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 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + 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 + detect-indent: 6.1.0 + magic-string: 0.27.0 + postcss: 8.4.25 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.0.5 + typescript: 5.1.6 + dev: true + + /svelte@4.0.5: + resolution: {integrity: sha512-PHKPWP1wiWHBtsE57nCb8xiWB3Ht7/3Kvi3jac0XIxUM2rep8alO7YoAtgWeGD7++tFy46krilOrPW0mG3Dx+A==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + acorn: 8.10.0 + aria-query: 5.3.0 + axobject-query: 3.2.1 + code-red: 1.0.3 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.1 + locate-character: 3.0.0 + magic-string: 0.30.1 + periscopic: 3.1.0 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tinybench@2.5.0: + resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + dev: true + + /tinypool@0.5.0: + resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.1.1: + resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + engines: {node: '>=14.0.0'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ufo@1.1.2: + resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + dev: true + + /undici@5.22.1: + resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} + engines: {node: '>=14.0'} + dependencies: + busboy: 1.6.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /vite-node@0.32.4(@types/node@20.4.1): + resolution: {integrity: sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.0 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.4.2(@types/node@20.4.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@4.4.2(@types/node@20.4.1): + resolution: {integrity: sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.4.1 + esbuild: 0.18.11 + postcss: 8.4.25 + rollup: 3.26.2 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitefu@0.2.4(vite@4.4.2): + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.4.2(@types/node@20.4.1) + dev: true + + /vitest@0.32.4: + resolution: {integrity: sha512-3czFm8RnrsWwIzVDu/Ca48Y/M+qh3vOnF16czJm98Q/AN1y3B6PBsyV8Re91Ty5s7txKNjEhpgtGPcfdbh2MZg==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.5 + '@types/chai-subset': 1.3.3 + '@types/node': 20.4.1 + '@vitest/expect': 0.32.4 + '@vitest/runner': 0.32.4 + '@vitest/snapshot': 0.32.4 + '@vitest/spy': 0.32.4 + '@vitest/utils': 0.32.4 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.1 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.3.3 + strip-literal: 1.0.1 + tinybench: 2.5.0 + tinypool: 0.5.0 + vite: 4.4.2(@types/node@20.4.1) + vite-node: 0.32.4(@types/node@20.4.1) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /xcase@2.0.1: + resolution: {integrity: sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true diff --git a/public/app.html b/public/app.html deleted file mode 100644 index 41cfc87..0000000 --- a/public/app.html +++ /dev/null @@ -1,204 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Hello Bulma!</title> - <link - rel="stylesheet" - href="https://cdn.jsdelivr.net/npm/bulma@0.8.2/css/bulma.min.css" - /> - <script - defer - src="https://use.fontawesome.com/releases/v5.3.1/js/all.js" - ></script> - </head> - <body> - <section class="section"> - <div class="container"> - <h1 class="title">Protokoll vorbereiten</h1> - </div> - </section> - <section> - <div class="container"> - <p> - Du kannst hier schon einige Daten des Protokolls eintragen. Diese - werden später bereits ins Protokoll an den richtigen Stellen - eingefügt, damit du das nicht tun musst. - </p> - - <p> - <button class="button is-success is-outlined is-fullwidth"> - Daten importieren - </button> - </p> - - <hr /> - - <div class="columns"> - <div class="field column"> - <label class="label">Sitzungsnummer</label> - <div class="control has-icons-left"> - <input class="input" id="input-number" type="text" value="512" /> - <span class="icon is-small is-left"> - <i>#</i> - </span> - <p class="help"> - Wenn du keine Nummer benutzen möchtest, lass dieses Feld einfach - leer. - </p> - </div> - </div> - - <div class="field column"> - <label class="label">Datum</label> - <div class="control"> - <input id="input-date" class="input" type="date" /> - </div> - </div> - </div> - - <div class="field"> - <label class="label">Titel</label> - <div class="control"> - <input - id="input-title" - class="input" - type="text" - value="FSR-Sitzung 512 (11.11.2011)" - /> - <p class="help"> - Wenn du dieses Feld leer lässt, wird versucht aus den anderen - Daten (Datum, Nummer, ...) ein Titel zu generieren. - </p> - </div> - </div> - - <div class="columns"> - <div class="field column"> - <label class="label">Erwartete Anwesende</label> - <div class="control"> - <textarea class="textarea"></textarea> - <p class="help">Eine Zeile pro Person</p> - </div> - </div> - - <div class="field column"> - <label class="label">Erwartete Abwesende</label> - <div class="control"> - <textarea class="textarea"></textarea> - <p class="help">Eine Zeile pro Person</p> - </div> - </div> - - <div class="field column"> - <label class="label">Erwartete Gäste</label> - <div class="control"> - <textarea class="textarea"></textarea> - <p class="help">Eine Zeile pro Person</p> - </div> - </div> - </div> - - <div class="field"> - <label class="label">Tagesordnungspunkte</label> - </div> - <div class="field has-addons"> - <p class="control"> - <span class="select"> - <select> - <option>TOP</option> - <option>Fin-TOP</option> - </select> - </span> - </p> - <p class="control is-expanded"> - <input class="input" type="text" value="E-Mails" /> - </p> - </div> - <div class="field has-addons"> - <p class="control"> - <span class="select"> - <select> - <option>TOP</option> - <option>Fin-TOP</option> - </select> - </span> - </p> - <p class="control is-expanded"> - <input - class="input" - type="text" - placeholder="Neuen TOP hier eintragen" - /> - </p> - </div> - - <div class="field"> - <label class="label">Integrationsdienste</label> - </div> - - <div class="field"> - <div class="control"> - <label class="checkbox"> - <input type="checkbox" /> - Pad für dieses Protokoll erstellen - <p class="help"> - Erstellt neues Pad auf https://md.fachschaften.org/ - </p> - </label> - </div> - </div> - - <div class="field"> - <div class="control"> - <label class="checkbox"> - <input type="checkbox" /> - Padlink kopieren - </label> - </div> - </div> - - <div class="field"> - <div class="control"> - <label class="checkbox"> - <input type="checkbox" /> - Padlink verschicken - <p class="help">Link geht an fsinfo@lists.cs.tu-dortmund.de</p> - </label> - </div> - </div> - - <div class="field"> - <div class="control"> - <label class="checkbox"> - <input type="checkbox" /> - Pad automatisch in Merge-Request umwandeln - <p class="help"> - Sobald die End-Zeit eingetragen wird, wird der Padinhalt als - neuer Merge-Request auf - gitlab.fachschaften.org/tudo-fsinfo/sitzungen hinzugefügt. - </p> - </label> - </div> - </div> - - <div class="field is-grouped"> - <div class="control"> - <button class="button is-link">Submit</button> - </div> - <div class="control"> - <button class="button is-link is-light">Cancel</button> - </div> - </div> - </div> - </section> - </body> - <script> - const number = document.getElementById("input-number").value; - document.getElementById("input-date").valueAsDate = new Date(); - document.getElementById( - "input-title" - ).value = `FSR-Sitzung ${number} (${new Date().toLocaleDateString("de")})`; - </script> -</html> diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 457d1a3..0000000 --- a/public/index.html +++ /dev/null @@ -1,48 +0,0 @@ -<html> - <head> - <title>Protokoll-Generator FS Informatik TU Dortmund</title> - <style> - body { - margin: 1rem; - } - input { - margin-top: 0.5rem; - } - h1 { - font-size: larger; - } - </style> - </head> - <body> - <h1>Protokoll-Generator FS Informatik TU Dortmund</h1> - <ul> - <li> - Alte FSR-Protokolle: - <a href="https://oh14.de/protokolle">oh14.de/protokolle</a>. - </li> - <li> - Offene Protokoll-Merge-Requests: - <a - href="https://gitlab.fachschaften.org/tudo-fsinfo/fsr/sitzungen/-/merge_requests" - > - Siehe GitLab - </a> - </li> - </ul> - <form action="template" method="GET"> - <label for="number">Sitzungsnummer:</label> - <br /> - <input - type="text" - name="number" - value="" - placeholder="Sitzungsnummer eingeben" - /><br /> - <input - type="submit" - name="generateTranscript" - value="Protokoll generieren" - /> - </form> - </body> -</html> diff --git a/router.js b/router.js deleted file mode 100644 index 06053a3..0000000 --- a/router.js +++ /dev/null @@ -1,28 +0,0 @@ -const Router = require("koa-router"); -const fsp = require("fs").promises; - -const { generateTranscript } = require("./generate_transcript.js"); - -const router = new Router(); - -// Temlate erzeugen -router.get("/template", async (ctx, next) => { - ctx.assert( - ctx.query.number, - 400, - 'Required query parameter "number" missing.' - ); - const num = ctx.query.number; - - const template = await generateTranscript(num); - ctx.body = template; - -}); - -// Serve formular page -router.get("/", async (ctx, next) => { - const index = await fsp.readFile("public/index.html", { encoding: "utf8" }); - ctx.body = index; -}); - -module.exports = router; diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..adde565669eda1f76c7813ed26034ef4d3019165 GIT binary patch literal 148003 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ʹ&x%!ckxPEDYj6O=1nzJI^|=H~R%=g#S! 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 literal 0 HcmV?d00001 diff --git a/server.js b/server.js deleted file mode 100644 index 4156b54..0000000 --- a/server.js +++ /dev/null @@ -1,77 +0,0 @@ -require("dotenv").config(); - -let Sentry = null; -if (process.env.SENTRY_DSN) { - Sentry = require("@sentry/node"); - Sentry.init({ - dsn: process.env.SENTRY_DSN, - }); - console.log("Successfully connected to Sentry for error tracking."); -} else { - // Add No-OPs for Sentry methods - Sentry = { - captureException: () => {}, - captureMessage: () => {}, - }; - console.log("Not using Sentry for error tracking."); -} - -// Check if all required envs are there -const { checkAllEnvsExist } = require("./check_envs"); -const errorMessages = checkAllEnvsExist([ - { - name: "GITLAB_TOKEN", - aliases: [], - description: "A valid token with sufficient access rights for GitLab", - whereToGetIt: - "https://gitlab.fachschaften.org/-/profile/personal_access_tokens", - }, - { - name: "ZAMMAD_TOKEN", - aliases: [], - description: "A valid token with sufficient access rights for Zammad", - whereToGetIt: "https://zammad.oh14.de/#profile/token_access", - }, -]); -if (errorMessages.length > 0) { - console.error(errorMessages.join("\n")); - console.error( - "\nThe README.md file has some information about how to use this program." + - "If you think you followed these instructions but still don't know what went wrong, feel free to ask for help." - ); - process.exit(1); -} - -// Make process killable via Ctrl+C if run via docker -process.on("SIGINT", function () { - process.exit(); -}); - -async function main() { - - // Test if user is authenticated against GitLab - const { hasUserGitlabFSRAccess } = require("./generate_transcript"); - if (!(await hasUserGitlabFSRAccess())) { - console.error("Could not access FSR resource on GitLab."); - console.error( - "└ Your access token may be invalid / expired or does not have enough permission " - ); - console.error("└ Please check the README.md"); - process.exit(1); - } else { - console.debug("Successfully tested GitLab access to FSR ressources..."); - } - - const Koa = require("koa"); - const app = new Koa(); - const PORT = process.env.PORT || 3000; - - const router = require("./router.js"); - - app.use(router.routes()).use(router.allowedMethods()); - - console.log("\nStarting server on port", PORT, "..."); - console.log("Visit http://localhost:3000/ to generate a transcript\n"); - app.listen(PORT); -} -main().then("finished..."); diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..f59b884 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..54a3fb1 --- /dev/null +++ b/src/app.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="%sveltekit.assets%/favicon.png" /> + <meta name="viewport" content="width=device-width" /> + <link rel="stylesheet" href="water.min.css" /> + <title>FSR-Protokoll-Pad-Generator</title> + %sveltekit.head% + </head> + <body data-sveltekit-preload-data="hover"> + <div style="display: contents">%sveltekit.body%</div> + </body> +</html> diff --git a/src/index.test.js b/src/index.test.js new file mode 100644 index 0000000..e07cbbd --- /dev/null +++ b/src/index.test.js @@ -0,0 +1,7 @@ +import { describe, it, expect } from 'vitest'; + +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(1 + 2).toBe(3); + }); +}); diff --git a/src/lib/oauth/gitlab.js b/src/lib/oauth/gitlab.js new file mode 100644 index 0000000..7e59304 --- /dev/null +++ b/src/lib/oauth/gitlab.js @@ -0,0 +1,32 @@ +import { env } from '$env/dynamic/private'; +import { env as publicEnv } from '$env/dynamic/public'; + +/** + * Complete the second step of the oAuth2 authentication by requesting a usable token from GitLab + * @param {string} callbackCode + * @param {fetch} fetch + * @returns {Promise<[string, number]>} + */ +export async function completeGitLabAuth(callbackCode, fetch) { + const tokenUrl = new URL(env.GITLAB_BASE_URL + '/oauth/token').href; + const clientId = env.GITLAB_APP_ID; + const clientSecret = env.GITLAB_APP_SECRET; + const redirectUrl = new URL(publicEnv.PUBLIC_BASE_URL + '/auth/gitlab/callback').href; + + const params = new URLSearchParams({ + grant_type: 'authorization_code', + code: callbackCode, + redirect_uri: redirectUrl, + client_id: clientId, + client_secret: clientSecret + }); + const rawRes = await fetch(tokenUrl, { + method: 'POST', + body: params.toString(), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + const res = await rawRes.json(); + return [res.access_token, res.expires_in]; +} diff --git a/src/lib/oauth/zammad.js b/src/lib/oauth/zammad.js new file mode 100644 index 0000000..557ddcb --- /dev/null +++ b/src/lib/oauth/zammad.js @@ -0,0 +1,46 @@ +import { env as privateEnv } from '$env/dynamic/private'; +import { env as publicEnv } from '$env/dynamic/public'; + +// Useful: https://darutk.medium.com/diagrams-and-movies-of-all-the-oauth-2-0-flows-194f3c3ade85 + +/** + * Complete the second step of the oAuth2 authentication by requesting a usable token from Zammad + * @param {string} callbackCode + * @param {fetch} fetch + * @returns {Promise<[string, number]>} + */ +export async function completeZammadAuth(callbackCode, fetch) { + const tokenUrl = new URL(privateEnv.ZAMMAD_BASE_URL + '/oauth/token').href; + const clientId = privateEnv.ZAMMAD_APP_ID; + const clientSecret = privateEnv.ZAMMAD_APP_SECRET; + const redirectUrl = new URL(publicEnv.PUBLIC_BASE_URL + '/auth/zammad/callback').href; + + const params = new URLSearchParams({ + grant_type: 'authorization_code', + code: callbackCode, + redirect_uri: redirectUrl, + client_id: clientId, + client_secret: clientSecret + }); + const rawRes = await fetch(tokenUrl, { + method: 'POST', + body: params.toString(), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + const res = await rawRes.json(); + /** + * Looks like this: + * + * { + * access_token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + * token_type: 'Bearer', + * expires_in: 7200, + * refresh_token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + * scope: 'full', + * created_at: 123456789 + * } + */ + return [res.access_token, res.expires_in]; +} diff --git a/src/lib/templating/gitlab.js b/src/lib/templating/gitlab.js new file mode 100644 index 0000000..bed8f72 --- /dev/null +++ b/src/lib/templating/gitlab.js @@ -0,0 +1,129 @@ +import { env } from '$env/dynamic/private'; +import { Gitlab } from '@gitbeaker/rest'; + +export class GitLabAccessor { + /** + * @param {string} gitlabUrl Base URL for GitLab Instance + * @param {string} oauthToken User's oAuth2 API token + */ + constructor(gitlabUrl, oauthToken) { + this._apiClient = new Gitlab({ + host: gitlabUrl, + oauthToken: oauthToken, + queryTimeout: 5 * 1000 // 5 seconds + }); + } + + /** + * Checks if the current user has enough permissions to access issues in the given project + * @param {number} projectId + * @returns {Promise<boolean>} + */ + async checkIssueAccess(projectId) { + try { + const res = await this._apiClient.Issues.all({ + projectId: projectId, + perPage: 1 + }); + return Array.isArray(res); + } catch (e) { + return false; + } + } + + async getCurrentUsersName() { + const currentUser = await this._apiClient.Users.showCurrentUser(); + return currentUser.name; + } + + async getFSRMembers() { + const members = await this._apiClient.GroupMembers.all(env.GITLAB_FSR_GROUP_ID); + return members.map((m) => m.name).sort(); + } + + async getToDos() { + const issues = await this._apiClient.Issues.all({ + projectId: env.GITLAB_TODO_PROJECT_ID, + state: 'opened', + labels: 'To-Do', + perPage: 100 + }); + const todos = issues.map((t) => { + return { + title: t.title, + /** @type {string} */ + assignees: t.assignees?.map((a) => a.name).join(', ') ?? '', + issue: t.iid, + issueUrl: t.web_url + }; + }); + return todos; + } + + async getTOPs() { + const issues = await this._apiClient.Issues.all({ + projectId: env.GITLAB_TOP_PROJECT_ID, + state: 'opened', + perPage: 100, + sort: 'asc' + }); + + const tops = issues + // Filter for TOPs + .filter((i) => i?.labels?.some((l) => l === 'TOP' || l === 'Fin-TOP')) + .map((i) => ({ + isFin: i?.labels?.some((l) => l === 'Fin-TOP') ?? false, + finMarker: i?.labels?.some((l) => l === 'Fin-TOP') ?? false ? ' .fin' : '', + title: i.title, + origin: i?.assignees?.[0]?.name ?? i.author.name, + hasComments: i.user_notes_count > 0, + /** @type {{author: string; text: string; two_padded_text: string}[]} */ + comments: [], + description: i.description, + issue: i.iid, + issueUrl: i.web_url + })); + return tops; + } + + async getReports() { + const issues = await this._apiClient.Issues.all({ + projectId: env.GITLAB_TOP_PROJECT_ID, + state: 'opened', + perPage: 100, + sort: 'asc' + }); + + const reports = issues + // Filter for Reports + .filter((i) => i?.labels?.some((l) => l === 'Bericht')) + .map((i) => ({ + title: i.title, + origin: i?.assignees?.[0]?.name ?? i.author.name, + hasComments: i.user_notes_count > 0, + /** @type {{author: string; text: string; two_padded_text: string}[]} */ + comments: [], + description: i.description, + two_padded_description: i.description.replaceAll(/\n/gm, '\n '), + issue: i.iid, + issueUrl: i.web_url + })); + return reports; + } + + /** @param {number} issue_id */ + async getTOPNotes(issue_id) { + const notes = await this._apiClient.IssueNotes.all(env.GITLAB_TOP_PROJECT_ID, issue_id, { + perPage: 100, + sort: 'asc' + }); + + return notes + .filter((n) => !n.system) // Filter out non-comment notes + .map((n) => ({ + author: n.author.name, + text: n.body, + two_padded_text: n.body.replaceAll(/\n/gm, '\n ') + })); + } +} diff --git a/src/lib/templating/templating.js b/src/lib/templating/templating.js new file mode 100644 index 0000000..891fbfc --- /dev/null +++ b/src/lib/templating/templating.js @@ -0,0 +1,40 @@ +import template from '../../template.mustache.md?raw'; +import Mustache from 'mustache'; +import { getTodayAsIsoString, getTodayGermanDate } from './utils'; + +/** + * Gather data and return the pre-filled pad content + * @param {import('./zammad').ZammadAccessor} zammadClient + * @param {import('./gitlab').GitLabAccessor} gitlabClient + * @param {number} number + * @returns {Promise<string>} + */ +export async function createPadContent(zammadClient, gitlabClient, number) { + const topsProm = gitlabClient.getTOPs(); + const mailsProm = zammadClient.getRelevantMails(); + const fsrMembersProm = gitlabClient.getFSRMembers(); + const todosProm = gitlabClient.getToDos(); + const reportsProm = gitlabClient.getReports(); + const authorProm = gitlabClient.getCurrentUsersName(); + + const tops = await topsProm; + for (let top of tops) { + top.comments = await gitlabClient.getTOPNotes(top.issue); + } + + const view = { + number: number, + present: await fsrMembersProm, + absent: ['TO_BE_FILLED_IN_OR_REMOVED'], + guests: ['TO_BE_FILLED_IN_OR_REMOVED'], + isoDate: getTodayAsIsoString(), + germanDate: getTodayGermanDate(), + tops: tops, + reports: await reportsProm, + todos: await todosProm, + mails: await mailsProm, + head: 'TO_BE_FILLED_IN', + author: await authorProm + }; + return Mustache.render(template, view) + '\n'; +} diff --git a/src/lib/templating/utils.js b/src/lib/templating/utils.js new file mode 100644 index 0000000..17b7278 --- /dev/null +++ b/src/lib/templating/utils.js @@ -0,0 +1,31 @@ +/** + * Today's date in the format DD.MM.YYYY + * @returns `${number}.${number}.${number}` + */ +export function getTodayGermanDate() { + const today = new Date(); + const dateStrgs = { + y: today.getFullYear(), + m: ('' + (today.getMonth() + 1)).padStart(2, '0'), + d: ('' + today.getDate()).padStart(2, '0') + }; + const dateStr = `${dateStrgs.d}.${dateStrgs.m}.${dateStrgs.y}`; + + return dateStr; +} + +/** + * Today's date in the format YYYY-MM-DD + * @returns `${number}-${number}-${number}` + */ +export function getTodayAsIsoString() { + const today = new Date(); + const dateStrgs = { + y: today.getFullYear(), + m: ('' + (today.getMonth() + 1)).padStart(2, '0'), + d: ('' + today.getDate()).padStart(2, '0') + }; + const dateStr = `${dateStrgs.y}-${dateStrgs.m}-${dateStrgs.d}`; + + return dateStr; +} diff --git a/src/lib/templating/zammad.js b/src/lib/templating/zammad.js new file mode 100644 index 0000000..30ca288 --- /dev/null +++ b/src/lib/templating/zammad.js @@ -0,0 +1,58 @@ +import { env } from '$env/dynamic/private'; + +export class ZammadAccessor { + /** + * @param {string} apitoken oAuth2 API token of the user + */ + constructor(apitoken) { + this._zammadToken = apitoken; + } + + /** + * @param {string} url + */ + async apiCall(url) { + const rawRes = await fetch(url, { + headers: { + Authorization: 'Bearer ' + this._zammadToken, + Accept: 'application/json' + } + }); + return await rawRes.json(); + } + + async getRelevantMails() { + const url = new URL( + env.ZAMMAD_BASE_URL + + '/api/v1/search?query=%23' + + env.ZAMMAD_MARKER_TAG + + '&sort_by=id&order_by=asc' + ).href; + /** @type {{result: {type: string, id: string}[], assets: any[]}} */ + const searchResults = await this.apiCall(url); + const ticketSearchResults = searchResults.result.filter((e) => { + return e.type === 'Ticket'; + }); + + const tickets = []; + for (const searchResult of ticketSearchResults) { + const ticketUrl = new URL(env.ZAMMAD_BASE_URL + '/api/v1/tickets/' + searchResult.id).href; + /** @type {{customer_id: string, state_id: number, title: string, id: string}} */ + const ticketResponse = await this.apiCall(ticketUrl); + const ticket = ticketResponse; + + const userUrl = new URL(env.ZAMMAD_BASE_URL + '/api/v1/users/' + ticket.customer_id).href; + /** @type {{lastname: string | null, firstname: string}} */ + const userResponse = await this.apiCall(userUrl); + const user = userResponse; + + tickets.push({ + from: user.firstname + (user.lastname ? ' ' + user.lastname : ''), + subject: ticket.title, + ticketId: ticket.id, + url: new URL(env.ZAMMAD_BASE_URL + '/#ticket/zoom/' + ticket.id).href + }); + } + return tickets; + } +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..973d443 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,33 @@ +<script> + import { env as publicEnv } from '$env/dynamic/public'; + // @ts-ignore + import { PUBLIC_BUILD_INFO, PUBLIC_URL_SOURCE_CODE } from '$env/static/public'; +</script> + +<slot /> + +<footer style="margin-top: 6rem; text-align: center"> + <p> + <a href={PUBLIC_URL_SOURCE_CODE} target="_blank" rel="noreferrer"> Source Code </a> + {#if publicEnv.PUBLIC_URL_PRIVACY?.length > 0} + – <a href={publicEnv.PUBLIC_URL_PRIVACY} target="_blank" rel="noreferrer noopener"> + Datenschutz + </a> + {/if} + {#if publicEnv.PUBLIC_URL_IMPRINT?.length > 0} + – <a href={publicEnv.PUBLIC_URL_IMPRINT} target="_blank" rel="noreferrer noopener"> + Impressum + </a> + {/if} + </p> + + <p> + Made with <a href="watercss.kognise.dev/">Water.css</a>, + <a href="https://kit.svelte.dev">SvelteKit</a> + </p> + {#if typeof PUBLIC_BUILD_INFO === 'string' && PUBLIC_BUILD_INFO.length > 1} + <p> + {PUBLIC_BUILD_INFO} + </p> + {/if} +</footer> diff --git a/src/routes/+page.server.js b/src/routes/+page.server.js new file mode 100644 index 0000000..9b862ed --- /dev/null +++ b/src/routes/+page.server.js @@ -0,0 +1,15 @@ +/** @type {import('./$types').PageServerLoad} */ +export async function load({ cookies }) { + const zammadToken = cookies.get('zammadToken'); + const gitlabToken = cookies.get('gitlabToken'); + + const sessionIdToken = cookies.get('started_using_unix'); + if (typeof sessionIdToken !== 'string') { + cookies.set('started_using_unix', Math.floor(Date.now()).toString()); + } + + return { + zammadSignedIn: typeof zammadToken === 'string' && zammadToken.length > 5, + gitlabSignedIn: typeof gitlabToken === 'string' && gitlabToken.length > 5 + }; +} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..8b31c9e --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,131 @@ +<script> + import { goto } from '$app/navigation'; + + /** @type {import('./$types').PageServerData} */ + export let data; + + async function onZammadLoginClick() { + await goto('/auth/zammad/login'); + } + + async function onGitLabLoginClick() { + await goto('/auth/gitlab/login'); + } + + async function onGenerateClick() { + await goto('/template'); + } +</script> + +<h1>Protokoll-Pad-Generator</h1> +<p> + Als FSR-Protokoll-Mensch kannst du hier ein HedgeDoc-Pad für die nächste -FSR-Sitzung vorbereiten + lassen. +</p> + +<fieldset> + <legend>1. Bei GitLab anmelden</legend> + <p>Du musst bei GitLab angemeldet sein, um auf die folgenden Infos zuzugreifen:</p> + <ul> + <li>Deinen Anzeige-Namen als „Protkoll-Autor:in“</li> + <li> + <abbr title="Tagesordnungspunkt">TOP</abbr>-Issues und FSR-Mitgliederliste im + <a href="https://gitlab.fachschaften.org/tudo-fsinfo/fsr/sitzungen"> Sitzungen-Projekt </a> + </li> + <li> + To-Do-Issues im + <a href="https://gitlab.fachschaften.org/tudo-fsinfo/fsr/meta"> FSR-Meta-Projekt </a> + </li> + </ul> + <p> + {#if data?.gitlabSignedIn} + <div class="success-button"> + <img class="icon" src="./gitlab-logo-500.svg" alt="Zammad-Logo" /> + <span> Du hast dich erfolgreich bei GitLab angemeldet</span> + </div> + {:else} + <button class="icon-button" on:click={onGitLabLoginClick}> + <img class="icon" src="./gitlab-logo-500.svg" alt="GitLab-Logo" /> + <span>Bei GitLab anmelden</span> + </button> + {/if} + </p> +</fieldset> + +<fieldset> + <legend>2. Bei Zammad anmelden</legend> + <p>Du musst bei Zammad angemeldet sein, um auf die folgenden Infos zuzugreifen:</p> + <ul> + <li> + Tickets mit dem tag + <a href="https://zammad.oh14.de/#ticket/view/sitzungsrelevant"> + <code>#sitzungsrelevant</code> + </a> + </li> + </ul> + <p> + {#if data?.zammadSignedIn} + <div class="success-button"> + <img class="icon" src="./zammad_logo_70x61.png" alt="Zammad-Logo" /> + <span> Du hast dich erfolgreich bei Zammad angemeldet</span> + </div> + {:else} + <button class="icon-button" on:click={onZammadLoginClick}> + <img class="icon" src="./zammad_logo_70x61.png" alt="Zammad-Logo" /> + <span>Bei Zammad anmelden</span> + </button> + {/if} + </p> +</fieldset> + +<fieldset> + <legend>3. Protokoll-Pad generieren</legend> + {#if data?.zammadSignedIn && data?.gitlabSignedIn} + <p> + Du kannst nun eine Protokoll-Vorlage generieren und es dann in ein neues <a + href="https://md.fachschaften.org/auth/oauth2">HedgeDoc-Pad</a + > kopieren. + </p> + <p> + Sende den Hedgedoc-Pad-Link dann an alle FSR-Menschen auf der Sitzung, damit diese mitlesen + können. + </p> + <p> + <button class="icon-button" on:click={onGenerateClick}> 📝 Vorlage generieren </button> + </p> + {:else} + <p> + <i>Bitte logge dich bei GitLab und Zammad ein, um fortzufahren...</i> + </p> + {/if} +</fieldset> + +<style> + div.success-button { + display: inline; + padding: 0.5rem; + padding-inline: 1.2rem; + margin-block: 2rem; + border: 1px solid lightgray; + background-color: rgb(156, 201, 156); + border-radius: 0.4rem; + } + @media (prefers-color-scheme: dark) { + div.success-button { + background-color: rgb(0, 80, 0); + } + } + button.icon-button { + padding-inline: 1.2rem; + display: flex; + justify-content: space-between; + gap: 0.5rem; + align-items: center; + align-content: center; + } + + img.icon { + height: 1.1rem; + aspect-ratio: 1 / 1; + } +</style> diff --git a/src/routes/auth/gitlab/callback/+page.server.js b/src/routes/auth/gitlab/callback/+page.server.js new file mode 100644 index 0000000..0ddce4c --- /dev/null +++ b/src/routes/auth/gitlab/callback/+page.server.js @@ -0,0 +1,17 @@ +import { completeGitLabAuth } from '$lib/oauth/gitlab'; +import { redirect } from '@sveltejs/kit'; + +/** @type {import('./$types').PageServerLoad} */ +export async function load({ url, fetch, cookies }) { + const callbackCode = url.searchParams.get('code'); + if (typeof callbackCode !== 'string') { + throw 'Invalid, needed code'; + } + const [apiToken, expires_in] = await completeGitLabAuth(callbackCode, fetch); + cookies.set('gitlabToken', apiToken, { + secure: true, + path: '/', + maxAge: expires_in + }); + throw redirect(302, `/`); +} diff --git a/src/routes/auth/gitlab/login/+page.server.js b/src/routes/auth/gitlab/login/+page.server.js new file mode 100644 index 0000000..b2fdd24 --- /dev/null +++ b/src/routes/auth/gitlab/login/+page.server.js @@ -0,0 +1,19 @@ +import { env } from '$env/dynamic/private'; +import { env as publicEnv } from '$env/dynamic/public'; +import { redirect } from '@sveltejs/kit'; + +/** @type {import('./$types').PageServerLoad} */ +export function load({ cookies }) { + const authUrl = new URL(env.GITLAB_BASE_URL + '/oauth/authorize').href; + const clientId = env.GITLAB_APP_ID; + const redirectUrl = new URL(publicEnv.PUBLIC_BASE_URL + '/auth/gitlab/callback').href; + const urlParams = new URLSearchParams({ + response_type: 'code', + client_id: clientId, + redirect_uri: redirectUrl, + state: cookies.get('started_using_unix') ?? '424242', + scope: 'read_api' + //client_secret: clientSecret, + }); + throw redirect(302, `${authUrl}?${urlParams.toString()}`); +} diff --git a/src/routes/auth/zammad/callback/+page.server.js b/src/routes/auth/zammad/callback/+page.server.js new file mode 100644 index 0000000..b363364 --- /dev/null +++ b/src/routes/auth/zammad/callback/+page.server.js @@ -0,0 +1,17 @@ +import { completeZammadAuth } from '$lib/oauth/zammad'; +import { redirect } from '@sveltejs/kit'; + +/** @type {import('./$types').PageServerLoad} */ +export async function load({ url, fetch, cookies }) { + const callbackCode = url.searchParams.get('code'); + if (typeof callbackCode !== 'string') { + throw 'Invalid, needed code'; + } + const [apiToken, expires_in] = await completeZammadAuth(callbackCode, fetch); + cookies.set('zammadToken', apiToken, { + secure: true, + path: '/', + maxAge: expires_in + }); + throw redirect(302, `/`); +} diff --git a/src/routes/auth/zammad/login/+page.server.js b/src/routes/auth/zammad/login/+page.server.js new file mode 100644 index 0000000..bb75081 --- /dev/null +++ b/src/routes/auth/zammad/login/+page.server.js @@ -0,0 +1,18 @@ +import { redirect } from '@sveltejs/kit'; +import { env } from '$env/dynamic/private'; +import { env as publicEnv } from '$env/dynamic/public'; + +/** @type {import('./$types').PageServerLoad} */ +export function load({ cookies }) { + const authUrl = new URL(env.ZAMMAD_BASE_URL + '/oauth/authorize').href; + const clientId = env.ZAMMAD_APP_ID; + const redirectUrl = new URL(publicEnv.PUBLIC_BASE_URL + '/auth/zammad/callback').href; + const urlParams = new URLSearchParams({ + response_type: 'code', + client_id: clientId, + redirect_uri: redirectUrl, + state: cookies.get('started_using_unix') ?? '424242' + //client_secret: clientSecret, + }); + throw redirect(302, `${authUrl}?${urlParams.toString()}`); +} diff --git a/src/routes/template/+page.server.js b/src/routes/template/+page.server.js new file mode 100644 index 0000000..0ed6974 --- /dev/null +++ b/src/routes/template/+page.server.js @@ -0,0 +1,33 @@ +import { env } from '$env/dynamic/private'; +import { GitLabAccessor } from '$lib/templating/gitlab'; +import { createPadContent } from '$lib/templating/templating'; +import { ZammadAccessor } from '$lib/templating/zammad'; +import { error } from '@sveltejs/kit'; + +/** @type {import('./$types').PageServerLoad} */ +export function load({ cookies }) { + const zammadToken = cookies.get('zammadToken'); + const gitlabToken = cookies.get('gitlabToken'); + if (typeof zammadToken !== 'string' || typeof gitlabToken !== 'string') { + throw error(403, 'Not sufficiently authorized'); + } + + const gitLab = new GitLabAccessor(env.GITLAB_BASE_URL, gitlabToken); + const zammad = new ZammadAccessor(zammadToken); + + const gitlabUsersNameProm = gitLab.getCurrentUsersName(); + + const number = 9999; + const markdownProm = createPadContent(zammad, gitLab, number); + + return { + gitlab: { + /** @type {Promise<string>} */ + name: gitlabUsersNameProm + }, + pad: { + /** @type {Promise<string>} */ + markdown: markdownProm + } + }; +} diff --git a/src/routes/template/+page.svelte b/src/routes/template/+page.svelte new file mode 100644 index 0000000..f90d910 --- /dev/null +++ b/src/routes/template/+page.svelte @@ -0,0 +1,47 @@ +<script> + /** @type {import('./$types').PageData} */ + export let data; + + let didCopy = false; + async function onCopyClick() { + console.debug('Clicked markdown copy button'); + await navigator.clipboard.writeText(await data.pad.markdown); + didCopy = true; + await sleep(1000); + didCopy = false; + } + + /** @param {number} ms */ + function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } +</script> + +{#await data.gitlab.name then gitlabUsersName} + <p> + ✅ Als „{gitlabUsersName}“ auf GitLab zugegriffen + </p> +{/await} + +{#await data.pad.markdown} + <progress style="width: 100%;" /> +{:then markdown} + <hr /> + <p> + Kopiere dieses Markdown in ein neues <a href="https://md.fachschaften.org/auth/oauth2"> + HedgeDoc-Pad. + </a> Vergiss nicht, den Link mit den anderen FSR-Menschen zu teilen ;) + </p> + + <button style="width: 100%;" on:click={onCopyClick}> + {#if didCopy}✅{:else}📋{/if} + Markdown kopieren + </button> + <pre><code id="markdown">{markdown}</code></pre> +{/await} + +<style> + pre { + white-space: pre-wrap; + } +</style> diff --git a/src/template.mustache.md b/src/template.mustache.md new file mode 100644 index 0000000..f3dc811 --- /dev/null +++ b/src/template.mustache.md @@ -0,0 +1,165 @@ +--- +spec_version: 2 +lang: "de" +title: "FSR-Protokoll {{ number }} ({{ germanDate }})" + +date: "{{ isoDate }}" +number: {{ number }} +start: "hh:mm" + +author: "{{ author }}" +head: "{{ head }}" + +present: +{{#present}} + - {{.}} +{{/present}} +absent: +{{#absent}} + - {{.}} +{{/absent}} +guests: +{{#guests}} + - {{.}} +{{/guests}} +--- + +<!-- *nicht* entfernen, wenn beschlussfähig: --> + +**Die Beschlussfähigkeit wird nicht festgestellt.** + +# Post {start="hh:mm"} + +- Absender: Inhalt → Verfahren + +_Keine relevante Post._ + +# Mails {start="hh:mm"} + +{{#mails}} + +- {{ from }}: {{ subject }} ([Ticket #{{ticketId}}][t{{ticketId}}]) → ? + {{/mails}} + {{^mails}} + _Keine relevanten Mails._ + {{/mails}} + +# Berichte {start="hh:mm"} + +## Teams + +- Vorstand + - _Nichts Relevantes_ +- Orga (Jan Vaorin) + - _Nichts Relevantes_ +- Studienberatung (Marlon Bagans) + - _Nichts Relevantes_ +- Öffentlichkeit (Marlon Bagans) + - _Nichts Relevantes_ +- Kommunikation () + - _Nichts Relevantes_ +- Events (Marcel Oliver Morczinek) + - _Nichts Relevantes_ +- Admins + - _Nichts Relevantes_ +- Protokolle (Nikan Roosta Azad) + - _Nichts Relevantes_ +- FsRK (Marlon Bagans) + - _Nichts Relevantes_ + +## Einzelpersonen + +{{#reports}} + +- {{origin}} ([Issue {{issue}}][b{{issue}}]) + {{{ two_padded_description }}} + {{/reports}} + {{^reports}} +- Person: - ==Hier Bericht in Stichpunkten, oder Punkt entfernen== + {{/reports}} + +{{#tops}} + +# {{title}} {start="hh:mm" origin="{{origin}}"{{finmarker}} {{}}} + +{{{ descrption }}} + +**Diskussion vor der Sitzung:** + +{{#comments}} + +- {{ author }}: + {{{ two_padded_text }}} + {{/comments}} + +**Diskussion:** + +==Hier die Debatte in der Sitzung grob nachzeichnen== + +{{#isFin}} +[ +Der FSR stellt eur,ct € für Y zur Verfügung. +]{.resolution .fin money-granted="eur,ct" yes=Y no=N abstention=A result=Angenommen} +{{/isFin}} + +{{/tops}} + +# Nicht-Öffentlicher Teil der Sitzung {start="hh:mm"} + +==Diesen TOP löschen, wenn es keine nicht-öffentlichen Teil gibt.== + +# Sonstiges {start="hh:mm"} + +- Wer: Was + - Diskussion + +# ToDos {start="hh:mm"} + +## Alt + +{{#todos}} + +- {{assignees}}: {{title}} (In Arbeit, [meta#{{issue}}][m{{issue}}]) + {{/todos}} + +## Neu + +- Wer: Was + +<!-- Neue ToDos sollten nach der Sitzung als Issues im GitLab eingepflegt werden, damit sie nicht verloren gehen. --> + +# News {start="hh:mm"} + +- ==Dinge, die an Studis veröffentlicht werden sollen (Mail, Matrix, Insta, ...)== + +--- + +## end: "hh:mm" + +<!-- Beschlussvorlagen zum Kopieren: + +[ + Der FSR stellt eur,ct € für Y zur Verfügung. +]{.resolution .fin money-granted="eur,ct" yes=Y no=N abstention=A result=Angenommen} + +[ + Der FSR beschließt Blub. +]{.resolution yes=Y no=N abstention=A result=Angenommen} + +--> + +<!-- Expanded Links: --> + +{{#reports}} +[b{{ issue }}]: {{{ issueUrl }}} +{{/reports}} + +{{#todos}} +[m{{ issue }}]: {{{ issueUrl }}} +{{/todos}} + +{{#mails}} +[t{{ ticketId }}]: {{{ url }}} +{{/mails}} + +<!-- End of expanded Links --> diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c074caa6e1fc2df1ecb1bb56683c490930b9d1d3 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0y~yVDJE84rT@hh9qO>QU(Tw0|7oEu0ENCuOjo$T)TUA z+2%9X?p(QY<yB<fnQM0;<e95?&s@9vG9ve7MBcuo>kcno_pqw_%(c5W=QW+adMB;4 ze&(vJ|IhetKYV81x}DjT&HGMX)YLbw>zUd$W08ra&6$hWXD#0_d-e9B#_pBd55Cxt zGk^Wg8<+Q;-E-{1k<;g9G<-did};rVGs~v7H&l1#CkI6(yo${Gbt>q{`Kv!p`0tq1 z_&l}p&)Luoo91<O6~8|gGq1B@VoSq|gwplPmMpEyUb%c_#?!nR3=9l{B|(0{4CYt! zwb@=w%=>(K@7CFU9oIgod{$;)V6ygfaSW+oe0!s{?2eVdu|jrPKb4u1o6bb<Tl&3z zwVs9D@6cUSkEQ;wKkz=|Sn-K#`+|S}m?XH%W}Cn6PUC2UqQmW<KhIV!Stq&o;O?i} zx}8tFd)H8MD|Ow$?xiXh<yF`$rB7WltX;QBjO*njo9XX&X?6aYH|OV4orw!qe3_{t zTiTFyed^NLd=mmZpNFil7xU`m`Wj#LI7aoZoKxWWt6#F7R^F@7@P5AG&4D9<UefFe z#_rSDq}koLxA<L_p72SSTjB4#*#SkTt5<ivSx}O0>sk_!_57Agae!7d`#X=_>7H3K zElhixgQloYvuxq>>RjBisNtDS^;-p(TgFx#rDazH?k;q&a_4omy)^H?JeNiv+ajx3 z)<)${EibC`R@LaL{9=3WdCiCW>7T&YOPVqj4IgT8&S}WKbWia4CKkUJ#-=Uv|JzPi zEtu3H=@_i%{eWYef3f>fHb>66CP`i%S%(6h)YnKFw=9!UEm+kt)5-F=LgVJ0PRSXE z9GTQb*Z5Yu2lriC_&ASy-<~%QK1ex6nflGx^}EXL!twJ9FRqC!e#o?B_u`v1ENANd zv&*87zv#ObIj1&b=JWiy%bF6SG&&z!NSk`Scpw_Iz;#dNIrp_q;Te3X((1F%&p8~l z!|AYfRLadm2e}l5f1Qt46jEdDOXX?xcbdAy^)0t*LXo?tL|EqA$6+25?%2P$-m16T zdOCw_dHXtsO}m}V9F{Lyt?Z|JcJd1TrugJ9>(1{xdEP3~oUbG+{$ibc+|A`0HB9ZE XN!4fGOHN>5U|{fc^>bP0l+XkK%rd6= literal 0 HcmV?d00001 diff --git a/static/gitlab-logo-500.svg b/static/gitlab-logo-500.svg new file mode 100644 index 0000000..3f0f811 --- /dev/null +++ b/static/gitlab-logo-500.svg @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 380 380" + version="1.1" + id="svg15" + sodipodi:docname="gitlab-logo-500.svg" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview17" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="2.1771857" + inkscape:cx="107.4782" + inkscape:cy="12.171677" + inkscape:window-width="1704" + inkscape:window-height="996" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg15" /> + <defs + id="defs4"> + <style + id="style2">.cls-1{fill:#e24329;}.cls-2{fill:#fc6d26;}.cls-3{fill:#fca326;}</style> + </defs> + <g + id="LOGO" + transform="matrix(1.9786151,0,0,2.054216,-185.93687,-200.32152)"> + <path + class="cls-1" + d="m 282.83,170.73 -0.27,-0.69 -26.14,-68.22 a 6.81,6.81 0 0 0 -2.69,-3.24 7,7 0 0 0 -8,0.43 7,7 0 0 0 -2.32,3.52 l -17.65,54 h -71.47 l -17.65,-54 a 6.86,6.86 0 0 0 -2.32,-3.53 7,7 0 0 0 -8,-0.43 6.87,6.87 0 0 0 -2.69,3.24 L 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.08,-56.04 z" + id="path6" /> + <path + class="cls-2" + d="m 282.83,170.73 -0.27,-0.69 a 88.3,88.3 0 0 0 -35.15,15.8 L 190,229.25 c 19.55,14.79 36.57,27.64 36.57,27.64 l 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.1,-56.08 z" + id="path8" /> + <path + class="cls-3" + d="m 153.43,256.89 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 c 0,0 -17.04,-12.89 -36.59,-27.64 -19.55,14.75 -36.57,27.64 -36.57,27.64 z" + id="path10" /> + <path + class="cls-2" + d="M 132.58,185.84 A 88.19,88.19 0 0 0 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 c 0,0 17,-12.85 36.57,-27.64 z" + id="path12" /> + </g> +</svg> diff --git a/static/water.min.css b/static/water.min.css new file mode 100644 index 0000000..4cc6355 --- /dev/null +++ b/static/water.min.css @@ -0,0 +1,1220 @@ +:root { + --background-body: #fff; + --background: #efefef; + --background-alt: #f7f7f7; + --selection: #9e9e9e; + --text-main: #363636; + --text-bright: #000; + --text-muted: #70777f; + --links: #0076d1; + --focus: rgba(0, 150, 191, 0.67); + --border: #dbdbdb; + --code: #000; + --animation-duration: 0.1s; + --button-base: #d0cfcf; + --button-hover: #9b9b9b; + --scrollbar-thumb: #aaa; + --scrollbar-thumb-hover: var(--button-hover); + --form-placeholder: #949494; + --form-text: #1d1d1d; + --variable: #39a33c; + --highlight: #ff0; + --select-arrow: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23161f27'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E"); +} +@media (prefers-color-scheme: dark) { + :root { + --background-body: #202b38; + --background: #161f27; + --background-alt: #1a242f; + --selection: #1c76c5; + --text-main: #dbdbdb; + --text-bright: #fff; + --text-muted: #a9b1ba; + --links: #41adff; + --focus: rgba(0, 150, 191, 0.67); + --border: #526980; + --code: #ffbe85; + --animation-duration: 0.1s; + --button-base: #0c151c; + --button-hover: #040a0f; + --scrollbar-thumb: var(--button-hover); + --scrollbar-thumb-hover: #000; + --form-placeholder: #a9a9a9; + --form-text: #fff; + --variable: #d941e2; + --highlight: #efdb43; + --select-arrow: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23efefef'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E"); + } +} +html { + scrollbar-color: #aaa #fff; + scrollbar-color: var(--scrollbar-thumb) var(--background-body); + scrollbar-width: thin; +} +@media (prefers-color-scheme: dark) { + html { + scrollbar-color: #040a0f #202b38; + scrollbar-color: var(--scrollbar-thumb) var(--background-body); + } +} +body { + font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, + Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Segoe UI Emoji, Apple Color Emoji, + Noto Color Emoji, sans-serif; + line-height: 1.4; + max-width: 800px; + margin: 20px auto; + padding: 0 10px; + word-wrap: break-word; + color: #363636; + color: var(--text-main); + background: #fff; + background: var(--background-body); + text-rendering: optimizeLegibility; +} +@media (prefers-color-scheme: dark) { + body { + background: #202b38; + background: var(--background-body); + color: #dbdbdb; + color: var(--text-main); + } +} +button { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, + box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; +} +@media (prefers-color-scheme: dark) { + button { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, + box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; + } +} +input { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, + box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; +} +@media (prefers-color-scheme: dark) { + input { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, + box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; + } +} +textarea { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, + box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; +} +@media (prefers-color-scheme: dark) { + textarea { + transition: background-color 0.1s linear, border-color 0.1s linear, color 0.1s linear, + box-shadow 0.1s linear, transform 0.1s ease; + transition: background-color var(--animation-duration) linear, + border-color var(--animation-duration) linear, color var(--animation-duration) linear, + box-shadow var(--animation-duration) linear, transform var(--animation-duration) ease; + } +} +h1 { + font-size: 2.2em; + margin-top: 0; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin-bottom: 12px; + margin-top: 24px; +} +h1 { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + h1 { + color: #fff; + color: var(--text-bright); + } +} +h2 { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + h2 { + color: #fff; + color: var(--text-bright); + } +} +h3 { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + h3 { + color: #fff; + color: var(--text-bright); + } +} +h4 { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + h4 { + color: #fff; + color: var(--text-bright); + } +} +h5 { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + h5 { + color: #fff; + color: var(--text-bright); + } +} +h6 { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + h6 { + color: #fff; + color: var(--text-bright); + } +} +strong { + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + strong { + color: #fff; + color: var(--text-bright); + } +} +b, +h1, +h2, +h3, +h4, +h5, +h6, +strong, +th { + font-weight: 600; +} +q:after, +q:before { + content: none; +} +blockquote { + border-left: 4px solid rgba(0, 150, 191, 0.67); + border-left: 4px solid var(--focus); + margin: 1.5em 0; + padding: 0.5em 1em; + font-style: italic; +} +@media (prefers-color-scheme: dark) { + blockquote { + border-left: 4px solid rgba(0, 150, 191, 0.67); + border-left: 4px solid var(--focus); + } +} +q { + border-left: 4px solid rgba(0, 150, 191, 0.67); + border-left: 4px solid var(--focus); + margin: 1.5em 0; + padding: 0.5em 1em; + font-style: italic; +} +@media (prefers-color-scheme: dark) { + q { + border-left: 4px solid rgba(0, 150, 191, 0.67); + border-left: 4px solid var(--focus); + } +} +blockquote > footer { + font-style: normal; + border: 0; +} +address, +blockquote cite { + font-style: normal; +} +a[href^='mailto\:']:before { + content: '📧 '; +} +a[href^='tel\:']:before { + content: '📞 '; +} +a[href^='sms\:']:before { + content: '💬 '; +} +mark { + background-color: #ff0; + background-color: var(--highlight); + border-radius: 2px; + padding: 0 2px; + color: #000; +} +@media (prefers-color-scheme: dark) { + mark { + background-color: #efdb43; + background-color: var(--highlight); + } +} +a > code, +a > strong { + color: inherit; +} +button, +input[type='button'], +input[type='checkbox'], +input[type='radio'], +input[type='range'], +input[type='reset'], +input[type='submit'], +select { + cursor: pointer; +} +input, +select { + display: block; +} +[type='checkbox'], +[type='radio'] { + display: initial; +} +input { + color: #1d1d1d; + color: var(--form-text); + background-color: #efefef; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +@media (prefers-color-scheme: dark) { + input { + background-color: #161f27; + background-color: var(--background); + color: #fff; + color: var(--form-text); + } +} +button { + color: #1d1d1d; + color: var(--form-text); + background-color: #efefef; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +@media (prefers-color-scheme: dark) { + button { + background-color: #161f27; + background-color: var(--background); + color: #fff; + color: var(--form-text); + } +} +textarea { + color: #1d1d1d; + color: var(--form-text); + background-color: #efefef; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +@media (prefers-color-scheme: dark) { + textarea { + background-color: #161f27; + background-color: var(--background); + color: #fff; + color: var(--form-text); + } +} +select { + color: #1d1d1d; + color: var(--form-text); + background-color: #efefef; + background-color: var(--background); + font-family: inherit; + font-size: inherit; + margin-right: 6px; + margin-bottom: 6px; + padding: 10px; + border: none; + border-radius: 6px; + outline: none; +} +@media (prefers-color-scheme: dark) { + select { + background-color: #161f27; + background-color: var(--background); + color: #fff; + color: var(--form-text); + } +} +button { + background-color: #d0cfcf; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +@media (prefers-color-scheme: dark) { + button { + background-color: #0c151c; + background-color: var(--button-base); + } +} +input[type='submit'] { + background-color: #d0cfcf; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +@media (prefers-color-scheme: dark) { + input[type='submit'] { + background-color: #0c151c; + background-color: var(--button-base); + } +} +input[type='reset'] { + background-color: #d0cfcf; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +@media (prefers-color-scheme: dark) { + input[type='reset'] { + background-color: #0c151c; + background-color: var(--button-base); + } +} +input[type='button'] { + background-color: #d0cfcf; + background-color: var(--button-base); + padding-right: 30px; + padding-left: 30px; +} +@media (prefers-color-scheme: dark) { + input[type='button'] { + background-color: #0c151c; + background-color: var(--button-base); + } +} +button:hover { + background: #9b9b9b; + background: var(--button-hover); +} +@media (prefers-color-scheme: dark) { + button:hover { + background: #040a0f; + background: var(--button-hover); + } +} +input[type='submit']:hover { + background: #9b9b9b; + background: var(--button-hover); +} +@media (prefers-color-scheme: dark) { + input[type='submit']:hover { + background: #040a0f; + background: var(--button-hover); + } +} +input[type='reset']:hover { + background: #9b9b9b; + background: var(--button-hover); +} +@media (prefers-color-scheme: dark) { + input[type='reset']:hover { + background: #040a0f; + background: var(--button-hover); + } +} +input[type='button']:hover { + background: #9b9b9b; + background: var(--button-hover); +} +@media (prefers-color-scheme: dark) { + input[type='button']:hover { + background: #040a0f; + background: var(--button-hover); + } +} +input[type='color'] { + min-height: 2rem; + padding: 8px; + cursor: pointer; +} +input[type='checkbox'], +input[type='radio'] { + height: 1em; + width: 1em; +} +input[type='radio'] { + border-radius: 100%; +} +input { + vertical-align: top; +} +label { + vertical-align: middle; + margin-bottom: 4px; + display: inline-block; +} +button, +input:not([type='checkbox']):not([type='radio']), +input[type='range'], +select, +textarea { + -webkit-appearance: none; +} +textarea { + display: block; + margin-right: 0; + box-sizing: border-box; + resize: vertical; +} +textarea:not([cols]) { + width: 100%; +} +textarea:not([rows]) { + min-height: 40px; + height: 140px; +} +select { + background: #efefef + url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23161f27'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E") + calc(100% - 12px) 50%/12px no-repeat; + background: var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat; + padding-right: 35px; +} +@media (prefers-color-scheme: dark) { + select { + background: #161f27 + url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23efefef'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E") + calc(100% - 12px) 50%/12px no-repeat; + background: var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat; + } +} +select::-ms-expand { + display: none; +} +select[multiple] { + padding-right: 10px; + background-image: none; + overflow-y: auto; +} +input:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); +} +@media (prefers-color-scheme: dark) { + input:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); + } +} +select:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); +} +@media (prefers-color-scheme: dark) { + select:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); + } +} +button:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); +} +@media (prefers-color-scheme: dark) { + button:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); + } +} +textarea:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); +} +@media (prefers-color-scheme: dark) { + textarea:focus { + box-shadow: 0 0 0 2px rgba(0, 150, 191, 0.67); + box-shadow: 0 0 0 2px var(--focus); + } +} +button:active, +input[type='button']:active, +input[type='checkbox']:active, +input[type='radio']:active, +input[type='range']:active, +input[type='reset']:active, +input[type='submit']:active { + transform: translateY(2px); +} +button:disabled, +input:disabled, +select:disabled, +textarea:disabled { + cursor: not-allowed; + opacity: 0.5; +} +::-moz-placeholder { + color: #949494; + color: var(--form-placeholder); +} +:-ms-input-placeholder { + color: #949494; + color: var(--form-placeholder); +} +::-ms-input-placeholder { + color: #949494; + color: var(--form-placeholder); +} +::placeholder { + color: #949494; + color: var(--form-placeholder); +} +@media (prefers-color-scheme: dark) { + ::-moz-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + :-ms-input-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + ::-ms-input-placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } + ::placeholder { + color: #a9a9a9; + color: var(--form-placeholder); + } +} +fieldset { + border: 1px solid rgba(0, 150, 191, 0.67); + border: 1px solid var(--focus); + border-radius: 6px; + margin: 0 0 12px; + padding: 10px; +} +@media (prefers-color-scheme: dark) { + fieldset { + border: 1px solid rgba(0, 150, 191, 0.67); + border: 1px solid var(--focus); + } +} +legend { + font-size: 0.9em; + font-weight: 600; +} +input[type='range'] { + margin: 10px 0; + padding: 10px 0; + background: transparent; +} +input[type='range']:focus { + outline: none; +} +input[type='range']::-webkit-slider-runnable-track { + width: 100%; + height: 9.5px; + -webkit-transition: 0.2s; + transition: 0.2s; + background: #efefef; + background: var(--background); + border-radius: 3px; +} +@media (prefers-color-scheme: dark) { + input[type='range']::-webkit-slider-runnable-track { + background: #161f27; + background: var(--background); + } +} +input[type='range']::-webkit-slider-thumb { + box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d; + height: 20px; + width: 20px; + border-radius: 50%; + background: #dbdbdb; + background: var(--border); + -webkit-appearance: none; + margin-top: -7px; +} +@media (prefers-color-scheme: dark) { + input[type='range']::-webkit-slider-thumb { + background: #526980; + background: var(--border); + } +} +input[type='range']:focus::-webkit-slider-runnable-track { + background: #efefef; + background: var(--background); +} +@media (prefers-color-scheme: dark) { + input[type='range']:focus::-webkit-slider-runnable-track { + background: #161f27; + background: var(--background); + } +} +input[type='range']::-moz-range-track { + width: 100%; + height: 9.5px; + -moz-transition: 0.2s; + transition: 0.2s; + background: #efefef; + background: var(--background); + border-radius: 3px; +} +@media (prefers-color-scheme: dark) { + input[type='range']::-moz-range-track { + background: #161f27; + background: var(--background); + } +} +input[type='range']::-moz-range-thumb { + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + height: 20px; + width: 20px; + border-radius: 50%; + background: #dbdbdb; + background: var(--border); +} +@media (prefers-color-scheme: dark) { + input[type='range']::-moz-range-thumb { + background: #526980; + background: var(--border); + } +} +input[type='range']::-ms-track { + width: 100%; + height: 9.5px; + background: transparent; + border-color: transparent; + border-width: 16px 0; + color: transparent; +} +input[type='range']::-ms-fill-lower { + background: #efefef; + background: var(--background); + border: 0.2px solid #010101; + border-radius: 3px; + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; +} +@media (prefers-color-scheme: dark) { + input[type='range']::-ms-fill-lower { + background: #161f27; + background: var(--background); + } +} +input[type='range']::-ms-fill-upper { + background: #efefef; + background: var(--background); + border: 0.2px solid #010101; + border-radius: 3px; + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; +} +@media (prefers-color-scheme: dark) { + input[type='range']::-ms-fill-upper { + background: #161f27; + background: var(--background); + } +} +input[type='range']::-ms-thumb { + box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d; + border: 1px solid #000; + height: 20px; + width: 20px; + border-radius: 50%; + background: #dbdbdb; + background: var(--border); +} +@media (prefers-color-scheme: dark) { + input[type='range']::-ms-thumb { + background: #526980; + background: var(--border); + } +} +input[type='range']:focus::-ms-fill-lower { + background: #efefef; + background: var(--background); +} +@media (prefers-color-scheme: dark) { + input[type='range']:focus::-ms-fill-lower { + background: #161f27; + background: var(--background); + } +} +input[type='range']:focus::-ms-fill-upper { + background: #efefef; + background: var(--background); +} +@media (prefers-color-scheme: dark) { + input[type='range']:focus::-ms-fill-upper { + background: #161f27; + background: var(--background); + } +} +a { + text-decoration: none; + color: #0076d1; + color: var(--links); +} +@media (prefers-color-scheme: dark) { + a { + color: #41adff; + color: var(--links); + } +} +a:hover { + text-decoration: underline; +} +code { + background: #efefef; + background: var(--background); + color: #000; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; +} +@media (prefers-color-scheme: dark) { + code { + color: #ffbe85; + color: var(--code); + background: #161f27; + background: var(--background); + } +} +samp { + background: #efefef; + background: var(--background); + color: #000; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; +} +@media (prefers-color-scheme: dark) { + samp { + color: #ffbe85; + color: var(--code); + background: #161f27; + background: var(--background); + } +} +time { + background: #efefef; + background: var(--background); + color: #000; + color: var(--code); + padding: 2.5px 5px; + border-radius: 6px; + font-size: 1em; +} +@media (prefers-color-scheme: dark) { + time { + color: #ffbe85; + color: var(--code); + background: #161f27; + background: var(--background); + } +} +pre > code { + padding: 10px; + display: block; + overflow-x: auto; +} +var { + color: #39a33c; + color: var(--variable); + font-style: normal; + font-family: monospace; +} +@media (prefers-color-scheme: dark) { + var { + color: #d941e2; + color: var(--variable); + } +} +kbd { + background: #efefef; + background: var(--background); + border: 1px solid #dbdbdb; + border: 1px solid var(--border); + border-radius: 2px; + color: #363636; + color: var(--text-main); + padding: 2px 4px; +} +@media (prefers-color-scheme: dark) { + kbd { + color: #dbdbdb; + color: var(--text-main); + border: 1px solid #526980; + border: 1px solid var(--border); + background: #161f27; + background: var(--background); + } +} +img, +video { + max-width: 100%; + height: auto; +} +hr { + border: none; + border-top: 1px solid #dbdbdb; + border-top: 1px solid var(--border); +} +@media (prefers-color-scheme: dark) { + hr { + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + } +} +table { + border-collapse: collapse; + margin-bottom: 10px; + width: 100%; + table-layout: fixed; +} +table caption, +td, +th { + text-align: left; +} +td, +th { + padding: 6px; + vertical-align: top; + word-wrap: break-word; +} +thead { + border-bottom: 1px solid #dbdbdb; + border-bottom: 1px solid var(--border); +} +@media (prefers-color-scheme: dark) { + thead { + border-bottom: 1px solid #526980; + border-bottom: 1px solid var(--border); + } +} +tfoot { + border-top: 1px solid #dbdbdb; + border-top: 1px solid var(--border); +} +@media (prefers-color-scheme: dark) { + tfoot { + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + } +} +tbody tr:nth-child(2n) { + background-color: #efefef; + background-color: var(--background); +} +@media (prefers-color-scheme: dark) { + tbody tr:nth-child(2n) { + background-color: #161f27; + background-color: var(--background); + } +} +tbody tr:nth-child(2n) button { + background-color: #f7f7f7; + background-color: var(--background-alt); +} +@media (prefers-color-scheme: dark) { + tbody tr:nth-child(2n) button { + background-color: #1a242f; + background-color: var(--background-alt); + } +} +tbody tr:nth-child(2n) button:hover { + background-color: #fff; + background-color: var(--background-body); +} +@media (prefers-color-scheme: dark) { + tbody tr:nth-child(2n) button:hover { + background-color: #202b38; + background-color: var(--background-body); + } +} +::-webkit-scrollbar { + height: 10px; + width: 10px; +} +::-webkit-scrollbar-track { + background: #efefef; + background: var(--background); + border-radius: 6px; +} +@media (prefers-color-scheme: dark) { + ::-webkit-scrollbar-track { + background: #161f27; + background: var(--background); + } +} +::-webkit-scrollbar-thumb { + background: #aaa; + background: var(--scrollbar-thumb); + border-radius: 6px; +} +@media (prefers-color-scheme: dark) { + ::-webkit-scrollbar-thumb { + background: #040a0f; + background: var(--scrollbar-thumb); + } +} +::-webkit-scrollbar-thumb:hover { + background: #9b9b9b; + background: var(--scrollbar-thumb-hover); +} +@media (prefers-color-scheme: dark) { + ::-webkit-scrollbar-thumb:hover { + background: #000; + background: var(--scrollbar-thumb-hover); + } +} +::-moz-selection { + background-color: #9e9e9e; + background-color: var(--selection); + color: #000; + color: var(--text-bright); +} +::selection { + background-color: #9e9e9e; + background-color: var(--selection); + color: #000; + color: var(--text-bright); +} +@media (prefers-color-scheme: dark) { + ::-moz-selection { + color: #fff; + color: var(--text-bright); + } + ::selection { + color: #fff; + color: var(--text-bright); + } +} +@media (prefers-color-scheme: dark) { + ::-moz-selection { + background-color: #1c76c5; + background-color: var(--selection); + } + ::selection { + background-color: #1c76c5; + background-color: var(--selection); + } +} +details { + display: flex; + flex-direction: column; + align-items: flex-start; + background-color: #f7f7f7; + background-color: var(--background-alt); + padding: 10px 10px 0; + margin: 1em 0; + border-radius: 6px; + overflow: hidden; +} +@media (prefers-color-scheme: dark) { + details { + background-color: #1a242f; + background-color: var(--background-alt); + } +} +details[open] { + padding: 10px; +} +details > :last-child { + margin-bottom: 0; +} +details[open] summary { + margin-bottom: 10px; +} +summary { + display: list-item; + background-color: #efefef; + background-color: var(--background); + padding: 10px; + margin: -10px -10px 0; + cursor: pointer; + outline: none; +} +@media (prefers-color-scheme: dark) { + summary { + background-color: #161f27; + background-color: var(--background); + } +} +summary:focus, +summary:hover { + text-decoration: underline; +} +details > :not(summary) { + margin-top: 0; +} +summary::-webkit-details-marker { + color: #363636; + color: var(--text-main); +} +@media (prefers-color-scheme: dark) { + summary::-webkit-details-marker { + color: #dbdbdb; + color: var(--text-main); + } +} +dialog { + background-color: #f7f7f7; + background-color: var(--background-alt); + color: #363636; + color: var(--text-main); + border-radius: 6px; + border: #dbdbdb; + border-color: var(--border); + padding: 10px 30px; +} +@media (prefers-color-scheme: dark) { + dialog { + border-color: #526980; + border-color: var(--border); + color: #dbdbdb; + color: var(--text-main); + background-color: #1a242f; + background-color: var(--background-alt); + } +} +dialog > header:first-child { + background-color: #efefef; + background-color: var(--background); + border-radius: 6px 6px 0 0; + margin: -10px -30px 10px; + padding: 10px; + text-align: center; +} +@media (prefers-color-scheme: dark) { + dialog > header:first-child { + background-color: #161f27; + background-color: var(--background); + } +} +dialog::-webkit-backdrop { + background: rgba(0, 0, 0, 0.61); + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} +dialog::backdrop { + background: rgba(0, 0, 0, 0.61); + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} +footer { + border-top: 1px solid #dbdbdb; + border-top: 1px solid var(--border); + padding-top: 10px; + color: #70777f; + color: var(--text-muted); +} +@media (prefers-color-scheme: dark) { + footer { + color: #a9b1ba; + color: var(--text-muted); + border-top: 1px solid #526980; + border-top: 1px solid var(--border); + } +} +body > footer { + margin-top: 40px; +} +@media print { + body, + button, + code, + details, + input, + pre, + summary, + textarea { + background-color: #fff; + } + button, + input, + textarea { + border: 1px solid #000; + } + body, + button, + code, + footer, + h1, + h2, + h3, + h4, + h5, + h6, + input, + pre, + strong, + summary, + textarea { + color: #000; + } + summary::marker { + color: #000; + } + summary::-webkit-details-marker { + color: #000; + } + tbody tr:nth-child(2n) { + background-color: #f2f2f2; + } + a { + color: #00f; + text-decoration: underline; + } +} diff --git a/static/zammad_logo_70x61.png b/static/zammad_logo_70x61.png new file mode 100644 index 0000000000000000000000000000000000000000..7099c737b8bd8ca9595861d62a6af57d1a761dcd GIT binary patch literal 3316 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 KKbLh*2~7Z7{Db=d literal 0 HcmV?d00001 diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 0000000..512926c --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,13 @@ +import adapter from '@sveltejs/adapter-node'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + adapter: adapter({ + out: 'build', + precompress: true + }) + } +}; + +export default config; diff --git a/transcript_template.md b/transcript_template.md deleted file mode 100644 index b67f996..0000000 --- a/transcript_template.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -spec_version: 2 -lang: de -title: FSR-Protokoll $if(number)$$number$$else$TO_BE_FILLED_OUT$endif$ ($if(fancyDate)$$fancyDate$$else$TO_BE_FILLED_OUT$endif$) - -date: $if(date)$$date$$else$TO_BE_FILLED_OUT$endif$ -number: $if(number)$$number$$else$TO_BE_FILLED_OUT$endif$ -start: "hh:mm" - -author: "$if(author)$$author$$else$TO_BE_FILLED_OUT$endif$" -resolutions: "$if(resolutions)$$resolutions$$else$TO_BE_FILLED_OUT$endif$" -head: "$if(head)$$head$$else$TO_BE_FILLED_OUT$endif$" - -present: -$if(present)$ -$for(present)$ -- $present$ -$endfor$ -$else$ -- ? -$endif$ -absent: -$if(absent)$ -$for(absent)$ -- $absent$ -$endfor$ -$else$ -- ? -$endif$ -guests: -$if(guests)$ -$for(guests)$ -- $guests$ -$endfor$ -$else$ -- ? -$endif$ ---- - -<!-- *nicht* entfernen, wenn beschlussfähig --> -**Die Beschlussfähigkeit wird nicht festgestellt.** - -# Post {start="hh:mm"} - -- Absender: Inhalt → Verfahren - -_Keine relevante Post._ - - - -# Mails {start="hh:mm"} - -$if(mails)$ -$for(mails)$ -- $mails.from$: $mails.subject$ ([Ticket #$mails.ticketId$][t$mails.ticketId$]) → ? -$endfor$ -$else$ -_Keine relevanten Mails._ -$endif$ - - - -# Berichte {start="hh:mm"} - -## Teams - -- Vorstand -- Orga (Jan Vaorin) -- Studienberatung (Marlon Bagans) -- Öffentlichkeit (Marlon Bagans) -- Kommunikation () -- Events (Marcel Oliver Morczinek) -- Admins -- Protokolle (Nikan Roosta Azad) -- FsRK (Marlon Bagans) - -## Einzelpersonen - -$for(reports)$ -- $if(reports.origin)$$reports.origin$$else$Jemand$endif$ ([Issue \#$reports.issue$](https://gitlab.fachschaften.org/tudo-fsinfo/fsr/sitzungen/-/issues/$reports.issue$)): - - $if(reports.description)$$reports.description$$else$Inhalt$endif$ - $for(reports.comments)$ -- $reports.comments.author$: $reports.comments.text$ - $endfor$ - -$endfor$ -- Person: - - Bericht in Stichpunkten - -$for(tops)$ -# $tops.title$ {start="hh:mm"$if(tops.origin)$ origin="$tops.origin$"$endif$$if(tops.issue)$ issue="$tops.issue$"$endif$$if(tops.isFin)$ .fin$endif$} - -$if(tops.description)$ -$tops.description$ -$else$ -**Vorstellung:** - -$endif$ -$if(tops.hasComments)$ - -**Diskussion vor der Sitzung:** - -$for(tops.comments)$ -- $tops.comments.author$: - $^$$tops.comments.text$ -$endfor$ - -$endif$ - -**Diskussion:** - - -$if(tops.isFin)$ - -[ - Der FSR stellt eur,ct € für Y zur Verfügung. -]{.resolution .fin money-granted="eur,ct" yes=Y no=N abstention=A result=Angenommen} -$endif$ - - - -$endfor$ -# Nicht-Öffentlicher Teil der Sitzung {start="hh:mm"} - - - -# Sonstiges {start="hh:mm"} - -- Wer: Was - - Diskussion - - - -# ToDos {start="hh:mm"} - -## Alt - -$if(todos)$ -$for(todos)$ -- $todos.assignees$: $todos.title$ (In Arbeit, [meta#$todos.id$][m$todos.id$]) -$endfor$ -$else$ -_Seltsamerweise keine To-Dos aufgeführt._ -$endif$ - -## Neu - -- Wer: Was - - - -# News {start="hh:mm"} - -- x - - ---- -end: "hh:mm" ---- - -```md -Beschlussvorlagen zum Kopieren: - -[ - Der FSR stellt eur,ct € für Y zur Verfügung. -]{.resolution .fin money-granted="eur,ct" yes=Y no=N abstention=A result=Angenommen} - -[ - Der FSR beschließt Blub. -]{.resolution yes=Y no=N abstention=A result=Angenommen} -``` - -<!-- Expanded Links: --> -$if(todos)$ -$for(todos)$ -[m$todos.id$]: https://gitlab.fachschaften.org/tudo-fsinfo/fsr/meta/issues/$todos.id$ -$endfor$ -$endif$ -$if(mails)$ -$for(mails)$ -[t$mails.ticketId$]: https://zammad.oh14.de/#ticket/zoom/$mails.ticketId$ -$endfor$ -$endif$ -$tops.comments.author$ diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..37b6a84 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,9 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + plugins: [sveltekit()], + test: { + include: ['src/**/*.{test,spec}.{js,ts}'] + } +}); -- GitLab