From 785e0f78ffda7f7b84cd5d52dde70e2c30ce6034 Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Sat, 22 Feb 2025 10:20:20 +1100 Subject: [PATCH] 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"; ---