From 77eaa41cc370cde1eaf2b310d264f00fd66754cb Mon Sep 17 00:00:00 2001 From: UMBENOMENA <84476722+UMBENOMENA@users.noreply.github.com> Date: Fri, 21 Feb 2025 21:23:26 +0100 Subject: [PATCH 01/38] Update constants.ts --- src/lib/constants.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 6e36bfbe..64a01404 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -29,13 +29,6 @@ export enum VALID_UUID_PREFIXES { export const PRICES: Record> = { // per E-Mail , inkl.Beratung, offline - BedarfsausweisWohnen: [95, 125, 295], - VerbrauchsausweisWohnen: [65, 95, 180], - VerbrauchsausweisGewerbe: [95, 125, 360], - BedarfsausweisGewerbe: [500, 700, 1000], - GEGNachweisWohnen: [500, 700, 1000], - GEGNachweisGewerbe: [800, 1000, 1300] - BedarfsausweisWohnen: { [Enums.AusweisTyp.Standard]: 95, [Enums.AusweisTyp.Beratung]: 125, From 37339da412b133e63e70a056261f8b318c345244 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:21:44 +0100 Subject: [PATCH 02/38] Auto stash before merge of "Jens" and "origin/Jens" --- src/astro-typesafe-api-caller.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 01c6a1a1..bc3251ec 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -13,12 +13,16 @@ export const createCaller = createCallerFactory({ "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), +<<<<<<< Updated upstream "ausweise": await import("../src/pages/api/ausweise/index.ts"), +======= + "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), + "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), +>>>>>>> Stashed changes "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), - "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), - "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), + "ausweise": await import("../src/pages/api/ausweise/index.ts"), "bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"), "geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"), "geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"), From 47767e43168dc4488df759d20dadb0e819f3fe9a Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:23:31 +0100 Subject: [PATCH 03/38] Auto stash before merge of "Jens" and "origin/Jens" --- src/astro-typesafe-api-caller.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index bc3251ec..3d77c584 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -13,8 +13,13 @@ export const createCaller = createCallerFactory({ "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), +<<<<<<< Updated upstream <<<<<<< Updated upstream "ausweise": await import("../src/pages/api/ausweise/index.ts"), +======= + "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), + "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), +>>>>>>> Stashed changes ======= "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), From 0e50cbe1180041078e9d13688d43729daf6c7af6 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:24:50 +0100 Subject: [PATCH 04/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../sidebars/cards/NavigationCard.svelte | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/components/design/sidebars/cards/NavigationCard.svelte b/src/components/design/sidebars/cards/NavigationCard.svelte index eb46cd2d..e4c99f5f 100644 --- a/src/components/design/sidebars/cards/NavigationCard.svelte +++ b/src/components/design/sidebars/cards/NavigationCard.svelte @@ -227,22 +227,22 @@ {#if innerWidth < 1023}
  • Verbrauchsausweis
  • {/if} -
  • Verbrauchsausweis Wohngebäude
  • +
  • Verbrauchsausweis Wohngebäude
  • Verbrauchsausweis online erstellen
  • Häufige Fragen zum Verbrauchsausweis
  • Statistiken zum Verbrauchsausweis Wohngebäude
  • -
  • Verbrauchsausweis Gewerbe
  • +
  • Verbrauchsausweis Gewerbe
  • - Verbrauchsausweis Gewerbe online erstellen + Verbrauchsausweis Gewerbe online erstellen
  • - Häufige Fragen zum Verbrauchsausweis Gewerbe + Häufige Fragen zum Verbrauchsausweis Gewerbe
  • - Statistiken zum Verbrauchsausweis Gewerbe + Statistiken zum Verbrauchsausweis Gewerbe
  • @@ -264,18 +264,16 @@ {#if innerWidth < 1023}
  • Bedarfsausweis
  • {/if} -
  • Bedarfsausweis Wohngebäude
  • -
  • Bedarfsausweis online erstellen
  • -
  • Häufige Fragen zum Bedarfsausweis
  • +
  • Bedarfsausweis Wohngebäude
  • +
  • Bedarfsausweis online erstellen
  • +
  • Häufige Fragen zum Bedarfsausweis
  • - Statistiken zum Bedarfsausweis Wohngebäude + Statistiken zum Bedarfsausweis Wohngebäude
  • -
  • Bedarfsausweis Gewerbe
  • -
  • Bedarfsausweis Gewerbe online erstellen
  • +
  • Bedarfsausweis Gewerbe
  • +
  • Bedarfsausweis Gewerbe anfragen
  • - Häufige Fragen zum Bedarfsausweis Gewerbe -
  • -
  • Statistiken zum Bedarfsausweis Gewerbe
  • + Häufige Fragen zum Bedarfsausweis Gewerbe From 270fcc329fb3c6d32714b67ea95834ec33d9bdd1 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:25:44 +0100 Subject: [PATCH 05/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../bedarfsausweis-gewerbe/index.astro | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/pages/bedarfsausweis/bedarfsausweis-gewerbe/index.astro diff --git a/src/pages/bedarfsausweis/bedarfsausweis-gewerbe/index.astro b/src/pages/bedarfsausweis/bedarfsausweis-gewerbe/index.astro new file mode 100644 index 00000000..ea7616ea --- /dev/null +++ b/src/pages/bedarfsausweis/bedarfsausweis-gewerbe/index.astro @@ -0,0 +1,147 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Bedarfsausweis Gewerbe

    +

    + Beim Bedarfsausweis Gewerbe wird über das Mehrzonenmodell nach DIN V 18599 der Endenergiebedarf und der Primärenergiebedarf ermittelt +

    + +
    + +
    + + +
    + +
    +

    + Beim Bedarfsausweis für Gewerbe bzw. Nichtwohngebäude erfolgt die Berechnung der Energiekennwerte über das sogenannte Mehrzonenmodell. Dabei wird das Gebäude in verschiedene Nutzungszonen unterschiedlicher Konditionierung (Heizung, Kühlung, Belüftung und Beleuchtung) unterteilt. Die jeweilige Energielast pro Zone wird über standardisierte Randbedingungen bzw. über die nach EnEV definierten Nutzlasten ermittelt. Der Austausch zwischen den Zonen spielt in der Berechnung ebenfalls eine Rolle. +

    +
    +
    + + +

    + Die Qualität bzw. Dämmwirkung der Außenbauteile wie Dach, Außenwand, Fenster und Boden haben gleichermaßen einen großen Einfluss auf den ermittelten Endenergiebedarf wie der Wirkungsgrad und die Effizienz der verwendeten Anlagentechnik für Heizung, Kühlung, Belüftung und Beleuchtung. +

    +

    + Neben dem Endenergiebedarf wird der Primärenergiebedarf oder auch die sogenannte „Gesamtenergieeffizienz“ ermittelt. Diese leitet sich vom Endenergiebedarf ab und wird über den Primärenergiefaktor entweder erhöht oder verringert. Je niedriger der Primärenergiefaktor ist, desto „nachhaltiger“ wird die Energie erzeugt bzw. desto weniger CO₂ wird in der Gesamtbilanz freigesetzt. Daher ist beispielsweise die Beheizung mit Holzpellets oder der Einsatz von Solarmodulen sehr CO₂-effizient. Der Einsatz von fossilen Energieträgern wie Erdgas und Heizöl hingegen wird mit einem höheren Primärenergiefaktor belegt. +

    + +
    + + +
    + Primaerenergiebedarf Farbskala vom Bedarfsausweis Gewerbe +

    Beispiel: Primaerenergiebedarf Farbskala vom Bedarfsausweis Gewerbe

    +
    + +
    + + +

    Das aktuelle GEG (vormals EnEV) bildet die Basis

    +

    + Wir stellen den Bedarfsausweis für Gewerbe – wie auch alle anderen Energieausweise – auf der Basis des aktuellen GEG (vormals EnEV) aus. +

    + +
    + + +

    Werte der Bausubstanz, Gebäudegeometrie oder Anlagetechnik

    +

    + Verbrauchsausweise werden auf Basis des Verbrauchs von Heizung (Holz, Kohle, Gas, Öl usw.) erstellt, aussagekräftigere Fakten kommen eindeutig bei der Erstellung des Bedarfsausweises zusammen. Ob Bausubstanz, Gebäudegeometrie oder Anlagentechnik – die tatsächlichen Zahlen machen die bedarfsorientierte Bewertung möglich. Der Bedarfsausweis ist von keinerlei nutzungsbedingten Einwirkungen geprägt. +

    + +
    + + +

    Unser Expertenwissen garantieren wir Ihnen

    +

    + Versteht sich von selbst, dass das Erstellen eines Bedarfsausweises sich darum auch aufwendiger gestaltet als das Ausarbeiten eines Verbrauchsausweises. Wir können Ihnen die professionelle Analyse garantieren. Unser Expertenwissen in den Bereichen Bauphysik, Bauplanung, Anlagentechnik und unsere stetige Weiterbildung, beispielsweise im Metier des Gebäudeenergiegesetzes (GEG), gewährleisten Ihnen Qualität. +

    + +
    + + +

    Energiebedarfsrechnung ist Fundament für den Bedarfsausweis

    +

    + Die theoretische Energiebedarfsrechnung ist Fundament für den Bedarfsausweis für Gewerbe. In die Energiebedarfsberechnung fließen die Werte der einzelnen Wärme übertragenden Flächen sowie die Dämmwerte mit ein. Welcher Art ist die Heizungsanlage und in welcher Qualitätsklasse ist diese aufgeführt? +

    +
    +
    + Beispiel Waermedaemmung Gebaeudehuelle +
    Beispiel Waermedaemmung Gebaeudehuelle
    +
    +
    + Waermedaemmung hinterlueftet Gebaeudehuelle +
    Beispiel Waermedaemmung hinterlueftet Gebaeudehuelle
    +
    +
    +

    + Die Antworten auf die Fragen bilden die Basis bei der Berechnung des theoretischen Energiebedarfs. Das Verhalten des einzelnen Energieverbrauchers bleibt dabei außen vor. Geprägt wird der Bedarfsausweis in der Regel von dem Wert, der den Stand der Heizkostenabrechnung widerspiegelt sowie den Primärbedarf, den Gesamtenergiebedarf. +

    + +
    + + +

    Sinnvolle Modernisierungsmaßnahmen

    +

    + Der Energieausweis gibt Aufschluss darüber, in welcher Klasse sich Ihr Gebäudeobjekt aus energetischer Sicht zum Zeitpunkt der Berechnung befindet. Wir beraten Sie zusätzlich über sinnvolle Modernisierungsmaßnahmen, die zur Senkung des Energieverbrauchs und damit zur Kostenreduzierung beitragen sollen. +

    +

    + Weiterführende Infrormationen:
    + – Bedarfsausweis
    + – Häufige Fragen zum Bedarfsausweis Gewerbe +

    + +
    + +
    +

    Bedarfsausweis Gewerbe

    +
    + Energieausweis online erstellen - Bedarfsausweis Gewerbe +
      +
    • Aktuelle Grundriss- und Ansichtspläne werden für die Zonierung benötigt.
    • +
    • Baubeschreibung (z.B. aus der Baugenehmigung) mit Angabe der verwendeten Baustoffe und TGA.
    • +
    • Angabe vom Baujahr der Heizung, Gebäude und Klimaanlage.
    • +
    • + Bedarfsausweis Gewerbe + bei allen Nichtwohngebäuden möglich (kann immer verwendet werden).
    • +
    +
    + + Jetzt Bedarfsausweis Gewerbe anfragen + +
    + + + + +
    + +
    \ No newline at end of file From 6242fc9ef8668794c69bcd551a29d60c0c6048c5 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:26:51 +0100 Subject: [PATCH 06/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../bedarfsausweis-wohngebaeude/index.astro | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 src/pages/bedarfsausweis/bedarfsausweis-wohngebaeude/index.astro diff --git a/src/pages/bedarfsausweis/bedarfsausweis-wohngebaeude/index.astro b/src/pages/bedarfsausweis/bedarfsausweis-wohngebaeude/index.astro new file mode 100644 index 00000000..16a3224c --- /dev/null +++ b/src/pages/bedarfsausweis/bedarfsausweis-wohngebaeude/index.astro @@ -0,0 +1,169 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Bedarfsausweis Wohngebäude

    +

    Im Bedarfsausweis Wohngebäude wird der Endenergiebedarf
    und der Primärenergiebedarf ermittelt

    + +
    + +
    + + +
    + + + +
    +

    + Beim Bedarfsausweis Wohngebäude werden die Energiekennwerte über standardisierte Randbedingungen ermittelt. Qualität und Dämmzustand der Gebäudehülle wie Dach, Außenwand, Fenster und Boden spielen bei der Berechnung eine wichtige Rolle. Energieverluste bei der Wärmeerzeugung durch die Heizungsanlage fließen in die Berechnung des Endenergiebedarfes ebenfalls mit ein. +

    +

    + Über den Primärenergiefaktor des verwendeten Energieträgers wird der Primärenergiebedarf des Gebäudes ermittelt. Dieser Wert spiegelt die sogenannte CO2-Effizienz wieder und darf nicht mit dem tatsächlichen Energiebedarf des Gebäudes verwechselt werden. +

    +
    +
    + +
    + + + Endenergiebedaf-Primaerenergiebedarf-Farbskala +

    + Beispiel: Endenergiebedaf Primaerenergiebedarf Farbskala vom Bedarfsausweis Wohngebäude +

    + +
    + + +
    + + + + +
    + +

    Den Bedarfsausweis Wohngebäude benötigen Sie bei Sanierung und Neubau

    +

    + Sollten Sie einen Neubau oder Modernisierungsmaßnahmen planen bzw. Fördermittel beantragen wollen, dann benötigen Sie einen Bedarfsausweis für Wohngebäude.​Der Bedarfsausweis liefert aussagekräftige und vergleichbare Energiewerte. +

    + +
    + +

    Größe, Form, Hülle und Anlagetechnik spielen die Hauptrolle

    +
    +
    + Ermittlung von Einsparpotentialen mit dem Bedarfsausweis Wohngebäude +
    + Ermittlung von Einsparpotentialen mit dem Bedarfsausweis Wohngebäude +
    +
    +

    + Größe, Form, Hülle und Anlagetechnik des Gebäudes spielen die Hauptrolle bei der Berechnung des Energiebedarfs, der im Bedarfsausweis für Wohngebäude genannt werden muss. Außerdem müssen die verwendeten Baumaterialien – insbesondere die unterschiedliche Wärmeleitfähigkeit der Materialien – in die Analyse einbezogen werden. Diese Werte sind unabhängig von der Anzahl der Bewohner und deren Verhalten beim Energieverbrauch. Maßgebend sind die bauphysikalischen Werte. +

    +
    + +
    + +

    Ideale Energiebedarfskennziffer

    +
    +

    + Wie viel Wärme entweicht durch die Gebäudehülle? Wie viel Energie sollte idealerweise dem Gebäude zugeführt werden, damit eine bestimmte Innentemperatur erreicht wird? +
    + Die Antworten auf diese Fragen sind relevant für die Ergebnisfindung im Rahmen der Erstellung des Bedarfsausweises für Wohngebäude. In die Berechnung einbeziehen muss man auch die Verluste bei der Wärmeerzeugung (Wirkungsgrad der Anlagentechnik) sowie die CO2-Wirksamkeit des Energieträgers (Energieverluste des Energieträgers für Transport, Herstellung, etc.). +

    +
    + Bedarfsausweis Wohngebäude Energieverluste +
    + Wohngebäude Energieverluste +
    +
    +
    + +
    + +

    + Weiterführende Infrormationen:
    + – Bedarfsausweis
    + – Häufige Fragen zum Bedarfsausweis Wohngebäude
    + – Statistiken zum Bedarfsausweis Wohngebäude +

    + +
    + +
    +

    Bedarfsausweis Wohngebäude

    +
    + Energieausweis online erstellen - Verbrauchsausweis +
      +
    • Die verwendete Heizungsanlage (Standardkessel, Brennwertkessel, etc.) muß eingegeben werden.
    • +
    • Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen eingegeben werden.
    • +
    • + Bedarfsausweis + + bei allen Gebäuden möglich. Die Berechnung ist umfangreicher und besser vergleichbar.
    • +
    +
    + + Jetzt Bedarfsausweis erstellen + +
    + +
    + +
    \ No newline at end of file From 2eb44a9bb3c60304ad8c6812034db5f1de81fc12 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:27:30 +0100 Subject: [PATCH 07/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 272 ++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis-gewerbe/index.astro diff --git a/src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis-gewerbe/index.astro b/src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis-gewerbe/index.astro new file mode 100644 index 00000000..861f04fb --- /dev/null +++ b/src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis-gewerbe/index.astro @@ -0,0 +1,272 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Häufige Fragen zum Bedarfsausweis Gewerbe

    + +
    + +
    + + +
    + +
    + +
    +

    + Weiterführende Infrormationen:
    + – Informationen zum Bedarfsausweis
    + – Bedarfsausweis Gewerbe +

    +
    + +
    +
    +

    Warum gibt es die Unterscheidung zwischen Verbrauchsausweis und Bedarfsausweis?

    +

    + Die neue Energieeinsparverordnung brachte die stufenweise Einführung des Energieausweises am 1. Juli 2008 mit sich. Gemäß EnEV kann der Energieausweis mit zwei unterschiedlichen Berechnungsmethoden erstellt werden. Mit der einfachen verbrauchsbasierten Methode (Verbrauchsausweis) oder der etwas umfangreicheren bedarfsbasierten Methode (Bedarfsausweis). +

    +

    + Der Verbrauchsausweis für Gewerbegebäude gibt den Energieverbrauch pro m² Nutzfläche in den vergangenen drei Jahren für Heizung, Kühlung, Belüftung und Beleuchtung an. Bei Vermietung und Verkauf ist der Verbrauchsausweis ausreichend. Es kommt jedoch häufiger vor, daß keine lückenlosen Verbrauchsabrechnungen vorliegen oder zu große Leerstände vorhanden sind. +

    +

    + Für diesen Fall oder bei Neubau und Modernisierung kommt der Bedarfsausweis Gewerbe zum Tragen. Die bedarfsbasierte Berechnung ist unabhängig von Verbrauchsabrechnungen und kann anhand von Gebäudeplänen erstellt werden. +

    + zum Anfang +
    + +
    +
    +

    Wozu ist der Energieausweis relevant?

    +

    + Als Gebäudeeigentümer erfüllt man mit dem Vorlegen eines Energieausweises bei Verkauf, Vermietung oder Verpachtung einer Immobilie die Nachweispflicht. Die energetischen Werte lassen sich mit denen bei Immobilien ähnlicher Art vergleichen. +

    +

    + Durch die Analyse zur Erstellung eines Energieausweises werden die energetischen Stärken und Schwächen deutlich und Sie als Gebäudeeigentümer haben die Chance, durch entsprechende Sanierungsmaßnahmen die Energiebilanz zu verbessern. Außerdem können mit geeigneten Energiesparmaßnahmen die Betriebskosten reduziert werden. +

    + zum Anfang +
    + +
    +
    +

    Was ist ein Bedarfsausweis?

    +

    + Der Bedarfsausweis wird bei Nichtwohngebäuden anhand eines Mehrzonenmodells erstellt. Dabei werden Zonen unterschiedlicher Nutzung und Konditionierung definiert. Der Dämmzustand der Gebäudehülle (Dach, Außenwände, Fußbode, Fenster), der Wirkungsgrad der Anlagentechnik (Heizung, Klimatisierung, Belüftung) sowie die Beleuchtung des Gebäudes fließen in die Berechnung ein. Berücksichtigt werden die Verwendung regenerativer Energien wie Wärmepumpen oder Solarenergie. Durch vorgegebene Randbedingungen ist der Bedarfsausweis unabhängig vom individuellen Nutzerverhalten. +

    +

    + Die Energieeffizienz des verwendeten Energieträgers fließt über den Primärenergiefaktor in das Endergebnis mit ein. +

    + zum Anfang +
    + +
    +
    +

    Was muss bei dem Bedarfsausweis für Gewerbeobjekte insbesondere berücksichtigt werden?

    +

    + Beim Bedarfsausweis für gewerbliche Immobilien wird neben dem Heizenergiebedarf zusätzlich der Energiebedarf für Beleuchtung, Belüftung und Klimatisierung ermittelt. Auch müssen die Zonen unterschiedlicher Nutzung sinnvoll berücksichtigt werden. +

    +

    + Der Bedarfsausweis für Objekte im gewerblichen Bereich muss alle Nutzungszonen mit prozentualem Anteil an der Gesamtnutzfläche auflisten sowie qualifiziert erstellte Modernisierungsvorschläge enthalten. +

    + zum Anfang +
    + +
    +
    +

    Ist zur Erstellung eines bedarfsbasierten Energieausweis ein Vor-Ort-Termin angesagt?

    +

    + Eine Vor-Ort-Begehung ist dann nötig, wenn keine Architektenpläne und Baubeschreibung vorgelegt werden können. Bei einem Vor-Ort-Termin werden die Daten zur Gebäudehülle aufgenommen und die vorhandene technische Gebäudeausrüstung (TGA) begutachtet. +

    + zum Anfang +
    + +
    +
    +

    Wann ist die Beantragung eines Bedarfsausweises sinnvoll bzw. zu empfehlen?

    +

    + Wenn mehr als 10 % der beheizten Gebäudefläche dauerhaft leer stehen, wenn verhältnismäßig hohe Energie-Verbrauchswerte zu verzeichnen sind, wenn komplexe Gebäude fundiert bewertet werden müssen oder wenn für das Gebäude die CO2-Emissionen ausgewiesen werden sollen – in all diesen Fällen ist die Erstellung eines Bedarfsausweises sinnvoll. +

    + zum Anfang +
    + +
    +
    +

    Wann ist der Bedarfsausweis nach EnEV auszustellen?

    +

    + Der Bedarfsausweis ist laut Energieeinsparverordnung auszustellen, wenn keine Verbrauchswerte der vergangenen drei Jahre vorgelegt werden können oder wenn die Leerstandszeiten zu hoch sind. Auch wenn die Verbräuche nicht eindeutig durch Unterzähler den entsprechenden Zonen zugeordnet werden können. +

    +

    + Auch bei Neubau bzw. Sanierung und Erweiterung ist der Bedarfsausweis Pflicht. +

    + zum Anfang +
    + +
    +
    +

    Welche Vorteile habe ich, wenn ich den bedarfsbasierten Energieausweis vom Ingenieurbüro Cornelsen ausstellen lasse?

    +

    + Mit uns – dem Ingenieurbüro Cornelsen – haben Sie kompetente und unabhängige Ansprechpartner. Die Sachverständigen unseres Teams verfügen über Praxiserfahrung von über 10 Jahren und detaillierte Fachkenntnisse. +

    + zum Anfang +
    + +
    +
    +

    Gibt es Gebäude, die eine Ausnahme bilden bei den beschriebenen Anlässen zur Erstellung eines Energieausweises?

    +

    + Ja, kleine Gebäude, die kleiner sind als 50 m², Gebäude die weniger als vier Monate im Jahr beheizt werden, denkmalgeschützte Gebäude und Kirchen bilden genau diese Ausnahme. Auch unbeheizte Gebäude und Betriebsgebäude zur Haltung von Tieren o.ä. benötigen keinen Energieausweis. +

    + zum Anfang +
    + +
    +
    +

    In welchem Gesetzestext sind die Regelungen zu Ausstellung, Aussehen und Inhalt des Energieausweises zu finden?

    +

    + Das Aussehen, die Berechnung und Ausstellung des Energieausweises sind in Deutschland in den Regelungen der Energieeinsparverordnung (EnEV) und des Gesetzes zur Einsparung von Energie in Gebäuden festgelegt. Die aktuelle EnEV 2014 ist am 13. November 2013 in Kraft getreten. Rechtliche Grundlage für den Energieausweis bildet die Richtlinie 2002/91/EG des europäischen Parlaments. +

    + zum Anfang +
    + +
    +
    +

    Bei mir fehlt die Seite 3 des Bedarfsausweises. Wurde die etwa vergessen?

    +

    + Nein. Diese Seite gibt es beim Bedarfsausweis nicht. Sie wird nur für den Verbrauchsausweis benötigt. +

    + zum Anfang +
    + +
    +
    +

    Wie lange ist der Energieausweis gültig?

    +

    + 10 Jahre, beginnend mit dem Ausstellungsdatum. Diese Regelung gilt sowohl für den Energieverbrauchsausweis als auch für den Energiebedarfsausweis. +

    + zum Anfang +
    + +
    +
    +

    In welchen Fällen verliert der Bedarfsausweis seine Gültigkeit?

    +

    + Die Ausstellung eines neuen Bedarfsausweises ist erforderlich bei Erweiterung der beheizten Nutzfläche um mehr als 50 %, oder Dämmung oder Austausch von mehr als 10% der Gesamtbauteilfläche eines Außenbauteils oder wenn die hinzukommende Nutzfläche größer als 50 m² ist. +

    + zum Anfang +
    + +
    +
    +

    Gilt der Energieausweis – erstellt vom Ingenieurbüro Cornelsen – bundesweit?

    +

    + Ja. Der Energieausweis, der von uns, dem Ingenieurbüro Cornelsen, erstellt wird, gilt bundesweit. Bei der Wahl des Ausstellers ist es unerheblich, aus welchem Bundesland dieser kommt. Sie können sich als Immobilienbesitzer für Qualität entscheiden und bei uns – dem Ingenieurbüro Cornelsen – Ihren Energieausweis bestellen, gleichgültig, in welchem Bundesland Sie ansässig sind. +

    + zum Anfang +
    + +
    +
    +

    Was kostet ein Bedarfsausweis?

    +

    + Für den bedarfsbasierten Energieausweis muss eine detaillierte Gesamtaufnahme mit Erstellung eines 3D Modells des Gebäudes inkl. Zonierung erfolgen. Da die Gewerbeobjekte sehr unterschiedlich sind, sollten Sie bei uns ein individuelles Angebot anfordern. Für sehr kleine Gewerbeflächen (z.B. in Mischgebäuden) können ca. 300 € inkl. MwSt. veranschlagt werden. +

    + zum Anfang +
    + +
    +
    +

    Sind bei Mischgebäuden mit Gewerbeanteil noch zusätzliche Angaben erforderlich?

    +

    + Ja, bei Mischgebäuden müssen zwei Energieausweise ausgestellt werden. Der Bedarfsausweis Gewerbe für den Nichtwohnteil und der Bedarfsausweis Wohngebäude für den Wohnteil des Gebäudes. Folgende zusätzliche Daten werden für den Gewerbeteil benötigt: Die Art der Gebäudenutzung, die Variante der Lüftung und Klimatisierung (falls vorhanden) sowie der Stromverbrauch der vergangenen drei Jahre für Beleuchtung, Lüftung, Kühlung/ Klimatisierung. +

    + zum Anfang +
    + +
    +
    +

    In welchem Gesetzestext sind die Regelungen zu Ausstellung, Aussehen und Inhalt des Energieausweises zu finden?

    +

    + Das Aussehen, die Berechnung und Ausstellung des Energieausweises sind in Deutschland in den Regelungen der Energieeinsparverordnung (EnEV) und des Gesetzes zur Einsparung von Energie in Gebäuden festgelegt. Die aktuelle EnEV 2014 ist am 13. November 2013 in Kraft getreten. Rechtliche Grundlage für den Energieausweis bildet die Richtlinie 2002/91/EG des europäischen Parlaments. +

    + zum Anfang +
    + +
    +
    +

    Wie fand der energetische Vergleich von Gebäuden in der Zeit vor der Novellierung der EnEV im Jahr 2007 statt?

    +

    + Vor Einführung des Energieausweises gab es den sogenannten Energiesparnachweis, dieser war aber je nach Bundesland etwas unterschiedlich strukturiert. Einen bundesweit einheitlichen Energieausweis gab es vorher nicht. Daher konnte man Gebäude vor Novellierung der EnEV nicht so gut vergleichen. +

    + zum Anfang +
    + +
    +
    +

    Müssen die im Energieausweis dargestellten Modernisierungsmaßnahmen realisiert werden?

    +

    + Der Energieausweis dient zur Information, die angegebenen sind Empfehlungen, aber keine Verordnungen. +

    + zum Anfang +
    + +
    +
    +

    Wer muss den Energieausweis bezahlen, wenn eine einzelne Wohnung verkauft oder vermietet werden soll und eine Eigentümergemeinschaft Gebäudebesitzer des Mehrfamilienhauses ist?

    +

    + In Eigentümergemeinschaften in einem Mehrfamilienhaus muss der verkaufs- oder vermietungswillige Eigentümer sich darum kümmern, dass der Energieausweis für potenzielle Käufer oder Mieter vorliegt. Laut aktueller Energieeinsparverordnung (EnEV) sind die Kosten von der Eigentümergemeinschaft zu tragen. +

    + zum Anfang +
    + +
    + +
    +

    Bedarfsausweis Gewerbe

    +
    + Energieausweis online erstellen - Bedarfsausweis Gewerbe +
      +
    • Aktuelle Grundriss- und Ansichtspläne werden für die Zonierung benötigt.
    • +
    • Baubeschreibung (z.B. aus der Baugenehmigung) mit Angabe der verwendeten Baustoffe und TGA.
    • +
    • Angabe vom Baujahr der Heizung, Gebäude und Klimaanlage.
    • +
    • + Bedarfsausweis Gewerbe + bei allen Nichtwohngebäuden möglich (kann immer verwendet werden).
    • +
    +
    + + Jetzt Bedarfsausweis Gewerbe anfragen + +
    + +
    + +
    \ No newline at end of file From 9d4359ea89f514af9eda2b94b1f6cbd303d9ba12 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:29:07 +0100 Subject: [PATCH 08/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 318 ++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100644 src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis/index.astro diff --git a/src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis/index.astro b/src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis/index.astro new file mode 100644 index 00000000..211c178c --- /dev/null +++ b/src/pages/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis/index.astro @@ -0,0 +1,318 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Häufige Fragen zum Bedarfsausweis

    + +
    + +
    + +
    + +
    + +

    + Weiterführende Infrormationen:
    – + Informationen zum Bedarfsausweis
    – + Bedarfsausweis Wohngebäude +

    + +
    +
    +

    Wofür braucht man einen Energieausweis?

    +

    + Als Gebäudeeigentümer erfüllt man mit dem Vorlegen eines Energieausweises bei Verkauf, Vermietung oder Verpachtung einer Immobilie die Nachweispflicht. Die energetischen Werte lassen sich bei Immobilien ähnlicher Art vergleichen. Durch die Analyse zur Erstellung eines Energieausweises werden die energetischen Stärken und Schwächen deutlich und Sie als Gebäudeeigentümer haben die Chance, durch entsprechende Sanierungsmaßnahmen die Energiebilanz zu verbessern. Außerdem können mit geeigneten Energiesparmaßnahmen die Betriebskosten reduziert werden. +

    +

    + Bei Neubau, Sanierung und Erweiterung muß ebenfalls ein Energieausweis erstellt werden. In diesen Fällen muß man den Bedarfsausweis nach Abschluss der Maßnahme auf Nachfrage bei der Baubehörde vorlegen. Es soll sichergestellt werden, daß alle EnEV-Anforderungswerte eingehalten werden. Bei Einzelmaßnahmen (Erneuerung einzelner Bauteile) benötigt man in der Regel keinen Bedarfsausweis sondern kann einen EnEV-Bauteilnachweis vorlegen. +

    + zum Anfang +
    + +
    +
    +

    Warum gibt es die Unterscheidung zwischen Verbrauchsausweis und Bedarfsausweis?

    +

    + Die neue Energieeinsparverordnung brachte die stufenweise Einführung des Energieausweises am 1. Juli 2008 mit sich. Gemäß EnEV kann der Energieausweis mit zwei unterschiedlichen Berechnungsmethoden erstellt werden. Mit der einfachen verbrauchsbasierten Methode (Verbrauchsausweis) oder der etwas umfangreicheren bedarfsbasierten Methode (Bedarfsausweis). +

    +

    + Der Gesetzgeber wollte Vermietern oder Verkäufern von Immobilien eine einfache Möglichkeit bieten den Energieausweis zu erstellen. Bei sanierten Gebäuden oder Gebäuden mit Baualter nach 1977  kann daher der einfache Verbrauchsausweis erstellt werden. Nur bei alten unsanierten Gebäuden ist der umfangreiche Bedarfsausweis nötig. +

    +

    + Bei Neubau, Sanierung und Erweiterung wird in jedem Fall der Bedarfsausweis benötigt. +

    + zum Anfang +
    + +
    +
    +

    Was ist ein Bedarfsausweis?

    +

    + Der Bedarfsausweis wird anhand standardisierter Randbedingungen erstellt und ist unabhängig vom individuellen Nutzerverhalten. Berechnungsgrundlage ist der Dämmzustand der Gebäudehülle (Dach, Außenwände, Fußbode, Fenster) sowie der Wirkungsgrad der Heizungsanlage. Bei Verwendung von mechanischer Be- und Entlüftung mit Wärmerückgewinnung, wird die zurückgewonnene Wärme über einen Faktor berücksichtigt. Auch findet die Verwendung regenerativer Energien wie Wärmepumpen oder Solarenergie entsprechende Berücksichtigung. +

    +

    + Die Energieeffizienz des verwendeten Energieträgers fließt über den Primärenergiefaktor in das Endergebnis mit ein. +

    + zum Anfang +
    + +
    +
    +

    Primärenergiebedarf, was ist das?

    +

    + Der Primärenergiebedarf bildet die Gesamtenergieeffizienz eines Gebäudes ab. Er berücksichtigt neben der Endenergie auch die so genannte „Vorkette“ (Erkundung, Gewinnung, Verteilung, Umwandlung) der jeweils eingesetzten Energieträger (z.B. Heizöl, Gas, Strom, erneuerbare Energien). +

    +

    + Der Primärenergiebedarf fällt dann besonders niedrig aus, wenn Erneuerbare Energien (Solare Strahlungsenergie, Geothermie, Energie aus Biomasse) für die Energieversorgung im Gebäude eingesetzt werden. Am Primärenergiebedarf können Verbraucher erkennen, wie umweltfreundlich ihr Gebäude ist. +

    + zum Anfang +
    + +
    +
    +

    Was kostet ein Bedarfsausweis?

    +

    + Wenn Sie als Eigentümer oder Bevollmächtigter die Datenerhebung selbst durchführen, dann ist es möglich den Bedarfsausweis bei uns für 135€ inkl.​MwSt. zu erstellen. Dafür müssen Sie technische und geometrische Daten zum Gebäude über unsere Eingabemaske zur Verfügung stellen. Wir empfehlen die Online-Eingabe für Personen die vom Fach sind bzw. über genug Erfahrung verfügen. +

    +

    + Für den bedarfsbasierten Energieausweis muss eine detaillierte Gesamtaufnahme des Gebäudes erfolgen. Daher bieten wir Ihnen diese Leistung als Service an. Wenn Sie uns Architektenpläne und Baubeschreibung übermitteln, dann können wir Ihnen den Bedarfsausweis zwischen 195€ inkl.​MwSt. (einfache Wohnebäude) und 297€ inkl.​MwSt. (kompliziertere Wohnebäude) erstellen. +

    + zum Anfang +
    + +
    +
    +

    Wie lange ist der Energieausweis gültig?

    +

    + 10 Jahre, beginnend mit dem Ausstellungsdatum. Diese Regelung gilt sowohl für den Energieverbrauchsausweis als auch für den Energiebedarfsausweis. +

    + zum Anfang +
    + +
    +
    +

    Gilt der Energieausweis – erstellt vom Ingenieurbüro Cornelsen – bundesweit?

    +

    + Ja. Der Energieausweis, der von uns, dem Ingenieurbüro Cornelsen, erstellt wird, gilt bundesweit. Bei der Wahl des Ausstellers ist es unerheblich, aus welchem Bundesland dieser kommt. Sie können sich als Immobilienbesitzer für Qualität entscheiden und bei uns – dem Ingenieurbüro Cornelsen – Ihren Energieausweis bestellen, gleichgültig, in welchem Bundesland Sie ansässig sind. +

    + zum Anfang +
    + +
    + +
    +

    Bedarfsausweis Wohngebäude

    +
    + Energieausweis online erstellen - Verbrauchsausweis +
      +
    • Die verwendete Heizungsanlage (Standardkessel, Brennwertkessel, etc.) muß eingegeben werden.
    • +
    • Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen eingegeben werden.
    • +
    • + Bedarfsausweis + + bei allen Gebäuden möglich. Die Berechnung ist umfangreicher und besser vergleichbar.
    • +
    +
    + + Jetzt Bedarfsausweis erstellen + +
    + +
    +
    +

    In welchen Fällen verliert der Bedarfsausweis seine Gültigkeit?

    +

    + Die Ausstellung eines neuen Bedarfsausweises ist erforderlich bei Erweiterung der beheizten Nutzfläche um mehr als 50 %, oder Dämmung oder Austausch von mehr als 10% der Gesamtbauteilfläche eines Außenbauteils oder wenn die hinzukommende Nutzfläche größer als 50 m² ist. +

    + zum Anfang +
    + +
    +
    +

    Wann ist die Beantragung eines Bedarfsausweises sinnvoll bzw. zu empfehlen?

    +

    + Wenn mehr als 10 % der beheizten Gebäudefläche dauerhaft leer stehen, wenn verhältnismäßig hohe Energie-Verbrauchswerte zu verzeichnen sind, wenn komplexe Gebäude fundiert bewertet werden müssen oder wenn für das Gebäude die CO2-Emissionen ausgewiesen werden sollen – in all diesen Fällen ist die Erstellung eines Bedarfsausweises sinnvoll. +

    + zum Anfang +
    + +
    +
    +

    Welchen Energiausweis brauche ich für Modernisierungen am Haus?

    +

    + Wer sein Gebäude modernisieren möchte, benötigt ebenfalls einen Energieausweis. Bei den Planungen muss zwingend der bedarfsorientierte Energieausweis (Bedarfsausweis) bedacht werden. Die unverzügliche, umfassende Energieberatung ist oft im Vorfeld nicht möglich. Deshalb sollte erst einmal ein Bedarfsausweis erstellt werden. Dadurch erhalten Sie einen Überblick über das mögliche Einsparpotenzial – z. B. bei der Heizung. Die Erhebungsdaten des Energieausweises können später in die Energieberatung integriert werden. Auch wenn Sie nur Nutzer Ihres Gebäudes sind und Sie kein Modernisierungsvorhaben planen, bietet der Energieausweis viele Vorteile. Schließlich erhalten Sie mit diesem Dokument einen Überblick zur aktuellen energetischen Situation und zum möglichen Einsparpotenzial. Bei zahlreichen Gebäuden ist ein Einsparpotenzial bei den Energiekosten von 60% und mehr möglich. +

    + zum Anfang +
    + +
    +
    +

    Wann ist der Bedarfsausweis nach EnEV auszustellen?

    +

    + Der Bedarfsausweis ist laut Energieeinsparverordnung auszustellen, wenn keine Verbrauchswerte der vergangenen drei Jahre vorgelegt werden können und wenn neue Wärmeschutzberechnungen für das Gebäude vorgenommen werden. Auch bei unsanierten Wohngebäuden mit bis zu 4 Wohneinheiten und Baujahr vor 1978 oder bei Neubau bzw. Sanierung und Erweiterung ist der Bedarfsausweis Pflicht. +

    + zum Anfang +
    + +
    +
    +

    Sind bei Mischgebäuden mit Gewerbeanteil noch zusätzliche Angaben erforderlich?

    +

    + Ja, bei Mischgebäuden müssen zwei Energieausweise ausgestellt werden. Der Bedarfsausweis Gewerbe für den Nichtwohnteil und der Bedarfsausweis Wohngebäude für den Wohnteil des Gebäudes. Folgende zusätzliche Daten werden für den Gewerbeteil benötigt: Die Art der Gebäudenutzung, die Variante der Lüftung und Klimatisierung (falls vorhanden) sowie der Stromverbrauch der vergangenen drei Jahre für Beleuchtung, Lüftung, Kühlung/ Klimatisierung. +

    + zum Anfang +
    + +
    +
    +

    Ist zur Erstellung eines bedarfsbasierten Energieausweis ein Vor-Ort-Termin angesagt?

    +

    + Eine Vor-Ort-Begehung ist dann nötig, wenn keine Architektenpläne und Baubeschreibung vorgelegt werden können. Bei einem Vor-Ort-Termin werden die Daten zur Gebäudehülle aufgenommen und die vorhandene technische Gebäudeausrüstung (TGA) begutachtet. +

    + zum Anfang +
    + +
    +
    +

    Bei mir fehlt die Seite 3 des Bedarfsausweises. Wurde die etwa vergessen?

    +

    + Nein. Diese Seite gibt es beim Bedarfausweis nicht. Sie wird nur für den Verbrauchsausweis benötigt. +

    + zum Anfang +
    + +
    +
    +

    Müssen die im Energieausweis dargestellten Modernisierungsmaßnahmen realisiert werden?

    +

    + Der Energieausweis dient zur Information, die Angaben sind Empfehlungen, aber keine Verordnungen. +

    + zum Anfang +
    + +
    + +
    +

    Bedarfsausweis Wohngebäude

    +
    + Energieausweis online erstellen - Verbrauchsausweis +
      +
    • Die verwendete Heizungsanlage (Standardkessel, Brennwertkessel, etc.) muß eingegeben werden.
    • +
    • Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen eingegeben werden.
    • +
    • + Bedarfsausweis + + bei allen Gebäuden möglich. Die Berechnung ist umfangreicher und besser vergleichbar.
    • +
    +
    + + Jetzt Bedarfsausweis erstellen + +
    + + +
    +
    +

    Gibt es Gebäude, die eine Ausnahme bilden bei den beschriebenen Anlässen zur Erstellung eines Energieausweises?

    +

    + Ja, kleine Gebäude, die kleiner sind als 50 m², Ferienhäuser, die weniger als vier Monate im Jahr beheizt werden, denkmalgeschützte Gebäude und Kirchen bilden genau diese Ausnahme. Auch unbeheizte Gebäude und Betriebsgebäude zur Haltung von Tieren o.ä. benötigen keinen Energieausweis. +

    + zum Anfang +
    + +
    +
    +

    Welche Vorteile habe ich, wenn ich den bedarfsbasierten Energieausweis vom Ingenieurbüro Cornelsen ausstellen lasse?

    +

    + Mit uns – dem Ingenieurbüro Cornelsen – haben Sie kompetente und unabhängige Ansprechpartner. Die Sachverständigen unseres Teams verfügen über Praxiserfahrung von über 10 Jahren und detaillierte Fachkenntnisse. +

    + zum Anfang +
    + +
    +
    +

    In welchem Gesetzestext sind die Regelungen zu Ausstellung, Aussehen und Inhalt des Energieausweises zu finden?

    +

    + Das Aussehen, die Berechnung und Ausstellung des Energieausweises sind in Deutschland in den Regelungen der Energieeinsparverordnung (EnEV) und des Gesetzes zur Einsparung von Energie in Gebäuden festgelegt. Die aktuelle EnEV 2014 ist am 13. November 2013 in Kraft getreten. Rechtliche Grundlage für den Energieausweis bildet die Richtlinie 2002/91/EG des europäischen Parlaments. +

    + zum Anfang +
    + +
    +
    +

    Wie fand der energetische Vergleich von Gebäuden in der Zeit vor der Novellierung der EnEV im Jahr 2007 statt?

    +

    + Vor Einführung des Energieausweises gab es den sogenannten Energiesparnachweis, dieser war aber je nach Bundesland etwas unterschiedlich strukturiert. Einen bundesweit einheitlichen Energieausweis gab es vorher nicht. Daher konnte man Gebäude vor Novellierung der EnEV nicht so gut vergleichen. +

    + zum Anfang +
    + +
    +
    +

    Wer muss den Energieausweis bezahlen, wenn eine einzelne Wohnung verkauft oder vermietet werden soll und eine Eigentümergemeinschaft Gebäudebesitzer des Mehrfamilienhauses ist?

    +

    + In Eigentümergemeinschaften in einem Mehrfamilienhaus muss der verkaufs- oder vermietungswillige Eigentümer sich darum kümmern, dass der Energieausweis für potenzielle Käufer oder Mieter vorliegt. Laut aktueller Energieeinsparverordnung (EnEV) sind die Kosten von der Eigentümergemeinschaft zu tragen. +

    + zum Anfang +
    + +
    + +
    +

    Bedarfsausweis Wohngebäude

    +
    + Energieausweis online erstellen - Verbrauchsausweis +
      +
    • Die verwendete Heizungsanlage (Standardkessel, Brennwertkessel, etc.) muß eingegeben werden.
    • +
    • Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen eingegeben werden.
    • +
    • + Bedarfsausweis + + bei allen Gebäuden möglich. Die Berechnung ist umfangreicher und besser vergleichbar.
    • +
    +
    + + Jetzt Bedarfsausweis erstellen + +
    + + \ No newline at end of file From 1ce0164e70ae235c693bdae6c8eadb8d752cddeb Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:29:39 +0100 Subject: [PATCH 09/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 235 ++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 src/pages/bedarfsausweis/statistiken-zum-bedarfsausweis/index.astro diff --git a/src/pages/bedarfsausweis/statistiken-zum-bedarfsausweis/index.astro b/src/pages/bedarfsausweis/statistiken-zum-bedarfsausweis/index.astro new file mode 100644 index 00000000..b810daef --- /dev/null +++ b/src/pages/bedarfsausweis/statistiken-zum-bedarfsausweis/index.astro @@ -0,0 +1,235 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Statistiken zum Bedarfsausweis Wohngebäude

    +

    + Durchschnittlicher Energiebedarf in kWh/m² – Mittelwert aller ausgestellten Bedarfsausweise + bei sanierten bzw. unsanierten Wohngebäuden +

    + +
    + +
    + + + +
    +
    + Durchschnittliche Verbrauchskennwerte von Häusern im sanierten bzw. unsanierten Zustand aus dem Verbrauchsausweis Wohngebäude +
    + + Diagramm: Durchschnittlicher Energieverbrauch in kWh/m² im sanierten bzw. unsanierten Zustand. + +
    + + +

    + Bei der statistischen Auswertung oben stehender Grafik wurden die bereits ausgestellten + Bedarfsausweise analysiert. Dabei wurden aus allen Ausweisen deutschlandweit die Haustypen + Einfamilienhaus, Reihenmittelhaus und Mehrfamilienhaus in die Kategorie saniert bzw. + unsaniert eingeteilt.​Innerhalb dieser Kategorien wurde dann der Mittelwert des Energiebedarfs + gebildet und in der Einheit kWh/m² ausgegeben. Die orangenen Balken stellen die Ergebnisse + grafisch dar, und man kann klar erkennen wie groß das Einsparpotential bei den + verschiedenen Haustypen ist. Diese Statistik wird in regelmäßigen Abständen aktualisiert, sodass + die Grafik immer auf dem neuesten Stand ist. +

    + +
    + +

    Durchschnittlicher Energiebedarf von Einfamilienhäusern in kWh/m²

    +

    + Mittelwert aller ausgestellten Bedarfsausweise der entsprechenden Baualtersklasse +

    + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 100 + + + 200 + + + 300 + + + vor 1919 + + + 1919 - 1948 + + + 1949 - 1957 + + + 1958 - 1968 + + + 1968 - 1978 + + + 1979 - 1983 + + + 1984 - 1994 + + + nach 1994 + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ZeitraumVerbrauch
    vor 1919305.575
    1919 - 1948295.365
    1949 - 1957284.925
    1958 - 1968277.61
    1968 - 1978217.822
    1979 - 1983151.759
    1984 - 1994141.565
    nach 199499.863
    +
    +
    +
    +
    +
    +
    + + +

    + Die dargestellten Tortengrafiken illustrieren die steigende Verwendung von energieeffizienten Wärmeerzeugern innerhalb der letzten 15 Jahre. Bei der Erhebung wurden die deutschlandweit ausgestellten Bedarfsausweise ausgewertet und in 4 Baualtersklassen eingeteilt. + Dabei wurde ermittelt, ob Brennwerttechnik, Solarsystem, Wärmepumpe oder ältere Wärmeerzeuger in den jeweiligen Wohngebäuden vorhanden sind. Wie aus den Grafiken hervorgeht, reduziert sich der Bereich der älteren Wärmeerzeuger immer stärker und wird sukzessive durch Brennwerttechnik, Solarsysteme und Wärmepumpen ersetzt. +

    + +
    + +
    +

    Bedarfsausweis Wohngebäude

    +
    + Energieausweis online erstellen - Verbrauchsausweis +
      +
    • Die verwendete Heizungsanlage (Standardkessel, Brennwertkessel, etc.) muß eingegeben werden.
    • +
    • Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen eingegeben werden.
    • +
    • + Bedarfsausweis + + bei allen Gebäuden möglich. Die Berechnung ist umfangreicher und besser vergleichbar.
    • +
    +
    + + Jetzt Bedarfsausweis erstellen + +
    +
    + + \ No newline at end of file From c0df0d73af05ceecf1148bf87eb1abf3259c46e7 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:30:18 +0100 Subject: [PATCH 10/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis-gewerbe/index.astro diff --git a/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis-gewerbe/index.astro b/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis-gewerbe/index.astro new file mode 100644 index 00000000..ff38dab5 --- /dev/null +++ b/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis-gewerbe/index.astro @@ -0,0 +1,164 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Häufige Fragen zum Verbrauchsausweis Gewerbe

    + +
    + +
    + + + +

    + Weiterführende Infrormationen:
    + – Informationen zum Verbrauchsausweis
    + – Verbrauchsausweis Gewerbe
    + – Statistiken zum Verbrauchsausweis Gewerbe +

    + +
    +

    Warum gibt es die Unterscheidung zwischen Verbrauchsausweis und Bedarfsausweis?

    +

    + Die neue Energieeinsparverordnung brachte die stufenweise Einführung des Energieausweises am 1. Juli 2008 mit sich. Gemäß EnEV kann der Energieausweis mit zwei unterschiedlichen Berechnungsmethoden erstellt werden – der einfachen verbrauchsbasierten Methode (Verbrauchsausweis) oder der etwas umfangreicheren bedarfsbasierten Methode (Bedarfsausweis). +

    +

    + Der Gesetzgeber wollte Vermietern oder Verkäufern von Immobilien eine einfache Möglichkeit bieten, den Energieausweis zu erstellen. Bei Vermietung und Verkauf kann daher der einfache Verbrauchsausweis erstellt werden. Nur bei Neubau, Sanierung und Erweiterung ist der umfangreichere Bedarfsausweis nötig. +

    +

    + Der Verbrauchsausweis gibt den Energieverbrauch in den vergangenen drei Jahren für Heizung und Warmwasserbereitung sowie Beleuchtung, Belüftung und Klimatisierung an. +

    + zum Anfang + +
    +

    Was hat es mit dem Energieverbrauchskennwert auf sich?

    +

    + Um den Energieverbrauchskennwert zu ermitteln, wird der tatsächliche Energieverbrauch für die Beheizung des Gebäudes mithilfe eines standortbezogenen Klimafaktors bereinigt. +

    +

    + So führt beispielsweise ein hoher Verbrauch in einem einzelnen harten Winter nicht zu einer schlechteren Beurteilung des Gebäudes. Der tatsächliche Energieverbrauch in einem Gebäude kann aufgrund des Witterungseinflusses vom Energieverbrauchskennwert abweichen. +

    + zum Anfang + +
    +

    Was ist für die Berechnung zur Erstellung eines Verbrauchsausweises für Gewerbeobjekte relevant?

    +

    + Ob Gaststätten, Hotels, Bürogebäude, Verwaltungsbauten, Produktionsstätten, Schulen, Krankenhäuser oder Werkstätten – bei dem Verbrauchsausweis für gewerblich genutzte Objekte wird nicht nur der Verbrauch für Heizung, Lüftung und Warmwasser mit einbezogen, sondern auch der Aufwand für Kühlung und Klimatisierung sowie Beleuchtung. +

    + zum Anfang + +
    +

    Von welchen Faktoren werden die Werte im Verbrauchsausweis geprägt?

    +

    + Das Ergebnis im Verbrauchsausweis ist stark vom individuellen Nutzungsverhalten abhängig. Wird in einem energetisch schlechten Gebäude kaum geheizt, so kann der Energieausweis trotzdem sehr gut ausfallen. +

    + zum Anfang + +
    +

    In welchen Fällen stimmen die angegebenen Energieverbrauchswerte nicht mit den auf dem Energieausweis angegebenen Werten überein?

    +

    + Laut Energieeinsparverordnung muss eine Witterungsbereinigung des Energieverbrauchs für Heizung erfolgen, die die anerkannten Regeln der Technik in einem entsprechenden Verfahren zur Ermittlung des Energieverbrauchskennwertes berücksichtigt. +

    +

    + Zu beachten sind dabei der Einfluss der Witterung in den jeweiligen Zeitabschnitten (Abrechnungs- oder Kalenderjahr; zeitliche Bereinigung) sowie die unterschiedlichen Gegebenheiten am Standort des Gebäudes und beispielhaft am Standort „Würzburg“, der als Referenz für die Klimabereinigung in Deutschland gilt. +

    +
    +

    Wir analysieren Folgendes:

    +
      +
    • Den Gebäudestandort anhand einer offiziellen Wetterstation (über die Postleitzahl ermittelbar);
    • +
    • Die Zeitabschnitte, die für die Ermittlung des Energieverbrauchskennwerts ausschlaggebend sind;
    • +
    • Die Klimafaktoren der Wetterstation;
    • +
    • Den Energieverbrauchskennwert als Durchschnittswert (bedingt durch die Klimafaktoren können Werte sowohl höher als auch niedriger ausfallen).
    • +
    +
    +
    +

    Ich habe in den Heizölabrechnungen nur Zeiträume, die länger oder kürzer als ein Jahr sind. Kann ich trotzdem den Verbrauchsausweis beantragen?

    +

    + Ja. Solange der Gesamtzeitraum drei Jahre beträgt, ist eine sinnvolle rechnerische Aufteilung in drei gleichmäßige Heizperioden möglich. +

    + zum Anfang + +
    +

    Welche Konsequenzen hat ein schlechter Energiekennwert?

    +

    + Energieausweise dienen ausschließlich der Information. Laut Energieeinsparungsgesetz kann bei unzureichenden Kennwerten keine verpflichtende Gebäudemodernisierung angeordnet werden. +

    + zum Anfang + +
    +

    Bei mir fehlt die Seite 2 des Verbrauchsausweises. Wurde die etwa vergessen?

    +

    + Nein. Die Seite zum Energiebedarfskennwert existiert nur im Bedarfsausweis – beim Verbrauchsausweis wird dieser Wert nicht dargestellt. +

    + zum Anfang + +
    +

    Welche Vorteile bietet der Verbrauchsausweis?

    +

    + Der Verbrauchsausweis ist kostengünstig und erfordert in der Regel lediglich die Beauftragung über unsere Homepage. +

    + zum Anfang + +
    +

    Gibt es auch Nachteile beim Verbrauchsausweis?

    +

    + Ja. Da der Kennwert stark vom individuellen Nutzungsverhalten abhängt, kann er ungünstig ausfallen. Zudem fließt die Qualität der Gebäudehülle und Anlagentechnik nicht in die Bewertung ein – eine CO₂-Emissionsberechnung erfolgt ebenfalls nicht. +

    + zum Anfang + +
    +

    Wie lange ist der Energieausweis gültig?

    +

    + 10 Jahre, beginnend mit dem Ausstellungsdatum. Diese Regelung gilt sowohl für den Energieverbrauchsausweis als auch für den Energiebedarfsausweis. +

    + zum Anfang + +
    +

    Gilt der Energieausweis – erstellt vom Ingenieurbüro Cornelsen – bundesweit?

    +

    + Ja. Der von uns erstellte Energieausweis gilt bundesweit. Unabhängig vom Standort des Ausstellers können Sie sich als Immobilienbesitzer für Qualität entscheiden und Ihren Energieausweis bei uns bestellen. +

    + zum Anfang + +
    +

    Wie fand der energetische Vergleich von Gebäuden in der Zeit vor der Novellierung der EnEV im Jahr 2007 statt?

    +

    + Vor Einführung des Energieausweises gab es den sogenannten Energiesparnachweis, der je nach Bundesland unterschiedlich strukturiert war. Einen bundesweit einheitlichen Energieausweis gab es zuvor nicht, sodass der Vergleich von Gebäuden vor der Novellierung der EnEV schwieriger war. +

    + zum Anfang + +
    +

    Müssen die im Energieausweis dargestellten Modernisierungsmaßnahmen realisiert werden?

    +

    + Der Energieausweis dient lediglich zur Information – die angezeigten Maßnahmen sind Empfehlungen und keine verbindlichen Verordnungen. +

    + zum Anfang + +
    +

    Wer muss den Energieausweis bezahlen, wenn eine einzelne Wohnung verkauft oder vermietet werden soll und eine Eigentümergemeinschaft Gebäudebesitzer des Mehrfamilienhauses ist?

    +

    + In einer Eigentümergemeinschaft muss der verkaufs- oder vermietungswillige Eigentümer sicherstellen, dass der Energieausweis vorliegt. Die Kosten zur Erstellung des Ausweises werden jedoch von der Eigentümergemeinschaft getragen – gemäß der aktuellen Energieeinsparverordnung (EnEV). +

    + zum Anfang + + \ No newline at end of file From 45ee28c332db9df2910c214e7bd2c7ec726fa7c4 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:31:09 +0100 Subject: [PATCH 11/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis/index.astro b/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis/index.astro index 4f386c71..c048b922 100644 --- a/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis/index.astro +++ b/src/pages/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis/index.astro @@ -10,30 +10,29 @@ import Layout from "#layouts/Layout.astro";
    -

    Weiterführende Infrormationen:
    Informationen zum Verbrauchsausweis
    Verbrauchsausweis Wohngebäude
    Statistiken zum Verbrauchsausweis Wohngebäude From 21446bf4e8909c0ad2bb17e28101b3ac08c0816b Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:31:51 +0100 Subject: [PATCH 12/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis-gewerbe/index.astro diff --git a/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis-gewerbe/index.astro b/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis-gewerbe/index.astro new file mode 100644 index 00000000..991a8a52 --- /dev/null +++ b/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis-gewerbe/index.astro @@ -0,0 +1,69 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Statistiken zum Verbrauchsausweis Gewerbe

    +

    Durchschnittliche Heizverbräuche ausgewählter Gewerbeobjekte in kWh/m²

    + +
    + +
    + +
    +
    + Durchschnittliche Heizverbräuche ausgewählter Gewerbeobjekte in kWh/m² – Verbrauchsausweis Gewerbe +
    + + Diagramm: Durchschnittliche Heizverbräuche ausgewählter Gewerbeobjekte in kWh/m². + +
    + +

    + Diese Balkengrafik illustriert die durchschnittlichen Heizenergieverbräuche in kWh/m² einiger ausgewählter Typen von Nichtwohngebäuden. Man kann erkennen, dass es große branchenspezifische Unterschiede im Heizenergieverbrauch der verschiedenen Objekte gibt. +

    +

    + Bei den tatsächlichen Verbräuchen eines untersuchten Gebäudes werden diese Unterschiede entsprechend berücksichtigt und der durchschnittliche Energieverbrauchswert der Branche als Vergleich mit herangezogen. +

    +
    +

    Durchschnittliche Stromverbräuche ausgewählter Gewerbeobjekte in kWh/m²

    +
    +
    + Durchschnittliche Stromverbräuche ausgewählter Gewerbeobjekte in kWh/m² - Verbrauchsausweis Gewerbe +
    + Diagramm: Durchschnittliche Stromverbräuche ausgewählter Gewerbeobjekte in kWh/m². +
    +

    + Bei den durchschnittlichen Stromverbräuchen in kWh/m², die beim Verbrauchsausweis für Gewerbeobjekte mit berücksichtigt werden, fällt die große Bandbreite an unterschiedlichen Verbräuchen auf. Bei den hier ausgewählten Typen von Nichtwohngebäuden kann man erkennen, dass die branchenspezifischen Unterschiede beim Stromverbrauch noch größer sind als beim Heizenergieverbrauch. Auch beim Stromverbrauch eines untersuchten Gebäudes werden diese Unterschiede entsprechend berücksichtigt und der durchschnittliche Stromverbrauchswert der Branche als Vergleich mit herangezogen. +

    +
    + +

    Verteilung der verschiedenen Wärmeerzeuger bei Nichtwohngebäuden aufgeteilt in 3 Baualtersklassen – Auswertung der Verbrauchsausweise

    +
    +
    + Verteilung der verschiedenen Wärmeerzeuger bei Nichtwohngebäuden aufgeteilt in 3 Baualtersklassen +
    + Diagramm: Verteilung der verschiedenen Wärmeerzeuger bei Nichtwohngebäuden aufgeteilt in 3 Baualtersklassen +
    + +

    + Die dargestellten Tortengrafiken illustrieren die steigende Verwendung von energieeffizienten Wärmeerzeugern innerhalb der letzten 10 Jahre. Bei der Erhebung wurden deutschlandweit ausgestellte Verbrauchsausweise für Gewerbeobjekte ausgewertet und in 3 Baualtersklassen eingeteilt. +

    +

    + Dabei wurde ermittelt, ob Brennwerttechnik, Solarsystem, Wärmepumpe oder ältere Wärmeerzeuger in den jeweiligen Gewerbegebäuden vorhanden sind. Wie aus den Grafiken hervorgeht, reduziert sich der Bereich der älteren Wärmeerzeuger immer stärker und wird sukzessive durch Brennwerttechnik, Solarsysteme und Wärmepumpen ersetzt. +

    + +
    + +

    + Weiterführende Infrormationen:
    + – Informationen zum Verbrauchsausweis
    + – Verbrauchsausweis Gewerbe
    + – Häufige Fragen zum Verbrauchsausweis Gewerbe +

    +
    + +
    + + \ No newline at end of file From 2a5416673bef89f06126ad3e6fdc31eaff27d826 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:32:27 +0100 Subject: [PATCH 13/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../index.astro | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis/index.astro b/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis/index.astro index 3ca97f90..0265087e 100644 --- a/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis/index.astro +++ b/src/pages/verbrauchsausweis/statistiken-zum-verbrauchsausweis/index.astro @@ -4,8 +4,10 @@ import Layout from "#layouts/Layout.astro"; -

    Statistiken zum Verbrauchsausweis Wohngebäude

    -

    Durchschnittlicher Energieverbrauch in kWh/m² – Mittelwert aller ausgestellten Verbrauchsausweise bei sanierten bzw. unsanierten Wohngebäuden

    +

    Statistiken zum Verbrauchsausweis Wohngebäude

    +

    Durchschnittlicher Energieverbrauch in kWh/m² – Mittelwert aller ausgestellten Verbrauchsausweise bei sanierten bzw. unsanierten Wohngebäuden

    + +
    @@ -18,8 +20,6 @@ import Layout from "#layouts/Layout.astro"; Diagramm: Durchschnittlicher Energieverbrauch in kWh/m² im sanierten bzw. unsanierten Zustand.
    - -

    @@ -29,10 +29,12 @@ import Layout from "#layouts/Layout.astro"; Innerhalb dieser Kategorien wurde dann der Verbrauchsmittelwert gebildet und in der Einheit kWh/m² ausgegeben. Die orangenen Balken stellen die Ergebnisse grafisch dar und man kann klar erkennen, wie groß das Einsparpotential bei den verschiedenen Haustypen ist. Diese Statistik wird in regelmäßigen Abständen aktualisiert, sodass die Grafik immer auf dem neuesten Stand ist.

    +
    + -

    Durchschnittlicher Energieverbrauch von Einfamilienhäusern in kWh/m²

    -

    Mittelwert aller ausgestellten Bedarfsausweise der entsprechenden Baualtersklasse

    -
    +

    Durchschnittlicher Energieverbrauch von Einfamilienhäusern in kWh/m²

    +

    Mittelwert aller ausgestellten Bedarfsausweise der entsprechenden Baualtersklasse

    +
    @@ -330,20 +332,18 @@ import Layout from "#layouts/Layout.astro";
    -
    -

    Die einzelnen Verbrauchswerte wurden durch die Bildung eines Mittelwertes aller bereits ausgestellten Verbrauchsausweise der entsprechenden Baualtersklasse errechnet. Jeder Verbrauchswert der jeweiligen Baualtersklasse spiegelt sanierte sowie unsanierte Gebäude gleichermaßen wider. Anhand der grafischen Darstellung lässt sich erkennen, dass der Verbrauch stetig abnimmt je jünger die Gebäude sind.

    -
    +
    -

    +

    Verteilung der verschiedenen Wärmeerzeuger bei Wohngebäuden aufgeteilt in 3 Baualtersklassen – Auswertung der Bedarfsausweis Wohngebäude

    -
    -
    + +

    vor 2003

    @@ -725,22 +725,23 @@ import Layout from "#layouts/Layout.astro";
    -
    -

    Die dargestellten Tortengrafiken illustrieren die steigende Verwendung von energieeffizienten Wärmeerzeugern innerhalb der letzten 15 Jahre. Bei der Erhebung wurden ca. 10.000 deutschlandweit ausgestellte Verbrauchsausweise ausgewertet und in 4 Baualtersklassen eingeteilt.

    Dabei wurde ermittelt, ob Brennwerttechnik, Solarsystem, Wärmepumpe oder ältere Wärmeerzeuger in den jeweiligen Wohngebäuden vorhanden sind. Wie aus den Grafiken hervorgeht, reduziert sich der Bereich der älteren Wärmeerzeuger immer stärker und wird sukzessive durch Brennwerttechnik, Solarsysteme und Wärmepumpen ersetzt.

    + +
    Weiterführende Infrormationen:
    Informationen zum Verbrauchsausweis
    Verbrauchsausweis Wohngebäude
    - – Häufige Fragen zum Verbrauchsausweis Wohngebäude + – Häufige Fragen zum Verbrauchsausweis Wohngebäude

    -
    +
    From 5ffcb4b3ff6e132c72810736b174fc39ce08cc60 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:33:07 +0100 Subject: [PATCH 14/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../verbrauchsausweis-gewerbe/index.astro | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 src/pages/verbrauchsausweis/verbrauchsausweis-gewerbe/index.astro diff --git a/src/pages/verbrauchsausweis/verbrauchsausweis-gewerbe/index.astro b/src/pages/verbrauchsausweis/verbrauchsausweis-gewerbe/index.astro new file mode 100644 index 00000000..14b35291 --- /dev/null +++ b/src/pages/verbrauchsausweis/verbrauchsausweis-gewerbe/index.astro @@ -0,0 +1,160 @@ +--- +import Layout from "#layouts/Layout.astro"; +--- + + + +

    Verbrauchsausweis Gewerbe

    +

    Im Verbrauchsausweis Gewerbe wird der Endenergieverbrauch Wärme und der Endenergieverbrauch Strom ermittelt

    + +
    + +
    + +
    + + + + +
    +

    + Auch beim Verbrauchsausweis Gewerbe wird der tatsächliche + Verbrauch des Gebäudes für die Berechnung der Energiekennwerte herangezogen. + Zusätzlich wird beim Gewerbegebäude der Stromverbrauch erfasst. Im Idealfall sollte nur der gebäudebezogene Strom für Beleuchtung, + Hilfsenergie, Belüftung, Klimatisierung und sonstige Gebäudetechnik berücksichtigt werden. Wird der Gebäudestrom nicht separat + erfasst, dann müssen alle zusätzlichen Geräte bzw. Stromverbraucher auf dem Energieausweis vermerkt werden. +

    +

    + Im Ergebnis wird der + Endenergieverbrauch Wärme und der Endenergieverbrauch Strom berechnet und in der Farbskala widergegeben. Aus beiden Werten und den + jeweiligen Primärenergiefaktoren wird der Primärenergieverbrauch ermittelt. +

    +
    +
    + +
    + + + Endenergieverbrauch-Waerme-Endenergieverbrauch-Strom-Farbskala +

    + Beispiel: Endenergieverbrauch Wärme Endenergieverbrauch Strom Farbskala vom Verbrauchsausweis Gewerbe +

    + +
    + + +

    Beispiel Energieausweis und Datenblatt jetzt downloaden

    + + + +

    Ermittlung der Energieverbrauchskennziffer

    +

    + Bei Gewerbeobjekten muss seit dem 1. Juli 2009 bei Verkauf des Gebäudes, bei Vermietung oder Leasing ein Energieausweis erstellt werden. In den meisten Fällen reicht laut Gesetz der Verbrauchsausweis aus. Bei Neubauten ist der Bedarfsausweis Pflicht. Mehr Aufwand als bei Wohnobjekten ist bei der Ermittlung des Primärenergieverbrauches nötig. +

    + +
    + + +

    Bei Altbauten Wahl zwischen Bedarfs- und Verbrauchsausweis

    +

    + Bei Produktions- und Werkstätten, Büro- und Verwaltungsgebäuden, Geschäftshäusern, Schulen, Krankenhäusern, Hotels und Gaststätten wird ein Energieausweis erstellt, der nicht nur die Erfordernisse beim Heizungs- und Wasserverbrauch sowie Lüftungsaufwand erfasst. Auch die Kühlung bzw. Klimatisierung und die vorhandene Beleuchtung müssen berücksichtigt werden. Eigentümer von Altbauten können zwischen Bedarfs- und Verbrauchsausweis wählen. +

    + +
    + + +
    + DIA_VA_Gewerbe.png +
    +

    + Diagramm: Durchschnittliche Heizverbräuche ausgewählter Gewerbeobjekte in kWh/m². +

    + +
    + + +

    Energieausweis für jeden Gebäudeteil bei gemischt genutzten Objekten

    +

    + Zählen zu einem Gebäude Gewerbebetrieb wie auch Wohnung, handelt es sich also um eine gemischt genutzte Immobilie, muss für jeden einzelnen Gebäudeteil sowie für die jeweilige Nutzungsform ein Energieausweis ausgestellt werden. Der Energieausweis für gewerbliche Gebäude ist zehn Jahre gültig. In öffentlich genutzten Gebäuden mit einer Nutzfläche von mehr als 1.000 m² muss der Energieausweis an gut sichtbarer Stelle ausgehängt werden. +

    + +
    + + +

    Die geografische Lage und der Heizzeitraum spielen eine große Rolle

    +

    + Der Verbrauchsausweis ist ein Energieausweis für Gebäude, der drei zusammenhängende Verbrauchsjahre der Heizung als Berechnungsgrundlage heranzieht. Dabei wird ein Mittelwert gebildet und durch die energetische Gebäudenutzfläche geteilt. Um einzelne Gebäude deutschlandweit vergleichen zu können, wird die geografische Lage und der Heizzeitraum bei der Berechnung berücksichtigt. Dies erfolgt mit den vom Deutschen Wetterdienst zur Verfügung gestellten Klimafaktoren. +

    +

    + Weiterführende Infrormationen:
    + – Verbrauchsausweis
    + – Häufige Fragen zum Verbrauchsausweis Gewerbe
    + – Statistiken zum Verbrauchsausweis Gewerbe +

    + +
    + + +
    +
    + Energieausweis online erstellen - Verbrauchsausweis Gewerbe +
    +
    Verbrauchsausweis Gewerbe
    +
    +
      +
    • 3 zusammenhängende Jahre Heizverbräuche müssen eingegeben werden.
    • +
    • 3 zusammenhängende Jahre Stromverbräuche müssen eingegeben werden.
    • +
    • Eingabe von Baujahr Heizung, Gebäude und Klimaanlage.
    • +
    • + + Verbrauchsausweis Gewerbe + bei allen Nichtwohngebäuden möglich (bei Vermietung/Verkauf). +
    • +
    + + Jetzt Verbrauchsausweis Gewerbe erstellen + +
    +
    +
    +
    + +
    \ No newline at end of file From 8ee620935ea001b52e82ef0e3a78653427241816 Mon Sep 17 00:00:00 2001 From: Jens Cornelsen <79703163+IB-Cornelsen@users.noreply.github.com> Date: Fri, 21 Feb 2025 22:33:38 +0100 Subject: [PATCH 15/38] Auto stash before merge of "Jens" and "origin/Jens" --- .../verbrauchsausweis-wohngebaeude/index.astro | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pages/verbrauchsausweis/verbrauchsausweis-wohngebaeude/index.astro b/src/pages/verbrauchsausweis/verbrauchsausweis-wohngebaeude/index.astro index 3b9456d7..19bd1eaf 100644 --- a/src/pages/verbrauchsausweis/verbrauchsausweis-wohngebaeude/index.astro +++ b/src/pages/verbrauchsausweis/verbrauchsausweis-wohngebaeude/index.astro @@ -7,7 +7,9 @@ import Layout from "#layouts/Layout.astro";

    Verbrauchsausweis Wohngebäude

    Im Verbrauchsausweis Wohngebäude wird der Endenergieverbrauch und der Primärenergieverbrauch ermittelt

    -
    +
    + +
    @@ -44,7 +46,7 @@ import Layout from "#layouts/Layout.astro";

    Beispiel: Endenergieverbrauch-Primaerenergieverbrauch-Farbskala vom Verbrauchssausweis Wohngebäude


    -

    Energieausweis Beispiel, Datenblatt und Merkblatt jetzt downloaden

    +

    Energieausweis Beispiel, Datenblatt und Merkblatt jetzt downloaden

    @@ -74,7 +76,7 @@ import Layout from "#layouts/Layout.astro";
    -

    Schnell und unkompliziert einen Verbrauchsausweis Wohngebäude erstellen

    +

    Schnell und unkompliziert einen Verbrauchsausweis Wohngebäude erstellen

    Wenn Sie bei uns einen Verbrauchsausweis erstellen erfahren Sie den Endenergieverbrauch bzw. @@ -98,7 +100,7 @@ import Layout from "#layouts/Layout.astro"; dies ebenfalls im Verbrauchsausweis. So hat es der Gesetzgeber vorgesehen – gleichgültig, ob es sich um den Verbrauchsausweis oder Bedarfsausweis handelt.


    -

    Wir informieren Sie rund um das Gebäudeenergiegesetz (GEG)

    +

    Wir informieren Sie rund um das Gebäudeenergiegesetz (GEG)

    Wir informieren Sie rund um das GEG, damit Ihr Energieausweis fachmännisch und lückenlos erstellt werden kann und aktuellen Richtlinien gerecht wird. Dafür benötigen wir von Ihnen bei der Dateneingabe einige relevante Angaben.

    @@ -112,7 +114,7 @@ import Layout from "#layouts/Layout.astro"; Dadurch wird die Qualität in der Energieausweis Ausstellung sichergestellt. Bei uns erhalten Sie einen rechtssicheren Energieausweis mit Ihrer individuellen Registriernummer.


    -

    Nach der Sanierung muss ein neuer Energieausweis ausgestellt werden

    +

    Nach der Sanierung muss ein neuer Energieausweis ausgestellt werden

    Ein Energieausweis hat eine Gültigkeit von zehn Jahren. Dannach muss ein neuer erstellt werden. Ist zwischenzeitlich eine Sanierung oder Erweiterung des Gebäudes erfolgt, so muss zum Abschluss einer dieser Maßnahmen unmittelbar ein aktueller Energieausweis ausgestellt werden.

    From 785e0f78ffda7f7b84cd5d52dde70e2c30ce6034 Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Sat, 22 Feb 2025 10:20:20 +1100 Subject: [PATCH 16/38] Astro build funktioniert --- astro.config.mjs | 31 +- bun.lock | 371 +++++++- dbml/schema.dbml | 715 +++++++++++++++ package.json | 7 +- prisma/null.ts | 1 + prisma/prisma-enum-generator.ts | 36 + prisma/schema/Anteilshaber.prisma | 11 + prisma/schema/ApiRequests.prisma | 14 + prisma/schema/Aufnahme.prisma | 150 ++++ prisma/schema/BedarfsausweisGewerbe.prisma | 16 + prisma/schema/BedarfsausweisWohnen.prisma | 86 ++ prisma/schema/Benutzer.prisma | 52 ++ prisma/schema/Bild.prisma | 16 + prisma/schema/Event.prisma | 20 + prisma/schema/GEGEinpreisung.prisma | 36 + prisma/schema/GEGNachweisGewerbe.prisma | 30 + prisma/schema/GEGNachweisWohnen.prisma | 30 + prisma/schema/Klimafaktoren.prisma | 11 + prisma/schema/Objekt.prisma | 21 + prisma/schema/Postleitzahlen.prisma | 9 + prisma/schema/Rechnung.prisma | 66 ++ prisma/schema/RefreshTokens.prisma | 13 + prisma/schema/Tickets.prisma | 30 + prisma/schema/Unterlage.prisma | 16 + prisma/schema/VerbrauchsausweisGewerbe.prisma | 72 ++ prisma/schema/VerbrauchsausweisWohnen.prisma | 77 ++ prisma/schema/documenttemplates.prisma | 15 + prisma/schema/documenttypes.prisma | 8 + prisma/schema/schema.prisma | 66 ++ prisma/schema/tokens.prisma | 11 + prisma/seed.ts | 383 ++++++++ server.ts | 2 +- src/astro-typesafe-api-caller.ts | 16 +- src/client/lib/ausweisSpeichern.ts | 2 +- src/client/lib/bilderHochladen.ts | 2 +- src/client/lib/nachweisSpeichern.ts | 2 +- src/components/AnsichtsausweisButton.svelte | 2 +- .../Ausweis/AusweisPreviewContainer.svelte | 2 +- src/components/Ausweis/Ausweisart.svelte | 2 +- .../Ausweis/ButtonWeiterHilfe.svelte | 2 +- src/components/Ausweis/DaemmungImage.svelte | 2 +- src/components/Ausweis/FensterImage.svelte | 2 +- src/components/Ausweis/GebaeudeDaten.svelte | 2 +- src/components/Ausweis/HeizungImage.svelte | 2 +- .../Ausweis/PerformanceScore.svelte | 2 +- src/components/Ausweis/types.ts | 2 +- src/components/AusweisPruefenBox.svelte | 2 +- .../Dashboard/DashboardAusweis.svelte | 2 +- .../Dashboard/DashboardObjekt.svelte | 2 +- .../Dashboard/DashboardSidebar.svelte | 10 - src/components/DatenblattButton.svelte | 2 +- .../GEGNachweis/GEGAusweisart.svelte | 2 +- src/components/ImageGrid.svelte | 2 +- src/components/PaymentOption.svelte | 2 +- src/components/UploadImages.svelte | 2 +- ...duktUebersichtBedarfsausweisGewerbe.svelte | 2 +- ...oduktUebersichtBedarfsausweisWohnen.svelte | 2 +- ...tUebersichtVerbrauchsausweisGewerbe.svelte | 2 +- ...ktUebersichtVerbrauchsausweisWohnen.svelte | 2 +- .../design/content/ProduktVergleich.svelte | 2 +- .../content/ProduktVergleichGewerbe.svelte | 2 +- .../design/sidebars/SidebarLeft.astro | 2 +- .../design/sidebars/SidebarRight.astro | 2 +- .../design/sidebars/cards/cardBAGpromo.svelte | 2 +- .../design/sidebars/cards/cardBApromo.svelte | 2 +- .../sidebars/cards/cardPriceiInfo.svelte | 2 +- .../design/sidebars/cards/cardVAGpromo.svelte | 2 +- .../design/sidebars/cards/cardVApromo.svelte | 2 +- .../widgets/WelcherAusweisWidget_IBC.svelte | 2 +- .../WelcherAusweisWidget_immowelt.svelte | 2 +- src/cronjobs/update-dwd-klimafaktoren.ts | 2 +- .../VerbrauchsausweisGewerbe/erstellen.cy.ts | 2 +- .../VerbrauchsausweisWohnen/erstellen.cy.ts | 2 +- src/generated/enums.ts | 107 +++ src/generated/zod/anteilshaber.ts | 10 + src/generated/zod/apirequests.ts | 14 + src/generated/zod/aufnahme.ts | 64 ++ src/generated/zod/bedarfsausweisgewerbe.ts | 10 + src/generated/zod/bedarfsausweiswohnen.ts | 71 ++ src/generated/zod/benutzer.ts | 20 + src/generated/zod/bild.ts | 9 + src/generated/zod/documenttemplates.ts | 14 + src/generated/zod/documenttypes.ts | 8 + src/generated/zod/event.ts | 11 + src/generated/zod/gegeinpreisung.ts | 22 + src/generated/zod/gegnachweisgewerbe.ts | 17 + src/generated/zod/gegnachweiswohnen.ts | 17 + src/generated/zod/index.ts | 23 + src/generated/zod/klimafaktoren.ts | 9 + src/generated/zod/objekt.ts | 13 + src/generated/zod/postleitzahlen.ts | 11 + src/generated/zod/rechnung.ts | 30 + src/generated/zod/refreshtokens.ts | 9 + src/generated/zod/tickets.ts | 24 + src/generated/zod/tokens.ts | 11 + src/generated/zod/unterlage.ts | 10 + src/generated/zod/verbrauchsausweisgewerbe.ts | 51 ++ src/generated/zod/verbrauchsausweiswohnen.ts | 39 + src/layouts/Layout.astro | 2 +- .../VerbrauchsausweisWohnen_2016.ts | 2 +- .../VerbrauchsausweisWohnen_2023.ts | 2 +- src/lib/Berechnungen/endEnergieVerbrauch.ts | 2 +- src/lib/User/index.ts | 4 +- src/lib/XML/AusweisBerechnungen2016.ts | 4 +- .../xmlVerbrauchsausweisWohnen_2016.ts | 4 +- src/lib/XML/getEmpfehlungen.ts | 2 +- src/lib/altes-system/import.ts | 2 +- src/lib/client/prisma.ts | 3 + src/lib/constants.ts | 2 +- src/lib/faker.ts | 2 +- src/lib/filters.ts | 2 +- src/lib/middleware/authorization.ts | 2 +- .../pdfDatenblattVerbrauchsausweisGewerbe.ts | 2 +- .../pdfDatenblattVerbrauchsausweisWohnen.ts | 2 +- src/lib/pdf/pdfVerbrauchsausweisGewerbe.ts | 2 +- src/lib/pdf/pdfVerbrauchsausweisWohnen.ts | 2 +- src/lib/pdf/plugins/variables/constants.ts | 26 - src/lib/pdf/plugins/variables/index.ts | 280 ------ src/lib/pdf/plugins/variables/types.ts | 29 - src/lib/server/ausweis.ts | 2 +- src/lib/server/lexoffice.ts | 4 +- src/lib/server/mail/geg-bestellung.ts | 2 +- src/lib/server/mail/invoice.ts | 4 +- src/lib/server/mail/payment-success.ts | 4 +- src/lib/server/objekt.ts | 2 +- src/lib/server/prisma.ts | 15 + src/lib/validators/index.ts | 2 +- .../BedarfsausweisWohnenModule.svelte | 2 +- .../Dashboard/DashboardAufnahmeModule.svelte | 2 +- .../DashboardAusweisePruefenModule.svelte | 2 +- .../DashboardPDFDesignerModule.svelte | 112 --- .../Dashboard/DashboardPDFViewerModule.svelte | 99 --- src/modules/KaufabschlussModule.svelte | 4 +- src/modules/KundendatenModule.svelte | 4 +- src/modules/PaymentSuccessModule.svelte | 2 +- .../VerbrauchsausweisGewerbeModule.svelte | 2 +- .../VerbrauchsausweisWohnenModule.svelte | 3 +- .../GEGNachweisGewerbeModule.svelte | 2 +- .../GEGNachweisWohnenModule.svelte | 2 +- src/pages/api/admin/ausstellen.ts | 2 +- src/pages/api/admin/registriernummer.ts | 4 +- src/pages/api/admin/stornieren.ts | 2 +- src/pages/api/aufnahme/[uid]/bilder.ts | 2 +- src/pages/api/aufnahme/[uid]/index.ts | 2 +- src/pages/api/aufnahme/[uid]/unterlagen.ts | 2 +- src/pages/api/aufnahme/index.ts | 2 +- src/pages/api/ausweise/index.ts | 2 +- src/pages/api/auth/access-token.ts | 2 +- src/pages/api/auth/forgot-password.ts | 2 +- src/pages/api/auth/refresh-token.ts | 2 +- src/pages/api/bedarfsausweis-wohnen/[uid].ts | 2 +- src/pages/api/bedarfsausweis-wohnen/index.ts | 2 +- src/pages/api/bild.ts | 3 +- src/pages/api/bilder/[uid].ts | 2 +- src/pages/api/geg-nachweis-gewerbe/[uid].ts | 2 +- src/pages/api/geg-nachweis-gewerbe/index.ts | 2 +- src/pages/api/geg-nachweis-wohnen/[uid].ts | 2 +- src/pages/api/geg-nachweis-wohnen/index.ts | 2 +- src/pages/api/klimafaktoren.ts | 2 +- src/pages/api/objekt/[uid]/index.ts | 2 +- src/pages/api/objekt/index.ts | 2 +- src/pages/api/postleitzahlen.ts | 2 +- src/pages/api/rechnung/anfordern.ts | 2 +- src/pages/api/rechnung/index.ts | 2 +- src/pages/api/ticket/index.ts | 2 +- src/pages/api/unterlage.ts | 2 +- src/pages/api/user/index.ts | 2 +- src/pages/api/user/self.ts | 2 +- .../api/verbrauchsausweis-gewerbe/[uid].ts | 2 +- .../api/verbrauchsausweis-gewerbe/index.ts | 2 +- .../api/verbrauchsausweis-wohnen/[uid].ts | 2 +- .../api/verbrauchsausweis-wohnen/index.ts | 2 +- src/pages/api/webhooks/mollie.ts | 2 +- src/pages/bilder/[uid].webp.ts | 2 +- .../admin/ausweise-pruefen/[page].astro | 2 +- src/pages/dashboard/admin/pdf-designer.astro | 10 - src/pages/dashboard/admin/pdf-viewer.astro | 16 - src/pages/dashboard/aufnahme/[uid].astro | 2 +- src/pages/dashboard/ausweise/index.astro | 2 +- src/pages/dashboard/index.astro | 2 +- src/pages/einpreisung/success.astro | 2 +- .../energieausweis-erstellen/index.astro | 6 - src/pages/glossar/index.astro | 6 +- src/pages/kaufabschluss.astro | 4 +- src/pages/kundendaten.astro | 2 +- src/pages/payment/success.astro | 2 +- src/pages/pdf/ansichtsausweis.ts | 2 +- src/pages/pdf/datenblatt.ts | 2 +- src/testing/daten-umziehen.ts | 2 +- src/testing/nutzer-umziehen.ts | 2 +- src/types/fake-data.ts | 836 ++++++++++++++++++ tests/bilder/upload.test.ts | 2 +- tsconfig.json | 2 +- 193 files changed, 4003 insertions(+), 773 deletions(-) create mode 100644 dbml/schema.dbml create mode 100644 prisma/null.ts create mode 100644 prisma/prisma-enum-generator.ts create mode 100644 prisma/schema/Anteilshaber.prisma create mode 100644 prisma/schema/ApiRequests.prisma create mode 100644 prisma/schema/Aufnahme.prisma create mode 100644 prisma/schema/BedarfsausweisGewerbe.prisma create mode 100644 prisma/schema/BedarfsausweisWohnen.prisma create mode 100644 prisma/schema/Benutzer.prisma create mode 100644 prisma/schema/Bild.prisma create mode 100644 prisma/schema/Event.prisma create mode 100644 prisma/schema/GEGEinpreisung.prisma create mode 100644 prisma/schema/GEGNachweisGewerbe.prisma create mode 100644 prisma/schema/GEGNachweisWohnen.prisma create mode 100644 prisma/schema/Klimafaktoren.prisma create mode 100644 prisma/schema/Objekt.prisma create mode 100644 prisma/schema/Postleitzahlen.prisma create mode 100644 prisma/schema/Rechnung.prisma create mode 100644 prisma/schema/RefreshTokens.prisma create mode 100644 prisma/schema/Tickets.prisma create mode 100644 prisma/schema/Unterlage.prisma create mode 100644 prisma/schema/VerbrauchsausweisGewerbe.prisma create mode 100644 prisma/schema/VerbrauchsausweisWohnen.prisma create mode 100644 prisma/schema/documenttemplates.prisma create mode 100644 prisma/schema/documenttypes.prisma create mode 100644 prisma/schema/schema.prisma create mode 100644 prisma/schema/tokens.prisma create mode 100644 prisma/seed.ts create mode 100644 src/generated/enums.ts create mode 100644 src/generated/zod/anteilshaber.ts create mode 100644 src/generated/zod/apirequests.ts create mode 100644 src/generated/zod/aufnahme.ts create mode 100644 src/generated/zod/bedarfsausweisgewerbe.ts create mode 100644 src/generated/zod/bedarfsausweiswohnen.ts create mode 100644 src/generated/zod/benutzer.ts create mode 100644 src/generated/zod/bild.ts create mode 100644 src/generated/zod/documenttemplates.ts create mode 100644 src/generated/zod/documenttypes.ts create mode 100644 src/generated/zod/event.ts create mode 100644 src/generated/zod/gegeinpreisung.ts create mode 100644 src/generated/zod/gegnachweisgewerbe.ts create mode 100644 src/generated/zod/gegnachweiswohnen.ts create mode 100644 src/generated/zod/index.ts create mode 100644 src/generated/zod/klimafaktoren.ts create mode 100644 src/generated/zod/objekt.ts create mode 100644 src/generated/zod/postleitzahlen.ts create mode 100644 src/generated/zod/rechnung.ts create mode 100644 src/generated/zod/refreshtokens.ts create mode 100644 src/generated/zod/tickets.ts create mode 100644 src/generated/zod/tokens.ts create mode 100644 src/generated/zod/unterlage.ts create mode 100644 src/generated/zod/verbrauchsausweisgewerbe.ts create mode 100644 src/generated/zod/verbrauchsausweiswohnen.ts create mode 100644 src/lib/client/prisma.ts delete mode 100644 src/lib/pdf/plugins/variables/constants.ts delete mode 100644 src/lib/pdf/plugins/variables/index.ts delete mode 100644 src/lib/pdf/plugins/variables/types.ts create mode 100644 src/lib/server/prisma.ts delete mode 100644 src/modules/Dashboard/DashboardPDFDesignerModule.svelte delete mode 100644 src/modules/Dashboard/DashboardPDFViewerModule.svelte delete mode 100644 src/pages/dashboard/admin/pdf-designer.astro delete mode 100644 src/pages/dashboard/admin/pdf-viewer.astro create mode 100644 src/types/fake-data.ts diff --git a/astro.config.mjs b/astro.config.mjs index 868ad9da..8228b373 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -4,38 +4,27 @@ import svelte from "@astrojs/svelte"; import tailwind from "@astrojs/tailwind"; import node from "@astrojs/node"; import mdx from "@astrojs/mdx"; -import dsv from "@rollup/plugin-dsv" import astroTypesafeAPI from "astro-typesafe-api" -import { fileURLToPath } from "url"; // https://astro.build/config export default defineConfig({ integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()], outDir: "./dist", output: "server", - vite: { - optimizeDeps: { - exclude: ["@ibcornelsen/api", "@ibcornelsen/database"] - }, - resolve: { - alias: { - "#": fileURLToPath(new URL("./src", import.meta.url)) - } - }, - ssr: { - noExternal: ["@pdfme/generator", "@pdfme/common", "@pdfme/schemas"] - }, - build: { - commonjsOptions: { - transformMixedEsModules: false - } - }, - plugins: [dsv()] - }, adapter: node({ mode: "middleware" }), + vite: { + ssr: { + external: ["@prisma/client"], + resolve: { + alias: { + ".prisma/client/index-browser": "./node_modules/.prisma/client/index-browser.js" + } + } + } + }, server: { port: 3000 }, diff --git a/bun.lock b/bun.lock index 17608d79..bde1da6e 100644 --- a/bun.lock +++ b/bun.lock @@ -8,7 +8,6 @@ "@astrojs/node": "^8.3.4", "@astrojs/svelte": "^2.2.0", "@astrojs/tailwind": "^3.1.3", - "@ibcornelsen/database": "link:@ibcornelsen/database", "@ibcornelsen/ui": "^0.0.2", "@mollie/api-client": "^4.1.0", "@pdfme/common": "^5.2.16", @@ -78,7 +77,11 @@ "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.1", "prettier": "^2.8.8", + "prisma": "^6.4.1", + "prisma-dbml-generator": "^0.12.0", + "prisma-generator-fake-data": "^0.14.3", "typescript": "^4.9.5", + "zod-prisma": "^0.5.4", }, }, }, @@ -104,6 +107,8 @@ "@ant-design/react-slick": ["@ant-design/react-slick@1.1.2", "", { "dependencies": { "@babel/runtime": "^7.10.4", "classnames": "^2.2.5", "json2mq": "^0.2.0", "resize-observer-polyfill": "^1.5.1", "throttle-debounce": "^5.0.0" }, "peerDependencies": { "react": ">=16.9.0" } }, "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA=="], + "@antfu/ni": ["@antfu/ni@0.21.4", "", { "bin": { "na": "bin/na.mjs", "ni": "bin/ni.mjs", "nr": "bin/nr.mjs", "nu": "bin/nu.mjs", "nci": "bin/nci.mjs", "nlx": "bin/nlx.mjs", "nun": "bin/nun.mjs" } }, "sha512-O0Uv9LbLDSoEg26fnMDdDRiPwFJnQSoD4WnrflDwKCJm8Cx/0mV4cGxwBLXan5mGIrpK4Dd7vizf4rQm0QCEAA=="], + "@astrojs/compiler": ["@astrojs/compiler@2.10.3", "", {}, "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw=="], "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.4.1", "", {}, "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g=="], @@ -260,8 +265,6 @@ "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@1.2.1", "", {}, "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="], - "@ibcornelsen/database": ["@ibcornelsen/database@link:@ibcornelsen/database", {}], - "@ibcornelsen/ui": ["@ibcornelsen/ui@0.0.2", "", { "dependencies": { "@astrojs/svelte": "^2.1.1", "cookiejs": "^2.1.2", "knex": "^2.4.2", "moment": "^2.29.4", "svelte": "^3.54.0", "svelte-preprocess": "^5.0.1", "tailwindcss": "^3.0.24", "uuid": "^9.0.0", "zod": "^3.21.4" } }, "sha512-TF29f0uY6MqxQszEySKRI5RJa1FmHCqaY5SjcIJjbI/9MjUL3tB/u9m+o7t/SpzPRNT419/HMdXSo7uOATX2Aw=="], "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], @@ -326,6 +329,8 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@opentelemetry/api": ["@opentelemetry/api@1.4.1", "", {}, "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA=="], + "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="], "@oven/bun-darwin-aarch64": ["@oven/bun-darwin-aarch64@1.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hCDvi6GGJvsKpfGcU9xdrIhshDtzkYcGiB5wnj0jq/QM3U85qmIe8QUs7tyse9T77aZNjFIXO0GirL+oZ7C+IQ=="], @@ -396,6 +401,26 @@ "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], + "@prisma/client": ["@prisma/client@5.22.0", "", { "peerDependencies": { "prisma": "*" }, "optionalPeers": ["prisma"] }, "sha512-M0SVXfyHnQREBKxCgyo7sffrKttwE6R8PMq330MIUF0pTwjUhLbW84pFDlf06B27XyCR++VtjugEnIHdr07SVA=="], + + "@prisma/debug": ["@prisma/debug@6.4.1", "", {}, "sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA=="], + + "@prisma/engines": ["@prisma/engines@6.4.1", "", { "dependencies": { "@prisma/debug": "6.4.1", "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "@prisma/fetch-engine": "6.4.1", "@prisma/get-platform": "6.4.1" } }, "sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA=="], + + "@prisma/engines-version": ["@prisma/engines-version@6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "", {}, "sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ=="], + + "@prisma/fetch-engine": ["@prisma/fetch-engine@6.4.1", "", { "dependencies": { "@prisma/debug": "6.4.1", "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", "@prisma/get-platform": "6.4.1" } }, "sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ=="], + + "@prisma/generator-helper": ["@prisma/generator-helper@5.0.0", "", { "dependencies": { "@prisma/debug": "5.0.0", "@types/cross-spawn": "6.0.2", "cross-spawn": "7.0.3", "kleur": "4.1.5" } }, "sha512-pufQ1mhoH6WzKNtzL79HZDoW4Ql3Lf8QEKVmBoW8e3Tdb50bxpYBYue5LBqp9vNW1xd1pgZO53cNiRfLX2d4Zg=="], + + "@prisma/get-platform": ["@prisma/get-platform@6.4.1", "", { "dependencies": { "@prisma/debug": "6.4.1" } }, "sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw=="], + + "@prisma/internals": ["@prisma/internals@5.0.0", "", { "dependencies": { "@antfu/ni": "0.21.4", "@opentelemetry/api": "1.4.1", "@prisma/debug": "5.0.0", "@prisma/engines": "5.0.0", "@prisma/fetch-engine": "5.0.0", "@prisma/generator-helper": "5.0.0", "@prisma/get-platform": "5.0.0", "@prisma/prisma-schema-wasm": "4.17.0-26.6b0aef69b7cdfc787f822ecd7cdc76d5f1991584", "archiver": "5.3.1", "arg": "5.0.2", "checkpoint-client": "1.1.24", "cli-truncate": "2.1.0", "dotenv": "16.0.3", "escape-string-regexp": "4.0.0", "execa": "5.1.1", "find-up": "5.0.0", "fp-ts": "2.16.0", "fs-extra": "11.1.1", "fs-jetpack": "5.1.0", "global-dirs": "3.0.1", "globby": "11.1.0", "indent-string": "4.0.0", "is-windows": "1.0.2", "is-wsl": "2.2.0", "kleur": "4.1.5", "new-github-issue-url": "0.2.1", "node-fetch": "2.6.12", "npm-packlist": "5.1.3", "open": "7.4.2", "p-map": "4.0.0", "prompts": "2.4.2", "read-pkg-up": "7.0.1", "replace-string": "3.1.0", "resolve": "1.22.2", "string-width": "4.2.3", "strip-ansi": "6.0.1", "strip-indent": "3.0.0", "temp-dir": "2.0.0", "temp-write": "4.0.0", "tempy": "1.0.1", "terminal-link": "2.1.1", "tmp": "0.2.1", "ts-pattern": "4.3.0" } }, "sha512-VGWyFk6QlSBXT8z65Alq5F3o9E8IiTtaBoa3rmKkGpZjUk85kJy3jZz4xkRv53TaeghGE5rWfwkfak26KtY5yQ=="], + + "@prisma/prisma-schema-wasm": ["@prisma/prisma-schema-wasm@4.17.0-26.6b0aef69b7cdfc787f822ecd7cdc76d5f1991584", "", {}, "sha512-JFdsnSgBPN8reDTLOI9Vh/6ccCb2aD1LbY/LWQnkcIgNo6IdpzvuM+qRVbBuA6IZP2SdqQI8Lu6RL2P8EFBQUA=="], + + "@prisma/schema-files-loader": ["@prisma/schema-files-loader@5.22.0", "", { "dependencies": { "@prisma/prisma-schema-wasm": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "fs-extra": "11.1.1" } }, "sha512-/TNAJXvMSk6mCgZa+gIBM6sp5OUQBnb7rbjiSQm88gvcSibxEuKkVV/2pT3RmQpEAn1yiabvS4+dOvIotYe3ww=="], + "@proload/core": ["@proload/core@0.3.3", "", { "dependencies": { "deepmerge": "^4.2.2", "escalade": "^3.1.1" } }, "sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ=="], "@rc-component/async-validator": ["@rc-component/async-validator@5.0.4", "", { "dependencies": { "@babel/runtime": "^7.24.4" } }, "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg=="], @@ -496,6 +521,8 @@ "@trpc/server": ["@trpc/server@10.45.2", "", {}, "sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg=="], + "@ts-morph/common": ["@ts-morph/common@0.12.3", "", { "dependencies": { "fast-glob": "^3.2.7", "minimatch": "^3.0.4", "mkdirp": "^1.0.4", "path-browserify": "^1.0.1" } }, "sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w=="], + "@types/acorn": ["@types/acorn@4.0.6", "", { "dependencies": { "@types/estree": "*" } }, "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ=="], "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], @@ -514,9 +541,11 @@ "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], + "@types/cross-spawn": ["@types/cross-spawn@6.0.2", "", { "dependencies": { "@types/node": "*" } }, "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw=="], + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], - "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + "@types/debug": ["@types/debug@4.1.8", "", { "dependencies": { "@types/ms": "*" } }, "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ=="], "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], @@ -558,6 +587,8 @@ "@types/nodemailer": ["@types/nodemailer@6.4.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww=="], + "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="], + "@types/papaparse": ["@types/papaparse@5.3.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw=="], "@types/pug": ["@types/pug@2.0.10", "", {}, "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA=="], @@ -566,6 +597,8 @@ "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], + "@types/semver": ["@types/semver@7.5.8", "", {}, "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ=="], "@types/send": ["@types/send@0.17.4", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA=="], @@ -618,7 +651,7 @@ "add-dom-event-listener": ["add-dom-event-listener@1.1.0", "", { "dependencies": { "object-assign": "4.x" } }, "sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw=="], - "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + "agent-base": ["agent-base@7.1.3", "", {}, "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw=="], "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], @@ -648,6 +681,10 @@ "arch": ["arch@2.2.0", "", {}, "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="], + "archiver": ["archiver@5.3.1", "", { "dependencies": { "archiver-utils": "^2.1.0", "async": "^3.2.3", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", "readdir-glob": "^1.0.0", "tar-stream": "^2.2.0", "zip-stream": "^4.1.0" } }, "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w=="], + + "archiver-utils": ["archiver-utils@2.1.0", "", { "dependencies": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", "lodash.defaults": "^4.2.0", "lodash.difference": "^4.5.0", "lodash.flatten": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.union": "^4.6.0", "normalize-path": "^3.0.0", "readable-stream": "^2.0.0" } }, "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw=="], + "are-we-there-yet": ["are-we-there-yet@2.0.0", "", { "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" } }, "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw=="], "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], @@ -712,6 +749,8 @@ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], + "blob-util": ["blob-util@2.0.2", "", {}, "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ=="], "bluebird": ["bluebird@3.7.2", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="], @@ -776,6 +815,8 @@ "check-more-types": ["check-more-types@2.24.0", "", {}, "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA=="], + "checkpoint-client": ["checkpoint-client@1.1.24", "", { "dependencies": { "ci-info": "3.8.0", "env-paths": "2.2.1", "fast-write-atomic": "0.2.1", "make-dir": "3.1.0", "ms": "2.1.3", "node-fetch": "2.6.11", "uuid": "9.0.0" } }, "sha512-nIOlLhDS7MKs4tUzS3LCm+sE1NgTCVnVrXlD0RRxaoEkkLu8LIWSUNiNWai6a+LK5unLzTyZeTCYX1Smqy0YoA=="], + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], @@ -802,6 +843,8 @@ "co-body": ["co-body@6.2.0", "", { "dependencies": { "@hapi/bourne": "^3.0.0", "inflation": "^2.0.0", "qs": "^6.5.2", "raw-body": "^2.3.3", "type-is": "^1.6.16" } }, "sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA=="], + "code-block-writer": ["code-block-writer@11.0.3", "", {}, "sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw=="], + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], "color": ["color@3.2.1", "", { "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" } }, "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="], @@ -826,10 +869,14 @@ "common-tags": ["common-tags@1.8.2", "", {}, "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="], + "commondir": ["commondir@1.0.1", "", {}, "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="], + "component-classes": ["component-classes@1.2.6", "", { "dependencies": { "component-indexof": "0.0.3" } }, "sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA=="], "component-indexof": ["component-indexof@0.0.3", "", {}, "sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw=="], + "compress-commons": ["compress-commons@4.1.2", "", { "dependencies": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.2", "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" } }, "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg=="], + "compute-scroll-into-view": ["compute-scroll-into-view@3.1.1", "", {}, "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="], "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], @@ -858,12 +905,18 @@ "core-util-is": ["core-util-is@1.0.2", "", {}, "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="], + "crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="], + + "crc32-stream": ["crc32-stream@4.0.3", "", { "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" } }, "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw=="], + "create-react-class": ["create-react-class@15.7.0", "", { "dependencies": { "loose-envify": "^1.3.1", "object-assign": "^4.1.1" } }, "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "crossws": ["crossws@0.3.3", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-/71DJT3xJlqSnBr83uGJesmVHSzZEvgxHt/fIKxBAAngqMHmnBWQNxCphVxxJ2XL3xleu5+hJD6IQ3TglBedcw=="], + "crypto-random-string": ["crypto-random-string@2.0.0", "", {}, "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="], + "css-animation": ["css-animation@1.6.1", "", { "dependencies": { "babel-runtime": "6.x", "component-classes": "^1.2.5" } }, "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog=="], "css-styled": ["css-styled@1.0.8", "", { "dependencies": { "@daybrush/utils": "^1.13.0" } }, "sha512-tCpP7kLRI8dI95rCh3Syl7I+v7PP+2JYOzWkl0bUEoSbJM+u8ITbutjlQVf0NC2/g4ULROJPi16sfwDIO8/84g=="], @@ -892,6 +945,8 @@ "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="], + "decimal.js": ["decimal.js@10.5.0", "", {}, "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw=="], + "decode-named-character-reference": ["decode-named-character-reference@1.0.2", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg=="], "decompress-response": ["decompress-response@4.2.1", "", { "dependencies": { "mimic-response": "^2.0.0" } }, "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw=="], @@ -904,6 +959,8 @@ "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], + "del": ["del@6.1.1", "", { "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", "is-glob": "^4.0.1", "is-path-cwd": "^2.2.0", "is-path-inside": "^3.0.2", "p-map": "^4.0.0", "rimraf": "^3.0.2", "slash": "^3.0.0" } }, "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg=="], + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], "delegates": ["delegates@1.0.0", "", {}, "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="], @@ -946,6 +1003,8 @@ "dom-align": ["dom-align@1.12.4", "", {}, "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw=="], + "dotenv": ["dotenv@16.0.3", "", {}, "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="], + "dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], @@ -972,6 +1031,10 @@ "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + + "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + "es-codec": ["es-codec@0.5.0", "", {}, "sha512-iWbSEF1McYXr++XWCQypRx8hjs887Zlka/x2BVFYp4Li3PJJucTzixoYtY2SNyZRVVPO4aQ10w6wz2rI8noiRg=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], @@ -990,6 +1053,8 @@ "esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], + "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], @@ -1062,6 +1127,8 @@ "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + "fast-write-atomic": ["fast-write-atomic@0.2.1", "", {}, "sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw=="], + "fast-xml-parser": ["fast-xml-parser@4.5.1", "", { "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w=="], "fastq": ["fastq@1.19.0", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA=="], @@ -1076,7 +1143,9 @@ "finalhandler": ["finalhandler@1.3.1", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", "statuses": "2.0.1", "unpipe": "~1.0.0" } }, "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ=="], - "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "find-cache-dir": ["find-cache-dir@3.3.2", "", { "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" } }, "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], "find-up-simple": ["find-up-simple@1.0.0", "", {}, "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw=="], @@ -1106,14 +1175,20 @@ "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + "fp-ts": ["fp-ts@2.16.0", "", {}, "sha512-bLq+KgbiXdTEoT1zcARrWEpa5z6A/8b7PcDW7Gef3NSisQ+VS7ll2Xbf1E+xsgik0rWub/8u0qP/iTTjj+PhxQ=="], + "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], "framework-utils": ["framework-utils@1.1.0", "", {}, "sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg=="], "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="], + "fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], + "fs-jetpack": ["fs-jetpack@5.1.0", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-Xn4fDhLydXkuzepZVsr02jakLlmoARPy+YWIclo4kh0GyNGUHnTqeH/w/qIsVn50dFxtp8otPL2t/HcPJBbxUA=="], + "fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="], "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], @@ -1174,6 +1249,8 @@ "has-unicode": ["has-unicode@2.0.1", "", {}, "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="], + "hasha": ["hasha@5.2.2", "", { "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" } }, "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ=="], + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], @@ -1202,6 +1279,8 @@ "hexoid": ["hexoid@2.0.0", "", {}, "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw=="], + "hosted-git-info": ["hosted-git-info@2.8.9", "", {}, "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="], + "hotkeys-js": ["hotkeys-js@3.13.9", "", {}, "sha512-3TRCj9u9KUH6cKo25w4KIdBfdBfNRjfUwrljCLDC2XhmPDG0SjAZFcFZekpUZFmXzfYoGhFDcdx2gX/vUVtztQ=="], "html-entities": ["html-entities@2.5.2", "", {}, "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA=="], @@ -1214,9 +1293,11 @@ "http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="], + "http-proxy-agent": ["http-proxy-agent@7.0.0", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ=="], + "http-signature": ["http-signature@1.4.0", "", { "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", "sshpk": "^1.18.0" } }, "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg=="], - "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + "https-proxy-agent": ["https-proxy-agent@7.0.0", "", { "dependencies": { "agent-base": "^7.0.2", "debug": "4" } }, "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw=="], "human-signals": ["human-signals@1.1.1", "", {}, "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="], @@ -1226,6 +1307,8 @@ "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "ignore-walk": ["ignore-walk@5.0.1", "", { "dependencies": { "minimatch": "^5.0.1" } }, "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw=="], + "immutable": ["immutable@5.0.3", "", {}, "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw=="], "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], @@ -1288,6 +1371,8 @@ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + "is-path-cwd": ["is-path-cwd@2.2.0", "", {}, "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="], + "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], @@ -1300,7 +1385,11 @@ "is-utf8": ["is-utf8@0.2.1", "", {}, "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q=="], - "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + "is-windows": ["is-windows@1.0.2", "", {}, "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="], + + "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], @@ -1326,6 +1415,8 @@ "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], @@ -1364,6 +1455,8 @@ "lazy-ass": ["lazy-ass@1.6.0", "", {}, "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw=="], + "lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="], + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], @@ -1374,7 +1467,7 @@ "load-yaml-file": ["load-yaml-file@0.2.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.13.0", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw=="], - "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], @@ -1384,6 +1477,12 @@ "lodash.clonedeep": ["lodash.clonedeep@4.5.0", "", {}, "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="], + "lodash.defaults": ["lodash.defaults@4.2.0", "", {}, "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="], + + "lodash.difference": ["lodash.difference@4.5.0", "", {}, "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA=="], + + "lodash.flatten": ["lodash.flatten@4.4.0", "", {}, "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="], + "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], "lodash.isboolean": ["lodash.isboolean@3.0.3", "", {}, "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="], @@ -1400,6 +1499,8 @@ "lodash.once": ["lodash.once@4.1.1", "", {}, "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="], + "lodash.union": ["lodash.union@4.6.0", "", {}, "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw=="], + "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], "log-update": ["log-update@4.0.0", "", { "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", "slice-ansi": "^4.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg=="], @@ -1568,7 +1669,7 @@ "minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="], - "mkdirp": ["mkdirp@0.5.6", "", { "dependencies": { "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="], + "mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], "moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="], @@ -1592,6 +1693,8 @@ "neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="], + "new-github-issue-url": ["new-github-issue-url@0.2.1", "", {}, "sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA=="], + "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], @@ -1612,10 +1715,18 @@ "nopt": ["nopt@5.0.0", "", { "dependencies": { "abbrev": "1" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ=="], + "normalize-package-data": ["normalize-package-data@2.5.0", "", { "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA=="], + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], + "npm-bundled": ["npm-bundled@2.0.1", "", { "dependencies": { "npm-normalize-package-bin": "^2.0.0" } }, "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw=="], + + "npm-normalize-package-bin": ["npm-normalize-package-bin@2.0.0", "", {}, "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ=="], + + "npm-packlist": ["npm-packlist@5.1.3", "", { "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", "npm-bundled": "^2.0.0", "npm-normalize-package-bin": "^2.0.0" }, "bin": { "npm-packlist": "bin/index.js" } }, "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg=="], + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], "npmlog": ["npmlog@5.0.1", "", { "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", "gauge": "^3.0.0", "set-blocking": "^2.0.0" } }, "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw=="], @@ -1636,6 +1747,8 @@ "oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + "open": ["open@7.4.2", "", { "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" } }, "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q=="], + "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], @@ -1646,14 +1759,18 @@ "overlap-area": ["overlap-area@1.1.0", "", { "dependencies": { "@daybrush/utils": "^1.7.1" } }, "sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw=="], + "p-filter": ["p-filter@2.1.0", "", { "dependencies": { "p-map": "^2.0.0" } }, "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw=="], + "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], - "p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], "p-map": ["p-map@4.0.0", "", { "dependencies": { "aggregate-error": "^3.0.0" } }, "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ=="], "p-queue": ["p-queue@8.1.0", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw=="], + "p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="], + "p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="], "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], @@ -1666,8 +1783,12 @@ "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + "parenthesis": ["parenthesis@3.1.8", "", {}, "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw=="], + "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + "parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="], "parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], @@ -1676,6 +1797,8 @@ "pascal-case": ["pascal-case@3.1.2", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="], + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], @@ -1740,10 +1863,20 @@ "pretty-bytes": ["pretty-bytes@5.6.0", "", {}, "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg=="], + "prisma": ["prisma@6.4.1", "", { "dependencies": { "@prisma/engines": "6.4.1", "esbuild": ">=0.12 <1", "esbuild-register": "3.6.0" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "typescript": ">=5.1.0" }, "optionalPeers": ["typescript"], "bin": { "prisma": "build/index.js" } }, "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg=="], + + "prisma-dbml-generator": ["prisma-dbml-generator@0.12.0", "", { "dependencies": { "@prisma/generator-helper": "5.0.0", "@prisma/internals": "5.0.0" }, "bin": { "prisma-dbml-generator": "dist/generator.js" } }, "sha512-b5CqA9cCY5jmNJGjx8oUbPw3KSgVd+mu8711MSZIRY9dIF0Vlcs/Au6LR3S5guncydM7Zkh8iz8vC+c2CDj3Xw=="], + + "prisma-generator-fake-data": ["prisma-generator-fake-data@0.14.3", "", { "dependencies": { "@faker-js/faker": "^8.4.1", "@prisma/client": "^5.8.1", "@prisma/generator-helper": "^5.8.1", "@prisma/internals": "^5.8.1", "decimal.js": "^10.4.3", "tiny-invariant": "^1.3.1" }, "bin": { "prisma-generator-fake-data": "dist/bin.js" } }, "sha512-m9IGMBc2MBIarbd9U/k8VBh2++3RiMi03iX8b9p2hibJ12hXnax7KdmZBLg6bl6Cs6UHE965M/YmzXad6qITUg=="], + "prismjs": ["prismjs@1.29.0", "", {}, "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="], "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + + "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], + "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], @@ -1866,8 +1999,14 @@ "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], + "read-pkg": ["read-pkg@5.2.0", "", { "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", "parse-json": "^5.0.0", "type-fest": "^0.6.0" } }, "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg=="], + + "read-pkg-up": ["read-pkg-up@7.0.1", "", { "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", "type-fest": "^0.8.1" } }, "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg=="], + "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "readdir-glob": ["readdir-glob@1.1.3", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA=="], + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], "rechoir": ["rechoir@0.8.0", "", { "dependencies": { "resolve": "^1.20.0" } }, "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ=="], @@ -1912,6 +2051,8 @@ "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], + "replace-string": ["replace-string@3.1.0", "", {}, "sha512-yPpxc4ZR2makceA9hy/jHNqc7QVkd4Je/N0WRHm6bs3PtivPuPynxE5ejU/mp5EhnCv8+uZL7vhz8rkluSlx+Q=="], + "request-progress": ["request-progress@3.0.0", "", { "dependencies": { "throttleit": "^1.0.0" } }, "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg=="], "resize-observer-polyfill": ["resize-observer-polyfill@1.5.1", "", {}, "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="], @@ -1932,6 +2073,8 @@ "retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="], + "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], + "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="], "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], @@ -2024,6 +2167,14 @@ "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + "spdx-correct": ["spdx-correct@3.2.0", "", { "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="], + + "spdx-exceptions": ["spdx-exceptions@2.5.0", "", {}, "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="], + + "spdx-expression-parse": ["spdx-expression-parse@3.0.1", "", { "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="], + + "spdx-license-ids": ["spdx-license-ids@3.0.21", "", {}, "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg=="], + "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], "sshpk": ["sshpk@1.18.0", "", { "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" } }, "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ=="], @@ -2066,6 +2217,8 @@ "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + "supports-hyperlinks": ["supports-hyperlinks@2.3.0", "", { "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" } }, "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA=="], + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], "svelte": ["svelte@3.59.2", "", {}, "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA=="], @@ -2084,8 +2237,18 @@ "tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="], + "tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], + "tarn": ["tarn@3.0.2", "", {}, "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="], + "temp-dir": ["temp-dir@2.0.0", "", {}, "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg=="], + + "temp-write": ["temp-write@4.0.0", "", { "dependencies": { "graceful-fs": "^4.1.15", "is-stream": "^2.0.0", "make-dir": "^3.0.0", "temp-dir": "^1.0.0", "uuid": "^3.3.2" } }, "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw=="], + + "tempy": ["tempy@1.0.1", "", { "dependencies": { "del": "^6.0.0", "is-stream": "^2.0.0", "temp-dir": "^2.0.0", "type-fest": "^0.16.0", "unique-string": "^2.0.0" } }, "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w=="], + + "terminal-link": ["terminal-link@2.1.1", "", { "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" } }, "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ=="], + "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], @@ -2102,6 +2265,8 @@ "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + "tinycolor2": ["tinycolor2@1.6.0", "", {}, "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="], "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], @@ -2134,6 +2299,10 @@ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], + "ts-morph": ["ts-morph@13.0.3", "", { "dependencies": { "@ts-morph/common": "~0.12.3", "code-block-writer": "^11.0.0" } }, "sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw=="], + + "ts-pattern": ["ts-pattern@4.3.0", "", {}, "sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg=="], + "tsconfck": ["tsconfck@3.1.4", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ=="], "tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], @@ -2168,6 +2337,8 @@ "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="], + "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], "unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], @@ -2208,6 +2379,8 @@ "v8-compile-cache": ["v8-compile-cache@2.4.0", "", {}, "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw=="], + "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="], + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], "verror": ["verror@1.10.0", "", { "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw=="], @@ -2266,8 +2439,12 @@ "yocto-queue": ["yocto-queue@1.1.1", "", {}, "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g=="], + "zip-stream": ["zip-stream@4.1.1", "", { "dependencies": { "archiver-utils": "^3.0.4", "compress-commons": "^4.1.2", "readable-stream": "^3.6.0" } }, "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ=="], + "zod": ["zod@3.24.1", "", {}, "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A=="], + "zod-prisma": ["zod-prisma@0.5.4", "", { "dependencies": { "@prisma/generator-helper": "~3.8.1", "parenthesis": "^3.1.8", "ts-morph": "^13.0.2" }, "peerDependencies": { "decimal.js": "^10.0.0", "prisma": "^3.0.0", "zod": "^3.0.0" }, "optionalPeers": ["decimal.js"], "bin": { "zod-prisma": "bin/cli.js" } }, "sha512-5Ca4Qd1a1jy1T/NqCEpbr0c+EsbjJfJ/7euEHob3zDvtUK2rTuD1Rc/vfzH8q8PtaR2TZbysD88NHmrLwpv3Xg=="], + "zod-to-json-schema": ["zod-to-json-schema@3.24.1", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w=="], "zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="], @@ -2276,6 +2453,8 @@ "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "@astrojs/telemetry/is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2308,10 +2487,40 @@ "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + "@mapbox/node-pre-gyp/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + "@parcel/watcher/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "@pdfme/pdf-lib/color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], + "@prisma/generator-helper/@prisma/debug": ["@prisma/debug@5.0.0", "", { "dependencies": { "@types/debug": "4.1.8", "debug": "4.3.4", "strip-ansi": "6.0.1" } }, "sha512-3q/M/KqlQ01/HJXifU/zCNOHkoTWu24kGelMF/IBrRxm7njPqTTbwfnT1dh4JK+nuWM5/Dg1Lv00u2c0l7AHxg=="], + + "@prisma/generator-helper/cross-spawn": ["cross-spawn@7.0.3", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="], + + "@prisma/internals/@prisma/debug": ["@prisma/debug@5.0.0", "", { "dependencies": { "@types/debug": "4.1.8", "debug": "4.3.4", "strip-ansi": "6.0.1" } }, "sha512-3q/M/KqlQ01/HJXifU/zCNOHkoTWu24kGelMF/IBrRxm7njPqTTbwfnT1dh4JK+nuWM5/Dg1Lv00u2c0l7AHxg=="], + + "@prisma/internals/@prisma/engines": ["@prisma/engines@5.0.0", "", {}, "sha512-kyT/8fd0OpWmhAU5YnY7eP31brW1q1YrTGoblWrhQJDiN/1K+Z8S1kylcmtjqx5wsUGcP1HBWutayA/jtyt+sg=="], + + "@prisma/internals/@prisma/fetch-engine": ["@prisma/fetch-engine@5.0.0", "", { "dependencies": { "@prisma/debug": "5.0.0", "@prisma/get-platform": "5.0.0", "execa": "5.1.1", "find-cache-dir": "3.3.2", "fs-extra": "11.1.1", "hasha": "5.2.2", "http-proxy-agent": "7.0.0", "https-proxy-agent": "7.0.0", "kleur": "4.1.5", "node-fetch": "2.6.12", "p-filter": "2.1.0", "p-map": "4.0.0", "p-retry": "4.6.2", "progress": "2.0.3", "rimraf": "3.0.2", "temp-dir": "2.0.0", "tempy": "1.0.1" } }, "sha512-eSzHTE0KcMvM5+O1++eaMuVf4D1zwWHdqjWr6D70skCg37q7RYsuty4GFnlWBuqC4aXwVf06EvIxiJ0SQIIeRw=="], + + "@prisma/internals/@prisma/get-platform": ["@prisma/get-platform@5.0.0", "", { "dependencies": { "@prisma/debug": "5.0.0", "escape-string-regexp": "4.0.0", "execa": "5.1.1", "fs-jetpack": "5.1.0", "kleur": "4.1.5", "replace-string": "3.1.0", "strip-ansi": "6.0.1", "tempy": "1.0.1", "terminal-link": "2.1.1", "ts-pattern": "4.3.0" } }, "sha512-JT/rz/jaMTggDkd9OIma50si9rPLzSFe7XSrV3mKXwtv9t+rdwx5ZhmKJd+Rz6S1vhn/291k21JLfaxOW6u8KQ=="], + + "@prisma/internals/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + + "@prisma/internals/fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="], + + "@prisma/internals/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + + "@prisma/internals/node-fetch": ["node-fetch@2.6.12", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g=="], + + "@prisma/internals/resolve": ["resolve@1.22.2", "", { "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g=="], + + "@prisma/internals/tmp": ["tmp@0.2.1", "", { "dependencies": { "rimraf": "^3.0.0" } }, "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ=="], + + "@prisma/schema-files-loader/@prisma/prisma-schema-wasm": ["@prisma/prisma-schema-wasm@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "", {}, "sha512-WPNB7SgTxF/rSHMa5o5/9AIINy4oVnRhvUkRzqR4Nfp8Hu9Q2IyUptxuiDuzRVJdjJBRi/U82sHTxyiD3oBBhQ=="], + + "@prisma/schema-files-loader/fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="], + "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@sveltejs/vite-plugin-svelte/vitefu": ["vitefu@0.2.5", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["vite"] }, "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q=="], @@ -2328,10 +2537,16 @@ "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "archiver-utils/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + + "archiver-utils/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "axios/proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], "babel-runtime/regenerator-runtime": ["regenerator-runtime@0.11.1", "", {}, "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="], + "bl/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "boxen/chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], @@ -2344,6 +2559,12 @@ "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + "checkpoint-client/ci-info": ["ci-info@3.8.0", "", {}, "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw=="], + + "checkpoint-client/node-fetch": ["node-fetch@2.6.11", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w=="], + + "checkpoint-client/uuid": ["uuid@9.0.0", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="], + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "co-body/qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], @@ -2356,8 +2577,14 @@ "d3-dsv/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "del/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + + "del/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + "dir-glob/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + "error-ex/is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="], "execa/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], @@ -2380,18 +2607,28 @@ "form-render/@ant-design/icons": ["@ant-design/icons@4.8.3", "", { "dependencies": { "@ant-design/colors": "^6.0.0", "@ant-design/icons-svg": "^4.3.0", "@babel/runtime": "^7.11.2", "classnames": "^2.2.6", "lodash": "^4.17.15", "rc-util": "^5.9.4" }, "peerDependencies": { "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, "sha512-HGlIQZzrEbAhpJR6+IGdzfbPym94Owr6JZkJ2QCCnOkPVIWMO2xgIVcOKnl8YcpijIo39V7l2qQL5fmtw56cMw=="], + "fs-jetpack/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "gray-matter/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], + "hasha/type-fest": ["type-fest@0.8.1", "", {}, "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="], + + "ignore-walk/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + + "is-wsl/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + "knex/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "knex/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], "knex/resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "load-yaml-file/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], "load-yaml-file/pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], @@ -2408,6 +2645,8 @@ "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "micromark/@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -2418,6 +2657,12 @@ "node-mocks-http/depd": ["depd@1.1.2", "", {}, "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="], + "normalize-package-data/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + + "npm-packlist/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="], + + "open/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + "ora/chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], "ora/cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], @@ -2430,7 +2675,9 @@ "ora/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], - "p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "p-filter/p-map": ["p-map@2.1.0", "", {}, "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="], + + "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], @@ -2438,10 +2685,16 @@ "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "pkg-dir/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "postcss-nested/postcss-selector-parser": ["postcss-selector-parser@7.0.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ=="], "postcss-nesting/postcss-selector-parser": ["postcss-selector-parser@7.0.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ=="], + "prisma-generator-fake-data/@prisma/generator-helper": ["@prisma/generator-helper@5.22.0", "", { "dependencies": { "@prisma/debug": "5.22.0" } }, "sha512-LwqcBQ5/QsuAaLNQZAIVIAJDJBMjHwMwn16e06IYx/3Okj/xEEfw9IvrqB2cJCl3b2mCBlh3eVH0w9WGmi4aHg=="], + + "prisma-generator-fake-data/@prisma/internals": ["@prisma/internals@5.22.0", "", { "dependencies": { "@prisma/debug": "5.22.0", "@prisma/engines": "5.22.0", "@prisma/fetch-engine": "5.22.0", "@prisma/generator-helper": "5.22.0", "@prisma/get-platform": "5.22.0", "@prisma/prisma-schema-wasm": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "@prisma/schema-files-loader": "5.22.0", "arg": "5.0.2", "prompts": "2.4.2" } }, "sha512-Rsjw2ARB9VQzDczzEimUriSBdXmYG/Z5tNRer2IEwof/O8Q6A9cqV3oNVUpJ52TgWfQqMAq5K/KEf8LvvYLLOw=="], + "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], @@ -2454,12 +2707,22 @@ "rc-trigger/rc-util": ["rc-util@4.21.1", "", { "dependencies": { "add-dom-event-listener": "^1.1.0", "prop-types": "^15.5.10", "react-is": "^16.12.0", "react-lifecycles-compat": "^3.0.4", "shallowequal": "^1.1.0" } }, "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg=="], + "read-pkg/type-fest": ["type-fest@0.6.0", "", {}, "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="], + + "read-pkg-up/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + + "read-pkg-up/type-fest": ["type-fest@0.8.1", "", {}, "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="], + + "readdir-glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], "rxjs/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "sander/mkdirp": ["mkdirp@0.5.6", "", { "dependencies": { "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="], + "sander/rimraf": ["rimraf@2.7.1", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="], "sass/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], @@ -2476,6 +2739,8 @@ "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + "supports-hyperlinks/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + "tailwindcss/postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], "tailwindcss/postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], @@ -2484,26 +2749,48 @@ "tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], - "tar/mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], - "tar/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + "temp-write/temp-dir": ["temp-dir@1.0.0", "", {}, "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ=="], + + "temp-write/uuid": ["uuid@3.4.0", "", { "bin": { "uuid": "./bin/uuid" } }, "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="], + + "tempy/type-fest": ["type-fest@0.16.0", "", {}, "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg=="], + "unenv/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], "widest-line/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + "zip-stream/archiver-utils": ["archiver-utils@3.0.4", "", { "dependencies": { "glob": "^7.2.3", "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", "lodash.defaults": "^4.2.0", "lodash.difference": "^4.5.0", "lodash.flatten": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.union": "^4.6.0", "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" } }, "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw=="], + + "zod-prisma/@prisma/generator-helper": ["@prisma/generator-helper@3.8.1", "", { "dependencies": { "@prisma/debug": "3.8.1", "@types/cross-spawn": "6.0.2", "chalk": "4.1.2", "cross-spawn": "7.0.3" } }, "sha512-3zSy+XTEjmjLj6NO+/YPN1Cu7or3xA11TOoOnLRJ9G4pTT67RJXjK0L9Xy5n+3I0Xlb7xrWCgo8MvQQLMWzxPA=="], + "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + "@mapbox/node-pre-gyp/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + + "@prisma/generator-helper/@prisma/debug/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], + + "@prisma/internals/@prisma/debug/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], + + "@prisma/internals/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], + + "@prisma/internals/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + "@typescript-eslint/typescript-estree/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], "@typescript-eslint/utils/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], + "archiver-utils/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + + "archiver-utils/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "boxen/string-width/emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], @@ -2524,16 +2811,26 @@ "form-render/@ant-design/icons/@ant-design/colors": ["@ant-design/colors@6.0.0", "", { "dependencies": { "@ctrl/tinycolor": "^3.4.0" } }, "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ=="], + "fs-jetpack/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + "fs-minipass/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], "glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "ignore-walk/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + "knex/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], + "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + + "lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "load-yaml-file/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], + "npm-packlist/glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], + "ora/cli-cursor/restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], "ora/log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="], @@ -2542,6 +2839,22 @@ "ora/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "pkg-dir/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + + "prisma-generator-fake-data/@prisma/generator-helper/@prisma/debug": ["@prisma/debug@5.22.0", "", {}, "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/debug": ["@prisma/debug@5.22.0", "", {}, "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/engines": ["@prisma/engines@5.22.0", "", { "dependencies": { "@prisma/debug": "5.22.0", "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "@prisma/fetch-engine": "5.22.0", "@prisma/get-platform": "5.22.0" } }, "sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/fetch-engine": ["@prisma/fetch-engine@5.22.0", "", { "dependencies": { "@prisma/debug": "5.22.0", "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "@prisma/get-platform": "5.22.0" } }, "sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/get-platform": ["@prisma/get-platform@5.22.0", "", { "dependencies": { "@prisma/debug": "5.22.0" } }, "sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/prisma-schema-wasm": ["@prisma/prisma-schema-wasm@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "", {}, "sha512-WPNB7SgTxF/rSHMa5o5/9AIINy4oVnRhvUkRzqR4Nfp8Hu9Q2IyUptxuiDuzRVJdjJBRi/U82sHTxyiD3oBBhQ=="], + "rc-align/rc-util/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "rc-animate/rc-util/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], @@ -2550,6 +2863,10 @@ "rc-trigger/rc-util/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], + "read-pkg-up/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + + "readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + "sander/rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], "sass/chokidar/readdirp": ["readdirp@4.1.1", "", {}, "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw=="], @@ -2564,16 +2881,42 @@ "widest-line/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + "zip-stream/archiver-utils/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + + "zod-prisma/@prisma/generator-helper/@prisma/debug": ["@prisma/debug@3.8.1", "", { "dependencies": { "@types/debug": "4.1.7", "ms": "2.1.3", "strip-ansi": "6.0.1" } }, "sha512-ft4VPTYME1UBJ7trfrBuF2w9jX1ipDy786T9fAEskNGb+y26gPDqz5fiEWc2kgHNeVdz/qTI/V3wXILRyEcgxQ=="], + + "zod-prisma/@prisma/generator-helper/cross-spawn": ["cross-spawn@7.0.3", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="], + + "@prisma/generator-helper/@prisma/debug/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], + + "@prisma/internals/@prisma/debug/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], + "boxen/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], "boxen/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + "npm-packlist/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + "ora/cli-cursor/restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], "ora/cli-cursor/restore-cursor/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "pkg-dir/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/engines/@prisma/engines-version": ["@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "", {}, "sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ=="], + + "prisma-generator-fake-data/@prisma/internals/@prisma/fetch-engine/@prisma/engines-version": ["@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", "", {}, "sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ=="], + + "read-pkg-up/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "serve-static/send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "widest-line/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + + "zod-prisma/@prisma/generator-helper/@prisma/debug/@types/debug": ["@types/debug@4.1.7", "", { "dependencies": { "@types/ms": "*" } }, "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg=="], + + "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "read-pkg-up/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], } } diff --git a/dbml/schema.dbml b/dbml/schema.dbml new file mode 100644 index 00000000..ecee79a8 --- /dev/null +++ b/dbml/schema.dbml @@ -0,0 +1,715 @@ +//// ------------------------------------------------------ +//// THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY) +//// ------------------------------------------------------ + +Project "IBCornelsen Database" { + database_type: 'PostgreSQL' + Note: '' +} + +Table Anteilshaber { + id Int [pk, increment] + benutzer_id Int [not null] + rolle String + privilegien BigInt + uid String [unique, not null] + benutzer benutzer [not null] + objekt_id Int [not null] + objekt Objekt [not null] +} + +Table ApiRequests { + id Int [pk, increment] + date DateTime [default: `now()`, not null] + ip String [not null] + method String [not null] + path String [not null] + status Int [not null] + responseTime Float [not null] + responseSize Int [not null] + userAgent String [not null] + user_id Int + user benutzer +} + +Table Aufnahme { + id Int [pk, increment] + uid String [unique, not null, note: '@zod.describe("UID der Gebäude Aufnahme")'] + benutzer_id Int + benutzer benutzer + ausweisart Ausweisart [note: '@zod.describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen")'] + gebaeudetyp String [note: '@zod.describe("Art des Gebäudes und seiner primären Nutzungsart")'] + gebaeudeteil String [note: '@zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")'] + baujahr_gebaeude Int[] [not null, note: '@zod.describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde")'] + baujahr_heizung Int[] [not null, note: '@zod.describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde")'] + baujahr_klima Int[] [not null, note: '@zod.describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde")'] + einheiten Int [note: '@zod.describe("Anzahl der (Wohn)Einheiten im Gebäude")'] + flaeche Int [note: '@zod.describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden")'] + nutzflaeche Int [note: '@zod.describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche")'] + saniert Boolean [note: '@zod.describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen")'] + keller Heizungsstatus [note: '@zod.describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist")'] + dachgeschoss Heizungsstatus [note: '@zod.describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist")'] + lueftung Lueftungskonzept [note: '@zod.describe("Art der Gebäudelüftung")'] + kuehlung String [note: '@zod.describe("Art der Gebäudekühlung")'] + leerstand Int [note: '@zod.describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr")'] + alternative_heizung Boolean [note: '@zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")'] + alternative_warmwasser Boolean [note: '@zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")'] + alternative_lueftung Boolean [note: '@zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")'] + alternative_kuehlung Boolean [note: '@zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")'] + brennstoff_1 String [note: '@zod.describe("Genutzer Brennstoff der primären Energiequelle")'] + brennstoff_2 String [note: '@zod.describe("Genutzer Brennstoff der sekundären Energiequelle")'] + boxpruefung Boolean [default: false] + energieeffizienzklasse String [note: '@zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")'] + erstellungsdatum DateTime [default: `now()`, note: '@zod.describe("Datum an dem der Kunde den Ausweis erstellt hat")'] + ausstellungsdatum DateTime [note: '@zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")'] + zentralheizung Boolean [note: '@zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")'] + solarsystem_warmwasser Boolean [note: '@zod.describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen")'] + warmwasser_rohre_gedaemmt Boolean [note: '@zod.describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")'] + niedertemperatur_kessel Boolean [note: '@zod.describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen")'] + brennwert_kessel Boolean [note: '@zod.describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen")'] + heizungsrohre_gedaemmt Boolean [note: '@zod.describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")'] + standard_kessel Boolean + waermepumpe Boolean [note: '@zod.describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen")'] + raum_temperatur_regler Boolean [note: '@zod.describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen")'] + photovoltaik Boolean [note: '@zod.describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen")'] + durchlauf_erhitzer Boolean [note: '@zod.describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen")'] + einzelofen Boolean + zirkulation Boolean [note: '@zod.describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen")'] + einfach_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen")'] + dreifach_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen")'] + fenster_teilweise_undicht Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen")'] + doppel_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen")'] + fenster_dicht Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen")'] + rolllaeden_kaesten_gedaemmt Boolean [note: '@zod.describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen")'] + isolier_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen")'] + tueren_undicht Boolean [note: '@zod.describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen")'] + tueren_dicht Boolean [note: '@zod.describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen")'] + dachgeschoss_gedaemmt Boolean [note: '@zod.describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")'] + keller_decke_gedaemmt Boolean [note: '@zod.describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")'] + keller_wand_gedaemmt Boolean [note: '@zod.describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")'] + aussenwand_gedaemmt Boolean [note: '@zod.describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")'] + oberste_geschossdecke_gedaemmt Boolean [note: '@zod.describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")'] + aussenwand_min_12cm_gedaemmt Boolean [note: '@zod.describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen")'] + dachgeschoss_min_12cm_gedaemmt Boolean [note: '@zod.describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")'] + oberste_geschossdecke_min_12cm_gedaemmt Boolean [note: '@zod.describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")'] + events Event [not null] + bilder Bild [not null] + unterlagen Unterlage [not null] + bedarfsausweise_wohnen BedarfsausweisWohnen [not null] + verbrauchsausweise_gewerbe VerbrauchsausweisGewerbe [not null] + verbrauchsausweise_wohnen VerbrauchsausweisWohnen [not null] + geg_nachweise_wohnen GEGNachweisWohnen [not null] + geg_nachweise_gewerbe GEGNachweisGewerbe [not null] + bedarfsausweise_gewerbe BedarfsausweisGewerbe [not null] + objekt_id Int [not null] + objekt Objekt [not null] +} + +Table BedarfsausweisGewerbe { + id Int [pk, increment] + uid String [unique, not null] + benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")'] + benutzer benutzer + aufnahme_id Int [unique, not null] + aufnahme Aufnahme [not null] + rechnung_id Int [unique] + rechnung Rechnung + geg_einpreisung_id Int [unique] + geg_einpreisung GEGEinpreisung +} + +Table BedarfsausweisWohnen { + id Int [pk, increment] + uid String [unique, not null] + benutzer_id Int + ausstellgrund Ausstellgrund + registriernummer String + alternative_heizung Boolean + alternative_warmwasser Boolean + alternative_lueftung Boolean + alternative_kuehlung Boolean + anzahl_vollgeschosse Int + geschosshoehe Float + anzahl_gauben Int + breite_gauben Float + masse_a Float + masse_b Float + masse_c Float + masse_d Float + masse_e Float + masse_f Float + fensterflaeche_so_sw Float + fensterflaeche_nw_no Float + aussenwandflaeche_unbeheizt Float + dachflaeche Float + deckenflaeche Float + dach_u_wert Float + decke_u_wert Float + aussenwand_flaeche Float + aussenwand_u_wert Float + fussboden_flaeche Float + fussboden_u_wert Float + volumen Float + dicht Boolean + fenster_flaeche_1 Float + fenster_art_1 Float + fenster_flaeche_2 Float + fenster_art_2 Float + dachfenster_flaeche Float + dachfenster_art Float + haustuer_flaeche Float + haustuer_art Float + dach_bauart String + decke_bauart String + dach_daemmung Float + decke_daemmung Float + aussenwand_daemmung Float + boden_daemmung Float + aussenwand_bauart String + boden_bauart String + warmwasser_verteilung String + warmwasser_speicherung String + warmwasser_erzeugung String + heizung_zentral Boolean + heizung_verteilung String + heizung_speicherung String + waerme_erzeugung_heizung String + anteil_zusatzheizung Float + kollektor_flaeche Float + ausgestellt Boolean [default: false] + storniert Boolean [default: false, note: '@zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")'] + bestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")'] + zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")'] + prueftext String [note: '@zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")'] + beschreibung String + kontrolldatei_angefragt Boolean [default: false, note: '@zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")'] + benutzer benutzer + rechnung_id Int [unique] + rechnung Rechnung + aufnahme_id Int [unique, not null, note: '@zod.describe("ID der korrespondierenden Gebäudeaufnahme")'] + aufnahme Aufnahme [not null] +} + +Table benutzer { + id Int [pk, increment] + uid String [unique, not null] + name String + vorname String + email String [unique, not null] + passwort String [not null] + profilbild String + plz String + ort String + adresse String + telefon String + anrede String + rolle BenutzerRolle [not null, default: 'USER'] + firma String + lex_office_id String + BedarfsausweisWohnen BedarfsausweisWohnen [not null] + documenttemplates documenttemplates [not null] + objekte Objekt [not null] + rechnungen Rechnung [not null] + tokens tokens [not null] + VerbrauchsausweisGewerbe VerbrauchsausweisGewerbe [not null] + VerbrauchsausweisWohnen VerbrauchsausweisWohnen [not null] + ApiRequests ApiRequests [not null] + RefreshTokens RefreshTokens [not null] + aufnahmen Aufnahme [not null] + geg_einpreisungen GEGEinpreisung [not null] + geg_nachweise_gewerbe GEGNachweisGewerbe [not null] + geg_nachweise_wohnen GEGNachweisWohnen [not null] + bedarfsausweise_gewerbe BedarfsausweisGewerbe [not null] + ErstellteTickets Tickets [not null] + BearbeiteteTickets Tickets [not null] + events Event [not null] +} + +Table Bild { + id Int [pk, increment] + kategorie BilderKategorie [not null] + uid String [unique, not null] + aufnahme_id Int + aufnahme Aufnahme +} + +Table Event { + id Int [pk, increment] + uid String [unique, not null] + date DateTime [default: `now()`, not null] + title String [not null] + description String + aufnahme_id Int [not null] + aufnahme Aufnahme [not null] + benutzer_id Int + benutzer benutzer +} + +Table GEGEinpreisung { + id Int [pk, increment] + uid String [unique, not null] + empfaenger String + strasse String + plz String + ort String + zusatzzeile String + telefon String + email String + abweichende_versand_adresse Boolean [default: false] + versand_empfaenger String + versand_strasse String + versand_plz String + versand_ort String + versand_zusatzzeile String + status Einpreisungsstatus [not null] + geg_nachweis_wohnen GEGNachweisWohnen + geg_nachweis_gewerbe GEGNachweisGewerbe + bedarfsausweis_gewerbe BedarfsausweisGewerbe + benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, der diese Einpreisung bekommt.")'] + benutzer benutzer +} + +Table GEGNachweisGewerbe { + id Int [pk, increment] + uid String [unique, not null] + ausstellgrund Ausstellgrund [note: '@zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")'] + keller_beheizt Boolean [note: '@zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")'] + storniert Boolean [default: false, note: '@zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")'] + bestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")'] + zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")'] + beschreibung String [note: '@zod.describe("Beschreibung des Bauvorhabens")'] + benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")'] + benutzer benutzer + aufnahme_id Int [unique, not null] + aufnahme Aufnahme [not null] + rechnung_id Int [unique] + rechnung Rechnung + geg_einpreisung_id Int [unique] + geg_einpreisung GEGEinpreisung +} + +Table GEGNachweisWohnen { + id Int [pk, increment] + uid String [unique, not null] + ausstellgrund Ausstellgrund [note: '@zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")'] + keller_beheizt Boolean [note: '@zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")'] + storniert Boolean [default: false, note: '@zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")'] + bestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")'] + zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")'] + beschreibung String [note: '@zod.describe("Beschreibung des Bauvorhabens")'] + benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")'] + benutzer benutzer + aufnahme_id Int [unique, not null] + aufnahme Aufnahme [not null] + rechnung_id Int [unique] + rechnung Rechnung + geg_einpreisung_id Int [unique] + geg_einpreisung GEGEinpreisung +} + +Table Klimafaktoren { + id Int [pk, increment] + plz String [not null] + month Int [not null] + year Int [not null] + klimafaktor Float [not null, default: 1] + + indexes { + (plz, month, year) [unique] + } +} + +Table Objekt { + id Int [pk, increment] + uid String [unique, not null] + benutzer_id Int + latitude Float + longitude Float + plz String [note: '@zod.describe("Postleitzahl des Gebäudes")'] + ort String [note: '@zod.describe("Ort des Gebäudes")'] + adresse String [note: '@zod.describe("Adresse (Straße und Hausnummer) des Gebäudes")'] + erstellungsdatum DateTime [default: `now()`] + benutzer benutzer + aufnahmen Aufnahme [not null] + anteilshaber Anteilshaber [not null] +} + +Table Postleitzahlen { + id Int [pk, increment] + plz String [not null] + stadt String [not null] + bundesland String [not null] + landkreis String [not null] + lat Float [not null] + lon Float [not null] +} + +Table Rechnung { + id Int [pk, increment] + uid String [unique, not null] + benutzer_id Int [not null] + empfaenger String + strasse String + plz String + ort String + zusatzzeile String + telefon String + email String + abweichende_versand_adresse Boolean [default: false] + versand_empfaenger String + versand_strasse String + versand_plz String + versand_ort String + versand_zusatzzeile String + bezahlmethode Bezahlmethoden [not null] + status Rechnungsstatus [not null] + services Service[] [not null] + ausweistyp AusweisTyp [not null, default: 'Standard'] + betrag Float [not null] + erstellt_am DateTime [default: `now()`, not null] + bezahlt_am DateTime + storniert_am DateTime + transaktions_referenz String [unique] + benutzer benutzer [not null] + verbrauchsausweis_wohnen VerbrauchsausweisWohnen + verbrauchsausweis_gewerbe VerbrauchsausweisGewerbe + bedarfsausweis_wohnen BedarfsausweisWohnen + bedarfsausweis_gewerbe BedarfsausweisGewerbe + geg_nachweis_gewerbe GEGNachweisGewerbe + geg_nachweis_wohnen GEGNachweisWohnen +} + +Table RefreshTokens { + id Int [pk, increment] + benutzer_id Int [not null] + token String [unique, not null] + ip String [not null] + expiry DateTime [not null] + user benutzer [not null] +} + +Table Tickets { + id Int [pk, increment] + uid String [unique, not null] + benutzer_id Int + created_at DateTime [default: `now()`, not null] + updated_at DateTime + deleted_at DateTime + status TicketStatus [not null, default: 'OFFEN'] + titel String [not null] + beschreibung String [not null] + metadata Json + email String [not null] + bearbeiter_id Int + prioritaet Int [default: 0] + benutzer benutzer + bearbeiter benutzer +} + +Table Unterlage { + id Int [pk, increment] + uid String [unique, not null] + name String + kategorie String + mime String + aufnahme_id Int + aufnahme Aufnahme +} + +Table VerbrauchsausweisGewerbe { + id Int [pk, increment] + uid String [unique, not null] + benutzer_id Int + ausstellgrund Ausstellgrund + registriernummer String + zusaetzliche_heizquelle Boolean + brennstoff_1 String + einheit_1 String + brennstoff_2 String + einheit_2 String + startdatum DateTime + verbrauch_1 Int + verbrauch_2 Int + verbrauch_3 Int + verbrauch_4 Int + verbrauch_5 Int + verbrauch_6 Int + strom_1 Int + strom_2 Int + strom_3 Int + stromverbrauch_enthaelt_heizung Boolean + stromverbrauch_enthaelt_warmwasser Boolean + stromverbrauch_enthaelt_lueftung Boolean + stromverbrauch_enthaelt_beleuchtung Boolean + stromverbrauch_enthaelt_kuehlung Boolean + stromverbrauch_enthaelt_sonstige String + kuehlung_enthalten Boolean + anteil_kuehlung_1 Float + anteil_kuehlung_2 Float + keller_beheizt Boolean + alternative_heizung Boolean + alternative_warmwasser Boolean + alternative_lueftung Boolean + alternative_kuehlung Boolean + warmwasser_enthalten Boolean + anteil_warmwasser_1 Float + anteil_warmwasser_2 Float + ausgestellt Boolean [default: false] + storniert Boolean [default: false, note: '@zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")'] + bestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")'] + zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")'] + prueftext String [note: '@zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")'] + beschreibung String + kontrolldatei_angefragt Boolean [default: false, note: '@zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")'] + benutzer benutzer + rechnung_id Int [unique] + rechnung Rechnung + aufnahme_id Int [unique, not null, note: '@zod.describe("ID der korrespondierenden Gebäudeaufnahme")'] + aufnahme Aufnahme [not null] +} + +Table VerbrauchsausweisWohnen { + id Int [pk, increment] + uid String [unique, not null, note: '@zod.describe("UID des Ausweises")'] + benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")'] + ausstellgrund Ausstellgrund [note: '@zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")'] + registriernummer String [note: '@zod.describe("Die Registriernummer des Ausweises")'] + zusaetzliche_heizquelle Boolean [note: '@zod.describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen")'] + einheit_1 String [note: '@zod.describe("Einheit des Energieträgers der primären Heizquelle")'] + einheit_2 String [note: '@zod.describe("Einheit des Energieträgers der sekundären Heizquelle")'] + startdatum DateTime + verbrauch_1 Int [note: '@zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre")'] + verbrauch_2 Int [note: '@zod.describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre")'] + verbrauch_3 Int [note: '@zod.describe("Energieverbrauch der primären Heizquelle im letzten der drei Verbrauchsjahre")'] + verbrauch_4 Int [note: '@zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im ersten der drei Verbrauchsjahre")'] + verbrauch_5 Int [note: '@zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im zweiten der drei Verbrauchsjahre")'] + verbrauch_6 Int [note: '@zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre")'] + warmwasser_enthalten Boolean [note: '@zod.describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen")'] + warmwasser_anteil_bekannt Boolean [note: '@zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")'] + keller_beheizt Boolean [note: '@zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")'] + faktorKeller Float [note: '@zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.")'] + alternative_heizung Boolean [note: '@zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.")'] + alternative_warmwasser Boolean [note: '@zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.")'] + alternative_lueftung Boolean [note: '@zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")'] + alternative_kuehlung Boolean [note: '@zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")'] + anteil_warmwasser_1 Float [note: '@zod.describe("Anteil des Warmwassers am Gesamtverbrauch der primären Energiequelle in Prozent")'] + anteil_warmwasser_2 Float [note: '@zod.describe("Anteil des Warmwassers am Gesamtverbrauch der sekundären Energiequelle in Prozent")'] + ausgestellt Boolean [default: false] + storniert Boolean [default: false, note: '@zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")'] + bestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")'] + zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")'] + prueftext String [note: '@zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")'] + beschreibung String + kontrolldatei_angefragt Boolean [default: false, note: '@zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")'] + benutzer benutzer + rechnung_id Int [unique] + rechnung Rechnung + aufnahme_id Int [unique, not null, note: '@zod.describe("ID der korrespondierenden Gebäudeaufnahme")'] + aufnahme Aufnahme [not null] +} + +Table documenttemplates { + id Int [pk, increment] + name String [not null] + shortdescription String [not null] + longdescription String [not null] + user_id Int [not null] + is_private Boolean [not null, default: true] + documenttype Int [not null] + filename String [not null] + created_at DateTime [default: `now()`, not null] + updated_at DateTime [default: `now()`, not null] + benutzer benutzer [not null] + documenttypes documenttypes [not null] +} + +Table documenttypes { + id Int [pk, increment] + name String [not null] + shortdescription String [not null] + longdescription String [not null] + documenttemplates documenttemplates [not null] +} + +Table tokens { + id Int [pk, increment] + token String [not null] + user_id Int [not null] + date_created DateTime [default: `now()`, not null] + last_used DateTime [default: `now()`, not null] + times_used Int [not null, default: 0] + permissions Int [not null, default: 0] + benutzer benutzer [not null] +} + +Enum Heizungsstatus { + BEHEIZT + UNBEHEIZT + NICHT_VORHANDEN +} + +Enum Lueftungskonzept { + Fensterlueftung + Schachtlueftung + LueftungsanlageMitWaermerueckgewinnung + LueftungsanlageOhneWaermerueckgewinnung +} + +Enum BenutzerRolle { + USER + ADMIN +} + +Enum BilderKategorie { + Heizung + Fenster + Gebaeude + Daemmung +} + +Enum Einpreisungsstatus { + open + canceled + pending + expired +} + +Enum Bezahlmethoden { + paypal + giropay + sofort + creditcard + rechnung +} + +Enum Rechnungsstatus { + open + canceled + pending + authorized + expired + failed + paid +} + +Enum AusweisTyp { + Standard + Beratung + Offline +} + +Enum TicketStatus { + OFFEN + IN_BEARBEITUNG + IN_WARTESCHLEIFE + GESCHLOSSEN + GELOEST +} + +Enum UnterlagenKategorie { + Grundriss + Sonstiges +} + +Enum Ausstellgrund { + Neubau + Vermietung + Verkauf + Modernisierung + Sonstiges +} + +Enum Ausweisart { + VerbrauchsausweisWohnen + VerbrauchsausweisGewerbe + BedarfsausweisWohnen + BedarfsausweisGewerbe + GEGNachweisWohnen + GEGNachweisBedarfsausweis + GEGNachweisGewerbe +} + +Enum Service { + Telefonberatung + Aushang + Qualitaetsdruck + SameDay +} + +Ref: Anteilshaber.benutzer_id - benutzer.id [delete: No Action] + +Ref: Anteilshaber.objekt_id > Objekt.id [delete: No Action] + +Ref: ApiRequests.user_id > benutzer.id [delete: No Action] + +Ref: Aufnahme.benutzer_id > benutzer.id [delete: No Action] + +Ref: Aufnahme.objekt_id > Objekt.id [delete: No Action] + +Ref: BedarfsausweisGewerbe.benutzer_id > benutzer.id [delete: No Action] + +Ref: BedarfsausweisGewerbe.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: BedarfsausweisGewerbe.rechnung_id - Rechnung.id [delete: No Action] + +Ref: BedarfsausweisGewerbe.geg_einpreisung_id - GEGEinpreisung.id [delete: No Action] + +Ref: BedarfsausweisWohnen.benutzer_id > benutzer.id [delete: No Action] + +Ref: BedarfsausweisWohnen.rechnung_id - Rechnung.id [delete: No Action] + +Ref: BedarfsausweisWohnen.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: Bild.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: Event.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: Event.benutzer_id > benutzer.id [delete: No Action] + +Ref: GEGEinpreisung.benutzer_id > benutzer.id [delete: No Action] + +Ref: GEGNachweisGewerbe.benutzer_id > benutzer.id [delete: No Action] + +Ref: GEGNachweisGewerbe.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: GEGNachweisGewerbe.rechnung_id - Rechnung.id [delete: No Action] + +Ref: GEGNachweisGewerbe.geg_einpreisung_id - GEGEinpreisung.id [delete: No Action] + +Ref: GEGNachweisWohnen.benutzer_id > benutzer.id [delete: No Action] + +Ref: GEGNachweisWohnen.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: GEGNachweisWohnen.rechnung_id - Rechnung.id [delete: No Action] + +Ref: GEGNachweisWohnen.geg_einpreisung_id - GEGEinpreisung.id [delete: No Action] + +Ref: Objekt.benutzer_id > benutzer.id + +Ref: Rechnung.benutzer_id > benutzer.id [delete: No Action] + +Ref: RefreshTokens.benutzer_id > benutzer.id [delete: Cascade] + +Ref: Tickets.benutzer_id > benutzer.id + +Ref: Tickets.bearbeiter_id > benutzer.id + +Ref: Unterlage.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: VerbrauchsausweisGewerbe.benutzer_id > benutzer.id [delete: No Action] + +Ref: VerbrauchsausweisGewerbe.rechnung_id - Rechnung.id [delete: No Action] + +Ref: VerbrauchsausweisGewerbe.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: VerbrauchsausweisWohnen.benutzer_id > benutzer.id [delete: No Action] + +Ref: VerbrauchsausweisWohnen.rechnung_id - Rechnung.id [delete: No Action] + +Ref: VerbrauchsausweisWohnen.aufnahme_id > Aufnahme.id [delete: No Action] + +Ref: documenttemplates.user_id > benutzer.id [delete: Cascade] + +Ref: documenttemplates.documenttype > documenttypes.id [delete: Cascade] + +Ref: tokens.user_id > benutzer.id [delete: No Action] \ No newline at end of file diff --git a/package.json b/package.json index 2541b7f0..3532ae79 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "@astrojs/node": "^8.3.4", "@astrojs/svelte": "^2.2.0", "@astrojs/tailwind": "^3.1.3", - "@ibcornelsen/database": "link:@ibcornelsen/database", "@ibcornelsen/ui": "^0.0.2", "@mollie/api-client": "^4.1.0", "@pdfme/common": "^5.2.16", @@ -92,7 +91,11 @@ "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.1", "prettier": "^2.8.8", - "typescript": "^4.9.5" + "prisma": "^6.4.1", + "prisma-dbml-generator": "^0.12.0", + "prisma-generator-fake-data": "^0.14.3", + "typescript": "^4.9.5", + "zod-prisma": "^0.5.4" }, "overrides": { "zod": "^3.24.1" diff --git a/prisma/null.ts b/prisma/null.ts new file mode 100644 index 00000000..41efe239 --- /dev/null +++ b/prisma/null.ts @@ -0,0 +1 @@ +export const x = 5 \ No newline at end of file diff --git a/prisma/prisma-enum-generator.ts b/prisma/prisma-enum-generator.ts new file mode 100644 index 00000000..ad535d0f --- /dev/null +++ b/prisma/prisma-enum-generator.ts @@ -0,0 +1,36 @@ +import { generatorHandler } from "@prisma/generator-helper"; +import fs from "fs"; +import path from "path"; + +const header = `// This file was generated by a custom prisma generator, do not edit manually.\n`; + +generatorHandler({ + onManifest() { + return { + defaultOutput: "./enums/index.ts", + prettyName: "Prisma Enum Generator", + }; + }, + async onGenerate(options) { + const enums = options.dmmf.datamodel.enums; + + const output = enums.map((e) => { + let enumString = `export enum ${e.name} {\n`; + e.values.forEach(({ name: value }) => { + enumString += ` ${value} = "${value}",\n`; + }); + enumString += `};\n\n`; + + return enumString; + }); + + const outputFile = options.generator.output; + if (!outputFile || !outputFile.value) { + throw new Error("No output file specified"); + } + + const outputPath = path.resolve(outputFile.value); + fs.mkdirSync(path.dirname(outputPath), { recursive: true }); + fs.writeFileSync(outputPath, header + output.join("\n"), "utf-8"); + }, +}); \ No newline at end of file diff --git a/prisma/schema/Anteilshaber.prisma b/prisma/schema/Anteilshaber.prisma new file mode 100644 index 00000000..c20e48bd --- /dev/null +++ b/prisma/schema/Anteilshaber.prisma @@ -0,0 +1,11 @@ +model Anteilshaber { + id Int @id @default(autoincrement()) + benutzer_id Int + rolle String? @db.VarChar + privilegien BigInt? + uid String @unique @default(dbgenerated("'ant-' || gen_random_uuid()")) + benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + objekt_id Int + objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} \ No newline at end of file diff --git a/prisma/schema/ApiRequests.prisma b/prisma/schema/ApiRequests.prisma new file mode 100644 index 00000000..c8c253cf --- /dev/null +++ b/prisma/schema/ApiRequests.prisma @@ -0,0 +1,14 @@ + +model ApiRequests { + id Int @id @default(autoincrement()) + date DateTime @default(now()) @db.Timestamp(6) + ip String @db.VarChar(50) + method String @db.VarChar(10) + path String @db.VarChar(100) + status Int + responseTime Float + responseSize Int + userAgent String @db.VarChar(500) + user_id Int? + user Benutzer? @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/Aufnahme.prisma b/prisma/schema/Aufnahme.prisma new file mode 100644 index 00000000..ba750f00 --- /dev/null +++ b/prisma/schema/Aufnahme.prisma @@ -0,0 +1,150 @@ + +enum Heizungsstatus { + BEHEIZT + UNBEHEIZT + NICHT_VORHANDEN +} + +enum Lueftungskonzept { + Fensterlueftung + Schachtlueftung + LueftungsanlageMitWaermerueckgewinnung + LueftungsanlageOhneWaermerueckgewinnung +} + +model Aufnahme { + id Int @id @default(autoincrement()) + /// @zod.describe("UID der Gebäude Aufnahme") + uid String @unique @default(dbgenerated("'auf-' || gen_random_uuid()")) + benutzer_id Int? + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + /// @zod.describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen") + ausweisart Ausweisart? + /// @zod.describe("Art des Gebäudes und seiner primären Nutzungsart") + gebaeudetyp String? @db.VarChar + /// @zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil") + gebaeudeteil String? @db.VarChar + /// @zod.describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde") + baujahr_gebaeude Int[] + /// @zod.describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde") + baujahr_heizung Int[] + /// @zod.describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde") + baujahr_klima Int[] + /// @zod.describe("Anzahl der (Wohn)Einheiten im Gebäude") + einheiten Int? + /// @zod.describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden") + flaeche Int? + /// @zod.describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche") + nutzflaeche Int? + /// @zod.describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen") + saniert Boolean? + /// @zod.describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist") + keller Heizungsstatus? + /// @zod.describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist") + dachgeschoss Heizungsstatus? + /// @zod.describe("Art der Gebäudelüftung") + lueftung Lueftungskonzept? + /// @zod.describe("Art der Gebäudekühlung") + kuehlung String? @db.VarChar(50) + /// @zod.describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr") + leerstand Int? + + /// @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen") + alternative_heizung Boolean? + /// @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen") + alternative_warmwasser Boolean? + /// @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen") + alternative_lueftung Boolean? + /// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen") + alternative_kuehlung Boolean? + + /// @zod.describe("Genutzer Brennstoff der primären Energiequelle") + brennstoff_1 String? @db.VarChar(50) + /// @zod.describe("Genutzer Brennstoff der sekundären Energiequelle") + brennstoff_2 String? @db.VarChar(50) + + boxpruefung Boolean? @default(false) + + /// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes") + energieeffizienzklasse String? @db.VarChar(5) + + /// @zod.describe("Datum an dem der Kunde den Ausweis erstellt hat") + erstellungsdatum DateTime? @default(now()) + /// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat") + ausstellungsdatum DateTime? + + /// @zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen") + zentralheizung Boolean? + /// @zod.describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen") + solarsystem_warmwasser Boolean? + /// @zod.describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen") + warmwasser_rohre_gedaemmt Boolean? + /// @zod.describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen") + niedertemperatur_kessel Boolean? + /// @zod.describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen") + brennwert_kessel Boolean? + /// @zod.describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen") + heizungsrohre_gedaemmt Boolean? + standard_kessel Boolean? + /// @zod.describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen") + waermepumpe Boolean? + /// @zod.describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen") + raum_temperatur_regler Boolean? + /// @zod.describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen") + photovoltaik Boolean? + /// @zod.describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen") + durchlauf_erhitzer Boolean? + einzelofen Boolean? + /// @zod.describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen") + zirkulation Boolean? + /// @zod.describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen") + einfach_verglasung Boolean? + /// @zod.describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen") + dreifach_verglasung Boolean? + /// @zod.describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen") + fenster_teilweise_undicht Boolean? + /// @zod.describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen") + doppel_verglasung Boolean? + /// @zod.describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen") + fenster_dicht Boolean? + /// @zod.describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen") + rolllaeden_kaesten_gedaemmt Boolean? + /// @zod.describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen") + isolier_verglasung Boolean? + /// @zod.describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen") + tueren_undicht Boolean? + /// @zod.describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen") + tueren_dicht Boolean? + /// @zod.describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen") + dachgeschoss_gedaemmt Boolean? + /// @zod.describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen") + keller_decke_gedaemmt Boolean? + /// @zod.describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen") + keller_wand_gedaemmt Boolean? + /// @zod.describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen") + aussenwand_gedaemmt Boolean? + /// @zod.describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen") + oberste_geschossdecke_gedaemmt Boolean? + /// @zod.describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen") + aussenwand_min_12cm_gedaemmt Boolean? + /// @zod.describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen") + dachgeschoss_min_12cm_gedaemmt Boolean? + /// @zod.describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen") + oberste_geschossdecke_min_12cm_gedaemmt Boolean? + + events Event[] + bilder Bild[] + unterlagen Unterlage[] + bedarfsausweise_wohnen BedarfsausweisWohnen[] + verbrauchsausweise_gewerbe VerbrauchsausweisGewerbe[] + verbrauchsausweise_wohnen VerbrauchsausweisWohnen[] + geg_nachweise_wohnen GEGNachweisWohnen[] + geg_nachweise_gewerbe GEGNachweisGewerbe[] + bedarfsausweise_gewerbe BedarfsausweisGewerbe[] + + objekt_id Int + objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} + + + diff --git a/prisma/schema/BedarfsausweisGewerbe.prisma b/prisma/schema/BedarfsausweisGewerbe.prisma new file mode 100644 index 00000000..084827e4 --- /dev/null +++ b/prisma/schema/BedarfsausweisGewerbe.prisma @@ -0,0 +1,16 @@ +model BedarfsausweisGewerbe { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'bag-' || gen_random_uuid()")) + + /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") + benutzer_id Int? + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + aufnahme_id Int @unique + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + rechnung_id Int? @unique + rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + geg_einpreisung_id Int? @unique + geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} \ No newline at end of file diff --git a/prisma/schema/BedarfsausweisWohnen.prisma b/prisma/schema/BedarfsausweisWohnen.prisma new file mode 100644 index 00000000..55023a8e --- /dev/null +++ b/prisma/schema/BedarfsausweisWohnen.prisma @@ -0,0 +1,86 @@ + +model BedarfsausweisWohnen { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'baw-' || gen_random_uuid()")) + benutzer_id Int? + ausstellgrund Ausstellgrund? + registriernummer String? @db.VarChar + + alternative_heizung Boolean? + alternative_warmwasser Boolean? + alternative_lueftung Boolean? + alternative_kuehlung Boolean? + + anzahl_vollgeschosse Int? + geschosshoehe Float? + anzahl_gauben Int? + breite_gauben Float? + masse_a Float? + masse_b Float? + masse_c Float? + masse_d Float? + masse_e Float? + masse_f Float? + fensterflaeche_so_sw Float? + fensterflaeche_nw_no Float? + aussenwandflaeche_unbeheizt Float? + dachflaeche Float? + deckenflaeche Float? + dach_u_wert Float? + decke_u_wert Float? + aussenwand_flaeche Float? + aussenwand_u_wert Float? + fussboden_flaeche Float? + fussboden_u_wert Float? + volumen Float? + dicht Boolean? + fenster_flaeche_1 Float? + fenster_art_1 Float? + fenster_flaeche_2 Float? + fenster_art_2 Float? + dachfenster_flaeche Float? + dachfenster_art Float? + haustuer_flaeche Float? + haustuer_art Float? + dach_bauart String? @db.VarChar + decke_bauart String? @db.VarChar + dach_daemmung Float? + decke_daemmung Float? + aussenwand_daemmung Float? + boden_daemmung Float? + aussenwand_bauart String? @db.VarChar + boden_bauart String? @db.VarChar + warmwasser_verteilung String? @db.VarChar + warmwasser_speicherung String? @db.VarChar + warmwasser_erzeugung String? @db.VarChar + heizung_zentral Boolean? + heizung_verteilung String? @db.VarChar + heizung_speicherung String? @db.VarChar + waerme_erzeugung_heizung String? @db.VarChar + anteil_zusatzheizung Float? + kollektor_flaeche Float? + + ausgestellt Boolean? @default(false) + /// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen") + storniert Boolean? @default(false) + /// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen") + bestellt Boolean? @default(false) + /// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen") + zurueckgestellt Boolean? @default(false) + /// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung") + prueftext String? @db.VarChar(1000) + + beschreibung String? @db.Text + + /// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde") + kontrolldatei_angefragt Boolean? @default(false) + + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + rechnung_id Int? @unique + rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + /// @zod.describe("ID der korrespondierenden Gebäudeaufnahme") + aufnahme_id Int @unique + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/Benutzer.prisma b/prisma/schema/Benutzer.prisma new file mode 100644 index 00000000..e0d28cb5 --- /dev/null +++ b/prisma/schema/Benutzer.prisma @@ -0,0 +1,52 @@ + +enum BenutzerRolle { + USER + ADMIN +} + +model Benutzer { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'usr-' || gen_random_uuid()")) + name String? @db.VarChar(50) + vorname String? @db.VarChar(50) + email String @unique(map: "benutzer_email_idx") @db.VarChar(255) + passwort String @db.VarChar(255) + profilbild String? @db.VarChar + plz String? @db.VarChar(5) + ort String? @db.VarChar(50) + adresse String? @db.VarChar(100) + telefon String? @db.VarChar(50) + anrede String? @db.VarChar(50) + rolle BenutzerRolle @default(USER) + firma String? + lex_office_id String? + + Anteilshaber Anteilshaber[] @ignore + BedarfsausweisWohnen BedarfsausweisWohnen[] + documenttemplates documenttemplates[] + objekte Objekt[] + rechnungen Rechnung[] + tokens tokens[] + VerbrauchsausweisGewerbe VerbrauchsausweisGewerbe[] + VerbrauchsausweisWohnen VerbrauchsausweisWohnen[] + ApiRequests ApiRequests[] + RefreshTokens RefreshTokens[] + aufnahmen Aufnahme[] + + // ---------------------------------- GEG ---------------------------------- + geg_einpreisungen GEGEinpreisung[] + geg_nachweise_gewerbe GEGNachweisGewerbe[] + geg_nachweise_wohnen GEGNachweisWohnen[] + bedarfsausweise_gewerbe BedarfsausweisGewerbe[] + + + + ErstellteTickets Tickets[] @relation("ErstellteTickets") + BearbeiteteTickets Tickets[] @relation("BearbeiteteTickets") + events Event[] + + @@map("benutzer") +} + + + diff --git a/prisma/schema/Bild.prisma b/prisma/schema/Bild.prisma new file mode 100644 index 00000000..c1910716 --- /dev/null +++ b/prisma/schema/Bild.prisma @@ -0,0 +1,16 @@ + +enum BilderKategorie { + Heizung + Fenster + Gebaeude + Daemmung +} + +model Bild { + id Int @id @default(autoincrement()) + kategorie BilderKategorie + uid String @unique @default(dbgenerated("'img-' || gen_random_uuid()")) + + aufnahme_id Int? + aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} \ No newline at end of file diff --git a/prisma/schema/Event.prisma b/prisma/schema/Event.prisma new file mode 100644 index 00000000..2203363d --- /dev/null +++ b/prisma/schema/Event.prisma @@ -0,0 +1,20 @@ + +// Dieses Model wird für getriggerte Events verwendet +// Hier werden beispielsweise Events wie "Nachricht Verschickt" gespeichert. +// Diese Events werden dann in der Admin-Oberfläche angezeigt. +model Event { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'evt-' || gen_random_uuid()")) + date DateTime @default(now()) @db.Timestamp(6) + + title String @db.VarChar(255) + description String? @db.Text + + + // Verlinkung des Gebäudes + aufnahme_id Int + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + // Verlinkung des Benutzers + benutzer_id Int? + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/GEGEinpreisung.prisma b/prisma/schema/GEGEinpreisung.prisma new file mode 100644 index 00000000..14ef101a --- /dev/null +++ b/prisma/schema/GEGEinpreisung.prisma @@ -0,0 +1,36 @@ +enum Einpreisungsstatus { + open + canceled + pending + expired +} + +model GEGEinpreisung { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'gge-' || gen_random_uuid()")) + + empfaenger String? @db.VarChar + strasse String? @db.VarChar + plz String? @db.VarChar + ort String? @db.VarChar + zusatzzeile String? @db.VarChar + telefon String? @db.VarChar + email String? @db.VarChar + + abweichende_versand_adresse Boolean? @default(false) + versand_empfaenger String? @db.VarChar + versand_strasse String? @db.VarChar + versand_plz String? @db.VarChar + versand_ort String? @db.VarChar + versand_zusatzzeile String? @db.VarChar + + status Einpreisungsstatus + + geg_nachweis_wohnen GEGNachweisWohnen? + geg_nachweis_gewerbe GEGNachweisGewerbe? + bedarfsausweis_gewerbe BedarfsausweisGewerbe? + + /// @zod.describe("Die ID des Benutzers, der diese Einpreisung bekommt.") + benutzer_id Int? + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} \ No newline at end of file diff --git a/prisma/schema/GEGNachweisGewerbe.prisma b/prisma/schema/GEGNachweisGewerbe.prisma new file mode 100644 index 00000000..236e5824 --- /dev/null +++ b/prisma/schema/GEGNachweisGewerbe.prisma @@ -0,0 +1,30 @@ +model GEGNachweisGewerbe { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'gnw-' || gen_random_uuid()")) + + /// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf") + ausstellgrund Ausstellgrund? + /// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen") + keller_beheizt Boolean? + + /// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen") + storniert Boolean? @default(false) + /// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen") + bestellt Boolean? @default(false) + /// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen") + zurueckgestellt Boolean? @default(false) + + /// @zod.describe("Beschreibung des Bauvorhabens") + beschreibung String? @db.Text + + /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") + benutzer_id Int? + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + aufnahme_id Int @unique + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + rechnung_id Int? @unique + rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + geg_einpreisung_id Int? @unique + geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/GEGNachweisWohnen.prisma b/prisma/schema/GEGNachweisWohnen.prisma new file mode 100644 index 00000000..ac10d2d9 --- /dev/null +++ b/prisma/schema/GEGNachweisWohnen.prisma @@ -0,0 +1,30 @@ +model GEGNachweisWohnen { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'gnw-' || gen_random_uuid()")) + + /// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf") + ausstellgrund Ausstellgrund? + /// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen") + keller_beheizt Boolean? + + /// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen") + storniert Boolean? @default(false) + /// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen") + bestellt Boolean? @default(false) + /// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen") + zurueckgestellt Boolean? @default(false) + + /// @zod.describe("Beschreibung des Bauvorhabens") + beschreibung String? @db.Text + + /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") + benutzer_id Int? + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + aufnahme_id Int @unique + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + rechnung_id Int? @unique + rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + geg_einpreisung_id Int? @unique + geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/Klimafaktoren.prisma b/prisma/schema/Klimafaktoren.prisma new file mode 100644 index 00000000..1917e7ef --- /dev/null +++ b/prisma/schema/Klimafaktoren.prisma @@ -0,0 +1,11 @@ +model Klimafaktoren { + id Int @id @default(autoincrement()) + plz String @db.VarChar(5) + month Int + year Int + klimafaktor Float @default(1) + + // Mithilfe eines composite keys können wir einfach den Monat und das Jahr mit der Postleitzahl verknüpfen + // somit müssen wir nicht mehr eine Zeile für jeden Monat anlegen. + @@unique([plz, month, year]) +} \ No newline at end of file diff --git a/prisma/schema/Objekt.prisma b/prisma/schema/Objekt.prisma new file mode 100644 index 00000000..bf1acda9 --- /dev/null +++ b/prisma/schema/Objekt.prisma @@ -0,0 +1,21 @@ +model Objekt { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'obj-' || gen_random_uuid()")) + benutzer_id Int? + + latitude Float? + longitude Float? + + /// @zod.describe("Postleitzahl des Gebäudes") + plz String? @db.VarChar(5) + /// @zod.describe("Ort des Gebäudes") + ort String? @db.VarChar(50) + /// @zod.describe("Adresse (Straße und Hausnummer) des Gebäudes") + adresse String? @db.VarChar(100) + + erstellungsdatum DateTime? @default(now()) + + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id]) + aufnahmen Aufnahme[] + anteilshaber Anteilshaber[] +} \ No newline at end of file diff --git a/prisma/schema/Postleitzahlen.prisma b/prisma/schema/Postleitzahlen.prisma new file mode 100644 index 00000000..2486d475 --- /dev/null +++ b/prisma/schema/Postleitzahlen.prisma @@ -0,0 +1,9 @@ +model Postleitzahlen { + id Int @id @default(autoincrement()) + plz String @db.VarChar(5) + stadt String @db.VarChar(100) + bundesland String @db.VarChar(100) + landkreis String @db.VarChar(100) + lat Float + lon Float +} diff --git a/prisma/schema/Rechnung.prisma b/prisma/schema/Rechnung.prisma new file mode 100644 index 00000000..b2b21c3a --- /dev/null +++ b/prisma/schema/Rechnung.prisma @@ -0,0 +1,66 @@ + +enum Bezahlmethoden { + paypal + giropay + sofort + creditcard + rechnung +} + +enum Rechnungsstatus { + open + canceled + pending + authorized + expired + failed + paid +} + +enum AusweisTyp { + Standard + Beratung + Offline +} + +model Rechnung { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'inv-' || gen_random_uuid()")) + + benutzer_id Int + empfaenger String? @db.VarChar + strasse String? @db.VarChar + plz String? @db.VarChar + ort String? @db.VarChar + zusatzzeile String? @db.VarChar + telefon String? @db.VarChar + email String? @db.VarChar + + abweichende_versand_adresse Boolean? @default(false) + versand_empfaenger String? @db.VarChar + versand_strasse String? @db.VarChar + versand_plz String? @db.VarChar + versand_ort String? @db.VarChar + versand_zusatzzeile String? @db.VarChar + + bezahlmethode Bezahlmethoden + status Rechnungsstatus + services Service[] + ausweistyp AusweisTyp @default(Standard) + betrag Float + erstellt_am DateTime @default(now()) + bezahlt_am DateTime? + storniert_am DateTime? + transaktions_referenz String? @unique @db.VarChar + + benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + verbrauchsausweis_wohnen VerbrauchsausweisWohnen? + verbrauchsausweis_gewerbe VerbrauchsausweisGewerbe? + bedarfsausweis_wohnen BedarfsausweisWohnen? + bedarfsausweis_gewerbe BedarfsausweisGewerbe? + geg_nachweis_gewerbe GEGNachweisGewerbe? + geg_nachweis_wohnen GEGNachweisWohnen? +} + + diff --git a/prisma/schema/RefreshTokens.prisma b/prisma/schema/RefreshTokens.prisma new file mode 100644 index 00000000..f5292663 --- /dev/null +++ b/prisma/schema/RefreshTokens.prisma @@ -0,0 +1,13 @@ + +model RefreshTokens { + id Int @id @default(autoincrement()) + benutzer_id Int + token String @unique + // Wir nehmen die IP Adresse des Clients mit auf. + // Falls sich die IP Adresse eines Refresh Token Owners ändert, können wir diesen einfach invalidieren. + ip String + expiry DateTime + + // Relationen + user Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: Cascade) +} \ No newline at end of file diff --git a/prisma/schema/Tickets.prisma b/prisma/schema/Tickets.prisma new file mode 100644 index 00000000..95210fef --- /dev/null +++ b/prisma/schema/Tickets.prisma @@ -0,0 +1,30 @@ + +enum TicketStatus { + OFFEN + IN_BEARBEITUNG + IN_WARTESCHLEIFE + GESCHLOSSEN + GELOEST +} + +model Tickets { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'tkt-' || gen_random_uuid()")) + benutzer_id Int? + created_at DateTime @default(now()) + updated_at DateTime? @updatedAt + deleted_at DateTime? + // Attribute + status TicketStatus @default(OFFEN) + titel String + beschreibung String + metadata Json? + email String + + bearbeiter_id Int? + prioritaet Int? @default(0) + + // Relationen + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], name: "ErstellteTickets") + bearbeiter Benutzer? @relation(fields: [bearbeiter_id], references: [id], name: "BearbeiteteTickets") +} diff --git a/prisma/schema/Unterlage.prisma b/prisma/schema/Unterlage.prisma new file mode 100644 index 00000000..64dce49f --- /dev/null +++ b/prisma/schema/Unterlage.prisma @@ -0,0 +1,16 @@ + +enum UnterlagenKategorie { + Grundriss + Sonstiges +} + +model Unterlage { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'pln-' || gen_random_uuid()")) + name String? + kategorie String? + mime String? + + aufnahme_id Int? + aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} \ No newline at end of file diff --git a/prisma/schema/VerbrauchsausweisGewerbe.prisma b/prisma/schema/VerbrauchsausweisGewerbe.prisma new file mode 100644 index 00000000..552c8916 --- /dev/null +++ b/prisma/schema/VerbrauchsausweisGewerbe.prisma @@ -0,0 +1,72 @@ + +model VerbrauchsausweisGewerbe { + id Int @id @default(autoincrement()) + uid String @unique @default(dbgenerated("'vag-' || gen_random_uuid()")) + benutzer_id Int? + ausstellgrund Ausstellgrund? + registriernummer String? @db.VarChar + zusaetzliche_heizquelle Boolean? + brennstoff_1 String? @db.VarChar(50) + einheit_1 String? @db.VarChar(50) + brennstoff_2 String? @db.VarChar(50) + einheit_2 String? @db.VarChar(50) + startdatum DateTime? @db.Timestamp(6) + verbrauch_1 Int? + verbrauch_2 Int? + verbrauch_3 Int? + verbrauch_4 Int? + verbrauch_5 Int? + verbrauch_6 Int? + + strom_1 Int? + strom_2 Int? + strom_3 Int? + + stromverbrauch_enthaelt_heizung Boolean? + stromverbrauch_enthaelt_warmwasser Boolean? + stromverbrauch_enthaelt_lueftung Boolean? + stromverbrauch_enthaelt_beleuchtung Boolean? + stromverbrauch_enthaelt_kuehlung Boolean? + stromverbrauch_enthaelt_sonstige String? @db.VarChar(50) + + kuehlung_enthalten Boolean? + anteil_kuehlung_1 Float? + anteil_kuehlung_2 Float? + + + keller_beheizt Boolean? + + alternative_heizung Boolean? + alternative_warmwasser Boolean? + alternative_lueftung Boolean? + alternative_kuehlung Boolean? + + warmwasser_enthalten Boolean? + anteil_warmwasser_1 Float? + anteil_warmwasser_2 Float? + + ausgestellt Boolean? @default(false) + /// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen") + storniert Boolean? @default(false) + /// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen") + bestellt Boolean? @default(false) + /// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen") + zurueckgestellt Boolean? @default(false) + /// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung") + prueftext String? @db.VarChar(1000) + + beschreibung String? @db.Text + + /// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde") + kontrolldatei_angefragt Boolean? @default(false) + + + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + rechnung_id Int? @unique + rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + /// @zod.describe("ID der korrespondierenden Gebäudeaufnahme") + aufnahme_id Int @unique + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/VerbrauchsausweisWohnen.prisma b/prisma/schema/VerbrauchsausweisWohnen.prisma new file mode 100644 index 00000000..32091630 --- /dev/null +++ b/prisma/schema/VerbrauchsausweisWohnen.prisma @@ -0,0 +1,77 @@ + +model VerbrauchsausweisWohnen { + id Int @id @default(autoincrement()) + /// @zod.describe("UID des Ausweises") + uid String @unique @default(dbgenerated("'vaw-' || gen_random_uuid()")) + /// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört") + benutzer_id Int? + /// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf") + ausstellgrund Ausstellgrund? + /// @zod.describe("Die Registriernummer des Ausweises") + registriernummer String? @db.VarChar + /// @zod.describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen") + zusaetzliche_heizquelle Boolean? + /// @zod.describe("Einheit des Energieträgers der primären Heizquelle") + einheit_1 String? @db.VarChar(50) + /// @zod.describe("Einheit des Energieträgers der sekundären Heizquelle") + einheit_2 String? @db.VarChar(50) + startdatum DateTime? @db.Timestamptz(6) + /// @zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre") + verbrauch_1 Int? + /// @zod.describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre") + verbrauch_2 Int? + /// @zod.describe("Energieverbrauch der primären Heizquelle im letzten der drei Verbrauchsjahre") + verbrauch_3 Int? + /// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im ersten der drei Verbrauchsjahre") + verbrauch_4 Int? + /// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im zweiten der drei Verbrauchsjahre") + verbrauch_5 Int? + /// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre") + verbrauch_6 Int? + /// @zod.describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen") + warmwasser_enthalten Boolean? + /// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen") + warmwasser_anteil_bekannt Boolean? + /// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen") + keller_beheizt Boolean? + /// @zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.") + faktorKeller Float? + + /// @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.") + alternative_heizung Boolean? + /// @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.") + alternative_warmwasser Boolean? + /// @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.") + alternative_lueftung Boolean? + /// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.") + alternative_kuehlung Boolean? + + /// @zod.describe("Anteil des Warmwassers am Gesamtverbrauch der primären Energiequelle in Prozent") + anteil_warmwasser_1 Float? + /// @zod.describe("Anteil des Warmwassers am Gesamtverbrauch der sekundären Energiequelle in Prozent") + anteil_warmwasser_2 Float? + + ausgestellt Boolean? @default(false) + /// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen") + storniert Boolean? @default(false) + /// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen") + bestellt Boolean? @default(false) + /// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen") + zurueckgestellt Boolean? @default(false) + /// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung") + prueftext String? @db.VarChar(1000) + + beschreibung String? @db.Text + + /// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde") + kontrolldatei_angefragt Boolean? @default(false) + + benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + rechnung_id Int? @unique + rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction) + + /// @zod.describe("ID der korrespondierenden Gebäudeaufnahme") + aufnahme_id Int @unique + aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction) +} diff --git a/prisma/schema/documenttemplates.prisma b/prisma/schema/documenttemplates.prisma new file mode 100644 index 00000000..6d57d88d --- /dev/null +++ b/prisma/schema/documenttemplates.prisma @@ -0,0 +1,15 @@ + +model documenttemplates { + id Int @id(map: "PK_DOCUMENTTEMPLATES") @default(autoincrement()) + name String @db.VarChar(100) + shortdescription String @db.VarChar(100) + longdescription String @db.VarChar(5000) + user_id Int + is_private Boolean @default(true) + documenttype Int + filename String @db.VarChar(100) + created_at DateTime @default(now()) @db.Timestamp(0) + updated_at DateTime @default(now()) @db.Timestamp(0) + benutzer Benutzer @relation(fields: [user_id], references: [id], onDelete: Cascade, map: "benutzer_fk") + documenttypes documenttypes @relation(fields: [documenttype], references: [id], onDelete: Cascade, map: "documenttypes_fk") +} \ No newline at end of file diff --git a/prisma/schema/documenttypes.prisma b/prisma/schema/documenttypes.prisma new file mode 100644 index 00000000..22b8735a --- /dev/null +++ b/prisma/schema/documenttypes.prisma @@ -0,0 +1,8 @@ + +model documenttypes { + id Int @id(map: "PK_DOCUMENTTYPES") @default(autoincrement()) + name String @db.VarChar(100) + shortdescription String @db.VarChar(100) + longdescription String @db.VarChar(5000) + documenttemplates documenttemplates[] +} \ No newline at end of file diff --git a/prisma/schema/schema.prisma b/prisma/schema/schema.prisma new file mode 100644 index 00000000..c3b8885c --- /dev/null +++ b/prisma/schema/schema.prisma @@ -0,0 +1,66 @@ +generator client { + provider = "prisma-client-js" + binaryTargets = ["native", "debian-openssl-1.1.x"] + previewFeatures = ["prismaSchemaFolder"] +} + +generator faker { + provider = "bunx prisma-generator-fake-data" + output = "../../src/types/fake-data.ts" +} + +generator zod { + provider = "bunx zod-prisma" + output = "../../src/generated/zod" + relationModel = false + modelCase = "PascalCase" + modelSuffix = "Schema" + useDecimalJs = false + imports = "" + prismaJsonNullability = true + useNullish = true +} + +generator enum { + provider = "tsx ./prisma/prisma-enum-generator.ts" + output = "../../src/generated/enums.ts" +} + +generator dbml { + provider = "bunx prisma-dbml-generator" + output = "../../dbml" + outputName = "schema.dbml" + projectName = "IBCornelsen Database" + projectDatabaseType = "PostgreSQL" +} + +datasource db { + provider = "postgresql" + url = env("POSTGRES_DATABASE_URL") +} + +enum Ausstellgrund { + Neubau + Vermietung + Verkauf + Modernisierung + Sonstiges +} + +enum Ausweisart { + VerbrauchsausweisWohnen + VerbrauchsausweisGewerbe + BedarfsausweisWohnen + BedarfsausweisGewerbe + GEGNachweisWohnen + GEGNachweisBedarfsausweis + GEGNachweisGewerbe +} + + +enum Service { + Telefonberatung + Aushang + Qualitaetsdruck + SameDay +} \ No newline at end of file diff --git a/prisma/schema/tokens.prisma b/prisma/schema/tokens.prisma new file mode 100644 index 00000000..27a93f13 --- /dev/null +++ b/prisma/schema/tokens.prisma @@ -0,0 +1,11 @@ + +model tokens { + id Int @id(map: "PK_TOKENS") @default(autoincrement()) + token String @db.VarChar(36) + user_id Int + date_created DateTime @default(now()) @db.Timestamp(6) + last_used DateTime @default(now()) @db.Timestamp(6) + times_used Int @default(0) + permissions Int @default(0) + benutzer Benutzer @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_benutzer_tokens_user_id") +} diff --git a/prisma/seed.ts b/prisma/seed.ts new file mode 100644 index 00000000..8adff133 --- /dev/null +++ b/prisma/seed.ts @@ -0,0 +1,383 @@ +// Das wird ausgeführt, wenn wir `npx prisma db seed` ausführen +// Hier können wir unsere Datenbank mit Beispieldaten füllen +// Mehr Infos: https://www.prisma.io/docs/orm/prisma-migrate/workflows/seeding + +import { PrismaClient } from "@prisma/client"; +import crypto from "node:crypto"; +import { faker } from "@faker-js/faker"; +import { Enums } from "../src/types"; +import moment from "moment"; + +function hashPassword(password: string): string { + const salt = crypto.randomBytes(16).toString("hex"); + const hash = hashWithGivenSalt(password, salt) + salt; + return hash; +} + +function hashWithGivenSalt(password: string, salt: string): string { + const hash = crypto.scryptSync(password, salt, 32).toString("hex"); + return hash; +} + +const prisma = new PrismaClient({ + log: ["warn", "error"], + errorFormat: "pretty", + datasources: { + db: { + url: process.env.POSTGRES_DATABASE_URL, + }, + }, +}); + +// Wir wollen erstmal das Backup mit den Klimafaktoren und der PLZ Liste einfuegen. +// Dazu muessen wir die Tabelle leeren. + +await prisma.klimafaktoren.deleteMany({ + where: { + id: { not: 0 }, + }, +}); + +await prisma.postleitzahlen.deleteMany({ + where: { + id: { not: 0 }, + }, +}); + +// Jetzt koennen wir die Daten aus dem Backup einlesen. + +const klimafaktoren = await Bun.file("./backup/klimafaktoren.json").json(); + +await prisma.klimafaktoren.createMany({ + data: klimafaktoren.map((klimafaktor: [number, number, number, string]) => { + return { + plz: klimafaktor[3], + month: klimafaktor[1], + year: klimafaktor[0], + klimafaktor: klimafaktor[2], + }; + }), +}); + +const postleitzahlen = await Bun.file("./backup/postleitzahlen.json").json(); + +await prisma.postleitzahlen.createMany({ + data: postleitzahlen.map( + (postleitzahl: { + plz: string; + ort: string; + landkreis: string; + bundesland: string; + lat: number; + lon: number; + }) => { + return { + plz: postleitzahl.plz, + stadt: postleitzahl.ort, + landkreis: postleitzahl.landkreis, + bundesland: postleitzahl.bundesland, + lat: postleitzahl.lat, + lon: postleitzahl.lon, + }; + } + ), +}); + +// Admin erstellen +await prisma.benutzer.create({ + data: { + email: "admin@ib-cornelsen.de", + passwort: hashPassword("passwort"), + rolle: "ADMIN", + name: "Admin", + vorname: "Admin", + adresse: "Adminstraße 1", + plz: "12345", + }, +}); + +// Test Benutzer erstellen +await prisma.benutzer.create({ + data: { + email: "user@ib-cornelsen.de", + passwort: hashPassword("passwort"), + rolle: "USER", + name: "User", + vorname: "User", + adresse: "Userstraße 1", + plz: "12345", + }, +}); + +// Benutzer erstellen + +for (let i = 0; i < 10; i++) { + let firstName = faker.person.firstName(); + let lastName = faker.person.lastName(); + const benutzer = await prisma.benutzer.create({ + data: { + email: faker.internet.email({ + firstName: firstName, + lastName: lastName, + }), + passwort: hashPassword(faker.internet.password()), + name: lastName, + vorname: firstName, + adresse: faker.location.street(), + plz: faker.location.zipCode({ format: "#####" }), + ort: faker.location.city(), + rolle: "USER", + }, + }); + + for (let j = 0; j < Math.round(Math.random() * 5); j++) { + // Für jeden Nutzer erstellen wir auch noch bis zu 5 Ausweise. + await prisma.objekt.create({ + data: { + adresse: faker.location.street(), + latitude: faker.location.latitude(), + longitude: faker.location.longitude(), + ort: faker.location.city(), + plz: faker.location.zipCode({ format: "#####" }), + benutzer: { + connect: { + id: benutzer.id, + }, + }, + aufnahmen: { + create: { + alternative_heizung: faker.datatype.boolean(), + alternative_kuehlung: faker.datatype.boolean(), + alternative_lueftung: faker.datatype.boolean(), + alternative_warmwasser: faker.datatype.boolean(), + aussenwand_gedaemmt: faker.datatype.boolean(), + aussenwand_min_12cm_gedaemmt: faker.datatype.boolean(), + baujahr_gebaeude: [faker.date.past().getFullYear()], + baujahr_heizung: [faker.date.past().getFullYear()], + baujahr_klima: [faker.date.past().getFullYear()], + benutzer: { + connect: { + id: benutzer.id, + }, + }, + verbrauchsausweis_wohnen: { + create: { + benutzer: { + connect: { + id: benutzer.id, + }, + }, + }, + }, + }, + }, + }, + }); + } +} + +export async function importVerbrauchsausweisWohnenAltesSystem( + count: number = 5 +) { + const response = await fetch( + "https://online-energieausweis.org/user/ausweis-import.php", + { + method: "POST", + body: JSON.stringify({ + i: count, + offset: 0, + q: {}, + }), + } + ); + + const data = await response.json(); + + return data; +} + +export async function verbrauchsausweisWohnenImportTranslate( + ausweis: Record +) { + let firstName = faker.person.firstName(); + let lastName = faker.person.lastName(); + const benutzer = await prisma.benutzer.create({ + data: { + email: faker.internet.email({ + firstName: firstName, + lastName: lastName, + }), + passwort: hashPassword(faker.internet.password()), + name: lastName, + vorname: firstName, + adresse: faker.location.street(), + plz: faker.location.zipCode({ format: "#####" }), + ort: faker.location.city(), + rolle: "USER", + }, + }); + + // TODO: Bilder Importieren + const gebaeudeStammdaten = await prisma.objekt.create({ + data: { + adresse: ausweis.objekt_strasse, + plz: ausweis.objekt_plz, + ort: ausweis.objekt_ort, + uid: faker.string.uuid(), + latitude: null, + longitude: null, + benutzer: { + connect: { + id: benutzer.id, + }, + }, + }, + }); + + const gebaeudeAufnahmeAllgemein = + await prisma.aufnahme.create({ + data: { + benutzer: { + connect: { + id: benutzer.id, + }, + }, + baujahr_gebaeude: [parseInt(ausweis.baujahr_gebaeude)], + baujahr_heizung: ausweis.baujahr_anlage ? [parseInt(ausweis.baujahr_anlage)] : [], + baujahr_klima: ausweis.baujahr_klimaanlage ? [parseInt(ausweis.baujahr_klimaanlage)] : [], + nutzflaeche: parseInt(ausweis.nutzflaeche), + einheiten: parseInt(ausweis.anzahl_einheiten), + saniert: ausweis.objekt_saniert ? true : false, + keller: + ausweis.keller_beheizt == "Beheizt" + ? Enums.Heizungsstatus.BEHEIZT + : ausweis.keller_beheizt == "Unbeheizt" + ? Enums.Heizungsstatus.UNBEHEIZT + : Enums.Heizungsstatus.NICHT_VORHANDEN, + dachgeschoss: + ausweis.dachgeschoss == "Beheizt" + ? Enums.Heizungsstatus.BEHEIZT + : ausweis.dachgeschoss == "Unbeheizt" + ? Enums.Heizungsstatus.UNBEHEIZT + : Enums.Heizungsstatus.NICHT_VORHANDEN, + flaeche: parseInt(ausweis.wohnflaeche), + gebaeudetyp: ausweis.objekt_typ, + gebaeudeteil: ausweis.objekt_gebaeudeteil, + lueftung: ausweis.lueftungskonzept, + // NOTE: Warum ist das kein Bool? + kuehlung: ausweis.wird_gekuehlt ? "true" : "false", + brennstoff_1: ausweis.energietraeger_1, + brennstoff_2: ausweis.energietraeger_2, + alternative_heizung: ausweis.alheizung ? true : false, + alternative_kuehlung: ausweis.alkuehlung ? true : false, + alternative_lueftung: ausweis.allueftung ? true : false, + alternative_warmwasser: ausweis.alwarmwasser ? true : false, + ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen, + energieeffizienzklasse: "", + aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt ? true : false, + aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt ? true : false, + bestellt: ausweis.bestellt ? true : false, + boxpruefung: ausweis.boxpruefung ? true : false, + brennwert_kessel: ausweis.brennwert_kessel ? true : false, + dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt ? true : false, + dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt ? true : false, + doppel_verglasung: ausweis.doppel_verglasung ? true : false, + dreifach_verglasung: ausweis.dreifach_verglasung ? true : false, + durchlauf_erhitzer: ausweis.durchlauf_erhitzer ? true : false, + einfach_verglasung: ausweis.einfach_verglasung ? true : false, + einzelofen: ausweis.einzelofen ? true : false, + erledigt: ausweis.erledigt ? true : false, + fenster_dicht: ausweis.fenster_dicht ? true : false, + fenster_teilweise_undicht: ausweis.fenster_teilweise_undicht ? true : false, + heizungsrohre_gedaemmt: ausweis.heizungsrohre_gedaemmt ? true : false, + isolier_verglasung: ausweis.isolier_verglasung ? true : false, + keller_decke_gedaemmt: ausweis.keller_decke_gedaemmt ? true : false, + keller_wand_gedaemmt: ausweis.keller_wand_gedaemmt ? true : false, + niedertemperatur_kessel: ausweis.niedertemperatur_kessel ? true : false, + oberste_geschossdecke_gedaemmt: ausweis.oberste_geschossdecke_gedaemmt ? true : false, + oberste_geschossdecke_min_12cm_gedaemmt: ausweis.oberste_geschossdecke_min_12cm_gedaemmt ? true : false, + raum_temperatur_regler: ausweis.raum_temperatur_regler ? true : false, + rolllaeden_kaesten_gedaemmt: ausweis.rolllaeden_kaesten_gedaemmt ? true : false, + solarsystem_warmwasser: ausweis.solarsystem_warmwasser ? true : false, + standard_kessel: ausweis.standard_kessel ? true : false, + waermepumpe: ausweis.waermepumpe ? true : false, + warmwasser_rohre_gedaemmt: ausweis.warmwasser_rohre_gedaemmt ? true : false, + zentralheizung: ausweis.zentralheizung ? true : false, + zirkulation: ausweis.zirkulation ? true : false, + photovoltaik: ausweis.photovoltaik ? true : false, + leerstand: ausweis.leerstand, + prueftext: ausweis["check-texts"], + + storniert: false, + tueren_dicht: ausweis.tueren_dicht ? true : false, + tueren_undicht: ausweis.tueren_undicht ? true : false, + zurueckgestellt: ausweis.zurueckGestellt ? true : false, + uid: faker.string.uuid(), + ausstellungsdatum: moment(ausweis.bestelldatum).toDate(), + erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(), + objekt: { + connect: { + id: gebaeudeStammdaten.id, + }, + }, + }, + }); + + let startdatum = moment( + `${ausweis.energieverbrauch_zeitraum_jahr}-${ausweis.energieverbrauch_zeitraum_monat}-01` + ).toDate(); + + if (isNaN(startdatum.getTime())) { + startdatum = new Date(); + } + + const verbrauchsausweisWohnen = await prisma.verbrauchsausweisWohnen.create( + { + data: { + aufnahme: { + connect: { + id: gebaeudeAufnahmeAllgemein.id, + }, + }, + benutzer: { + connect: { + id: benutzer.id, + }, + }, + verbrauch_1: parseInt(ausweis.energieverbrauch_1_heizquelle_1), + verbrauch_2: parseInt(ausweis.energieverbrauch_2_heizquelle_1), + verbrauch_3: parseInt(ausweis.energieverbrauch_3_heizquelle_1), + verbrauch_4: parseInt(ausweis.energieverbrauch_1_heizquelle_2), + verbrauch_5: parseInt(ausweis.energieverbrauch_2_heizquelle_2), + verbrauch_6: parseInt(ausweis.energieverbrauch_3_heizquelle_2), + einheit_1: ausweis.energietraeger_einheit_heizquelle_1, + einheit_2: ausweis.energietraeger_einheit_heizquelle_2, + warmwasser_enthalten: ausweis.warmwasser_enthalten ? true : false, + uid: faker.string.uuid(), + alternative_heizung: ausweis.alheizung ? true : false, + alternative_kuehlung: ausweis.alkuehlung ? true : false, + alternative_lueftung: ausweis.allueftung ? true : false, + alternative_warmwasser: ausweis.alwarmwasser ? true : false, + anteil_warmwasser_1: ausweis.anteil_warmwasser_1, + anteil_warmwasser_2: ausweis.anteil_warmwasser_2, + ausstellgrund: ausweis.ausstellgrund, + keller_beheizt: ausweis.keller_beheizt ? true : false, + registriernummer: ausweis.regnummer, + // Der Monat im alten System ist 1-basiert, in der neuen Datenbank 0-basiert + // Also müssen wir hier 1 abziehen + startdatum, + warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt ? true : false, + wird_gekuehlt: ausweis.wird_gekuehlt ? true : false, + zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle ? true : false, + }, + } + ); + + return verbrauchsausweisWohnen; +} + +const ausweise = (await importVerbrauchsausweisWohnenAltesSystem(10)) as { data: any[], result_count: number }; + +for (const ausweis of ausweise.data) { + await verbrauchsausweisWohnenImportTranslate(ausweis); +} diff --git a/server.ts b/server.ts index 2c56f4f3..d12ad876 100644 --- a/server.ts +++ b/server.ts @@ -9,6 +9,6 @@ app.use(ssrHandler); app.use(express.json({ limit: "50mb" })) app.use(express.urlencoded({ limit: "50mb" })) -app.listen(80, function() { +app.listen(3000, function() { console.log('Server started on http://localhost:80'); }); \ No newline at end of file diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 32f79f5b..adb4f800 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -5,6 +5,9 @@ export const createCaller = createCallerFactory({ "klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"), "postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"), "unterlage": await import("../src/pages/api/unterlage.ts"), + "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), + "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), + "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"), "admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"), "admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"), @@ -12,22 +15,19 @@ export const createCaller = createCallerFactory({ "admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), - "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), - "ausweise": await import("../src/pages/api/ausweise/index.ts"), "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), - "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), - "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), - "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), + "ausweise": await import("../src/pages/api/ausweise/index.ts"), + "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), + "geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"), + "geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"), "bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"), "geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"), "geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"), - "geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"), - "geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"), "objekt": await import("../src/pages/api/objekt/index.ts"), + "ticket": await import("../src/pages/api/ticket/index.ts"), "rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"), "rechnung": await import("../src/pages/api/rechnung/index.ts"), - "ticket": await import("../src/pages/api/ticket/index.ts"), "user": await import("../src/pages/api/user/index.ts"), "user/self": await import("../src/pages/api/user/self.ts"), "verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"), diff --git a/src/client/lib/ausweisSpeichern.ts b/src/client/lib/ausweisSpeichern.ts index 5084df48..b85c4d62 100644 --- a/src/client/lib/ausweisSpeichern.ts +++ b/src/client/lib/ausweisSpeichern.ts @@ -4,7 +4,7 @@ import { exclude } from "#lib/exclude.js"; import Cookies from "js-cookie"; import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js"; -import { Enums } from "@ibcornelsen/database/client"; +import { Enums } from "#lib/client/prisma"; export async function ausweisSpeichern( ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, diff --git a/src/client/lib/bilderHochladen.ts b/src/client/lib/bilderHochladen.ts index b804b160..11aa2176 100644 --- a/src/client/lib/bilderHochladen.ts +++ b/src/client/lib/bilderHochladen.ts @@ -4,7 +4,7 @@ import { VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js"; import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; -import { Enums } from "@ibcornelsen/database/client"; +import { Enums } from "#lib/client/prisma"; import { addNotification, updateNotification } from "@ibcornelsen/ui"; import { api } from "astro-typesafe-api/client"; import Cookies from "js-cookie"; diff --git a/src/client/lib/nachweisSpeichern.ts b/src/client/lib/nachweisSpeichern.ts index ab3f5564..7b5888fd 100644 --- a/src/client/lib/nachweisSpeichern.ts +++ b/src/client/lib/nachweisSpeichern.ts @@ -4,7 +4,7 @@ import { exclude } from "#lib/exclude.js"; import Cookies from "js-cookie"; import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js"; -import { Enums } from "@ibcornelsen/database/client"; +import { Enums } from "#lib/client/prisma"; export async function nachweisSpeichern( nachweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, diff --git a/src/components/AnsichtsausweisButton.svelte b/src/components/AnsichtsausweisButton.svelte index 6ab5c369..10167b6b 100644 --- a/src/components/AnsichtsausweisButton.svelte +++ b/src/components/AnsichtsausweisButton.svelte @@ -1,7 +1,7 @@
    diff --git a/src/components/design/content/ProduktVergleichGewerbe.svelte b/src/components/design/content/ProduktVergleichGewerbe.svelte index 3a3881bb..72968ef9 100644 --- a/src/components/design/content/ProduktVergleichGewerbe.svelte +++ b/src/components/design/content/ProduktVergleichGewerbe.svelte @@ -1,6 +1,6 @@
    diff --git a/src/components/design/sidebars/SidebarLeft.astro b/src/components/design/sidebars/SidebarLeft.astro index 8a496a2e..70fcd418 100644 --- a/src/components/design/sidebars/SidebarLeft.astro +++ b/src/components/design/sidebars/SidebarLeft.astro @@ -4,7 +4,7 @@ import CardPriceiInfo from "#components/design/sidebars/cards/cardPriceiInfo.sve import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte"; import { PRICES } from "#lib/constants"; -import { Enums } from "@ibcornelsen/database/client"; +import { Enums } from "#lib/client/prisma"; --- diff --git a/src/components/design/sidebars/SidebarRight.astro b/src/components/design/sidebars/SidebarRight.astro index 3129e852..9e40318a 100644 --- a/src/components/design/sidebars/SidebarRight.astro +++ b/src/components/design/sidebars/SidebarRight.astro @@ -4,7 +4,7 @@ import CardPriceiInfo from "#components/design/sidebars/cards/cardPriceiInfo.sve import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte"; import { PRICES } from "#lib/constants"; -import { Enums } from "@ibcornelsen/database/client"; +import { Enums } from "#lib/client/prisma"; ---