diff --git a/.env b/.env index 2a43dc7..bdaa5e1 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ POSTGRES_USER=user -POSTGRES_PASSWORD=password +POSTGRES_PASSWORD=secret POSTGRES_DB=time_tracking_db REDIS_PASSWORD=redispassword diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..13480d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Node.js spezifische Ignorierungen +node_modules/ + +# Dart spezifische Ignorierungen +**/.dart_tool/ +**/.packages +**/.pub-cache/ + +# Log-Dateien +*.log + +# Systemdateien +.DS_Store +Thumbs.db + +# IDE spezifische Ignorierungen +.idea/ +.vscode/ +*.swp +*~ + +# Weitere Build-Verzeichnisse +**/dist/ +**/build/ +**/temp/ + +# Go spezifische Ignorierungen +**/bin/ +**/pkg/ +**/vendor/ \ No newline at end of file diff --git a/_common/db_client/.env b/_common/db_client/.env new file mode 100644 index 0000000..2d08b29 --- /dev/null +++ b/_common/db_client/.env @@ -0,0 +1,7 @@ +# Environment variables declared in this file are automatically made available to Prisma. +# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema + +# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. +# See the documentation for all the connection string options: https://pris.ly/d/connection-strings + +DATABASE_URL="postgresql://user:secret@localhost:5432/time_tracking_db?schema=public" \ No newline at end of file diff --git a/_common/db_client/.gitignore b/_common/db_client/.gitignore new file mode 100644 index 0000000..3a85790 --- /dev/null +++ b/_common/db_client/.gitignore @@ -0,0 +1,3 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ diff --git a/backend_dart/CHANGELOG.md b/_common/db_client/CHANGELOG.md similarity index 100% rename from backend_dart/CHANGELOG.md rename to _common/db_client/CHANGELOG.md diff --git a/_common/db_client/README.md b/_common/db_client/README.md new file mode 100644 index 0000000..3816eca --- /dev/null +++ b/_common/db_client/README.md @@ -0,0 +1,2 @@ +A sample command-line application with an entrypoint in `bin/`, library code +in `lib/`, and example unit test in `test/`. diff --git a/_common/db_client/analysis_options.yaml b/_common/db_client/analysis_options.yaml new file mode 100644 index 0000000..dee8927 --- /dev/null +++ b/_common/db_client/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/_common/db_client/go.mod b/_common/db_client/go.mod new file mode 100644 index 0000000..bce2e32 --- /dev/null +++ b/_common/db_client/go.mod @@ -0,0 +1,5 @@ +module db_client + +go 1.23.2 + +require github.com/steebchen/prisma-client-go v0.43.0 // indirect diff --git a/_common/db_client/go.sum b/_common/db_client/go.sum new file mode 100644 index 0000000..a4a9287 --- /dev/null +++ b/_common/db_client/go.sum @@ -0,0 +1,2 @@ +github.com/steebchen/prisma-client-go v0.43.0 h1:B4ImvlGo2YXlkSbxjSyin/9Uy3vkhneuKir4K7vXd/A= +github.com/steebchen/prisma-client-go v0.43.0/go.mod h1:wp2xU9HO5WIefc65vcl1HOiFUzaHKyOhHw5atrzs8hc= diff --git a/_common/db_client/lib/db_client.dart b/_common/db_client/lib/db_client.dart new file mode 100644 index 0000000..f64ad72 --- /dev/null +++ b/_common/db_client/lib/db_client.dart @@ -0,0 +1,3 @@ +int calculate() { + return 6 * 7; +} diff --git a/_common/db_client/package.json b/_common/db_client/package.json new file mode 100644 index 0000000..0a9a569 --- /dev/null +++ b/_common/db_client/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "prisma": "^5.22.0" + } +} diff --git a/_common/db_client/pnpm-lock.yaml b/_common/db_client/pnpm-lock.yaml new file mode 100644 index 0000000..d984a4f --- /dev/null +++ b/_common/db_client/pnpm-lock.yaml @@ -0,0 +1,72 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + prisma: + specifier: ^5.22.0 + version: 5.22.0 + +packages: + + '@prisma/debug@5.22.0': + resolution: {integrity: sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==} + + '@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2': + resolution: {integrity: sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ==} + + '@prisma/engines@5.22.0': + resolution: {integrity: sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA==} + + '@prisma/fetch-engine@5.22.0': + resolution: {integrity: sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA==} + + '@prisma/get-platform@5.22.0': + resolution: {integrity: sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + prisma@5.22.0: + resolution: {integrity: sha512-vtpjW3XuYCSnMsNVBjLMNkTj6OZbudcPPTPYHqX0CJfpcdWciI1dM8uHETwmDxxiqEwCIE6WvXucWUetJgfu/A==} + engines: {node: '>=16.13'} + hasBin: true + +snapshots: + + '@prisma/debug@5.22.0': {} + + '@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2': {} + + '@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 + + '@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 + + '@prisma/get-platform@5.22.0': + dependencies: + '@prisma/debug': 5.22.0 + + fsevents@2.3.3: + optional: true + + prisma@5.22.0: + dependencies: + '@prisma/engines': 5.22.0 + optionalDependencies: + fsevents: 2.3.3 diff --git a/_common/db_client/prisma/prisma-query-engine b/_common/db_client/prisma/prisma-query-engine new file mode 100644 index 0000000..27b25ed Binary files /dev/null and b/_common/db_client/prisma/prisma-query-engine differ diff --git a/_common/db_client/prisma/schema.prisma b/_common/db_client/prisma/schema.prisma new file mode 100644 index 0000000..6df6291 --- /dev/null +++ b/_common/db_client/prisma/schema.prisma @@ -0,0 +1,65 @@ +generator dartClient { + provider = "dart run orm" + output = "../../../backend_dart/lib/infrastructure/persistence" +} + +generator goClient { + provider = "go run github.com/steebchen/prisma-client-go" + output = "../../../backend-go/internal/infrastructure/persistence" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +// User Model +model User { + id String @id @default(uuid()) + name String + email String @unique + password String + projects Project[] // Beziehung zu Projekten + timeEntries TimeEntry[] // Beziehung zu Zeiteinträgen + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +// Project Model +model Project { + id String @id @default(uuid()) + name String + description String? + clientId String? + tasks Task[] // Beziehung zu Aufgaben + timeEntries TimeEntry[] // Beziehung zu Zeiteinträgen + user User @relation(fields: [userId], references: [id]) + userId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +// TimeEntry Model +model TimeEntry { + id String @id @default(uuid()) + startTime DateTime + endTime DateTime + description String? + user User @relation(fields: [userId], references: [id]) + userId String + project Project @relation(fields: [projectId], references: [id]) + projectId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +// Task Model (optional) +model Task { + id String @id @default(uuid()) + name String + description String? + project Project @relation(fields: [projectId], references: [id]) + projectId String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} diff --git a/_common/db_client/pubspec.lock b/_common/db_client/pubspec.lock new file mode 100644 index 0000000..12e07c9 --- /dev/null +++ b/_common/db_client/pubspec.lock @@ -0,0 +1,514 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" + url: "https://pub.dev" + source: hosted + version: "73.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" + url: "https://pub.dev" + source: hosted + version: "6.8.0" + args: + dependency: transitive + description: + name: args + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + url: "https://pub.dev" + source: hosted + version: "8.9.2" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + url: "https://pub.dev" + source: hosted + version: "4.10.1" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "4b03e11f6d5b8f6e5bb5e9f7889a56fe6c5cbe942da5378ea4d4d7f73ef9dfe5" + url: "https://pub.dev" + source: hosted + version: "1.11.0" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + url: "https://pub.dev" + source: hosted + version: "2.3.7" + decimal: + dependency: transitive + description: + name: decimal + sha256: "4140a688f9e443e2f4de3a1162387bf25e1ac6d51e24c9da263f245210f41440" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360" + url: "https://pub.dev" + source: hosted + version: "4.1.1" + intl: + dependency: transitive + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + url: "https://pub.dev" + source: hosted + version: "0.7.1" + json_rpc_2: + dependency: transitive + description: + name: json_rpc_2 + sha256: "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + lints: + dependency: "direct dev" + description: + name: lints + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" + matcher: + dependency: transitive + description: + name: matcher + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.dev" + source: hosted + version: "0.12.16+1" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + mime: + dependency: transitive + description: + name: mime + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + url: "https://pub.dev" + source: hosted + version: "1.0.6" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + orm: + dependency: "direct main" + description: + name: orm + sha256: "6b5fe849c96fc3f521353d834ed029b13621e306ba8b9946c1118ffbf7c6a911" + url: "https://pub.dev" + source: hosted + version: "5.2.1" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + rational: + dependency: transitive + description: + name: rational + sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336 + url: "https://pub.dev" + source: hosted + version: "2.2.3" + rc: + dependency: transitive + description: + name: rc + sha256: "0c2d562c5925b68687ae86b387d847cfc175a5d1d2fce2956a9acc461bd2f33e" + url: "https://pub.dev" + source: hosted + version: "0.3.3" + recase: + dependency: transitive + description: + name: recase + sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + url: "https://pub.dev" + source: hosted + version: "4.1.0" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + url: "https://pub.dev" + source: hosted + version: "0.10.12" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + url: "https://pub.dev" + source: hosted + version: "1.12.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "0bd04f5bb74fcd6ff0606a888a30e917af9bd52820b178eaa464beb11dca84b6" + url: "https://pub.dev" + source: hosted + version: "1.4.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test: + dependency: "direct dev" + description: + name: test + sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" + url: "https://pub.dev" + source: hosted + version: "1.25.8" + test_api: + dependency: transitive + description: + name: test_api + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + url: "https://pub.dev" + source: hosted + version: "0.7.3" + test_core: + dependency: transitive + description: + name: test_core + sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" + url: "https://pub.dev" + source: hosted + version: "0.6.5" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + webfetch: + dependency: transitive + description: + name: webfetch + sha256: "2724933db80e1622baec57d5096b9ae5b1f0a396e047679a91ffeb60bcd5c0f2" + url: "https://pub.dev" + source: hosted + version: "0.1.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.5.4 <4.0.0" diff --git a/_common/db_client/pubspec.yaml b/_common/db_client/pubspec.yaml new file mode 100644 index 0000000..5933d55 --- /dev/null +++ b/_common/db_client/pubspec.yaml @@ -0,0 +1,16 @@ +name: db_client +description: Library for interacting with a database. +version: 1.0.0 +# repository: https://github.com/my_org/my_repo + +environment: + sdk: ^3.5.4 + +# Add regular dependencies here. +dependencies: + orm: ^5.2.1 # requires dart>=3.4 + # path: ^1.8.0 + +dev_dependencies: + lints: ^4.0.0 + test: ^1.24.0 diff --git a/_common/db_client/test/db_client_test.dart b/_common/db_client/test/db_client_test.dart new file mode 100644 index 0000000..88f0d95 --- /dev/null +++ b/_common/db_client/test/db_client_test.dart @@ -0,0 +1,8 @@ +import 'package:db_client/db_client.dart'; +import 'package:test/test.dart'; + +void main() { + test('calculate', () { + expect(calculate(), 42); + }); +} diff --git a/_common/gRPC.proto b/_common/protobufs/gRPC.proto similarity index 100% rename from _common/gRPC.proto rename to _common/protobufs/gRPC.proto diff --git a/backend-go/go.mod b/backend-go/go.mod index b22f714..3729985 100644 --- a/backend-go/go.mod +++ b/backend-go/go.mod @@ -3,7 +3,9 @@ module actatempus_backend go 1.23.2 require ( + github.com/IBM/fp-go v1.0.150 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect @@ -12,6 +14,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -19,7 +22,10 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.19.0 // indirect + github.com/steebchen/prisma-client-go v0.43.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/urfave/cli/v2 v2.27.5 // indirect + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect diff --git a/backend-go/go.sum b/backend-go/go.sum index 172f51f..2e68a18 100644 --- a/backend-go/go.sum +++ b/backend-go/go.sum @@ -1,5 +1,9 @@ +github.com/IBM/fp-go v1.0.150 h1:pKTvZ/W9HOsUDVLbQr4bLlIG4fnf1G9V9h+Yc8N/K04= +github.com/IBM/fp-go v1.0.150/go.mod h1:spbj1nFoMpAGC/UnJM4XUYHNSQ+3JbD2u4LzwFBiwkw= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= +github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= @@ -19,6 +23,8 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= @@ -33,6 +39,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/steebchen/prisma-client-go v0.43.0 h1:B4ImvlGo2YXlkSbxjSyin/9Uy3vkhneuKir4K7vXd/A= +github.com/steebchen/prisma-client-go v0.43.0/go.mod h1:wp2xU9HO5WIefc65vcl1HOiFUzaHKyOhHw5atrzs8hc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -44,6 +52,10 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= +github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= diff --git a/backend-go/internal/infrastructure/persistence/.gitignore b/backend-go/internal/infrastructure/persistence/.gitignore new file mode 100644 index 0000000..a0c7514 --- /dev/null +++ b/backend-go/internal/infrastructure/persistence/.gitignore @@ -0,0 +1,2 @@ +# gitignore generated by Prisma Client Go. DO NOT EDIT. +*_gen.go diff --git a/backend_dart/lib/infrastructure/persistence/client.dart b/backend_dart/lib/infrastructure/persistence/client.dart new file mode 100644 index 0000000..7d4ccc1 --- /dev/null +++ b/backend_dart/lib/infrastructure/persistence/client.dart @@ -0,0 +1,2640 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:orm/dmmf.dart' as _i4; +import 'package:orm/engines/binary.dart' as _i5; +import 'package:orm/orm.dart' as _i1; + +import 'model.dart' as _i2; +import 'prisma.dart' as _i3; + +class UserDelegate { + const UserDelegate._(this._client); + + final PrismaClient _client; + + _i1.ActionClient<_i2.User?> findUnique({ + required _i3.UserWhereUniqueInput where, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.findUnique, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User?>( + action: 'findUniqueUser', + result: result, + factory: (e) => e != null ? _i2.User.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.User> findUniqueOrThrow({ + required _i3.UserWhereUniqueInput where, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.findUniqueOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User>( + action: 'findUniqueUserOrThrow', + result: result, + factory: (e) => _i2.User.fromJson(e), + ); + } + + _i1.ActionClient<_i2.User?> findFirst({ + _i3.UserWhereInput? where, + _i1.PrismaUnion, + _i3.UserOrderByWithRelationInput>? + orderBy, + _i3.UserWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.UserScalar, Iterable<_i3.UserScalar>>? distinct, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.findFirst, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User?>( + action: 'findFirstUser', + result: result, + factory: (e) => e != null ? _i2.User.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.User> findFirstOrThrow({ + _i3.UserWhereInput? where, + _i1.PrismaUnion, + _i3.UserOrderByWithRelationInput>? + orderBy, + _i3.UserWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.UserScalar, Iterable<_i3.UserScalar>>? distinct, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.findFirstOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User>( + action: 'findFirstUserOrThrow', + result: result, + factory: (e) => _i2.User.fromJson(e), + ); + } + + _i1.ActionClient> findMany({ + _i3.UserWhereInput? where, + _i1.PrismaUnion, + _i3.UserOrderByWithRelationInput>? + orderBy, + _i3.UserWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.UserScalar, Iterable<_i3.UserScalar>>? distinct, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.findMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'findManyUser', + result: result, + factory: (values) => + (values as Iterable).map((e) => _i2.User.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.User> create({ + required _i1.PrismaUnion<_i3.UserCreateInput, _i3.UserUncheckedCreateInput> + data, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'data': data, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.createOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User>( + action: 'createOneUser', + result: result, + factory: (e) => _i2.User.fromJson(e), + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> createMany({ + required _i1 + .PrismaUnion<_i3.UserCreateManyInput, Iterable<_i3.UserCreateManyInput>> + data, + bool? skipDuplicates, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.createMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'createManyUser', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> + createManyAndReturn({ + required _i1 + .PrismaUnion<_i3.UserCreateManyInput, Iterable<_i3.UserCreateManyInput>> + data, + bool? skipDuplicates, + _i3.CreateManyUserAndReturnOutputTypeSelect? select, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + 'select': select, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.createManyAndReturn, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'createManyUserAndReturn', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i2.CreateManyUserAndReturnOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.User?> update({ + required _i1.PrismaUnion<_i3.UserUpdateInput, _i3.UserUncheckedUpdateInput> + data, + required _i3.UserWhereUniqueInput where, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'data': data, + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.updateOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User?>( + action: 'updateOneUser', + result: result, + factory: (e) => e != null ? _i2.User.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> updateMany({ + required _i1.PrismaUnion<_i3.UserUpdateManyMutationInput, + _i3.UserUncheckedUpdateManyInput> + data, + _i3.UserWhereInput? where, + }) { + final args = { + 'data': data, + 'where': where, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.updateMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'updateManyUser', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient<_i2.User> upsert({ + required _i3.UserWhereUniqueInput where, + required _i1.PrismaUnion<_i3.UserCreateInput, _i3.UserUncheckedCreateInput> + create, + required _i1.PrismaUnion<_i3.UserUpdateInput, _i3.UserUncheckedUpdateInput> + update, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'create': create, + 'update': update, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.upsertOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User>( + action: 'upsertOneUser', + result: result, + factory: (e) => _i2.User.fromJson(e), + ); + } + + _i1.ActionClient<_i2.User?> delete({ + required _i3.UserWhereUniqueInput where, + _i3.UserSelect? select, + _i3.UserInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.deleteOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.User?>( + action: 'deleteOneUser', + result: result, + factory: (e) => e != null ? _i2.User.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> deleteMany( + {_i3.UserWhereInput? where}) { + final args = {'where': where}; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.deleteMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'deleteManyUser', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> groupBy({ + _i3.UserWhereInput? where, + _i1.PrismaUnion, + _i3.UserOrderByWithAggregationInput>? + orderBy, + required _i1.PrismaUnion, _i3.UserScalar> by, + _i3.UserScalarWhereWithAggregatesInput? having, + int? take, + int? skip, + _i3.UserGroupByOutputTypeSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'by': _i1.JsonQuery.groupBySerializer(by), + 'having': having, + 'take': take, + 'skip': skip, + 'select': select ?? _i1.JsonQuery.groupBySelectSerializer(by), + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.groupBy, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'groupByUser', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i3.UserGroupByOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i3.AggregateUser> aggregate({ + _i3.UserWhereInput? where, + _i1.PrismaUnion, + _i3.UserOrderByWithRelationInput>? + orderBy, + _i3.UserWhereUniqueInput? cursor, + int? take, + int? skip, + _i3.AggregateUserSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'select': select, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'User', + action: _i1.JsonQueryAction.aggregate, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AggregateUser>( + action: 'aggregateUser', + result: result, + factory: (e) => _i3.AggregateUser.fromJson(e), + ); + } +} + +class ProjectDelegate { + const ProjectDelegate._(this._client); + + final PrismaClient _client; + + _i1.ActionClient<_i2.Project?> findUnique({ + required _i3.ProjectWhereUniqueInput where, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.findUnique, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project?>( + action: 'findUniqueProject', + result: result, + factory: (e) => e != null ? _i2.Project.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.Project> findUniqueOrThrow({ + required _i3.ProjectWhereUniqueInput where, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.findUniqueOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project>( + action: 'findUniqueProjectOrThrow', + result: result, + factory: (e) => _i2.Project.fromJson(e), + ); + } + + _i1.ActionClient<_i2.Project?> findFirst({ + _i3.ProjectWhereInput? where, + _i1.PrismaUnion, + _i3.ProjectOrderByWithRelationInput>? + orderBy, + _i3.ProjectWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.ProjectScalar, Iterable<_i3.ProjectScalar>>? distinct, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.findFirst, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project?>( + action: 'findFirstProject', + result: result, + factory: (e) => e != null ? _i2.Project.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.Project> findFirstOrThrow({ + _i3.ProjectWhereInput? where, + _i1.PrismaUnion, + _i3.ProjectOrderByWithRelationInput>? + orderBy, + _i3.ProjectWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.ProjectScalar, Iterable<_i3.ProjectScalar>>? distinct, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.findFirstOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project>( + action: 'findFirstProjectOrThrow', + result: result, + factory: (e) => _i2.Project.fromJson(e), + ); + } + + _i1.ActionClient> findMany({ + _i3.ProjectWhereInput? where, + _i1.PrismaUnion, + _i3.ProjectOrderByWithRelationInput>? + orderBy, + _i3.ProjectWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.ProjectScalar, Iterable<_i3.ProjectScalar>>? distinct, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.findMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'findManyProject', + result: result, + factory: (values) => + (values as Iterable).map((e) => _i2.Project.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.Project> create({ + required _i1 + .PrismaUnion<_i3.ProjectCreateInput, _i3.ProjectUncheckedCreateInput> + data, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'data': data, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.createOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project>( + action: 'createOneProject', + result: result, + factory: (e) => _i2.Project.fromJson(e), + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> createMany({ + required _i1.PrismaUnion<_i3.ProjectCreateManyInput, + Iterable<_i3.ProjectCreateManyInput>> + data, + bool? skipDuplicates, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.createMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'createManyProject', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> + createManyAndReturn({ + required _i1.PrismaUnion<_i3.ProjectCreateManyInput, + Iterable<_i3.ProjectCreateManyInput>> + data, + bool? skipDuplicates, + _i3.CreateManyProjectAndReturnOutputTypeSelect? select, + _i3.CreateManyProjectAndReturnOutputTypeInclude? include, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.createManyAndReturn, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'createManyProjectAndReturn', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i2.CreateManyProjectAndReturnOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.Project?> update({ + required _i1 + .PrismaUnion<_i3.ProjectUpdateInput, _i3.ProjectUncheckedUpdateInput> + data, + required _i3.ProjectWhereUniqueInput where, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'data': data, + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.updateOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project?>( + action: 'updateOneProject', + result: result, + factory: (e) => e != null ? _i2.Project.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> updateMany({ + required _i1.PrismaUnion<_i3.ProjectUpdateManyMutationInput, + _i3.ProjectUncheckedUpdateManyInput> + data, + _i3.ProjectWhereInput? where, + }) { + final args = { + 'data': data, + 'where': where, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.updateMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'updateManyProject', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient<_i2.Project> upsert({ + required _i3.ProjectWhereUniqueInput where, + required _i1 + .PrismaUnion<_i3.ProjectCreateInput, _i3.ProjectUncheckedCreateInput> + create, + required _i1 + .PrismaUnion<_i3.ProjectUpdateInput, _i3.ProjectUncheckedUpdateInput> + update, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'create': create, + 'update': update, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.upsertOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project>( + action: 'upsertOneProject', + result: result, + factory: (e) => _i2.Project.fromJson(e), + ); + } + + _i1.ActionClient<_i2.Project?> delete({ + required _i3.ProjectWhereUniqueInput where, + _i3.ProjectSelect? select, + _i3.ProjectInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.deleteOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Project?>( + action: 'deleteOneProject', + result: result, + factory: (e) => e != null ? _i2.Project.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> deleteMany( + {_i3.ProjectWhereInput? where}) { + final args = {'where': where}; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.deleteMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'deleteManyProject', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> groupBy({ + _i3.ProjectWhereInput? where, + _i1.PrismaUnion, + _i3.ProjectOrderByWithAggregationInput>? + orderBy, + required _i1.PrismaUnion, _i3.ProjectScalar> by, + _i3.ProjectScalarWhereWithAggregatesInput? having, + int? take, + int? skip, + _i3.ProjectGroupByOutputTypeSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'by': _i1.JsonQuery.groupBySerializer(by), + 'having': having, + 'take': take, + 'skip': skip, + 'select': select ?? _i1.JsonQuery.groupBySelectSerializer(by), + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.groupBy, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'groupByProject', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i3.ProjectGroupByOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i3.AggregateProject> aggregate({ + _i3.ProjectWhereInput? where, + _i1.PrismaUnion, + _i3.ProjectOrderByWithRelationInput>? + orderBy, + _i3.ProjectWhereUniqueInput? cursor, + int? take, + int? skip, + _i3.AggregateProjectSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'select': select, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Project', + action: _i1.JsonQueryAction.aggregate, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AggregateProject>( + action: 'aggregateProject', + result: result, + factory: (e) => _i3.AggregateProject.fromJson(e), + ); + } +} + +class TimeEntryDelegate { + const TimeEntryDelegate._(this._client); + + final PrismaClient _client; + + _i1.ActionClient<_i2.TimeEntry?> findUnique({ + required _i3.TimeEntryWhereUniqueInput where, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.findUnique, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry?>( + action: 'findUniqueTimeEntry', + result: result, + factory: (e) => e != null ? _i2.TimeEntry.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.TimeEntry> findUniqueOrThrow({ + required _i3.TimeEntryWhereUniqueInput where, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.findUniqueOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry>( + action: 'findUniqueTimeEntryOrThrow', + result: result, + factory: (e) => _i2.TimeEntry.fromJson(e), + ); + } + + _i1.ActionClient<_i2.TimeEntry?> findFirst({ + _i3.TimeEntryWhereInput? where, + _i1.PrismaUnion, + _i3.TimeEntryOrderByWithRelationInput>? + orderBy, + _i3.TimeEntryWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.TimeEntryScalar, Iterable<_i3.TimeEntryScalar>>? + distinct, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.findFirst, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry?>( + action: 'findFirstTimeEntry', + result: result, + factory: (e) => e != null ? _i2.TimeEntry.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.TimeEntry> findFirstOrThrow({ + _i3.TimeEntryWhereInput? where, + _i1.PrismaUnion, + _i3.TimeEntryOrderByWithRelationInput>? + orderBy, + _i3.TimeEntryWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.TimeEntryScalar, Iterable<_i3.TimeEntryScalar>>? + distinct, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.findFirstOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry>( + action: 'findFirstTimeEntryOrThrow', + result: result, + factory: (e) => _i2.TimeEntry.fromJson(e), + ); + } + + _i1.ActionClient> findMany({ + _i3.TimeEntryWhereInput? where, + _i1.PrismaUnion, + _i3.TimeEntryOrderByWithRelationInput>? + orderBy, + _i3.TimeEntryWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.TimeEntryScalar, Iterable<_i3.TimeEntryScalar>>? + distinct, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.findMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'findManyTimeEntry', + result: result, + factory: (values) => + (values as Iterable).map((e) => _i2.TimeEntry.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.TimeEntry> create({ + required _i1.PrismaUnion<_i3.TimeEntryCreateInput, + _i3.TimeEntryUncheckedCreateInput> + data, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'data': data, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.createOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry>( + action: 'createOneTimeEntry', + result: result, + factory: (e) => _i2.TimeEntry.fromJson(e), + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> createMany({ + required _i1.PrismaUnion<_i3.TimeEntryCreateManyInput, + Iterable<_i3.TimeEntryCreateManyInput>> + data, + bool? skipDuplicates, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.createMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'createManyTimeEntry', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> + createManyAndReturn({ + required _i1.PrismaUnion<_i3.TimeEntryCreateManyInput, + Iterable<_i3.TimeEntryCreateManyInput>> + data, + bool? skipDuplicates, + _i3.CreateManyTimeEntryAndReturnOutputTypeSelect? select, + _i3.CreateManyTimeEntryAndReturnOutputTypeInclude? include, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.createManyAndReturn, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient< + Iterable<_i2.CreateManyTimeEntryAndReturnOutputType>>( + action: 'createManyTimeEntryAndReturn', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i2.CreateManyTimeEntryAndReturnOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.TimeEntry?> update({ + required _i1.PrismaUnion<_i3.TimeEntryUpdateInput, + _i3.TimeEntryUncheckedUpdateInput> + data, + required _i3.TimeEntryWhereUniqueInput where, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'data': data, + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.updateOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry?>( + action: 'updateOneTimeEntry', + result: result, + factory: (e) => e != null ? _i2.TimeEntry.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> updateMany({ + required _i1.PrismaUnion<_i3.TimeEntryUpdateManyMutationInput, + _i3.TimeEntryUncheckedUpdateManyInput> + data, + _i3.TimeEntryWhereInput? where, + }) { + final args = { + 'data': data, + 'where': where, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.updateMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'updateManyTimeEntry', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient<_i2.TimeEntry> upsert({ + required _i3.TimeEntryWhereUniqueInput where, + required _i1.PrismaUnion<_i3.TimeEntryCreateInput, + _i3.TimeEntryUncheckedCreateInput> + create, + required _i1.PrismaUnion<_i3.TimeEntryUpdateInput, + _i3.TimeEntryUncheckedUpdateInput> + update, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'create': create, + 'update': update, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.upsertOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry>( + action: 'upsertOneTimeEntry', + result: result, + factory: (e) => _i2.TimeEntry.fromJson(e), + ); + } + + _i1.ActionClient<_i2.TimeEntry?> delete({ + required _i3.TimeEntryWhereUniqueInput where, + _i3.TimeEntrySelect? select, + _i3.TimeEntryInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.deleteOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.TimeEntry?>( + action: 'deleteOneTimeEntry', + result: result, + factory: (e) => e != null ? _i2.TimeEntry.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> deleteMany( + {_i3.TimeEntryWhereInput? where}) { + final args = {'where': where}; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.deleteMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'deleteManyTimeEntry', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> groupBy({ + _i3.TimeEntryWhereInput? where, + _i1.PrismaUnion, + _i3.TimeEntryOrderByWithAggregationInput>? + orderBy, + required _i1.PrismaUnion, _i3.TimeEntryScalar> + by, + _i3.TimeEntryScalarWhereWithAggregatesInput? having, + int? take, + int? skip, + _i3.TimeEntryGroupByOutputTypeSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'by': _i1.JsonQuery.groupBySerializer(by), + 'having': having, + 'take': take, + 'skip': skip, + 'select': select ?? _i1.JsonQuery.groupBySelectSerializer(by), + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.groupBy, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'groupByTimeEntry', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i3.TimeEntryGroupByOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i3.AggregateTimeEntry> aggregate({ + _i3.TimeEntryWhereInput? where, + _i1.PrismaUnion, + _i3.TimeEntryOrderByWithRelationInput>? + orderBy, + _i3.TimeEntryWhereUniqueInput? cursor, + int? take, + int? skip, + _i3.AggregateTimeEntrySelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'select': select, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'TimeEntry', + action: _i1.JsonQueryAction.aggregate, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AggregateTimeEntry>( + action: 'aggregateTimeEntry', + result: result, + factory: (e) => _i3.AggregateTimeEntry.fromJson(e), + ); + } +} + +class TaskDelegate { + const TaskDelegate._(this._client); + + final PrismaClient _client; + + _i1.ActionClient<_i2.Task?> findUnique({ + required _i3.TaskWhereUniqueInput where, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.findUnique, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task?>( + action: 'findUniqueTask', + result: result, + factory: (e) => e != null ? _i2.Task.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.Task> findUniqueOrThrow({ + required _i3.TaskWhereUniqueInput where, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.findUniqueOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task>( + action: 'findUniqueTaskOrThrow', + result: result, + factory: (e) => _i2.Task.fromJson(e), + ); + } + + _i1.ActionClient<_i2.Task?> findFirst({ + _i3.TaskWhereInput? where, + _i1.PrismaUnion, + _i3.TaskOrderByWithRelationInput>? + orderBy, + _i3.TaskWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.TaskScalar, Iterable<_i3.TaskScalar>>? distinct, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.findFirst, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task?>( + action: 'findFirstTask', + result: result, + factory: (e) => e != null ? _i2.Task.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i2.Task> findFirstOrThrow({ + _i3.TaskWhereInput? where, + _i1.PrismaUnion, + _i3.TaskOrderByWithRelationInput>? + orderBy, + _i3.TaskWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.TaskScalar, Iterable<_i3.TaskScalar>>? distinct, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.findFirstOrThrow, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task>( + action: 'findFirstTaskOrThrow', + result: result, + factory: (e) => _i2.Task.fromJson(e), + ); + } + + _i1.ActionClient> findMany({ + _i3.TaskWhereInput? where, + _i1.PrismaUnion, + _i3.TaskOrderByWithRelationInput>? + orderBy, + _i3.TaskWhereUniqueInput? cursor, + int? take, + int? skip, + _i1.PrismaUnion<_i3.TaskScalar, Iterable<_i3.TaskScalar>>? distinct, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.findMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'findManyTask', + result: result, + factory: (values) => + (values as Iterable).map((e) => _i2.Task.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.Task> create({ + required _i1.PrismaUnion<_i3.TaskCreateInput, _i3.TaskUncheckedCreateInput> + data, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'data': data, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.createOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task>( + action: 'createOneTask', + result: result, + factory: (e) => _i2.Task.fromJson(e), + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> createMany({ + required _i1 + .PrismaUnion<_i3.TaskCreateManyInput, Iterable<_i3.TaskCreateManyInput>> + data, + bool? skipDuplicates, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.createMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'createManyTask', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> + createManyAndReturn({ + required _i1 + .PrismaUnion<_i3.TaskCreateManyInput, Iterable<_i3.TaskCreateManyInput>> + data, + bool? skipDuplicates, + _i3.CreateManyTaskAndReturnOutputTypeSelect? select, + _i3.CreateManyTaskAndReturnOutputTypeInclude? include, + }) { + final args = { + 'data': data, + 'skipDuplicates': skipDuplicates, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.createManyAndReturn, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'createManyTaskAndReturn', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i2.CreateManyTaskAndReturnOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i2.Task?> update({ + required _i1.PrismaUnion<_i3.TaskUpdateInput, _i3.TaskUncheckedUpdateInput> + data, + required _i3.TaskWhereUniqueInput where, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'data': data, + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.updateOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task?>( + action: 'updateOneTask', + result: result, + factory: (e) => e != null ? _i2.Task.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> updateMany({ + required _i1.PrismaUnion<_i3.TaskUpdateManyMutationInput, + _i3.TaskUncheckedUpdateManyInput> + data, + _i3.TaskWhereInput? where, + }) { + final args = { + 'data': data, + 'where': where, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.updateMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'updateManyTask', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient<_i2.Task> upsert({ + required _i3.TaskWhereUniqueInput where, + required _i1.PrismaUnion<_i3.TaskCreateInput, _i3.TaskUncheckedCreateInput> + create, + required _i1.PrismaUnion<_i3.TaskUpdateInput, _i3.TaskUncheckedUpdateInput> + update, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'create': create, + 'update': update, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.upsertOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task>( + action: 'upsertOneTask', + result: result, + factory: (e) => _i2.Task.fromJson(e), + ); + } + + _i1.ActionClient<_i2.Task?> delete({ + required _i3.TaskWhereUniqueInput where, + _i3.TaskSelect? select, + _i3.TaskInclude? include, + }) { + final args = { + 'where': where, + 'select': select, + 'include': include, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.deleteOne, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i2.Task?>( + action: 'deleteOneTask', + result: result, + factory: (e) => e != null ? _i2.Task.fromJson(e) : null, + ); + } + + _i1.ActionClient<_i3.AffectedRowsOutput> deleteMany( + {_i3.TaskWhereInput? where}) { + final args = {'where': where}; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.deleteMany, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AffectedRowsOutput>( + action: 'deleteManyTask', + result: result, + factory: (e) => _i3.AffectedRowsOutput.fromJson(e), + ); + } + + _i1.ActionClient> groupBy({ + _i3.TaskWhereInput? where, + _i1.PrismaUnion, + _i3.TaskOrderByWithAggregationInput>? + orderBy, + required _i1.PrismaUnion, _i3.TaskScalar> by, + _i3.TaskScalarWhereWithAggregatesInput? having, + int? take, + int? skip, + _i3.TaskGroupByOutputTypeSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'by': _i1.JsonQuery.groupBySerializer(by), + 'having': having, + 'take': take, + 'skip': skip, + 'select': select ?? _i1.JsonQuery.groupBySelectSerializer(by), + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.groupBy, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient>( + action: 'groupByTask', + result: result, + factory: (values) => (values as Iterable) + .map((e) => _i3.TaskGroupByOutputType.fromJson(e)), + ); + } + + _i1.ActionClient<_i3.AggregateTask> aggregate({ + _i3.TaskWhereInput? where, + _i1.PrismaUnion, + _i3.TaskOrderByWithRelationInput>? + orderBy, + _i3.TaskWhereUniqueInput? cursor, + int? take, + int? skip, + _i3.AggregateTaskSelect? select, + }) { + final args = { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'select': select, + }; + final query = _i1.serializeJsonQuery( + args: args, + modelName: 'Task', + action: _i1.JsonQueryAction.aggregate, + datamodel: PrismaClient.datamodel, + ); + final result = _client.$engine.request( + query, + headers: _client.$transaction.headers, + transaction: _client.$transaction.transaction, + ); + return _i1.ActionClient<_i3.AggregateTask>( + action: 'aggregateTask', + result: result, + factory: (e) => _i3.AggregateTask.fromJson(e), + ); + } +} + +class PrismaClient extends _i1.BasePrismaClient { + PrismaClient({ + super.datasourceUrl, + super.datasources, + super.errorFormat, + super.log, + _i1.Engine? engine, + }) : _engine = engine; + + static final datamodel = _i4.DataModel.fromJson({ + 'enums': [], + 'models': [ + { + 'name': 'User', + 'dbName': null, + 'fields': [ + { + 'name': 'id', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': true, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'String', + 'default': { + 'name': 'uuid(4)', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'name', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'email', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': true, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'password', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'projects', + 'kind': 'object', + 'isList': true, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'Project', + 'relationName': 'ProjectToUser', + 'relationFromFields': [], + 'relationToFields': [], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'timeEntries', + 'kind': 'object', + 'isList': true, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'TimeEntry', + 'relationName': 'TimeEntryToUser', + 'relationFromFields': [], + 'relationToFields': [], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'createdAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'DateTime', + 'default': { + 'name': 'now', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'updatedAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'DateTime', + 'isGenerated': false, + 'isUpdatedAt': true, + }, + ], + 'primaryKey': null, + 'uniqueFields': [], + 'uniqueIndexes': [], + 'isGenerated': false, + }, + { + 'name': 'Project', + 'dbName': null, + 'fields': [ + { + 'name': 'id', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': true, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'String', + 'default': { + 'name': 'uuid(4)', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'name', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'description', + 'kind': 'scalar', + 'isList': false, + 'isRequired': false, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'clientId', + 'kind': 'scalar', + 'isList': false, + 'isRequired': false, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'tasks', + 'kind': 'object', + 'isList': true, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'Task', + 'relationName': 'ProjectToTask', + 'relationFromFields': [], + 'relationToFields': [], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'timeEntries', + 'kind': 'object', + 'isList': true, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'TimeEntry', + 'relationName': 'ProjectToTimeEntry', + 'relationFromFields': [], + 'relationToFields': [], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'user', + 'kind': 'object', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'User', + 'relationName': 'ProjectToUser', + 'relationFromFields': ['userId'], + 'relationToFields': ['id'], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'userId', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': true, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'createdAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'DateTime', + 'default': { + 'name': 'now', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'updatedAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'DateTime', + 'isGenerated': false, + 'isUpdatedAt': true, + }, + ], + 'primaryKey': null, + 'uniqueFields': [], + 'uniqueIndexes': [], + 'isGenerated': false, + }, + { + 'name': 'TimeEntry', + 'dbName': null, + 'fields': [ + { + 'name': 'id', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': true, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'String', + 'default': { + 'name': 'uuid(4)', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'startTime', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'DateTime', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'endTime', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'DateTime', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'description', + 'kind': 'scalar', + 'isList': false, + 'isRequired': false, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'user', + 'kind': 'object', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'User', + 'relationName': 'TimeEntryToUser', + 'relationFromFields': ['userId'], + 'relationToFields': ['id'], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'userId', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': true, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'project', + 'kind': 'object', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'Project', + 'relationName': 'ProjectToTimeEntry', + 'relationFromFields': ['projectId'], + 'relationToFields': ['id'], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'projectId', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': true, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'createdAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'DateTime', + 'default': { + 'name': 'now', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'updatedAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'DateTime', + 'isGenerated': false, + 'isUpdatedAt': true, + }, + ], + 'primaryKey': null, + 'uniqueFields': [], + 'uniqueIndexes': [], + 'isGenerated': false, + }, + { + 'name': 'Task', + 'dbName': null, + 'fields': [ + { + 'name': 'id', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': true, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'String', + 'default': { + 'name': 'uuid(4)', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'name', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'description', + 'kind': 'scalar', + 'isList': false, + 'isRequired': false, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'project', + 'kind': 'object', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'Project', + 'relationName': 'ProjectToTask', + 'relationFromFields': ['projectId'], + 'relationToFields': ['id'], + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'projectId', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': true, + 'hasDefaultValue': false, + 'type': 'String', + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'createdAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': true, + 'type': 'DateTime', + 'default': { + 'name': 'now', + 'args': [], + }, + 'isGenerated': false, + 'isUpdatedAt': false, + }, + { + 'name': 'updatedAt', + 'kind': 'scalar', + 'isList': false, + 'isRequired': true, + 'isUnique': false, + 'isId': false, + 'isReadOnly': false, + 'hasDefaultValue': false, + 'type': 'DateTime', + 'isGenerated': false, + 'isUpdatedAt': true, + }, + ], + 'primaryKey': null, + 'uniqueFields': [], + 'uniqueIndexes': [], + 'isGenerated': false, + }, + ], + 'types': [], + 'indexes': [ + { + 'model': 'User', + 'type': 'id', + 'isDefinedOnField': true, + 'fields': [ + {'name': 'id'} + ], + }, + { + 'model': 'User', + 'type': 'unique', + 'isDefinedOnField': true, + 'fields': [ + {'name': 'email'} + ], + }, + { + 'model': 'Project', + 'type': 'id', + 'isDefinedOnField': true, + 'fields': [ + {'name': 'id'} + ], + }, + { + 'model': 'TimeEntry', + 'type': 'id', + 'isDefinedOnField': true, + 'fields': [ + {'name': 'id'} + ], + }, + { + 'model': 'Task', + 'type': 'id', + 'isDefinedOnField': true, + 'fields': [ + {'name': 'id'} + ], + }, + ], + }); + + _i1.Engine? _engine; + + _i1.TransactionClient? _transaction; + + @override + get $transaction { + if (_transaction != null) return _transaction!; + PrismaClient factory(_i1.TransactionClient transaction) { + final client = PrismaClient( + engine: $engine, + datasources: $options.datasources, + datasourceUrl: $options.datasourceUrl, + errorFormat: $options.errorFormat, + log: $options.logEmitter.definition, + ); + client.$options.logEmitter = $options.logEmitter; + client._transaction = transaction; + + return client; + } + + return _transaction = _i1.TransactionClient($engine, factory); + } + + @override + get $engine => _engine ??= _i5.BinaryEngine( + schema: + 'generator dartClient {\n provider = "dart run orm"\n output = "../../../backend_dart/lib/infrastructure/persistence"\n}\n\ngenerator goClient {\n provider = "go run github.com/steebchen/prisma-client-go"\n output = "../../../backend-go/internal/infrastructure/persistence"\n}\n\ndatasource db {\n provider = "postgresql"\n url = env("DATABASE_URL")\n}\n\n// User Model\nmodel User {\n id String @id @default(uuid())\n name String\n email String @unique\n password String\n projects Project[] // Beziehung zu Projekten\n timeEntries TimeEntry[] // Beziehung zu Zeiteinträgen\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\n// Project Model\nmodel Project {\n id String @id @default(uuid())\n name String\n description String?\n clientId String?\n tasks Task[] // Beziehung zu Aufgaben\n timeEntries TimeEntry[] // Beziehung zu Zeiteinträgen\n user User @relation(fields: [userId], references: [id])\n userId String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\n// TimeEntry Model\nmodel TimeEntry {\n id String @id @default(uuid())\n startTime DateTime\n endTime DateTime\n description String?\n user User @relation(fields: [userId], references: [id])\n userId String\n project Project @relation(fields: [projectId], references: [id])\n projectId String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\n// Task Model (optional)\nmodel Task {\n id String @id @default(uuid())\n name String\n description String?\n project Project @relation(fields: [projectId], references: [id])\n projectId String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n', + datasources: const { + 'db': _i1.Datasource( + _i1.DatasourceType.environment, + 'DATABASE_URL', + ) + }, + options: $options, + ); + + @override + get $datamodel => datamodel; + + UserDelegate get user => UserDelegate._(this); + + ProjectDelegate get project => ProjectDelegate._(this); + + TimeEntryDelegate get timeEntry => TimeEntryDelegate._(this); + + TaskDelegate get task => TaskDelegate._(this); +} diff --git a/backend_dart/lib/infrastructure/persistence/model.dart b/backend_dart/lib/infrastructure/persistence/model.dart new file mode 100644 index 0000000..bb871e4 --- /dev/null +++ b/backend_dart/lib/infrastructure/persistence/model.dart @@ -0,0 +1,531 @@ +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'model.dart' as _i1; +import 'prisma.dart' as _i2; + +class Task { + const Task({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + factory Task.fromJson(Map json) => Task( + id: json['id'], + name: json['name'], + description: json['description'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + project: json['project'] is Map + ? _i1.Project.fromJson(json['project']) + : null, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i1.Project? project; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'project': project?.toJson(), + }; +} + +class TimeEntry { + const TimeEntry({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + factory TimeEntry.fromJson(Map json) => TimeEntry( + id: json['id'], + startTime: switch (json['startTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['startTime'] + }, + endTime: switch (json['endTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['endTime'] + }, + description: json['description'], + userId: json['userId'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + user: json['user'] is Map ? _i1.User.fromJson(json['user']) : null, + project: json['project'] is Map + ? _i1.Project.fromJson(json['project']) + : null, + ); + + final String? id; + + final DateTime? startTime; + + final DateTime? endTime; + + final String? description; + + final String? userId; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i1.User? user; + + final _i1.Project? project; + + Map toJson() => { + 'id': id, + 'startTime': startTime?.toIso8601String(), + 'endTime': endTime?.toIso8601String(), + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'user': user?.toJson(), + 'project': project?.toJson(), + }; +} + +class Project { + const Project({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + this.user, + this.$count, + }); + + factory Project.fromJson(Map json) => Project( + id: json['id'], + name: json['name'], + description: json['description'], + clientId: json['clientId'], + userId: json['userId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + tasks: (json['tasks'] as Iterable?) + ?.map((json) => _i1.Task.fromJson(json)), + timeEntries: (json['timeEntries'] as Iterable?) + ?.map((json) => _i1.TimeEntry.fromJson(json)), + user: json['user'] is Map ? _i1.User.fromJson(json['user']) : null, + $count: json['_count'] is Map + ? _i2.ProjectCountOutputType.fromJson(json['_count']) + : null, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? clientId; + + final String? userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final Iterable<_i1.Task>? tasks; + + final Iterable<_i1.TimeEntry>? timeEntries; + + final _i1.User? user; + + final _i2.ProjectCountOutputType? $count; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'tasks': tasks?.map((e) => e.toJson()), + 'timeEntries': timeEntries?.map((e) => e.toJson()), + 'user': user?.toJson(), + '_count': $count?.toJson(), + }; +} + +class User { + const User({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + this.$count, + }); + + factory User.fromJson(Map json) => User( + id: json['id'], + name: json['name'], + email: json['email'], + password: json['password'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + projects: (json['projects'] as Iterable?) + ?.map((json) => _i1.Project.fromJson(json)), + timeEntries: (json['timeEntries'] as Iterable?) + ?.map((json) => _i1.TimeEntry.fromJson(json)), + $count: json['_count'] is Map + ? _i2.UserCountOutputType.fromJson(json['_count']) + : null, + ); + + final String? id; + + final String? name; + + final String? email; + + final String? password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final Iterable<_i1.Project>? projects; + + final Iterable<_i1.TimeEntry>? timeEntries; + + final _i2.UserCountOutputType? $count; + + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'projects': projects?.map((e) => e.toJson()), + 'timeEntries': timeEntries?.map((e) => e.toJson()), + '_count': $count?.toJson(), + }; +} + +class CreateManyUserAndReturnOutputType { + const CreateManyUserAndReturnOutputType({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + factory CreateManyUserAndReturnOutputType.fromJson(Map json) => + CreateManyUserAndReturnOutputType( + id: json['id'], + name: json['name'], + email: json['email'], + password: json['password'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? email; + + final String? password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class CreateManyProjectAndReturnOutputType { + const CreateManyProjectAndReturnOutputType({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.user, + }); + + factory CreateManyProjectAndReturnOutputType.fromJson(Map json) => + CreateManyProjectAndReturnOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + clientId: json['clientId'], + userId: json['userId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + user: json['user'] is Map ? _i1.User.fromJson(json['user']) : null, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? clientId; + + final String? userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i1.User? user; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'user': user?.toJson(), + }; +} + +class CreateManyTimeEntryAndReturnOutputType { + const CreateManyTimeEntryAndReturnOutputType({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + factory CreateManyTimeEntryAndReturnOutputType.fromJson(Map json) => + CreateManyTimeEntryAndReturnOutputType( + id: json['id'], + startTime: switch (json['startTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['startTime'] + }, + endTime: switch (json['endTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['endTime'] + }, + description: json['description'], + userId: json['userId'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + user: json['user'] is Map ? _i1.User.fromJson(json['user']) : null, + project: json['project'] is Map + ? _i1.Project.fromJson(json['project']) + : null, + ); + + final String? id; + + final DateTime? startTime; + + final DateTime? endTime; + + final String? description; + + final String? userId; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i1.User? user; + + final _i1.Project? project; + + Map toJson() => { + 'id': id, + 'startTime': startTime?.toIso8601String(), + 'endTime': endTime?.toIso8601String(), + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'user': user?.toJson(), + 'project': project?.toJson(), + }; +} + +class CreateManyTaskAndReturnOutputType { + const CreateManyTaskAndReturnOutputType({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + factory CreateManyTaskAndReturnOutputType.fromJson(Map json) => + CreateManyTaskAndReturnOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + project: json['project'] is Map + ? _i1.Project.fromJson(json['project']) + : null, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i1.Project? project; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + 'project': project?.toJson(), + }; +} diff --git a/backend_dart/lib/infrastructure/persistence/prisma.dart b/backend_dart/lib/infrastructure/persistence/prisma.dart new file mode 100644 index 0000000..d6f1e78 --- /dev/null +++ b/backend_dart/lib/infrastructure/persistence/prisma.dart @@ -0,0 +1,10217 @@ +// ignore_for_file: non_constant_identifier_names + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:orm/orm.dart' as _i1; + +import 'prisma.dart' as _i2; + +class ProjectCountOutputType { + const ProjectCountOutputType({ + this.tasks, + this.timeEntries, + }); + + factory ProjectCountOutputType.fromJson(Map json) => ProjectCountOutputType( + tasks: json['tasks'], + timeEntries: json['timeEntries'], + ); + + final int? tasks; + + final int? timeEntries; + + Map toJson() => { + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class UserCountOutputType { + const UserCountOutputType({ + this.projects, + this.timeEntries, + }); + + factory UserCountOutputType.fromJson(Map json) => UserCountOutputType( + projects: json['projects'], + timeEntries: json['timeEntries'], + ); + + final int? projects; + + final int? timeEntries; + + Map toJson() => { + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +enum QueryMode implements _i1.PrismaEnum { + $default._('default'), + insensitive._('insensitive'); + + const QueryMode._(this.name); + + @override + final String name; +} + +class NestedStringFilter implements _i1.JsonConvertible> { + const NestedStringFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.not, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i1.PrismaUnion? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'not': not, + }; +} + +class StringFilter implements _i1.JsonConvertible> { + const StringFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.mode, + this.not, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i2.QueryMode? mode; + + final _i1.PrismaUnion? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'mode': mode, + 'not': not, + }; +} + +class NestedDateTimeFilter + implements _i1.JsonConvertible> { + const NestedDateTimeFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.not, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? + $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'not': not, + }; +} + +class DateTimeFilter implements _i1.JsonConvertible> { + const DateTimeFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.not, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? + $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'not': not, + }; +} + +class NestedStringNullableFilter + implements _i1.JsonConvertible> { + const NestedStringNullableFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.not, + }); + + final _i1.PrismaUnion, _i1.PrismaNull>>? equals; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? $in; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i1.PrismaUnion>? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'not': not, + }; +} + +class StringNullableFilter + implements _i1.JsonConvertible> { + const StringNullableFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.mode, + this.not, + }); + + final _i1.PrismaUnion, _i1.PrismaNull>>? equals; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? $in; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i2.QueryMode? mode; + + final _i1.PrismaUnion>? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'mode': mode, + 'not': not, + }; +} + +class ProjectRelationFilter + implements _i1.JsonConvertible> { + const ProjectRelationFilter({ + this.$is, + this.isNot, + }); + + final _i2.ProjectWhereInput? $is; + + final _i2.ProjectWhereInput? isNot; + + @override + Map toJson() => { + 'is': $is, + 'isNot': isNot, + }; +} + +class TaskWhereInput implements _i1.JsonConvertible> { + const TaskWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + final _i1.PrismaUnion<_i2.TaskWhereInput, Iterable<_i2.TaskWhereInput>>? AND; + + final Iterable<_i2.TaskWhereInput>? OR; + + final _i1.PrismaUnion<_i2.TaskWhereInput, Iterable<_i2.TaskWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i1.PrismaUnion<_i2.ProjectRelationFilter, _i2.ProjectWhereInput>? + project; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class TaskListRelationFilter + implements _i1.JsonConvertible> { + const TaskListRelationFilter({ + this.every, + this.some, + this.none, + }); + + final _i2.TaskWhereInput? every; + + final _i2.TaskWhereInput? some; + + final _i2.TaskWhereInput? none; + + @override + Map toJson() => { + 'every': every, + 'some': some, + 'none': none, + }; +} + +class UserRelationFilter implements _i1.JsonConvertible> { + const UserRelationFilter({ + this.$is, + this.isNot, + }); + + final _i2.UserWhereInput? $is; + + final _i2.UserWhereInput? isNot; + + @override + Map toJson() => { + 'is': $is, + 'isNot': isNot, + }; +} + +class TimeEntryWhereInput implements _i1.JsonConvertible> { + const TimeEntryWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + final _i1 + .PrismaUnion<_i2.TimeEntryWhereInput, Iterable<_i2.TimeEntryWhereInput>>? + AND; + + final Iterable<_i2.TimeEntryWhereInput>? OR; + + final _i1 + .PrismaUnion<_i2.TimeEntryWhereInput, Iterable<_i2.TimeEntryWhereInput>>? + NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? startTime; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? endTime; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringFilter, String>? userId; + + final _i1.PrismaUnion<_i2.StringFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i1.PrismaUnion<_i2.UserRelationFilter, _i2.UserWhereInput>? user; + + final _i1.PrismaUnion<_i2.ProjectRelationFilter, _i2.ProjectWhereInput>? + project; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +class TimeEntryListRelationFilter + implements _i1.JsonConvertible> { + const TimeEntryListRelationFilter({ + this.every, + this.some, + this.none, + }); + + final _i2.TimeEntryWhereInput? every; + + final _i2.TimeEntryWhereInput? some; + + final _i2.TimeEntryWhereInput? none; + + @override + Map toJson() => { + 'every': every, + 'some': some, + 'none': none, + }; +} + +class ProjectWhereInput implements _i1.JsonConvertible> { + const ProjectWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + this.user, + }); + + final _i1.PrismaUnion<_i2.ProjectWhereInput, Iterable<_i2.ProjectWhereInput>>? + AND; + + final Iterable<_i2.ProjectWhereInput>? OR; + + final _i1.PrismaUnion<_i2.ProjectWhereInput, Iterable<_i2.ProjectWhereInput>>? + NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? clientId; + + final _i1.PrismaUnion<_i2.StringFilter, String>? userId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i2.TaskListRelationFilter? tasks; + + final _i2.TimeEntryListRelationFilter? timeEntries; + + final _i1.PrismaUnion<_i2.UserRelationFilter, _i2.UserWhereInput>? user; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +class ProjectListRelationFilter + implements _i1.JsonConvertible> { + const ProjectListRelationFilter({ + this.every, + this.some, + this.none, + }); + + final _i2.ProjectWhereInput? every; + + final _i2.ProjectWhereInput? some; + + final _i2.ProjectWhereInput? none; + + @override + Map toJson() => { + 'every': every, + 'some': some, + 'none': none, + }; +} + +class UserWhereInput implements _i1.JsonConvertible> { + const UserWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final _i1.PrismaUnion<_i2.UserWhereInput, Iterable<_i2.UserWhereInput>>? AND; + + final Iterable<_i2.UserWhereInput>? OR; + + final _i1.PrismaUnion<_i2.UserWhereInput, Iterable<_i2.UserWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringFilter, String>? email; + + final _i1.PrismaUnion<_i2.StringFilter, String>? password; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i2.ProjectListRelationFilter? projects; + + final _i2.TimeEntryListRelationFilter? timeEntries; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class UserWhereUniqueInput + implements _i1.JsonConvertible> { + const UserWhereUniqueInput({ + this.id, + this.email, + this.AND, + this.OR, + this.NOT, + this.name, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final String? id; + + final String? email; + + final _i1.PrismaUnion<_i2.UserWhereInput, Iterable<_i2.UserWhereInput>>? AND; + + final Iterable<_i2.UserWhereInput>? OR; + + final _i1.PrismaUnion<_i2.UserWhereInput, Iterable<_i2.UserWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringFilter, String>? password; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i2.ProjectListRelationFilter? projects; + + final _i2.TimeEntryListRelationFilter? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'email': email, + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'name': name, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class TaskProjectArgs implements _i1.JsonConvertible> { + const TaskProjectArgs({ + this.select, + this.include, + }); + + final _i2.ProjectSelect? select; + + final _i2.ProjectInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class TaskInclude implements _i1.JsonConvertible> { + const TaskInclude({this.project}); + + final _i1.PrismaUnion? project; + + @override + Map toJson() => {'project': project}; +} + +enum SortOrder implements _i1.PrismaEnum { + asc._('asc'), + desc._('desc'); + + const SortOrder._(this.name); + + @override + final String name; +} + +enum NullsOrder implements _i1.PrismaEnum { + first._('first'), + last._('last'); + + const NullsOrder._(this.name); + + @override + final String name; +} + +class SortOrderInput implements _i1.JsonConvertible> { + const SortOrderInput({ + required this.sort, + this.nulls, + }); + + final _i2.SortOrder sort; + + final _i2.NullsOrder? nulls; + + @override + Map toJson() => { + 'sort': sort, + 'nulls': nulls, + }; +} + +class TaskOrderByRelationAggregateInput + implements _i1.JsonConvertible> { + const TaskOrderByRelationAggregateInput({this.$count}); + + final _i2.SortOrder? $count; + + @override + Map toJson() => {'_count': $count}; +} + +class TimeEntryOrderByRelationAggregateInput + implements _i1.JsonConvertible> { + const TimeEntryOrderByRelationAggregateInput({this.$count}); + + final _i2.SortOrder? $count; + + @override + Map toJson() => {'_count': $count}; +} + +class ProjectOrderByRelationAggregateInput + implements _i1.JsonConvertible> { + const ProjectOrderByRelationAggregateInput({this.$count}); + + final _i2.SortOrder? $count; + + @override + Map toJson() => {'_count': $count}; +} + +class UserOrderByWithRelationInput + implements _i1.JsonConvertible> { + const UserOrderByWithRelationInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? email; + + final _i2.SortOrder? password; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.ProjectOrderByRelationAggregateInput? projects; + + final _i2.TimeEntryOrderByRelationAggregateInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class ProjectOrderByWithRelationInput + implements _i1.JsonConvertible> { + const ProjectOrderByWithRelationInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + this.user, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? description; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? clientId; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.TaskOrderByRelationAggregateInput? tasks; + + final _i2.TimeEntryOrderByRelationAggregateInput? timeEntries; + + final _i2.UserOrderByWithRelationInput? user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +class TaskOrderByWithRelationInput + implements _i1.JsonConvertible> { + const TaskOrderByWithRelationInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? description; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.ProjectOrderByWithRelationInput? project; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class TaskWhereUniqueInput + implements _i1.JsonConvertible> { + const TaskWhereUniqueInput({ + this.id, + this.AND, + this.OR, + this.NOT, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + final String? id; + + final _i1.PrismaUnion<_i2.TaskWhereInput, Iterable<_i2.TaskWhereInput>>? AND; + + final Iterable<_i2.TaskWhereInput>? OR; + + final _i1.PrismaUnion<_i2.TaskWhereInput, Iterable<_i2.TaskWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i1.PrismaUnion<_i2.ProjectRelationFilter, _i2.ProjectWhereInput>? + project; + + @override + Map toJson() => { + 'id': id, + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +enum TaskScalar implements _i1.PrismaEnum, _i1.Reference { + id('id', 'Task'), + name$('name', 'Task'), + description('description', 'Task'), + projectId('projectId', 'Task'), + createdAt('createdAt', 'Task'), + updatedAt('updatedAt', 'Task'); + + const TaskScalar( + this.name, + this.model, + ); + + @override + final String name; + + @override + final String model; +} + +class ProjectTasksArgs implements _i1.JsonConvertible> { + const ProjectTasksArgs({ + this.where, + this.orderBy, + this.cursor, + this.take, + this.skip, + this.distinct, + this.select, + this.include, + }); + + final _i2.TaskWhereInput? where; + + final _i1.PrismaUnion, + _i2.TaskOrderByWithRelationInput>? orderBy; + + final _i2.TaskWhereUniqueInput? cursor; + + final int? take; + + final int? skip; + + final _i1.PrismaUnion<_i2.TaskScalar, Iterable<_i2.TaskScalar>>? distinct; + + final _i2.TaskSelect? select; + + final _i2.TaskInclude? include; + + @override + Map toJson() => { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; +} + +class ProjectWhereUniqueInput + implements _i1.JsonConvertible> { + const ProjectWhereUniqueInput({ + this.id, + this.AND, + this.OR, + this.NOT, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + this.user, + }); + + final String? id; + + final _i1.PrismaUnion<_i2.ProjectWhereInput, Iterable<_i2.ProjectWhereInput>>? + AND; + + final Iterable<_i2.ProjectWhereInput>? OR; + + final _i1.PrismaUnion<_i2.ProjectWhereInput, Iterable<_i2.ProjectWhereInput>>? + NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? clientId; + + final _i1.PrismaUnion<_i2.StringFilter, String>? userId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i2.TaskListRelationFilter? tasks; + + final _i2.TimeEntryListRelationFilter? timeEntries; + + final _i1.PrismaUnion<_i2.UserRelationFilter, _i2.UserWhereInput>? user; + + @override + Map toJson() => { + 'id': id, + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +enum ProjectScalar implements _i1.PrismaEnum, _i1.Reference { + id('id', 'Project'), + name$('name', 'Project'), + description('description', 'Project'), + clientId('clientId', 'Project'), + userId('userId', 'Project'), + createdAt('createdAt', 'Project'), + updatedAt('updatedAt', 'Project'); + + const ProjectScalar( + this.name, + this.model, + ); + + @override + final String name; + + @override + final String model; +} + +class UserProjectsArgs implements _i1.JsonConvertible> { + const UserProjectsArgs({ + this.where, + this.orderBy, + this.cursor, + this.take, + this.skip, + this.distinct, + this.select, + this.include, + }); + + final _i2.ProjectWhereInput? where; + + final _i1.PrismaUnion, + _i2.ProjectOrderByWithRelationInput>? orderBy; + + final _i2.ProjectWhereUniqueInput? cursor; + + final int? take; + + final int? skip; + + final _i1.PrismaUnion<_i2.ProjectScalar, Iterable<_i2.ProjectScalar>>? + distinct; + + final _i2.ProjectSelect? select; + + final _i2.ProjectInclude? include; + + @override + Map toJson() => { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; +} + +class TimeEntryUserArgs implements _i1.JsonConvertible> { + const TimeEntryUserArgs({ + this.select, + this.include, + }); + + final _i2.UserSelect? select; + + final _i2.UserInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class TimeEntryProjectArgs + implements _i1.JsonConvertible> { + const TimeEntryProjectArgs({ + this.select, + this.include, + }); + + final _i2.ProjectSelect? select; + + final _i2.ProjectInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class TimeEntryInclude implements _i1.JsonConvertible> { + const TimeEntryInclude({ + this.user, + this.project, + }); + + final _i1.PrismaUnion? user; + + final _i1.PrismaUnion? project; + + @override + Map toJson() => { + 'user': user, + 'project': project, + }; +} + +class TimeEntryOrderByWithRelationInput + implements _i1.JsonConvertible> { + const TimeEntryOrderByWithRelationInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? startTime; + + final _i2.SortOrder? endTime; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? description; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.UserOrderByWithRelationInput? user; + + final _i2.ProjectOrderByWithRelationInput? project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +class TimeEntryWhereUniqueInput + implements _i1.JsonConvertible> { + const TimeEntryWhereUniqueInput({ + this.id, + this.AND, + this.OR, + this.NOT, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + final String? id; + + final _i1 + .PrismaUnion<_i2.TimeEntryWhereInput, Iterable<_i2.TimeEntryWhereInput>>? + AND; + + final Iterable<_i2.TimeEntryWhereInput>? OR; + + final _i1 + .PrismaUnion<_i2.TimeEntryWhereInput, Iterable<_i2.TimeEntryWhereInput>>? + NOT; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? startTime; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? endTime; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringFilter, String>? userId; + + final _i1.PrismaUnion<_i2.StringFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + final _i1.PrismaUnion<_i2.UserRelationFilter, _i2.UserWhereInput>? user; + + final _i1.PrismaUnion<_i2.ProjectRelationFilter, _i2.ProjectWhereInput>? + project; + + @override + Map toJson() => { + 'id': id, + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +enum TimeEntryScalar implements _i1.PrismaEnum, _i1.Reference { + id('id', 'TimeEntry'), + startTime('startTime', 'TimeEntry'), + endTime('endTime', 'TimeEntry'), + description('description', 'TimeEntry'), + userId('userId', 'TimeEntry'), + projectId('projectId', 'TimeEntry'), + createdAt('createdAt', 'TimeEntry'), + updatedAt('updatedAt', 'TimeEntry'); + + const TimeEntryScalar( + this.name, + this.model, + ); + + @override + final String name; + + @override + final String model; +} + +class UserTimeEntriesArgs implements _i1.JsonConvertible> { + const UserTimeEntriesArgs({ + this.where, + this.orderBy, + this.cursor, + this.take, + this.skip, + this.distinct, + this.select, + this.include, + }); + + final _i2.TimeEntryWhereInput? where; + + final _i1.PrismaUnion, + _i2.TimeEntryOrderByWithRelationInput>? orderBy; + + final _i2.TimeEntryWhereUniqueInput? cursor; + + final int? take; + + final int? skip; + + final _i1.PrismaUnion<_i2.TimeEntryScalar, Iterable<_i2.TimeEntryScalar>>? + distinct; + + final _i2.TimeEntrySelect? select; + + final _i2.TimeEntryInclude? include; + + @override + Map toJson() => { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; +} + +class UserCountOutputTypeSelect + implements _i1.JsonConvertible> { + const UserCountOutputTypeSelect({ + this.projects, + this.timeEntries, + }); + + final bool? projects; + + final bool? timeEntries; + + @override + Map toJson() => { + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class UserCountArgs implements _i1.JsonConvertible> { + const UserCountArgs({this.select}); + + final _i2.UserCountOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class UserInclude implements _i1.JsonConvertible> { + const UserInclude({ + this.projects, + this.timeEntries, + this.$count, + }); + + final _i1.PrismaUnion? projects; + + final _i1.PrismaUnion? timeEntries; + + final _i1.PrismaUnion? $count; + + @override + Map toJson() => { + 'projects': projects, + 'timeEntries': timeEntries, + '_count': $count, + }; +} + +class TimeEntrySelect implements _i1.JsonConvertible> { + const TimeEntrySelect({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + final bool? id; + + final bool? startTime; + + final bool? endTime; + + final bool? description; + + final bool? userId; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? user; + + final _i1.PrismaUnion? project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +class ProjectTimeEntriesArgs + implements _i1.JsonConvertible> { + const ProjectTimeEntriesArgs({ + this.where, + this.orderBy, + this.cursor, + this.take, + this.skip, + this.distinct, + this.select, + this.include, + }); + + final _i2.TimeEntryWhereInput? where; + + final _i1.PrismaUnion, + _i2.TimeEntryOrderByWithRelationInput>? orderBy; + + final _i2.TimeEntryWhereUniqueInput? cursor; + + final int? take; + + final int? skip; + + final _i1.PrismaUnion<_i2.TimeEntryScalar, Iterable<_i2.TimeEntryScalar>>? + distinct; + + final _i2.TimeEntrySelect? select; + + final _i2.TimeEntryInclude? include; + + @override + Map toJson() => { + 'where': where, + 'orderBy': orderBy, + 'cursor': cursor, + 'take': take, + 'skip': skip, + 'distinct': distinct, + 'select': select, + 'include': include, + }; +} + +class ProjectUserArgs implements _i1.JsonConvertible> { + const ProjectUserArgs({ + this.select, + this.include, + }); + + final _i2.UserSelect? select; + + final _i2.UserInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class ProjectCountOutputTypeSelect + implements _i1.JsonConvertible> { + const ProjectCountOutputTypeSelect({ + this.tasks, + this.timeEntries, + }); + + final bool? tasks; + + final bool? timeEntries; + + @override + Map toJson() => { + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectCountArgs implements _i1.JsonConvertible> { + const ProjectCountArgs({this.select}); + + final _i2.ProjectCountOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class ProjectInclude implements _i1.JsonConvertible> { + const ProjectInclude({ + this.tasks, + this.timeEntries, + this.user, + this.$count, + }); + + final _i1.PrismaUnion? tasks; + + final _i1.PrismaUnion? timeEntries; + + final _i1.PrismaUnion? user; + + final _i1.PrismaUnion? $count; + + @override + Map toJson() => { + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + '_count': $count, + }; +} + +class TaskSelect implements _i1.JsonConvertible> { + const TaskSelect({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? project; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class ProjectSelect implements _i1.JsonConvertible> { + const ProjectSelect({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + this.user, + this.$count, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? clientId; + + final bool? userId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? tasks; + + final _i1.PrismaUnion? timeEntries; + + final _i1.PrismaUnion? user; + + final _i1.PrismaUnion? $count; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + '_count': $count, + }; +} + +class UserSelect implements _i1.JsonConvertible> { + const UserSelect({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + this.$count, + }); + + final bool? id; + + final bool? name; + + final bool? email; + + final bool? password; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? projects; + + final _i1.PrismaUnion? timeEntries; + + final _i1.PrismaUnion? $count; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + '_count': $count, + }; +} + +enum UserScalar implements _i1.PrismaEnum, _i1.Reference { + id('id', 'User'), + name$('name', 'User'), + email('email', 'User'), + password('password', 'User'), + createdAt('createdAt', 'User'), + updatedAt('updatedAt', 'User'); + + const UserScalar( + this.name, + this.model, + ); + + @override + final String name; + + @override + final String model; +} + +class TaskCreateWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskCreateWithoutProjectInput({ + this.id, + required this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUncheckedCreateWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUncheckedCreateWithoutProjectInput({ + this.id, + required this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskCreateOrConnectWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskCreateOrConnectWithoutProjectInput({ + required this.where, + required this.create, + }); + + final _i2.TaskWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TaskCreateWithoutProjectInput, + _i2.TaskUncheckedCreateWithoutProjectInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class TaskCreateManyProjectInput + implements _i1.JsonConvertible> { + const TaskCreateManyProjectInput({ + this.id, + required this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskCreateManyProjectInputEnvelope + implements _i1.JsonConvertible> { + const TaskCreateManyProjectInputEnvelope({ + required this.data, + this.skipDuplicates, + }); + + final _i1.PrismaUnion<_i2.TaskCreateManyProjectInput, + Iterable<_i2.TaskCreateManyProjectInput>> data; + + final bool? skipDuplicates; + + @override + Map toJson() => { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; +} + +class TaskCreateNestedManyWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskCreateNestedManyWithoutProjectInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.TaskCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TaskCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TaskUncheckedCreateWithoutProjectInput, + Iterable<_i2.TaskUncheckedCreateWithoutProjectInput>>>>? create; + + final _i1.PrismaUnion<_i2.TaskCreateOrConnectWithoutProjectInput, + Iterable<_i2.TaskCreateOrConnectWithoutProjectInput>>? connectOrCreate; + + final _i2.TaskCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class UserCreateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserCreateWithoutTimeEntriesInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + this.projects, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectCreateNestedManyWithoutUserInput? projects; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + }; +} + +class TaskUncheckedCreateNestedManyWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUncheckedCreateNestedManyWithoutProjectInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.TaskCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TaskCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TaskUncheckedCreateWithoutProjectInput, + Iterable<_i2.TaskUncheckedCreateWithoutProjectInput>>>>? create; + + final _i1.PrismaUnion<_i2.TaskCreateOrConnectWithoutProjectInput, + Iterable<_i2.TaskCreateOrConnectWithoutProjectInput>>? connectOrCreate; + + final _i2.TaskCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class TimeEntryUncheckedCreateWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedCreateWithoutProjectInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + required this.userId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final String userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCreateOrConnectWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryCreateOrConnectWithoutProjectInput({ + required this.where, + required this.create, + }); + + final _i2.TimeEntryWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TimeEntryCreateWithoutProjectInput, + _i2.TimeEntryUncheckedCreateWithoutProjectInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class TimeEntryCreateManyProjectInput + implements _i1.JsonConvertible> { + const TimeEntryCreateManyProjectInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + required this.userId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final String userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCreateManyProjectInputEnvelope + implements _i1.JsonConvertible> { + const TimeEntryCreateManyProjectInputEnvelope({ + required this.data, + this.skipDuplicates, + }); + + final _i1.PrismaUnion<_i2.TimeEntryCreateManyProjectInput, + Iterable<_i2.TimeEntryCreateManyProjectInput>> data; + + final bool? skipDuplicates; + + @override + Map toJson() => { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; +} + +class TimeEntryUncheckedCreateNestedManyWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedCreateNestedManyWithoutProjectInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutProjectInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutProjectInput>>>>? + create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutProjectInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutProjectInput>>? + connectOrCreate; + + final _i2.TimeEntryCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class ProjectUncheckedCreateWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUncheckedCreateWithoutUserInput({ + this.id, + required this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskUncheckedCreateNestedManyWithoutProjectInput? tasks; + + final _i2.TimeEntryUncheckedCreateNestedManyWithoutProjectInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectCreateOrConnectWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectCreateOrConnectWithoutUserInput({ + required this.where, + required this.create, + }); + + final _i2.ProjectWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutUserInput, + _i2.ProjectUncheckedCreateWithoutUserInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class ProjectCreateManyUserInput + implements _i1.JsonConvertible> { + const ProjectCreateManyUserInput({ + this.id, + required this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectCreateManyUserInputEnvelope + implements _i1.JsonConvertible> { + const ProjectCreateManyUserInputEnvelope({ + required this.data, + this.skipDuplicates, + }); + + final _i1.PrismaUnion<_i2.ProjectCreateManyUserInput, + Iterable<_i2.ProjectCreateManyUserInput>> data; + + final bool? skipDuplicates; + + @override + Map toJson() => { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; +} + +class ProjectUncheckedCreateNestedManyWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUncheckedCreateNestedManyWithoutUserInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.ProjectCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.ProjectCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.ProjectUncheckedCreateWithoutUserInput, + Iterable<_i2.ProjectUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.ProjectCreateOrConnectWithoutUserInput, + Iterable<_i2.ProjectCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i2.ProjectCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class UserUncheckedCreateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserUncheckedCreateWithoutTimeEntriesInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + this.projects, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectUncheckedCreateNestedManyWithoutUserInput? projects; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + }; +} + +class UserCreateOrConnectWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserCreateOrConnectWithoutTimeEntriesInput({ + required this.where, + required this.create, + }); + + final _i2.UserWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.UserCreateWithoutTimeEntriesInput, + _i2.UserUncheckedCreateWithoutTimeEntriesInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class UserCreateNestedOneWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserCreateNestedOneWithoutTimeEntriesInput({ + this.create, + this.connectOrCreate, + this.connect, + }); + + final _i1.PrismaUnion<_i2.UserCreateWithoutTimeEntriesInput, + _i2.UserUncheckedCreateWithoutTimeEntriesInput>? create; + + final _i2.UserCreateOrConnectWithoutTimeEntriesInput? connectOrCreate; + + final _i2.UserWhereUniqueInput? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'connect': connect, + }; +} + +class TimeEntryCreateWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryCreateWithoutProjectInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + this.createdAt, + this.updatedAt, + required this.user, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.UserCreateNestedOneWithoutTimeEntriesInput user; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + }; +} + +class TimeEntryCreateNestedManyWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryCreateNestedManyWithoutProjectInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutProjectInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutProjectInput>>>>? + create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutProjectInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutProjectInput>>? + connectOrCreate; + + final _i2.TimeEntryCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class ProjectCreateWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectCreateWithoutUserInput({ + this.id, + required this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskCreateNestedManyWithoutProjectInput? tasks; + + final _i2.TimeEntryCreateNestedManyWithoutProjectInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectCreateNestedManyWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectCreateNestedManyWithoutUserInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.ProjectCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.ProjectCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.ProjectUncheckedCreateWithoutUserInput, + Iterable<_i2.ProjectUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.ProjectCreateOrConnectWithoutUserInput, + Iterable<_i2.ProjectCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i2.ProjectCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class UserCreateWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserCreateWithoutProjectsInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + this.timeEntries, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TimeEntryCreateNestedManyWithoutUserInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + }; +} + +class TimeEntryUncheckedCreateWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedCreateWithoutUserInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + required this.projectId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final String projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCreateOrConnectWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryCreateOrConnectWithoutUserInput({ + required this.where, + required this.create, + }); + + final _i2.TimeEntryWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TimeEntryCreateWithoutUserInput, + _i2.TimeEntryUncheckedCreateWithoutUserInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class TimeEntryCreateManyUserInput + implements _i1.JsonConvertible> { + const TimeEntryCreateManyUserInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + required this.projectId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final String projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCreateManyUserInputEnvelope + implements _i1.JsonConvertible> { + const TimeEntryCreateManyUserInputEnvelope({ + required this.data, + this.skipDuplicates, + }); + + final _i1.PrismaUnion<_i2.TimeEntryCreateManyUserInput, + Iterable<_i2.TimeEntryCreateManyUserInput>> data; + + final bool? skipDuplicates; + + @override + Map toJson() => { + 'data': data, + 'skipDuplicates': skipDuplicates, + }; +} + +class TimeEntryUncheckedCreateNestedManyWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedCreateNestedManyWithoutUserInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutUserInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutUserInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i2.TimeEntryCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class UserUncheckedCreateWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserUncheckedCreateWithoutProjectsInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + this.timeEntries, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TimeEntryUncheckedCreateNestedManyWithoutUserInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + }; +} + +class UserCreateOrConnectWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserCreateOrConnectWithoutProjectsInput({ + required this.where, + required this.create, + }); + + final _i2.UserWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.UserCreateWithoutProjectsInput, + _i2.UserUncheckedCreateWithoutProjectsInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class UserCreateNestedOneWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserCreateNestedOneWithoutProjectsInput({ + this.create, + this.connectOrCreate, + this.connect, + }); + + final _i1.PrismaUnion<_i2.UserCreateWithoutProjectsInput, + _i2.UserUncheckedCreateWithoutProjectsInput>? create; + + final _i2.UserCreateOrConnectWithoutProjectsInput? connectOrCreate; + + final _i2.UserWhereUniqueInput? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'connect': connect, + }; +} + +class ProjectCreateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectCreateWithoutTimeEntriesInput({ + this.id, + required this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + required this.user, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskCreateNestedManyWithoutProjectInput? tasks; + + final _i2.UserCreateNestedOneWithoutProjectsInput user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'user': user, + }; +} + +class ProjectUncheckedCreateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectUncheckedCreateWithoutTimeEntriesInput({ + this.id, + required this.name, + this.description, + this.clientId, + required this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final String userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskUncheckedCreateNestedManyWithoutProjectInput? tasks; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + }; +} + +class ProjectCreateOrConnectWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectCreateOrConnectWithoutTimeEntriesInput({ + required this.where, + required this.create, + }); + + final _i2.ProjectWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTimeEntriesInput, + _i2.ProjectUncheckedCreateWithoutTimeEntriesInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class ProjectCreateNestedOneWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectCreateNestedOneWithoutTimeEntriesInput({ + this.create, + this.connectOrCreate, + this.connect, + }); + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTimeEntriesInput, + _i2.ProjectUncheckedCreateWithoutTimeEntriesInput>? create; + + final _i2.ProjectCreateOrConnectWithoutTimeEntriesInput? connectOrCreate; + + final _i2.ProjectWhereUniqueInput? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'connect': connect, + }; +} + +class TimeEntryCreateWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryCreateWithoutUserInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + this.createdAt, + this.updatedAt, + required this.project, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectCreateNestedOneWithoutTimeEntriesInput project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class TimeEntryCreateNestedManyWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryCreateNestedManyWithoutUserInput({ + this.create, + this.connectOrCreate, + this.createMany, + this.connect, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutUserInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutUserInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i2.TimeEntryCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'createMany': createMany, + 'connect': connect, + }; +} + +class UserCreateInput implements _i1.JsonConvertible> { + const UserCreateInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectCreateNestedManyWithoutUserInput? projects; + + final _i2.TimeEntryCreateNestedManyWithoutUserInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class UserUncheckedCreateInput + implements _i1.JsonConvertible> { + const UserUncheckedCreateInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectUncheckedCreateNestedManyWithoutUserInput? projects; + + final _i2.TimeEntryUncheckedCreateNestedManyWithoutUserInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class AffectedRowsOutput { + const AffectedRowsOutput({this.count}); + + factory AffectedRowsOutput.fromJson(Map json) => + AffectedRowsOutput(count: json['count']); + + final int? count; + + Map toJson() => {'count': count}; +} + +class UserCreateManyInput implements _i1.JsonConvertible> { + const UserCreateManyInput({ + this.id, + required this.name, + required this.email, + required this.password, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final String email; + + final String password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class CreateManyUserAndReturnOutputTypeSelect + implements _i1.JsonConvertible> { + const CreateManyUserAndReturnOutputTypeSelect({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? email; + + final bool? password; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class StringFieldUpdateOperationsInput + implements _i1.JsonConvertible> { + const StringFieldUpdateOperationsInput({this.set}); + + final String? set; + + @override + Map toJson() => {'set': set}; +} + +class DateTimeFieldUpdateOperationsInput + implements _i1.JsonConvertible> { + const DateTimeFieldUpdateOperationsInput({this.set}); + + final DateTime? set; + + @override + Map toJson() => {'set': set}; +} + +class NullableStringFieldUpdateOperationsInput + implements _i1.JsonConvertible> { + const NullableStringFieldUpdateOperationsInput({this.set}); + + final _i1.PrismaUnion? set; + + @override + Map toJson() => {'set': set}; +} + +class TaskUpdateWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUpdateWithoutProjectInput({ + this.id, + this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUncheckedUpdateWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUncheckedUpdateWithoutProjectInput({ + this.id, + this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUpsertWithWhereUniqueWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUpsertWithWhereUniqueWithoutProjectInput({ + required this.where, + required this.update, + required this.create, + }); + + final _i2.TaskWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TaskUpdateWithoutProjectInput, + _i2.TaskUncheckedUpdateWithoutProjectInput> update; + + final _i1.PrismaUnion<_i2.TaskCreateWithoutProjectInput, + _i2.TaskUncheckedCreateWithoutProjectInput> create; + + @override + Map toJson() => { + 'where': where, + 'update': update, + 'create': create, + }; +} + +class TaskUpdateWithWhereUniqueWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUpdateWithWhereUniqueWithoutProjectInput({ + required this.where, + required this.data, + }); + + final _i2.TaskWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TaskUpdateWithoutProjectInput, + _i2.TaskUncheckedUpdateWithoutProjectInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class TaskScalarWhereInput + implements _i1.JsonConvertible> { + const TaskScalarWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.TaskScalarWhereInput, + Iterable<_i2.TaskScalarWhereInput>>? AND; + + final Iterable<_i2.TaskScalarWhereInput>? OR; + + final _i1.PrismaUnion<_i2.TaskScalarWhereInput, + Iterable<_i2.TaskScalarWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUpdateManyMutationInput + implements _i1.JsonConvertible> { + const TaskUpdateManyMutationInput({ + this.id, + this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUncheckedUpdateManyWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUncheckedUpdateManyWithoutProjectInput({ + this.id, + this.name, + this.description, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUpdateManyWithWhereWithoutProjectInput + implements _i1.JsonConvertible> { + const TaskUpdateManyWithWhereWithoutProjectInput({ + required this.where, + required this.data, + }); + + final _i2.TaskScalarWhereInput where; + + final _i1.PrismaUnion<_i2.TaskUpdateManyMutationInput, + _i2.TaskUncheckedUpdateManyWithoutProjectInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class TaskUpdateManyWithoutProjectNestedInput + implements _i1.JsonConvertible> { + const TaskUpdateManyWithoutProjectNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.TaskCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TaskCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TaskUncheckedCreateWithoutProjectInput, + Iterable<_i2.TaskUncheckedCreateWithoutProjectInput>>>>? create; + + final _i1.PrismaUnion<_i2.TaskCreateOrConnectWithoutProjectInput, + Iterable<_i2.TaskCreateOrConnectWithoutProjectInput>>? connectOrCreate; + + final _i1.PrismaUnion<_i2.TaskUpsertWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TaskUpsertWithWhereUniqueWithoutProjectInput>>? upsert; + + final _i2.TaskCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.TaskUpdateWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TaskUpdateWithWhereUniqueWithoutProjectInput>>? update; + + final _i1.PrismaUnion<_i2.TaskUpdateManyWithWhereWithoutProjectInput, + Iterable<_i2.TaskUpdateManyWithWhereWithoutProjectInput>>? updateMany; + + final _i1.PrismaUnion<_i2.TaskScalarWhereInput, + Iterable<_i2.TaskScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class UserUpdateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserUpdateWithoutTimeEntriesInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.ProjectUpdateManyWithoutUserNestedInput? projects; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + }; +} + +class TaskUncheckedUpdateManyWithoutProjectNestedInput + implements _i1.JsonConvertible> { + const TaskUncheckedUpdateManyWithoutProjectNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.TaskCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TaskCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TaskUncheckedCreateWithoutProjectInput, + Iterable<_i2.TaskUncheckedCreateWithoutProjectInput>>>>? create; + + final _i1.PrismaUnion<_i2.TaskCreateOrConnectWithoutProjectInput, + Iterable<_i2.TaskCreateOrConnectWithoutProjectInput>>? connectOrCreate; + + final _i1.PrismaUnion<_i2.TaskUpsertWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TaskUpsertWithWhereUniqueWithoutProjectInput>>? upsert; + + final _i2.TaskCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.TaskWhereUniqueInput, + Iterable<_i2.TaskWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.TaskUpdateWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TaskUpdateWithWhereUniqueWithoutProjectInput>>? update; + + final _i1.PrismaUnion<_i2.TaskUpdateManyWithWhereWithoutProjectInput, + Iterable<_i2.TaskUpdateManyWithWhereWithoutProjectInput>>? updateMany; + + final _i1.PrismaUnion<_i2.TaskScalarWhereInput, + Iterable<_i2.TaskScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class TimeEntryUncheckedUpdateWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateWithoutProjectInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUpdateWithWhereUniqueWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateWithWhereUniqueWithoutProjectInput({ + required this.where, + required this.data, + }); + + final _i2.TimeEntryWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithoutProjectInput, + _i2.TimeEntryUncheckedUpdateWithoutProjectInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class TimeEntryScalarWhereInput + implements _i1.JsonConvertible> { + const TimeEntryScalarWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereInput, + Iterable<_i2.TimeEntryScalarWhereInput>>? AND; + + final Iterable<_i2.TimeEntryScalarWhereInput>? OR; + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereInput, + Iterable<_i2.TimeEntryScalarWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? startTime; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? endTime; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringFilter, String>? userId; + + final _i1.PrismaUnion<_i2.StringFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUpdateManyMutationInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateManyMutationInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUncheckedUpdateManyWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateManyWithoutProjectInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUpdateManyWithWhereWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateManyWithWhereWithoutProjectInput({ + required this.where, + required this.data, + }); + + final _i2.TimeEntryScalarWhereInput where; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateManyMutationInput, + _i2.TimeEntryUncheckedUpdateManyWithoutProjectInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class TimeEntryUncheckedUpdateManyWithoutProjectNestedInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateManyWithoutProjectNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutProjectInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutProjectInput>>>>? + create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutProjectInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutProjectInput>>? + connectOrCreate; + + final _i1.PrismaUnion<_i2.TimeEntryUpsertWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TimeEntryUpsertWithWhereUniqueWithoutProjectInput>>? upsert; + + final _i2.TimeEntryCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TimeEntryUpdateWithWhereUniqueWithoutProjectInput>>? update; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateManyWithWhereWithoutProjectInput, + Iterable<_i2.TimeEntryUpdateManyWithWhereWithoutProjectInput>>? + updateMany; + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereInput, + Iterable<_i2.TimeEntryScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class ProjectUncheckedUpdateWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateWithoutUserInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TaskUncheckedUpdateManyWithoutProjectNestedInput? tasks; + + final _i2.TimeEntryUncheckedUpdateManyWithoutProjectNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectUpdateWithWhereUniqueWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUpdateWithWhereUniqueWithoutUserInput({ + required this.where, + required this.data, + }); + + final _i2.ProjectWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.ProjectUpdateWithoutUserInput, + _i2.ProjectUncheckedUpdateWithoutUserInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class ProjectScalarWhereInput + implements _i1.JsonConvertible> { + const ProjectScalarWhereInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.ProjectScalarWhereInput, + Iterable<_i2.ProjectScalarWhereInput>>? AND; + + final Iterable<_i2.ProjectScalarWhereInput>? OR; + + final _i1.PrismaUnion<_i2.ProjectScalarWhereInput, + Iterable<_i2.ProjectScalarWhereInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringNullableFilter, + _i1.PrismaUnion>? clientId; + + final _i1.PrismaUnion<_i2.StringFilter, String>? userId; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectUpdateManyMutationInput + implements _i1.JsonConvertible> { + const ProjectUpdateManyMutationInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectUncheckedUpdateManyWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateManyWithoutUserInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectUpdateManyWithWhereWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUpdateManyWithWhereWithoutUserInput({ + required this.where, + required this.data, + }); + + final _i2.ProjectScalarWhereInput where; + + final _i1.PrismaUnion<_i2.ProjectUpdateManyMutationInput, + _i2.ProjectUncheckedUpdateManyWithoutUserInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class ProjectUncheckedUpdateManyWithoutUserNestedInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateManyWithoutUserNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.ProjectCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.ProjectCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.ProjectUncheckedCreateWithoutUserInput, + Iterable<_i2.ProjectUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.ProjectCreateOrConnectWithoutUserInput, + Iterable<_i2.ProjectCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i1.PrismaUnion<_i2.ProjectUpsertWithWhereUniqueWithoutUserInput, + Iterable<_i2.ProjectUpsertWithWhereUniqueWithoutUserInput>>? upsert; + + final _i2.ProjectCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.ProjectUpdateWithWhereUniqueWithoutUserInput, + Iterable<_i2.ProjectUpdateWithWhereUniqueWithoutUserInput>>? update; + + final _i1.PrismaUnion<_i2.ProjectUpdateManyWithWhereWithoutUserInput, + Iterable<_i2.ProjectUpdateManyWithWhereWithoutUserInput>>? updateMany; + + final _i1.PrismaUnion<_i2.ProjectScalarWhereInput, + Iterable<_i2.ProjectScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class UserUncheckedUpdateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserUncheckedUpdateWithoutTimeEntriesInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.ProjectUncheckedUpdateManyWithoutUserNestedInput? projects; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + }; +} + +class UserUpsertWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserUpsertWithoutTimeEntriesInput({ + required this.update, + required this.create, + this.where, + }); + + final _i1.PrismaUnion<_i2.UserUpdateWithoutTimeEntriesInput, + _i2.UserUncheckedUpdateWithoutTimeEntriesInput> update; + + final _i1.PrismaUnion<_i2.UserCreateWithoutTimeEntriesInput, + _i2.UserUncheckedCreateWithoutTimeEntriesInput> create; + + final _i2.UserWhereInput? where; + + @override + Map toJson() => { + 'update': update, + 'create': create, + 'where': where, + }; +} + +class UserUpdateToOneWithWhereWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const UserUpdateToOneWithWhereWithoutTimeEntriesInput({ + this.where, + required this.data, + }); + + final _i2.UserWhereInput? where; + + final _i1.PrismaUnion<_i2.UserUpdateWithoutTimeEntriesInput, + _i2.UserUncheckedUpdateWithoutTimeEntriesInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class UserUpdateOneRequiredWithoutTimeEntriesNestedInput + implements _i1.JsonConvertible> { + const UserUpdateOneRequiredWithoutTimeEntriesNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.connect, + this.update, + }); + + final _i1.PrismaUnion<_i2.UserCreateWithoutTimeEntriesInput, + _i2.UserUncheckedCreateWithoutTimeEntriesInput>? create; + + final _i2.UserCreateOrConnectWithoutTimeEntriesInput? connectOrCreate; + + final _i2.UserUpsertWithoutTimeEntriesInput? upsert; + + final _i2.UserWhereUniqueInput? connect; + + final _i1.PrismaUnion< + _i2.UserUpdateToOneWithWhereWithoutTimeEntriesInput, + _i1.PrismaUnion<_i2.UserUpdateWithoutTimeEntriesInput, + _i2.UserUncheckedUpdateWithoutTimeEntriesInput>>? update; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'connect': connect, + 'update': update, + }; +} + +class TimeEntryUpdateWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateWithoutProjectInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.createdAt, + this.updatedAt, + this.user, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.UserUpdateOneRequiredWithoutTimeEntriesNestedInput? user; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + }; +} + +class TimeEntryUpsertWithWhereUniqueWithoutProjectInput + implements _i1.JsonConvertible> { + const TimeEntryUpsertWithWhereUniqueWithoutProjectInput({ + required this.where, + required this.update, + required this.create, + }); + + final _i2.TimeEntryWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithoutProjectInput, + _i2.TimeEntryUncheckedUpdateWithoutProjectInput> update; + + final _i1.PrismaUnion<_i2.TimeEntryCreateWithoutProjectInput, + _i2.TimeEntryUncheckedCreateWithoutProjectInput> create; + + @override + Map toJson() => { + 'where': where, + 'update': update, + 'create': create, + }; +} + +class TimeEntryUpdateManyWithoutProjectNestedInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateManyWithoutProjectNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutProjectInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutProjectInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutProjectInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutProjectInput>>>>? + create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutProjectInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutProjectInput>>? + connectOrCreate; + + final _i1.PrismaUnion<_i2.TimeEntryUpsertWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TimeEntryUpsertWithWhereUniqueWithoutProjectInput>>? upsert; + + final _i2.TimeEntryCreateManyProjectInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithWhereUniqueWithoutProjectInput, + Iterable<_i2.TimeEntryUpdateWithWhereUniqueWithoutProjectInput>>? update; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateManyWithWhereWithoutProjectInput, + Iterable<_i2.TimeEntryUpdateManyWithWhereWithoutProjectInput>>? + updateMany; + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereInput, + Iterable<_i2.TimeEntryScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class ProjectUpdateWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUpdateWithoutUserInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TaskUpdateManyWithoutProjectNestedInput? tasks; + + final _i2.TimeEntryUpdateManyWithoutProjectNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectUpsertWithWhereUniqueWithoutUserInput + implements _i1.JsonConvertible> { + const ProjectUpsertWithWhereUniqueWithoutUserInput({ + required this.where, + required this.update, + required this.create, + }); + + final _i2.ProjectWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.ProjectUpdateWithoutUserInput, + _i2.ProjectUncheckedUpdateWithoutUserInput> update; + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutUserInput, + _i2.ProjectUncheckedCreateWithoutUserInput> create; + + @override + Map toJson() => { + 'where': where, + 'update': update, + 'create': create, + }; +} + +class ProjectUpdateManyWithoutUserNestedInput + implements _i1.JsonConvertible> { + const ProjectUpdateManyWithoutUserNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.ProjectCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.ProjectCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.ProjectUncheckedCreateWithoutUserInput, + Iterable<_i2.ProjectUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.ProjectCreateOrConnectWithoutUserInput, + Iterable<_i2.ProjectCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i1.PrismaUnion<_i2.ProjectUpsertWithWhereUniqueWithoutUserInput, + Iterable<_i2.ProjectUpsertWithWhereUniqueWithoutUserInput>>? upsert; + + final _i2.ProjectCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.ProjectWhereUniqueInput, + Iterable<_i2.ProjectWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.ProjectUpdateWithWhereUniqueWithoutUserInput, + Iterable<_i2.ProjectUpdateWithWhereUniqueWithoutUserInput>>? update; + + final _i1.PrismaUnion<_i2.ProjectUpdateManyWithWhereWithoutUserInput, + Iterable<_i2.ProjectUpdateManyWithWhereWithoutUserInput>>? updateMany; + + final _i1.PrismaUnion<_i2.ProjectScalarWhereInput, + Iterable<_i2.ProjectScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class UserUpdateWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserUpdateWithoutProjectsInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TimeEntryUpdateManyWithoutUserNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + }; +} + +class TimeEntryUncheckedUpdateWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateWithoutUserInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + projectId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUpdateWithWhereUniqueWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateWithWhereUniqueWithoutUserInput({ + required this.where, + required this.data, + }); + + final _i2.TimeEntryWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithoutUserInput, + _i2.TimeEntryUncheckedUpdateWithoutUserInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class TimeEntryUncheckedUpdateManyWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateManyWithoutUserInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + projectId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUpdateManyWithWhereWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateManyWithWhereWithoutUserInput({ + required this.where, + required this.data, + }); + + final _i2.TimeEntryScalarWhereInput where; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateManyMutationInput, + _i2.TimeEntryUncheckedUpdateManyWithoutUserInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class TimeEntryUncheckedUpdateManyWithoutUserNestedInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateManyWithoutUserNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutUserInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutUserInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i1.PrismaUnion<_i2.TimeEntryUpsertWithWhereUniqueWithoutUserInput, + Iterable<_i2.TimeEntryUpsertWithWhereUniqueWithoutUserInput>>? upsert; + + final _i2.TimeEntryCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithWhereUniqueWithoutUserInput, + Iterable<_i2.TimeEntryUpdateWithWhereUniqueWithoutUserInput>>? update; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateManyWithWhereWithoutUserInput, + Iterable<_i2.TimeEntryUpdateManyWithWhereWithoutUserInput>>? updateMany; + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereInput, + Iterable<_i2.TimeEntryScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class UserUncheckedUpdateWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserUncheckedUpdateWithoutProjectsInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TimeEntryUncheckedUpdateManyWithoutUserNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + }; +} + +class UserUpsertWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserUpsertWithoutProjectsInput({ + required this.update, + required this.create, + this.where, + }); + + final _i1.PrismaUnion<_i2.UserUpdateWithoutProjectsInput, + _i2.UserUncheckedUpdateWithoutProjectsInput> update; + + final _i1.PrismaUnion<_i2.UserCreateWithoutProjectsInput, + _i2.UserUncheckedCreateWithoutProjectsInput> create; + + final _i2.UserWhereInput? where; + + @override + Map toJson() => { + 'update': update, + 'create': create, + 'where': where, + }; +} + +class UserUpdateToOneWithWhereWithoutProjectsInput + implements _i1.JsonConvertible> { + const UserUpdateToOneWithWhereWithoutProjectsInput({ + this.where, + required this.data, + }); + + final _i2.UserWhereInput? where; + + final _i1.PrismaUnion<_i2.UserUpdateWithoutProjectsInput, + _i2.UserUncheckedUpdateWithoutProjectsInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class UserUpdateOneRequiredWithoutProjectsNestedInput + implements _i1.JsonConvertible> { + const UserUpdateOneRequiredWithoutProjectsNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.connect, + this.update, + }); + + final _i1.PrismaUnion<_i2.UserCreateWithoutProjectsInput, + _i2.UserUncheckedCreateWithoutProjectsInput>? create; + + final _i2.UserCreateOrConnectWithoutProjectsInput? connectOrCreate; + + final _i2.UserUpsertWithoutProjectsInput? upsert; + + final _i2.UserWhereUniqueInput? connect; + + final _i1.PrismaUnion< + _i2.UserUpdateToOneWithWhereWithoutProjectsInput, + _i1.PrismaUnion<_i2.UserUpdateWithoutProjectsInput, + _i2.UserUncheckedUpdateWithoutProjectsInput>>? update; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'connect': connect, + 'update': update, + }; +} + +class ProjectUpdateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectUpdateWithoutTimeEntriesInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.user, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TaskUpdateManyWithoutProjectNestedInput? tasks; + + final _i2.UserUpdateOneRequiredWithoutProjectsNestedInput? user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'user': user, + }; +} + +class ProjectUncheckedUpdateWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateWithoutTimeEntriesInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TaskUncheckedUpdateManyWithoutProjectNestedInput? tasks; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + }; +} + +class ProjectUpsertWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectUpsertWithoutTimeEntriesInput({ + required this.update, + required this.create, + this.where, + }); + + final _i1.PrismaUnion<_i2.ProjectUpdateWithoutTimeEntriesInput, + _i2.ProjectUncheckedUpdateWithoutTimeEntriesInput> update; + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTimeEntriesInput, + _i2.ProjectUncheckedCreateWithoutTimeEntriesInput> create; + + final _i2.ProjectWhereInput? where; + + @override + Map toJson() => { + 'update': update, + 'create': create, + 'where': where, + }; +} + +class ProjectUpdateToOneWithWhereWithoutTimeEntriesInput + implements _i1.JsonConvertible> { + const ProjectUpdateToOneWithWhereWithoutTimeEntriesInput({ + this.where, + required this.data, + }); + + final _i2.ProjectWhereInput? where; + + final _i1.PrismaUnion<_i2.ProjectUpdateWithoutTimeEntriesInput, + _i2.ProjectUncheckedUpdateWithoutTimeEntriesInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class ProjectUpdateOneRequiredWithoutTimeEntriesNestedInput + implements _i1.JsonConvertible> { + const ProjectUpdateOneRequiredWithoutTimeEntriesNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.connect, + this.update, + }); + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTimeEntriesInput, + _i2.ProjectUncheckedCreateWithoutTimeEntriesInput>? create; + + final _i2.ProjectCreateOrConnectWithoutTimeEntriesInput? connectOrCreate; + + final _i2.ProjectUpsertWithoutTimeEntriesInput? upsert; + + final _i2.ProjectWhereUniqueInput? connect; + + final _i1.PrismaUnion< + _i2.ProjectUpdateToOneWithWhereWithoutTimeEntriesInput, + _i1.PrismaUnion<_i2.ProjectUpdateWithoutTimeEntriesInput, + _i2.ProjectUncheckedUpdateWithoutTimeEntriesInput>>? update; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'connect': connect, + 'update': update, + }; +} + +class TimeEntryUpdateWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateWithoutUserInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.createdAt, + this.updatedAt, + this.project, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.ProjectUpdateOneRequiredWithoutTimeEntriesNestedInput? project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class TimeEntryUpsertWithWhereUniqueWithoutUserInput + implements _i1.JsonConvertible> { + const TimeEntryUpsertWithWhereUniqueWithoutUserInput({ + required this.where, + required this.update, + required this.create, + }); + + final _i2.TimeEntryWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithoutUserInput, + _i2.TimeEntryUncheckedUpdateWithoutUserInput> update; + + final _i1.PrismaUnion<_i2.TimeEntryCreateWithoutUserInput, + _i2.TimeEntryUncheckedCreateWithoutUserInput> create; + + @override + Map toJson() => { + 'where': where, + 'update': update, + 'create': create, + }; +} + +class TimeEntryUpdateManyWithoutUserNestedInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateManyWithoutUserNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.createMany, + this.set, + this.disconnect, + this.delete, + this.connect, + this.update, + this.updateMany, + this.deleteMany, + }); + + final _i1.PrismaUnion< + _i2.TimeEntryCreateWithoutUserInput, + _i1.PrismaUnion< + Iterable<_i2.TimeEntryCreateWithoutUserInput>, + _i1.PrismaUnion<_i2.TimeEntryUncheckedCreateWithoutUserInput, + Iterable<_i2.TimeEntryUncheckedCreateWithoutUserInput>>>>? create; + + final _i1.PrismaUnion<_i2.TimeEntryCreateOrConnectWithoutUserInput, + Iterable<_i2.TimeEntryCreateOrConnectWithoutUserInput>>? connectOrCreate; + + final _i1.PrismaUnion<_i2.TimeEntryUpsertWithWhereUniqueWithoutUserInput, + Iterable<_i2.TimeEntryUpsertWithWhereUniqueWithoutUserInput>>? upsert; + + final _i2.TimeEntryCreateManyUserInputEnvelope? createMany; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? set; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? disconnect; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? delete; + + final _i1.PrismaUnion<_i2.TimeEntryWhereUniqueInput, + Iterable<_i2.TimeEntryWhereUniqueInput>>? connect; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateWithWhereUniqueWithoutUserInput, + Iterable<_i2.TimeEntryUpdateWithWhereUniqueWithoutUserInput>>? update; + + final _i1.PrismaUnion<_i2.TimeEntryUpdateManyWithWhereWithoutUserInput, + Iterable<_i2.TimeEntryUpdateManyWithWhereWithoutUserInput>>? updateMany; + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereInput, + Iterable<_i2.TimeEntryScalarWhereInput>>? deleteMany; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'createMany': createMany, + 'set': set, + 'disconnect': disconnect, + 'delete': delete, + 'connect': connect, + 'update': update, + 'updateMany': updateMany, + 'deleteMany': deleteMany, + }; +} + +class UserUpdateInput implements _i1.JsonConvertible> { + const UserUpdateInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.ProjectUpdateManyWithoutUserNestedInput? projects; + + final _i2.TimeEntryUpdateManyWithoutUserNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class UserUncheckedUpdateInput + implements _i1.JsonConvertible> { + const UserUncheckedUpdateInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.projects, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.ProjectUncheckedUpdateManyWithoutUserNestedInput? projects; + + final _i2.TimeEntryUncheckedUpdateManyWithoutUserNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'projects': projects, + 'timeEntries': timeEntries, + }; +} + +class UserUpdateManyMutationInput + implements _i1.JsonConvertible> { + const UserUpdateManyMutationInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserUncheckedUpdateManyInput + implements _i1.JsonConvertible> { + const UserUncheckedUpdateManyInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion? email; + + final _i1.PrismaUnion? password; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserCountAggregateOutputType { + const UserCountAggregateOutputType({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.$all, + }); + + factory UserCountAggregateOutputType.fromJson(Map json) => + UserCountAggregateOutputType( + id: json['id'], + name: json['name'], + email: json['email'], + password: json['password'], + createdAt: json['createdAt'], + updatedAt: json['updatedAt'], + $all: json['_all'], + ); + + final int? id; + + final int? name; + + final int? email; + + final int? password; + + final int? createdAt; + + final int? updatedAt; + + final int? $all; + + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class UserMinAggregateOutputType { + const UserMinAggregateOutputType({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + factory UserMinAggregateOutputType.fromJson(Map json) => + UserMinAggregateOutputType( + id: json['id'], + name: json['name'], + email: json['email'], + password: json['password'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? email; + + final String? password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class UserMaxAggregateOutputType { + const UserMaxAggregateOutputType({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + factory UserMaxAggregateOutputType.fromJson(Map json) => + UserMaxAggregateOutputType( + id: json['id'], + name: json['name'], + email: json['email'], + password: json['password'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? email; + + final String? password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class UserGroupByOutputType { + const UserGroupByOutputType({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + factory UserGroupByOutputType.fromJson(Map json) => UserGroupByOutputType( + id: json['id'], + name: json['name'], + email: json['email'], + password: json['password'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + $count: json['_count'] is Map + ? _i2.UserCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.UserMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.UserMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final String? id; + + final String? name; + + final String? email; + + final String? password; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.UserCountAggregateOutputType? $count; + + final _i2.UserMinAggregateOutputType? $min; + + final _i2.UserMaxAggregateOutputType? $max; + + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class UserCountOrderByAggregateInput + implements _i1.JsonConvertible> { + const UserCountOrderByAggregateInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? email; + + final _i2.SortOrder? password; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserMaxOrderByAggregateInput + implements _i1.JsonConvertible> { + const UserMaxOrderByAggregateInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? email; + + final _i2.SortOrder? password; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserMinOrderByAggregateInput + implements _i1.JsonConvertible> { + const UserMinOrderByAggregateInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? email; + + final _i2.SortOrder? password; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserOrderByWithAggregationInput + implements _i1.JsonConvertible> { + const UserOrderByWithAggregationInput({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.$count, + this.$max, + this.$min, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? email; + + final _i2.SortOrder? password; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.UserCountOrderByAggregateInput? $count; + + final _i2.UserMaxOrderByAggregateInput? $max; + + final _i2.UserMinOrderByAggregateInput? $min; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_max': $max, + '_min': $min, + }; +} + +class NestedIntFilter implements _i1.JsonConvertible> { + const NestedIntFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.not, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? $in; + + final _i1.PrismaUnion, _i1.Reference>>? notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'not': not, + }; +} + +class NestedStringWithAggregatesFilter + implements _i1.JsonConvertible> { + const NestedStringWithAggregatesFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.not, + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i1.PrismaUnion? not; + + final _i2.NestedIntFilter? $count; + + final _i2.NestedStringFilter? $min; + + final _i2.NestedStringFilter? $max; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'not': not, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class StringWithAggregatesFilter + implements _i1.JsonConvertible> { + const StringWithAggregatesFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.mode, + this.not, + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i2.QueryMode? mode; + + final _i1.PrismaUnion? not; + + final _i2.NestedIntFilter? $count; + + final _i2.NestedStringFilter? $min; + + final _i2.NestedStringFilter? $max; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'mode': mode, + 'not': not, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class NestedDateTimeWithAggregatesFilter + implements _i1.JsonConvertible> { + const NestedDateTimeWithAggregatesFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.not, + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? + $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion? not; + + final _i2.NestedIntFilter? $count; + + final _i2.NestedDateTimeFilter? $min; + + final _i2.NestedDateTimeFilter? $max; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'not': not, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class DateTimeWithAggregatesFilter + implements _i1.JsonConvertible> { + const DateTimeWithAggregatesFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.not, + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion>? equals; + + final _i1.PrismaUnion, _i1.Reference>>? + $in; + + final _i1.PrismaUnion, _i1.Reference>>? + notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion? not; + + final _i2.NestedIntFilter? $count; + + final _i2.NestedDateTimeFilter? $min; + + final _i2.NestedDateTimeFilter? $max; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'not': not, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class UserScalarWhereWithAggregatesInput + implements _i1.JsonConvertible> { + const UserScalarWhereWithAggregatesInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.UserScalarWhereWithAggregatesInput, + Iterable<_i2.UserScalarWhereWithAggregatesInput>>? AND; + + final Iterable<_i2.UserScalarWhereWithAggregatesInput>? OR; + + final _i1.PrismaUnion<_i2.UserScalarWhereWithAggregatesInput, + Iterable<_i2.UserScalarWhereWithAggregatesInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? email; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? password; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserCountAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const UserCountAggregateOutputTypeSelect({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.$all, + }); + + final bool? id; + + final bool? name; + + final bool? email; + + final bool? password; + + final bool? createdAt; + + final bool? updatedAt; + + final bool? $all; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class UserGroupByOutputTypeCountArgs + implements _i1.JsonConvertible> { + const UserGroupByOutputTypeCountArgs({this.select}); + + final _i2.UserCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class UserMinAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const UserMinAggregateOutputTypeSelect({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? email; + + final bool? password; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserGroupByOutputTypeMinArgs + implements _i1.JsonConvertible> { + const UserGroupByOutputTypeMinArgs({this.select}); + + final _i2.UserMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class UserMaxAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const UserMaxAggregateOutputTypeSelect({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? email; + + final bool? password; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class UserGroupByOutputTypeMaxArgs + implements _i1.JsonConvertible> { + const UserGroupByOutputTypeMaxArgs({this.select}); + + final _i2.UserMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class UserGroupByOutputTypeSelect + implements _i1.JsonConvertible> { + const UserGroupByOutputTypeSelect({ + this.id, + this.name, + this.email, + this.password, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + final bool? id; + + final bool? name; + + final bool? email; + + final bool? password; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'email': email, + 'password': password, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class AggregateUser { + const AggregateUser({ + this.$count, + this.$min, + this.$max, + }); + + factory AggregateUser.fromJson(Map json) => AggregateUser( + $count: json['_count'] is Map + ? _i2.UserCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.UserMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.UserMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final _i2.UserCountAggregateOutputType? $count; + + final _i2.UserMinAggregateOutputType? $min; + + final _i2.UserMaxAggregateOutputType? $max; + + Map toJson() => { + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class AggregateUserCountArgs + implements _i1.JsonConvertible> { + const AggregateUserCountArgs({this.select}); + + final _i2.UserCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateUserMinArgs + implements _i1.JsonConvertible> { + const AggregateUserMinArgs({this.select}); + + final _i2.UserMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateUserMaxArgs + implements _i1.JsonConvertible> { + const AggregateUserMaxArgs({this.select}); + + final _i2.UserMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateUserSelect implements _i1.JsonConvertible> { + const AggregateUserSelect({ + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class ProjectCreateInput implements _i1.JsonConvertible> { + const ProjectCreateInput({ + this.id, + required this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + required this.user, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskCreateNestedManyWithoutProjectInput? tasks; + + final _i2.TimeEntryCreateNestedManyWithoutProjectInput? timeEntries; + + final _i2.UserCreateNestedOneWithoutProjectsInput user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +class ProjectUncheckedCreateInput + implements _i1.JsonConvertible> { + const ProjectUncheckedCreateInput({ + this.id, + required this.name, + this.description, + this.clientId, + required this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final String userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskUncheckedCreateNestedManyWithoutProjectInput? tasks; + + final _i2.TimeEntryUncheckedCreateNestedManyWithoutProjectInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectCreateManyInput + implements _i1.JsonConvertible> { + const ProjectCreateManyInput({ + this.id, + required this.name, + this.description, + this.clientId, + required this.userId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final String userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class CreateManyProjectAndReturnOutputTypeUserArgs + implements _i1.JsonConvertible> { + const CreateManyProjectAndReturnOutputTypeUserArgs({ + this.select, + this.include, + }); + + final _i2.UserSelect? select; + + final _i2.UserInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class CreateManyProjectAndReturnOutputTypeSelect + implements _i1.JsonConvertible> { + const CreateManyProjectAndReturnOutputTypeSelect({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.user, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? clientId; + + final bool? userId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? + user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + }; +} + +class CreateManyProjectAndReturnOutputTypeInclude + implements _i1.JsonConvertible> { + const CreateManyProjectAndReturnOutputTypeInclude({this.user}); + + final _i1.PrismaUnion? + user; + + @override + Map toJson() => {'user': user}; +} + +class ProjectUpdateInput implements _i1.JsonConvertible> { + const ProjectUpdateInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + this.user, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TaskUpdateManyWithoutProjectNestedInput? tasks; + + final _i2.TimeEntryUpdateManyWithoutProjectNestedInput? timeEntries; + + final _i2.UserUpdateOneRequiredWithoutProjectsNestedInput? user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +class ProjectUncheckedUpdateInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.tasks, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TaskUncheckedUpdateManyWithoutProjectNestedInput? tasks; + + final _i2.TimeEntryUncheckedUpdateManyWithoutProjectNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'tasks': tasks, + 'timeEntries': timeEntries, + }; +} + +class ProjectUncheckedUpdateManyInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateManyInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectCountAggregateOutputType { + const ProjectCountAggregateOutputType({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.$all, + }); + + factory ProjectCountAggregateOutputType.fromJson(Map json) => + ProjectCountAggregateOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + clientId: json['clientId'], + userId: json['userId'], + createdAt: json['createdAt'], + updatedAt: json['updatedAt'], + $all: json['_all'], + ); + + final int? id; + + final int? name; + + final int? description; + + final int? clientId; + + final int? userId; + + final int? createdAt; + + final int? updatedAt; + + final int? $all; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class ProjectMinAggregateOutputType { + const ProjectMinAggregateOutputType({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + factory ProjectMinAggregateOutputType.fromJson(Map json) => + ProjectMinAggregateOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + clientId: json['clientId'], + userId: json['userId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? clientId; + + final String? userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class ProjectMaxAggregateOutputType { + const ProjectMaxAggregateOutputType({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + factory ProjectMaxAggregateOutputType.fromJson(Map json) => + ProjectMaxAggregateOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + clientId: json['clientId'], + userId: json['userId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? clientId; + + final String? userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class ProjectGroupByOutputType { + const ProjectGroupByOutputType({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + factory ProjectGroupByOutputType.fromJson(Map json) => + ProjectGroupByOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + clientId: json['clientId'], + userId: json['userId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + $count: json['_count'] is Map + ? _i2.ProjectCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.ProjectMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.ProjectMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? clientId; + + final String? userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectCountAggregateOutputType? $count; + + final _i2.ProjectMinAggregateOutputType? $min; + + final _i2.ProjectMaxAggregateOutputType? $max; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class ProjectCountOrderByAggregateInput + implements _i1.JsonConvertible> { + const ProjectCountOrderByAggregateInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? description; + + final _i2.SortOrder? clientId; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectMaxOrderByAggregateInput + implements _i1.JsonConvertible> { + const ProjectMaxOrderByAggregateInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? description; + + final _i2.SortOrder? clientId; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectMinOrderByAggregateInput + implements _i1.JsonConvertible> { + const ProjectMinOrderByAggregateInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? description; + + final _i2.SortOrder? clientId; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectOrderByWithAggregationInput + implements _i1.JsonConvertible> { + const ProjectOrderByWithAggregationInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.$count, + this.$max, + this.$min, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? description; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? clientId; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.ProjectCountOrderByAggregateInput? $count; + + final _i2.ProjectMaxOrderByAggregateInput? $max; + + final _i2.ProjectMinOrderByAggregateInput? $min; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_max': $max, + '_min': $min, + }; +} + +class NestedIntNullableFilter + implements _i1.JsonConvertible> { + const NestedIntNullableFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.not, + }); + + final _i1 + .PrismaUnion, _i1.PrismaNull>>? + equals; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? $in; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? not; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'not': not, + }; +} + +class NestedStringNullableWithAggregatesFilter + implements _i1.JsonConvertible> { + const NestedStringNullableWithAggregatesFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.not, + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion, _i1.PrismaNull>>? equals; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? $in; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NestedStringNullableWithAggregatesFilter, + _i1.PrismaNull>>? not; + + final _i2.NestedIntNullableFilter? $count; + + final _i2.NestedStringNullableFilter? $min; + + final _i2.NestedStringNullableFilter? $max; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'not': not, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class StringNullableWithAggregatesFilter + implements _i1.JsonConvertible> { + const StringNullableWithAggregatesFilter({ + this.equals, + this.$in, + this.notIn, + this.lt, + this.lte, + this.gt, + this.gte, + this.contains, + this.startsWith, + this.endsWith, + this.mode, + this.not, + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion, _i1.PrismaNull>>? equals; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? $in; + + final _i1.PrismaUnion, + _i1.PrismaUnion<_i1.Reference>, _i1.PrismaNull>>? notIn; + + final _i1.PrismaUnion>? lt; + + final _i1.PrismaUnion>? lte; + + final _i1.PrismaUnion>? gt; + + final _i1.PrismaUnion>? gte; + + final _i1.PrismaUnion>? contains; + + final _i1.PrismaUnion>? startsWith; + + final _i1.PrismaUnion>? endsWith; + + final _i2.QueryMode? mode; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NestedStringNullableWithAggregatesFilter, + _i1.PrismaNull>>? not; + + final _i2.NestedIntNullableFilter? $count; + + final _i2.NestedStringNullableFilter? $min; + + final _i2.NestedStringNullableFilter? $max; + + @override + Map toJson() => { + 'equals': equals, + 'in': $in, + 'notIn': notIn, + 'lt': lt, + 'lte': lte, + 'gt': gt, + 'gte': gte, + 'contains': contains, + 'startsWith': startsWith, + 'endsWith': endsWith, + 'mode': mode, + 'not': not, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class ProjectScalarWhereWithAggregatesInput + implements _i1.JsonConvertible> { + const ProjectScalarWhereWithAggregatesInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.ProjectScalarWhereWithAggregatesInput, + Iterable<_i2.ProjectScalarWhereWithAggregatesInput>>? AND; + + final Iterable<_i2.ProjectScalarWhereWithAggregatesInput>? OR; + + final _i1.PrismaUnion<_i2.ProjectScalarWhereWithAggregatesInput, + Iterable<_i2.ProjectScalarWhereWithAggregatesInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableWithAggregatesFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringNullableWithAggregatesFilter, + _i1.PrismaUnion>? clientId; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? userId; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectCountAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const ProjectCountAggregateOutputTypeSelect({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.$all, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? clientId; + + final bool? userId; + + final bool? createdAt; + + final bool? updatedAt; + + final bool? $all; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class ProjectGroupByOutputTypeCountArgs + implements _i1.JsonConvertible> { + const ProjectGroupByOutputTypeCountArgs({this.select}); + + final _i2.ProjectCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class ProjectMinAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const ProjectMinAggregateOutputTypeSelect({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? clientId; + + final bool? userId; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectGroupByOutputTypeMinArgs + implements _i1.JsonConvertible> { + const ProjectGroupByOutputTypeMinArgs({this.select}); + + final _i2.ProjectMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class ProjectMaxAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const ProjectMaxAggregateOutputTypeSelect({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? clientId; + + final bool? userId; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class ProjectGroupByOutputTypeMaxArgs + implements _i1.JsonConvertible> { + const ProjectGroupByOutputTypeMaxArgs({this.select}); + + final _i2.ProjectMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class ProjectGroupByOutputTypeSelect + implements _i1.JsonConvertible> { + const ProjectGroupByOutputTypeSelect({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? clientId; + + final bool? userId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class AggregateProject { + const AggregateProject({ + this.$count, + this.$min, + this.$max, + }); + + factory AggregateProject.fromJson(Map json) => AggregateProject( + $count: json['_count'] is Map + ? _i2.ProjectCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.ProjectMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.ProjectMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final _i2.ProjectCountAggregateOutputType? $count; + + final _i2.ProjectMinAggregateOutputType? $min; + + final _i2.ProjectMaxAggregateOutputType? $max; + + Map toJson() => { + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class AggregateProjectCountArgs + implements _i1.JsonConvertible> { + const AggregateProjectCountArgs({this.select}); + + final _i2.ProjectCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateProjectMinArgs + implements _i1.JsonConvertible> { + const AggregateProjectMinArgs({this.select}); + + final _i2.ProjectMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateProjectMaxArgs + implements _i1.JsonConvertible> { + const AggregateProjectMaxArgs({this.select}); + + final _i2.ProjectMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateProjectSelect + implements _i1.JsonConvertible> { + const AggregateProjectSelect({ + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class TimeEntryCreateInput + implements _i1.JsonConvertible> { + const TimeEntryCreateInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + this.createdAt, + this.updatedAt, + required this.user, + required this.project, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.UserCreateNestedOneWithoutTimeEntriesInput user; + + final _i2.ProjectCreateNestedOneWithoutTimeEntriesInput project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +class TimeEntryUncheckedCreateInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedCreateInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + required this.userId, + required this.projectId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final String userId; + + final String projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCreateManyInput + implements _i1.JsonConvertible> { + const TimeEntryCreateManyInput({ + this.id, + required this.startTime, + required this.endTime, + this.description, + required this.userId, + required this.projectId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final DateTime startTime; + + final DateTime endTime; + + final _i1.PrismaUnion? description; + + final String userId; + + final String projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class CreateManyTimeEntryAndReturnOutputTypeUserArgs + implements _i1.JsonConvertible> { + const CreateManyTimeEntryAndReturnOutputTypeUserArgs({ + this.select, + this.include, + }); + + final _i2.UserSelect? select; + + final _i2.UserInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class CreateManyTimeEntryAndReturnOutputTypeProjectArgs + implements _i1.JsonConvertible> { + const CreateManyTimeEntryAndReturnOutputTypeProjectArgs({ + this.select, + this.include, + }); + + final _i2.ProjectSelect? select; + + final _i2.ProjectInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class CreateManyTimeEntryAndReturnOutputTypeSelect + implements _i1.JsonConvertible> { + const CreateManyTimeEntryAndReturnOutputTypeSelect({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + final bool? id; + + final bool? startTime; + + final bool? endTime; + + final bool? description; + + final bool? userId; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1 + .PrismaUnion? + user; + + final _i1 + .PrismaUnion? + project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +class CreateManyTimeEntryAndReturnOutputTypeInclude + implements _i1.JsonConvertible> { + const CreateManyTimeEntryAndReturnOutputTypeInclude({ + this.user, + this.project, + }); + + final _i1 + .PrismaUnion? + user; + + final _i1 + .PrismaUnion? + project; + + @override + Map toJson() => { + 'user': user, + 'project': project, + }; +} + +class TimeEntryUpdateInput + implements _i1.JsonConvertible> { + const TimeEntryUpdateInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.createdAt, + this.updatedAt, + this.user, + this.project, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.UserUpdateOneRequiredWithoutTimeEntriesNestedInput? user; + + final _i2.ProjectUpdateOneRequiredWithoutTimeEntriesNestedInput? project; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'user': user, + 'project': project, + }; +} + +class TimeEntryUncheckedUpdateInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + projectId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryUncheckedUpdateManyInput + implements _i1.JsonConvertible> { + const TimeEntryUncheckedUpdateManyInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? + startTime; + + final _i1.PrismaUnion? + endTime; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + projectId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCountAggregateOutputType { + const TimeEntryCountAggregateOutputType({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.$all, + }); + + factory TimeEntryCountAggregateOutputType.fromJson(Map json) => + TimeEntryCountAggregateOutputType( + id: json['id'], + startTime: json['startTime'], + endTime: json['endTime'], + description: json['description'], + userId: json['userId'], + projectId: json['projectId'], + createdAt: json['createdAt'], + updatedAt: json['updatedAt'], + $all: json['_all'], + ); + + final int? id; + + final int? startTime; + + final int? endTime; + + final int? description; + + final int? userId; + + final int? projectId; + + final int? createdAt; + + final int? updatedAt; + + final int? $all; + + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class TimeEntryMinAggregateOutputType { + const TimeEntryMinAggregateOutputType({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + factory TimeEntryMinAggregateOutputType.fromJson(Map json) => + TimeEntryMinAggregateOutputType( + id: json['id'], + startTime: switch (json['startTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['startTime'] + }, + endTime: switch (json['endTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['endTime'] + }, + description: json['description'], + userId: json['userId'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final DateTime? startTime; + + final DateTime? endTime; + + final String? description; + + final String? userId; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'startTime': startTime?.toIso8601String(), + 'endTime': endTime?.toIso8601String(), + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class TimeEntryMaxAggregateOutputType { + const TimeEntryMaxAggregateOutputType({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + factory TimeEntryMaxAggregateOutputType.fromJson(Map json) => + TimeEntryMaxAggregateOutputType( + id: json['id'], + startTime: switch (json['startTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['startTime'] + }, + endTime: switch (json['endTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['endTime'] + }, + description: json['description'], + userId: json['userId'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final DateTime? startTime; + + final DateTime? endTime; + + final String? description; + + final String? userId; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'startTime': startTime?.toIso8601String(), + 'endTime': endTime?.toIso8601String(), + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class TimeEntryGroupByOutputType { + const TimeEntryGroupByOutputType({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + factory TimeEntryGroupByOutputType.fromJson(Map json) => + TimeEntryGroupByOutputType( + id: json['id'], + startTime: switch (json['startTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['startTime'] + }, + endTime: switch (json['endTime']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['endTime'] + }, + description: json['description'], + userId: json['userId'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + $count: json['_count'] is Map + ? _i2.TimeEntryCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.TimeEntryMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.TimeEntryMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final String? id; + + final DateTime? startTime; + + final DateTime? endTime; + + final String? description; + + final String? userId; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TimeEntryCountAggregateOutputType? $count; + + final _i2.TimeEntryMinAggregateOutputType? $min; + + final _i2.TimeEntryMaxAggregateOutputType? $max; + + Map toJson() => { + 'id': id, + 'startTime': startTime?.toIso8601String(), + 'endTime': endTime?.toIso8601String(), + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class TimeEntryCountOrderByAggregateInput + implements _i1.JsonConvertible> { + const TimeEntryCountOrderByAggregateInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? startTime; + + final _i2.SortOrder? endTime; + + final _i2.SortOrder? description; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryMaxOrderByAggregateInput + implements _i1.JsonConvertible> { + const TimeEntryMaxOrderByAggregateInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? startTime; + + final _i2.SortOrder? endTime; + + final _i2.SortOrder? description; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryMinOrderByAggregateInput + implements _i1.JsonConvertible> { + const TimeEntryMinOrderByAggregateInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? startTime; + + final _i2.SortOrder? endTime; + + final _i2.SortOrder? description; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryOrderByWithAggregationInput + implements _i1.JsonConvertible> { + const TimeEntryOrderByWithAggregationInput({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.$count, + this.$max, + this.$min, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? startTime; + + final _i2.SortOrder? endTime; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? description; + + final _i2.SortOrder? userId; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.TimeEntryCountOrderByAggregateInput? $count; + + final _i2.TimeEntryMaxOrderByAggregateInput? $max; + + final _i2.TimeEntryMinOrderByAggregateInput? $min; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_max': $max, + '_min': $min, + }; +} + +class TimeEntryScalarWhereWithAggregatesInput + implements _i1.JsonConvertible> { + const TimeEntryScalarWhereWithAggregatesInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereWithAggregatesInput, + Iterable<_i2.TimeEntryScalarWhereWithAggregatesInput>>? AND; + + final Iterable<_i2.TimeEntryScalarWhereWithAggregatesInput>? OR; + + final _i1.PrismaUnion<_i2.TimeEntryScalarWhereWithAggregatesInput, + Iterable<_i2.TimeEntryScalarWhereWithAggregatesInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? id; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? startTime; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? endTime; + + final _i1.PrismaUnion<_i2.StringNullableWithAggregatesFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? userId; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryCountAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const TimeEntryCountAggregateOutputTypeSelect({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.$all, + }); + + final bool? id; + + final bool? startTime; + + final bool? endTime; + + final bool? description; + + final bool? userId; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final bool? $all; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class TimeEntryGroupByOutputTypeCountArgs + implements _i1.JsonConvertible> { + const TimeEntryGroupByOutputTypeCountArgs({this.select}); + + final _i2.TimeEntryCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class TimeEntryMinAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const TimeEntryMinAggregateOutputTypeSelect({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? startTime; + + final bool? endTime; + + final bool? description; + + final bool? userId; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryGroupByOutputTypeMinArgs + implements _i1.JsonConvertible> { + const TimeEntryGroupByOutputTypeMinArgs({this.select}); + + final _i2.TimeEntryMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class TimeEntryMaxAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const TimeEntryMaxAggregateOutputTypeSelect({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? startTime; + + final bool? endTime; + + final bool? description; + + final bool? userId; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TimeEntryGroupByOutputTypeMaxArgs + implements _i1.JsonConvertible> { + const TimeEntryGroupByOutputTypeMaxArgs({this.select}); + + final _i2.TimeEntryMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class TimeEntryGroupByOutputTypeSelect + implements _i1.JsonConvertible> { + const TimeEntryGroupByOutputTypeSelect({ + this.id, + this.startTime, + this.endTime, + this.description, + this.userId, + this.projectId, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + final bool? id; + + final bool? startTime; + + final bool? endTime; + + final bool? description; + + final bool? userId; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + 'id': id, + 'startTime': startTime, + 'endTime': endTime, + 'description': description, + 'userId': userId, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class AggregateTimeEntry { + const AggregateTimeEntry({ + this.$count, + this.$min, + this.$max, + }); + + factory AggregateTimeEntry.fromJson(Map json) => AggregateTimeEntry( + $count: json['_count'] is Map + ? _i2.TimeEntryCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.TimeEntryMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.TimeEntryMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final _i2.TimeEntryCountAggregateOutputType? $count; + + final _i2.TimeEntryMinAggregateOutputType? $min; + + final _i2.TimeEntryMaxAggregateOutputType? $max; + + Map toJson() => { + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class AggregateTimeEntryCountArgs + implements _i1.JsonConvertible> { + const AggregateTimeEntryCountArgs({this.select}); + + final _i2.TimeEntryCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateTimeEntryMinArgs + implements _i1.JsonConvertible> { + const AggregateTimeEntryMinArgs({this.select}); + + final _i2.TimeEntryMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateTimeEntryMaxArgs + implements _i1.JsonConvertible> { + const AggregateTimeEntryMaxArgs({this.select}); + + final _i2.TimeEntryMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateTimeEntrySelect + implements _i1.JsonConvertible> { + const AggregateTimeEntrySelect({ + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class ProjectCreateWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectCreateWithoutTasksInput({ + this.id, + required this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.timeEntries, + required this.user, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TimeEntryCreateNestedManyWithoutProjectInput? timeEntries; + + final _i2.UserCreateNestedOneWithoutProjectsInput user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +class ProjectUncheckedCreateWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectUncheckedCreateWithoutTasksInput({ + this.id, + required this.name, + this.description, + this.clientId, + required this.userId, + this.createdAt, + this.updatedAt, + this.timeEntries, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final _i1.PrismaUnion? clientId; + + final String userId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TimeEntryUncheckedCreateNestedManyWithoutProjectInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + }; +} + +class ProjectCreateOrConnectWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectCreateOrConnectWithoutTasksInput({ + required this.where, + required this.create, + }); + + final _i2.ProjectWhereUniqueInput where; + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTasksInput, + _i2.ProjectUncheckedCreateWithoutTasksInput> create; + + @override + Map toJson() => { + 'where': where, + 'create': create, + }; +} + +class ProjectCreateNestedOneWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectCreateNestedOneWithoutTasksInput({ + this.create, + this.connectOrCreate, + this.connect, + }); + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTasksInput, + _i2.ProjectUncheckedCreateWithoutTasksInput>? create; + + final _i2.ProjectCreateOrConnectWithoutTasksInput? connectOrCreate; + + final _i2.ProjectWhereUniqueInput? connect; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'connect': connect, + }; +} + +class TaskCreateInput implements _i1.JsonConvertible> { + const TaskCreateInput({ + this.id, + required this.name, + this.description, + this.createdAt, + this.updatedAt, + required this.project, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.ProjectCreateNestedOneWithoutTasksInput project; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class TaskUncheckedCreateInput + implements _i1.JsonConvertible> { + const TaskUncheckedCreateInput({ + this.id, + required this.name, + this.description, + required this.projectId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final String projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskCreateManyInput implements _i1.JsonConvertible> { + const TaskCreateManyInput({ + this.id, + required this.name, + this.description, + required this.projectId, + this.createdAt, + this.updatedAt, + }); + + final String? id; + + final String name; + + final _i1.PrismaUnion? description; + + final String projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class CreateManyTaskAndReturnOutputTypeProjectArgs + implements _i1.JsonConvertible> { + const CreateManyTaskAndReturnOutputTypeProjectArgs({ + this.select, + this.include, + }); + + final _i2.ProjectSelect? select; + + final _i2.ProjectInclude? include; + + @override + Map toJson() => { + 'select': select, + 'include': include, + }; +} + +class CreateManyTaskAndReturnOutputTypeSelect + implements _i1.JsonConvertible> { + const CreateManyTaskAndReturnOutputTypeSelect({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.project, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? + project; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class CreateManyTaskAndReturnOutputTypeInclude + implements _i1.JsonConvertible> { + const CreateManyTaskAndReturnOutputTypeInclude({this.project}); + + final _i1.PrismaUnion? + project; + + @override + Map toJson() => {'project': project}; +} + +class ProjectUpdateWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectUpdateWithoutTasksInput({ + this.id, + this.name, + this.description, + this.clientId, + this.createdAt, + this.updatedAt, + this.timeEntries, + this.user, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TimeEntryUpdateManyWithoutProjectNestedInput? timeEntries; + + final _i2.UserUpdateOneRequiredWithoutProjectsNestedInput? user; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + 'user': user, + }; +} + +class ProjectUncheckedUpdateWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectUncheckedUpdateWithoutTasksInput({ + this.id, + this.name, + this.description, + this.clientId, + this.userId, + this.createdAt, + this.updatedAt, + this.timeEntries, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? clientId; + + final _i1.PrismaUnion? userId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.TimeEntryUncheckedUpdateManyWithoutProjectNestedInput? timeEntries; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'clientId': clientId, + 'userId': userId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'timeEntries': timeEntries, + }; +} + +class ProjectUpsertWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectUpsertWithoutTasksInput({ + required this.update, + required this.create, + this.where, + }); + + final _i1.PrismaUnion<_i2.ProjectUpdateWithoutTasksInput, + _i2.ProjectUncheckedUpdateWithoutTasksInput> update; + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTasksInput, + _i2.ProjectUncheckedCreateWithoutTasksInput> create; + + final _i2.ProjectWhereInput? where; + + @override + Map toJson() => { + 'update': update, + 'create': create, + 'where': where, + }; +} + +class ProjectUpdateToOneWithWhereWithoutTasksInput + implements _i1.JsonConvertible> { + const ProjectUpdateToOneWithWhereWithoutTasksInput({ + this.where, + required this.data, + }); + + final _i2.ProjectWhereInput? where; + + final _i1.PrismaUnion<_i2.ProjectUpdateWithoutTasksInput, + _i2.ProjectUncheckedUpdateWithoutTasksInput> data; + + @override + Map toJson() => { + 'where': where, + 'data': data, + }; +} + +class ProjectUpdateOneRequiredWithoutTasksNestedInput + implements _i1.JsonConvertible> { + const ProjectUpdateOneRequiredWithoutTasksNestedInput({ + this.create, + this.connectOrCreate, + this.upsert, + this.connect, + this.update, + }); + + final _i1.PrismaUnion<_i2.ProjectCreateWithoutTasksInput, + _i2.ProjectUncheckedCreateWithoutTasksInput>? create; + + final _i2.ProjectCreateOrConnectWithoutTasksInput? connectOrCreate; + + final _i2.ProjectUpsertWithoutTasksInput? upsert; + + final _i2.ProjectWhereUniqueInput? connect; + + final _i1.PrismaUnion< + _i2.ProjectUpdateToOneWithWhereWithoutTasksInput, + _i1.PrismaUnion<_i2.ProjectUpdateWithoutTasksInput, + _i2.ProjectUncheckedUpdateWithoutTasksInput>>? update; + + @override + Map toJson() => { + 'create': create, + 'connectOrCreate': connectOrCreate, + 'upsert': upsert, + 'connect': connect, + 'update': update, + }; +} + +class TaskUpdateInput implements _i1.JsonConvertible> { + const TaskUpdateInput({ + this.id, + this.name, + this.description, + this.createdAt, + this.updatedAt, + this.project, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + final _i2.ProjectUpdateOneRequiredWithoutTasksNestedInput? project; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + 'project': project, + }; +} + +class TaskUncheckedUpdateInput + implements _i1.JsonConvertible> { + const TaskUncheckedUpdateInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + projectId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskUncheckedUpdateManyInput + implements _i1.JsonConvertible> { + const TaskUncheckedUpdateManyInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion? id; + + final _i1.PrismaUnion? name; + + final _i1.PrismaUnion< + String, + _i1.PrismaUnion<_i2.NullableStringFieldUpdateOperationsInput, + _i1.PrismaNull>>? description; + + final _i1.PrismaUnion? + projectId; + + final _i1.PrismaUnion? + createdAt; + + final _i1.PrismaUnion? + updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskCountAggregateOutputType { + const TaskCountAggregateOutputType({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.$all, + }); + + factory TaskCountAggregateOutputType.fromJson(Map json) => + TaskCountAggregateOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + projectId: json['projectId'], + createdAt: json['createdAt'], + updatedAt: json['updatedAt'], + $all: json['_all'], + ); + + final int? id; + + final int? name; + + final int? description; + + final int? projectId; + + final int? createdAt; + + final int? updatedAt; + + final int? $all; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class TaskMinAggregateOutputType { + const TaskMinAggregateOutputType({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + factory TaskMinAggregateOutputType.fromJson(Map json) => + TaskMinAggregateOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class TaskMaxAggregateOutputType { + const TaskMaxAggregateOutputType({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + factory TaskMaxAggregateOutputType.fromJson(Map json) => + TaskMaxAggregateOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + }; +} + +class TaskGroupByOutputType { + const TaskGroupByOutputType({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + factory TaskGroupByOutputType.fromJson(Map json) => TaskGroupByOutputType( + id: json['id'], + name: json['name'], + description: json['description'], + projectId: json['projectId'], + createdAt: switch (json['createdAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['createdAt'] + }, + updatedAt: switch (json['updatedAt']) { + DateTime value => value, + String value => DateTime.parse(value), + _ => json['updatedAt'] + }, + $count: json['_count'] is Map + ? _i2.TaskCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.TaskMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.TaskMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final String? id; + + final String? name; + + final String? description; + + final String? projectId; + + final DateTime? createdAt; + + final DateTime? updatedAt; + + final _i2.TaskCountAggregateOutputType? $count; + + final _i2.TaskMinAggregateOutputType? $min; + + final _i2.TaskMaxAggregateOutputType? $max; + + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt?.toIso8601String(), + 'updatedAt': updatedAt?.toIso8601String(), + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class TaskCountOrderByAggregateInput + implements _i1.JsonConvertible> { + const TaskCountOrderByAggregateInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? description; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskMaxOrderByAggregateInput + implements _i1.JsonConvertible> { + const TaskMaxOrderByAggregateInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? description; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskMinOrderByAggregateInput + implements _i1.JsonConvertible> { + const TaskMinOrderByAggregateInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i2.SortOrder? description; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskOrderByWithAggregationInput + implements _i1.JsonConvertible> { + const TaskOrderByWithAggregationInput({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.$count, + this.$max, + this.$min, + }); + + final _i2.SortOrder? id; + + final _i2.SortOrder? name; + + final _i1.PrismaUnion<_i2.SortOrder, _i2.SortOrderInput>? description; + + final _i2.SortOrder? projectId; + + final _i2.SortOrder? createdAt; + + final _i2.SortOrder? updatedAt; + + final _i2.TaskCountOrderByAggregateInput? $count; + + final _i2.TaskMaxOrderByAggregateInput? $max; + + final _i2.TaskMinOrderByAggregateInput? $min; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_max': $max, + '_min': $min, + }; +} + +class TaskScalarWhereWithAggregatesInput + implements _i1.JsonConvertible> { + const TaskScalarWhereWithAggregatesInput({ + this.AND, + this.OR, + this.NOT, + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final _i1.PrismaUnion<_i2.TaskScalarWhereWithAggregatesInput, + Iterable<_i2.TaskScalarWhereWithAggregatesInput>>? AND; + + final Iterable<_i2.TaskScalarWhereWithAggregatesInput>? OR; + + final _i1.PrismaUnion<_i2.TaskScalarWhereWithAggregatesInput, + Iterable<_i2.TaskScalarWhereWithAggregatesInput>>? NOT; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? id; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? name; + + final _i1.PrismaUnion<_i2.StringNullableWithAggregatesFilter, + _i1.PrismaUnion>? description; + + final _i1.PrismaUnion<_i2.StringWithAggregatesFilter, String>? projectId; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? createdAt; + + final _i1.PrismaUnion<_i2.DateTimeWithAggregatesFilter, DateTime>? updatedAt; + + @override + Map toJson() => { + 'AND': AND, + 'OR': OR, + 'NOT': NOT, + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskCountAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const TaskCountAggregateOutputTypeSelect({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.$all, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final bool? $all; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_all': $all, + }; +} + +class TaskGroupByOutputTypeCountArgs + implements _i1.JsonConvertible> { + const TaskGroupByOutputTypeCountArgs({this.select}); + + final _i2.TaskCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class TaskMinAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const TaskMinAggregateOutputTypeSelect({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskGroupByOutputTypeMinArgs + implements _i1.JsonConvertible> { + const TaskGroupByOutputTypeMinArgs({this.select}); + + final _i2.TaskMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class TaskMaxAggregateOutputTypeSelect + implements _i1.JsonConvertible> { + const TaskMaxAggregateOutputTypeSelect({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + }; +} + +class TaskGroupByOutputTypeMaxArgs + implements _i1.JsonConvertible> { + const TaskGroupByOutputTypeMaxArgs({this.select}); + + final _i2.TaskMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class TaskGroupByOutputTypeSelect + implements _i1.JsonConvertible> { + const TaskGroupByOutputTypeSelect({ + this.id, + this.name, + this.description, + this.projectId, + this.createdAt, + this.updatedAt, + this.$count, + this.$min, + this.$max, + }); + + final bool? id; + + final bool? name; + + final bool? description; + + final bool? projectId; + + final bool? createdAt; + + final bool? updatedAt; + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + 'id': id, + 'name': name, + 'description': description, + 'projectId': projectId, + 'createdAt': createdAt, + 'updatedAt': updatedAt, + '_count': $count, + '_min': $min, + '_max': $max, + }; +} + +class AggregateTask { + const AggregateTask({ + this.$count, + this.$min, + this.$max, + }); + + factory AggregateTask.fromJson(Map json) => AggregateTask( + $count: json['_count'] is Map + ? _i2.TaskCountAggregateOutputType.fromJson(json['_count']) + : null, + $min: json['_min'] is Map + ? _i2.TaskMinAggregateOutputType.fromJson(json['_min']) + : null, + $max: json['_max'] is Map + ? _i2.TaskMaxAggregateOutputType.fromJson(json['_max']) + : null, + ); + + final _i2.TaskCountAggregateOutputType? $count; + + final _i2.TaskMinAggregateOutputType? $min; + + final _i2.TaskMaxAggregateOutputType? $max; + + Map toJson() => { + '_count': $count?.toJson(), + '_min': $min?.toJson(), + '_max': $max?.toJson(), + }; +} + +class AggregateTaskCountArgs + implements _i1.JsonConvertible> { + const AggregateTaskCountArgs({this.select}); + + final _i2.TaskCountAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateTaskMinArgs + implements _i1.JsonConvertible> { + const AggregateTaskMinArgs({this.select}); + + final _i2.TaskMinAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateTaskMaxArgs + implements _i1.JsonConvertible> { + const AggregateTaskMaxArgs({this.select}); + + final _i2.TaskMaxAggregateOutputTypeSelect? select; + + @override + Map toJson() => {'select': select}; +} + +class AggregateTaskSelect implements _i1.JsonConvertible> { + const AggregateTaskSelect({ + this.$count, + this.$min, + this.$max, + }); + + final _i1.PrismaUnion? $count; + + final _i1.PrismaUnion? $min; + + final _i1.PrismaUnion? $max; + + @override + Map toJson() => { + '_count': $count, + '_min': $min, + '_max': $max, + }; +} diff --git a/backend_dart/pubspec.lock b/backend_dart/pubspec.lock index 6d37c62..340d2b7 100644 --- a/backend_dart/pubspec.lock +++ b/backend_dart/pubspec.lock @@ -5,18 +5,23 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" url: "https://pub.dev" source: hosted - version: "67.0.0" + version: "73.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.2" analyzer: dependency: transitive description: name: analyzer - sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" url: "https://pub.dev" source: hosted - version: "6.4.1" + version: "6.8.0" args: dependency: transitive description: @@ -29,10 +34,10 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" boolean_selector: dependency: transitive description: @@ -49,6 +54,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.3" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + url: "https://pub.dev" + source: hosted + version: "8.9.2" charcode: dependency: transitive description: @@ -57,38 +78,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + url: "https://pub.dev" + source: hosted + version: "4.10.1" collection: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.1" convert: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" coverage: dependency: transitive description: name: coverage - sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" + sha256: "4b03e11f6d5b8f6e5bb5e9f7889a56fe6c5cbe942da5378ea4d4d7f73ef9dfe5" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.11.0" crypto: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.6" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" + url: "https://pub.dev" + source: hosted + version: "2.3.7" + decimal: + dependency: transitive + description: + name: decimal + sha256: "4140a688f9e443e2f4de3a1162387bf25e1ac6d51e24c9da263f245210f41440" + url: "https://pub.dev" + source: hosted + version: "3.0.2" file: dependency: transitive description: @@ -97,6 +150,22 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + fpdart: + dependency: "direct main" + description: + name: fpdart + sha256: "1b84ce64453974159f08046f5d05592020d1fcb2099d7fe6ec58da0e7337af77" + url: "https://pub.dev" + source: hosted + version: "1.1.1" frontend_server_client: dependency: transitive description: @@ -125,10 +194,18 @@ packages: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.1" + intl: + dependency: transitive + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" io: dependency: transitive description: @@ -145,6 +222,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.1" + json_rpc_2: + dependency: transitive + description: + name: json_rpc_2 + sha256: "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e" + url: "https://pub.dev" + source: hosted + version: "3.0.3" lints: dependency: "direct dev" description: @@ -157,10 +242,18 @@ packages: dependency: transitive description: name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" + macros: + dependency: transitive + description: + name: macros + sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + url: "https://pub.dev" + source: hosted + version: "0.1.2-main.4" matcher: dependency: transitive description: @@ -181,10 +274,10 @@ packages: dependency: transitive description: name: mime - sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "1.0.6" node_preamble: dependency: transitive description: @@ -193,6 +286,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + orm: + dependency: "direct main" + description: + name: orm + sha256: "6b5fe849c96fc3f521353d834ed029b13621e306ba8b9946c1118ffbf7c6a911" + url: "https://pub.dev" + source: hosted + version: "5.2.1" package_config: dependency: transitive description: @@ -205,10 +306,10 @@ packages: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" pool: dependency: transitive description: @@ -233,6 +334,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + rational: + dependency: transitive + description: + name: rational + sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336 + url: "https://pub.dev" + source: hosted + version: "2.2.3" + rc: + dependency: transitive + description: + name: rc + sha256: "0c2d562c5925b68687ae86b387d847cfc175a5d1d2fce2956a9acc461bd2f33e" + url: "https://pub.dev" + source: hosted + version: "0.3.3" + recase: + dependency: transitive + description: + name: recase + sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + url: "https://pub.dev" + source: hosted + version: "4.1.0" sasl_scram: dependency: transitive description: @@ -253,10 +378,10 @@ packages: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shelf_packages_handler: dependency: transitive description: @@ -309,10 +434,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -341,34 +466,34 @@ packages: dependency: "direct dev" description: name: test - sha256: "7ee44229615f8f642b68120165ae4c2a75fe77ae2065b1e55ae4711f6cf0899e" + sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" url: "https://pub.dev" source: hosted - version: "1.25.7" + version: "1.25.8" test_api: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" test_core: dependency: transitive description: name: test_core - sha256: "55ea5a652e38a1dfb32943a7973f3681a60f872f8c3a05a14664ad54ef9c6696" + sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" typed_data: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" unorm_dart: dependency: transitive description: @@ -397,10 +522,10 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.1.0" web_socket: dependency: transitive description: @@ -417,6 +542,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + webfetch: + dependency: transitive + description: + name: webfetch + sha256: "2724933db80e1622baec57d5096b9ae5b1f0a396e047679a91ffeb60bcd5c0f2" + url: "https://pub.dev" + source: hosted + version: "0.1.0" webkit_inspection_protocol: dependency: transitive description: @@ -434,4 +567,4 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.5.0 <4.0.0" diff --git a/backend_dart/pubspec.yaml b/backend_dart/pubspec.yaml index 99eee27..89b2409 100644 --- a/backend_dart/pubspec.yaml +++ b/backend_dart/pubspec.yaml @@ -9,6 +9,8 @@ environment: # Add regular dependencies here. dependencies: # path: ^1.8.0 + fpdart: ^1.1.1 + orm: ^5.2.1 postgres: ^2.4.1 yaml: ^3.1.0 diff --git a/docker-compose.yml b/docker-compose.yml index 6e898d8..14e9513 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,16 +17,17 @@ services: environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@admin.com} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} + #PGADMIN_CONFIG_SERVER_MODE: 'False' ports: - "5050:80" - + redis: image: redis/redis-stack:latest #image: redis:latest container_name: redis-server ports: - "${REDIS_PORT:-6379}:6379" - - "8001:8001" # RedisInsight WebUI + - "8001:8001" # RedisInsight WebUI #environment: # - REDIS_ARGS=--requirepass ${REDIS_PASSWORD:-password} volumes: diff --git a/docs/concept.md b/docs/concept.md new file mode 100644 index 0000000..73636c3 --- /dev/null +++ b/docs/concept.md @@ -0,0 +1,24 @@ +# Concept & Ideas +## 1 Tools and Packages +### 1.1 Dart +- Functional Programming: FPDart +- SQL ORM: Prisma Dart + - https://prisma.pub/ +### 1.2 Go +- Functional Programming: https://github.com/IBM/fp-go + - Docu: https://pkg.go.dev/github.com/IBM/fp-go +### 1.3 TS +- Functional Programming: fp-ts Package + - https://github.com/gcanti/fp-ts +- Engine: Deno + + +## 2 Steps +1. Install Prisma on Dart and Go + 1. https://prisma.pub/getting-started/setup.html + 2. https://goprisma.org/docs/getting-started/quickstart#manual-setup +2. Build ORM + 1. GO: go run github.com/steebchen/prisma-client-go generate + 2. Dart: pnpx prisma generate +3. Push Schema to DB + 1. go run github.com/steebchen/prisma-client-go db push \ No newline at end of file diff --git a/frontend-react/deno.lock b/frontend-react/deno.lock new file mode 100644 index 0000000..4b76be4 --- /dev/null +++ b/frontend-react/deno.lock @@ -0,0 +1,3287 @@ +{ + "version": "4", + "specifiers": { + "npm:@reactivex/rxjs@^6.6.7": "6.6.7", + "npm:@types/node@20": "20.17.6", + "npm:@types/react-dom@18": "18.3.1", + "npm:@types/react@18": "18.3.12", + "npm:autoprefixer@^10.4.20": "10.4.20_postcss@8.4.49", + "npm:clsx@^2.1.1": "2.1.1", + "npm:eslint-config-next@15.0.3": "15.0.3_eslint@8.57.1_typescript@5.6.3_@typescript-eslint+parser@8.14.0__eslint@8.57.1__typescript@5.6.3_eslint-plugin-import@2.31.0__eslint@8.57.1", + "npm:eslint@8": "8.57.1", + "npm:fp-ts@^2.16.9": "2.16.9", + "npm:i18next-parser@^9.0.2": "9.0.2", + "npm:lucide-react@0.456": "0.456.0_react@19.0.0-rc-66855b96-20241106", + "npm:next-intl@^3.25.0": "3.25.1_next@15.0.3__react@19.0.0-rc-66855b96-20241106__react-dom@19.0.0-rc-66855b96-20241106___react@19.0.0-rc-66855b96-20241106__sass@1.80.7_react@19.0.0-rc-66855b96-20241106_react-dom@19.0.0-rc-66855b96-20241106__react@19.0.0-rc-66855b96-20241106_sass@1.80.7", + "npm:next@15.0.3": "15.0.3_react@19.0.0-rc-66855b96-20241106_react-dom@19.0.0-rc-66855b96-20241106__react@19.0.0-rc-66855b96-20241106_sass@1.80.7", + "npm:postcss@^8.4.47": "8.4.49", + "npm:react-dom@19.0.0-rc-66855b96-20241106": "19.0.0-rc-66855b96-20241106_react@19.0.0-rc-66855b96-20241106", + "npm:react@19.0.0-rc-66855b96-20241106": "19.0.0-rc-66855b96-20241106", + "npm:rxjs@^7.8.1": "7.8.1", + "npm:sass@^1.80.6": "1.80.7", + "npm:tailwindcss@^3.4.14": "3.4.14_postcss@8.4.49", + "npm:typescript@5": "5.6.3" + }, + "npm": { + "@alloc/quick-lru@5.2.0": { + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" + }, + "@babel/runtime@7.26.0": { + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": [ + "regenerator-runtime" + ] + }, + "@emnapi/runtime@1.3.1": { + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@esbuild/aix-ppc64@0.23.1": { + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==" + }, + "@esbuild/android-arm64@0.23.1": { + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==" + }, + "@esbuild/android-arm@0.23.1": { + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==" + }, + "@esbuild/android-x64@0.23.1": { + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==" + }, + "@esbuild/darwin-arm64@0.23.1": { + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==" + }, + "@esbuild/darwin-x64@0.23.1": { + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==" + }, + "@esbuild/freebsd-arm64@0.23.1": { + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==" + }, + "@esbuild/freebsd-x64@0.23.1": { + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==" + }, + "@esbuild/linux-arm64@0.23.1": { + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==" + }, + "@esbuild/linux-arm@0.23.1": { + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==" + }, + "@esbuild/linux-ia32@0.23.1": { + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==" + }, + "@esbuild/linux-loong64@0.23.1": { + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==" + }, + "@esbuild/linux-mips64el@0.23.1": { + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==" + }, + "@esbuild/linux-ppc64@0.23.1": { + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==" + }, + "@esbuild/linux-riscv64@0.23.1": { + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==" + }, + "@esbuild/linux-s390x@0.23.1": { + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==" + }, + "@esbuild/linux-x64@0.23.1": { + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==" + }, + "@esbuild/netbsd-x64@0.23.1": { + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==" + }, + "@esbuild/openbsd-arm64@0.23.1": { + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==" + }, + "@esbuild/openbsd-x64@0.23.1": { + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==" + }, + "@esbuild/sunos-x64@0.23.1": { + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==" + }, + "@esbuild/win32-arm64@0.23.1": { + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==" + }, + "@esbuild/win32-ia32@0.23.1": { + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==" + }, + "@esbuild/win32-x64@0.23.1": { + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==" + }, + "@eslint-community/eslint-utils@4.4.1_eslint@8.57.1": { + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dependencies": [ + "eslint", + "eslint-visitor-keys" + ] + }, + "@eslint-community/regexpp@4.12.1": { + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" + }, + "@eslint/eslintrc@2.1.4": { + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dependencies": [ + "ajv", + "debug@4.3.7", + "espree", + "globals", + "ignore", + "import-fresh", + "js-yaml", + "minimatch@3.1.2", + "strip-json-comments" + ] + }, + "@eslint/js@8.57.1": { + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==" + }, + "@formatjs/ecma402-abstract@2.2.3": { + "integrity": "sha512-aElGmleuReGnk2wtYOzYFmNWYoiWWmf1pPPCYg0oiIQSJj0mjc4eUfzUXaSOJ4S8WzI/cLqnCTWjqz904FT2OQ==", + "dependencies": [ + "@formatjs/fast-memoize", + "@formatjs/intl-localematcher", + "tslib@2.8.1" + ] + }, + "@formatjs/fast-memoize@2.2.3": { + "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@formatjs/icu-messageformat-parser@2.9.3": { + "integrity": "sha512-9L99QsH14XjOCIp4TmbT8wxuffJxGK8uLNO1zNhLtcZaVXvv626N0s4A2qgRCKG3dfYWx9psvGlFmvyVBa6u/w==", + "dependencies": [ + "@formatjs/ecma402-abstract", + "@formatjs/icu-skeleton-parser", + "tslib@2.8.1" + ] + }, + "@formatjs/icu-skeleton-parser@1.8.7": { + "integrity": "sha512-fI+6SmS2g7h3srfAKSWa5dwreU5zNEfon2uFo99OToiLF6yxGE+WikvFSbsvMAYkscucvVmTYNlWlaDPp0n5HA==", + "dependencies": [ + "@formatjs/ecma402-abstract", + "tslib@2.8.1" + ] + }, + "@formatjs/intl-localematcher@0.5.7": { + "integrity": "sha512-GGFtfHGQVFe/niOZp24Kal5b2i36eE2bNL0xi9Sg/yd0TR8aLjcteApZdHmismP5QQax1cMnZM9yWySUUjJteA==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@gulpjs/to-absolute-glob@4.0.0": { + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", + "dependencies": [ + "is-negated-glob" + ] + }, + "@humanwhocodes/config-array@0.13.0": { + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "dependencies": [ + "@humanwhocodes/object-schema", + "debug@4.3.7", + "minimatch@3.1.2" + ] + }, + "@humanwhocodes/module-importer@1.0.1": { + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, + "@humanwhocodes/object-schema@2.0.3": { + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" + }, + "@img/sharp-darwin-arm64@0.33.5": { + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "dependencies": [ + "@img/sharp-libvips-darwin-arm64" + ] + }, + "@img/sharp-darwin-x64@0.33.5": { + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "dependencies": [ + "@img/sharp-libvips-darwin-x64" + ] + }, + "@img/sharp-libvips-darwin-arm64@1.0.4": { + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==" + }, + "@img/sharp-libvips-darwin-x64@1.0.4": { + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==" + }, + "@img/sharp-libvips-linux-arm64@1.0.4": { + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==" + }, + "@img/sharp-libvips-linux-arm@1.0.5": { + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==" + }, + "@img/sharp-libvips-linux-s390x@1.0.4": { + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==" + }, + "@img/sharp-libvips-linux-x64@1.0.4": { + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==" + }, + "@img/sharp-libvips-linuxmusl-arm64@1.0.4": { + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==" + }, + "@img/sharp-libvips-linuxmusl-x64@1.0.4": { + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==" + }, + "@img/sharp-linux-arm64@0.33.5": { + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "dependencies": [ + "@img/sharp-libvips-linux-arm64" + ] + }, + "@img/sharp-linux-arm@0.33.5": { + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "dependencies": [ + "@img/sharp-libvips-linux-arm" + ] + }, + "@img/sharp-linux-s390x@0.33.5": { + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "dependencies": [ + "@img/sharp-libvips-linux-s390x" + ] + }, + "@img/sharp-linux-x64@0.33.5": { + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "dependencies": [ + "@img/sharp-libvips-linux-x64" + ] + }, + "@img/sharp-linuxmusl-arm64@0.33.5": { + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "dependencies": [ + "@img/sharp-libvips-linuxmusl-arm64" + ] + }, + "@img/sharp-linuxmusl-x64@0.33.5": { + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "dependencies": [ + "@img/sharp-libvips-linuxmusl-x64" + ] + }, + "@img/sharp-wasm32@0.33.5": { + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "dependencies": [ + "@emnapi/runtime" + ] + }, + "@img/sharp-win32-ia32@0.33.5": { + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==" + }, + "@img/sharp-win32-x64@0.33.5": { + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==" + }, + "@isaacs/cliui@8.0.2": { + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": [ + "string-width@5.1.2", + "string-width-cjs@npm:string-width@4.2.3", + "strip-ansi@7.1.0", + "strip-ansi-cjs@npm:strip-ansi@6.0.1", + "wrap-ansi@8.1.0", + "wrap-ansi-cjs@npm:wrap-ansi@7.0.0" + ] + }, + "@jridgewell/gen-mapping@0.3.5": { + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": [ + "@jridgewell/set-array", + "@jridgewell/sourcemap-codec", + "@jridgewell/trace-mapping" + ] + }, + "@jridgewell/resolve-uri@3.1.2": { + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + }, + "@jridgewell/set-array@1.2.1": { + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/sourcemap-codec@1.5.0": { + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "@jridgewell/trace-mapping@0.3.25": { + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": [ + "@jridgewell/resolve-uri", + "@jridgewell/sourcemap-codec" + ] + }, + "@next/env@15.0.3": { + "integrity": "sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==" + }, + "@next/eslint-plugin-next@15.0.3": { + "integrity": "sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==", + "dependencies": [ + "fast-glob@3.3.1" + ] + }, + "@next/swc-darwin-arm64@15.0.3": { + "integrity": "sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==" + }, + "@next/swc-darwin-x64@15.0.3": { + "integrity": "sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==" + }, + "@next/swc-linux-arm64-gnu@15.0.3": { + "integrity": "sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==" + }, + "@next/swc-linux-arm64-musl@15.0.3": { + "integrity": "sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==" + }, + "@next/swc-linux-x64-gnu@15.0.3": { + "integrity": "sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==" + }, + "@next/swc-linux-x64-musl@15.0.3": { + "integrity": "sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==" + }, + "@next/swc-win32-arm64-msvc@15.0.3": { + "integrity": "sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==" + }, + "@next/swc-win32-x64-msvc@15.0.3": { + "integrity": "sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==" + }, + "@nodelib/fs.scandir@2.1.5": { + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": [ + "@nodelib/fs.stat", + "run-parallel" + ] + }, + "@nodelib/fs.stat@2.0.5": { + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk@1.2.8": { + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": [ + "@nodelib/fs.scandir", + "fastq" + ] + }, + "@nolyfill/is-core-module@1.0.39": { + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==" + }, + "@parcel/watcher-android-arm64@2.5.0": { + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==" + }, + "@parcel/watcher-darwin-arm64@2.5.0": { + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==" + }, + "@parcel/watcher-darwin-x64@2.5.0": { + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==" + }, + "@parcel/watcher-freebsd-x64@2.5.0": { + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==" + }, + "@parcel/watcher-linux-arm-glibc@2.5.0": { + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==" + }, + "@parcel/watcher-linux-arm-musl@2.5.0": { + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==" + }, + "@parcel/watcher-linux-arm64-glibc@2.5.0": { + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==" + }, + "@parcel/watcher-linux-arm64-musl@2.5.0": { + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==" + }, + "@parcel/watcher-linux-x64-glibc@2.5.0": { + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==" + }, + "@parcel/watcher-linux-x64-musl@2.5.0": { + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==" + }, + "@parcel/watcher-win32-arm64@2.5.0": { + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==" + }, + "@parcel/watcher-win32-ia32@2.5.0": { + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==" + }, + "@parcel/watcher-win32-x64@2.5.0": { + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==" + }, + "@parcel/watcher@2.5.0": { + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "dependencies": [ + "@parcel/watcher-android-arm64", + "@parcel/watcher-darwin-arm64", + "@parcel/watcher-darwin-x64", + "@parcel/watcher-freebsd-x64", + "@parcel/watcher-linux-arm-glibc", + "@parcel/watcher-linux-arm-musl", + "@parcel/watcher-linux-arm64-glibc", + "@parcel/watcher-linux-arm64-musl", + "@parcel/watcher-linux-x64-glibc", + "@parcel/watcher-linux-x64-musl", + "@parcel/watcher-win32-arm64", + "@parcel/watcher-win32-ia32", + "@parcel/watcher-win32-x64", + "detect-libc@1.0.3", + "is-glob", + "micromatch", + "node-addon-api" + ] + }, + "@pkgjs/parseargs@0.11.0": { + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" + }, + "@reactivex/rxjs@6.6.7": { + "integrity": "sha512-xZIV2JgHhWoVPm3uVcFbZDRVJfx2hgqmuTX7J4MuKaZ+j5jN29agniCPBwrlCmpA15/zLKcPi7/bogt0ZwOFyA==", + "dependencies": [ + "tslib@1.14.1" + ] + }, + "@rtsao/scc@1.1.0": { + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" + }, + "@rushstack/eslint-patch@1.10.4": { + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==" + }, + "@swc/counter@0.1.3": { + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "@swc/helpers@0.5.13": { + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@types/json5@0.0.29": { + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "@types/minimatch@3.0.5": { + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/node@20.17.6": { + "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", + "dependencies": [ + "undici-types" + ] + }, + "@types/prop-types@15.7.13": { + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + }, + "@types/react-dom@18.3.1": { + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "dependencies": [ + "@types/react" + ] + }, + "@types/react@18.3.12": { + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "dependencies": [ + "@types/prop-types", + "csstype" + ] + }, + "@types/symlink-or-copy@1.2.2": { + "integrity": "sha512-MQ1AnmTLOncwEf9IVU+B2e4Hchrku5N67NkgcAHW0p3sdzPe0FNMANxEm6OJUzPniEQGkeT3OROLlCwZJLWFZA==" + }, + "@typescript-eslint/eslint-plugin@8.14.0_@typescript-eslint+parser@8.14.0__eslint@8.57.1__typescript@5.6.3_eslint@8.57.1_typescript@5.6.3": { + "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", + "dependencies": [ + "@eslint-community/regexpp", + "@typescript-eslint/parser", + "@typescript-eslint/scope-manager", + "@typescript-eslint/type-utils", + "@typescript-eslint/utils", + "@typescript-eslint/visitor-keys", + "eslint", + "graphemer", + "ignore", + "natural-compare", + "ts-api-utils" + ] + }, + "@typescript-eslint/parser@8.14.0_eslint@8.57.1_typescript@5.6.3": { + "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", + "dependencies": [ + "@typescript-eslint/scope-manager", + "@typescript-eslint/types", + "@typescript-eslint/typescript-estree", + "@typescript-eslint/visitor-keys", + "debug@4.3.7", + "eslint" + ] + }, + "@typescript-eslint/scope-manager@8.14.0": { + "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", + "dependencies": [ + "@typescript-eslint/types", + "@typescript-eslint/visitor-keys" + ] + }, + "@typescript-eslint/type-utils@8.14.0_eslint@8.57.1_typescript@5.6.3": { + "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", + "dependencies": [ + "@typescript-eslint/typescript-estree", + "@typescript-eslint/utils", + "debug@4.3.7", + "ts-api-utils" + ] + }, + "@typescript-eslint/types@8.14.0": { + "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==" + }, + "@typescript-eslint/typescript-estree@8.14.0_typescript@5.6.3": { + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", + "dependencies": [ + "@typescript-eslint/types", + "@typescript-eslint/visitor-keys", + "debug@4.3.7", + "fast-glob@3.3.2", + "is-glob", + "minimatch@9.0.5", + "semver@7.6.3", + "ts-api-utils" + ] + }, + "@typescript-eslint/utils@8.14.0_eslint@8.57.1_typescript@5.6.3": { + "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", + "dependencies": [ + "@eslint-community/eslint-utils", + "@typescript-eslint/scope-manager", + "@typescript-eslint/types", + "@typescript-eslint/typescript-estree", + "eslint" + ] + }, + "@typescript-eslint/visitor-keys@8.14.0": { + "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", + "dependencies": [ + "@typescript-eslint/types", + "eslint-visitor-keys" + ] + }, + "@ungap/structured-clone@1.2.0": { + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "acorn-jsx@5.3.2_acorn@8.14.0": { + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dependencies": [ + "acorn" + ] + }, + "acorn@8.14.0": { + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" + }, + "ajv@6.12.6": { + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": [ + "fast-deep-equal", + "fast-json-stable-stringify", + "json-schema-traverse", + "uri-js" + ] + }, + "ansi-regex@5.0.1": { + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-regex@6.1.0": { + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": [ + "color-convert" + ] + }, + "ansi-styles@6.2.1": { + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "any-promise@1.3.0": { + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "anymatch@3.1.3": { + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": [ + "normalize-path", + "picomatch" + ] + }, + "arg@5.0.2": { + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "argparse@2.0.1": { + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "aria-query@5.3.2": { + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" + }, + "array-buffer-byte-length@1.0.1": { + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": [ + "call-bind", + "is-array-buffer" + ] + }, + "array-includes@3.1.8": { + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-object-atoms", + "get-intrinsic", + "is-string" + ] + }, + "array.prototype.findlast@1.2.5": { + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "es-object-atoms", + "es-shim-unscopables" + ] + }, + "array.prototype.findlastindex@1.2.5": { + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "es-object-atoms", + "es-shim-unscopables" + ] + }, + "array.prototype.flat@1.3.2": { + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-shim-unscopables" + ] + }, + "array.prototype.flatmap@1.3.2": { + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-shim-unscopables" + ] + }, + "array.prototype.tosorted@1.1.4": { + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "es-shim-unscopables" + ] + }, + "arraybuffer.prototype.slice@1.0.3": { + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": [ + "array-buffer-byte-length", + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "get-intrinsic", + "is-array-buffer", + "is-shared-array-buffer" + ] + }, + "ast-types-flow@0.0.8": { + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" + }, + "autoprefixer@10.4.20_postcss@8.4.49": { + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dependencies": [ + "browserslist", + "caniuse-lite", + "fraction.js", + "normalize-range", + "picocolors", + "postcss@8.4.49", + "postcss-value-parser" + ] + }, + "available-typed-arrays@1.0.7": { + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": [ + "possible-typed-array-names" + ] + }, + "axe-core@4.10.2": { + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==" + }, + "axobject-query@4.1.0": { + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==" + }, + "balanced-match@1.0.2": { + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "bare-events@2.5.0": { + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==" + }, + "base64-js@1.5.1": { + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "binary-extensions@2.3.0": { + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + }, + "bl@5.1.0": { + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dependencies": [ + "buffer", + "inherits", + "readable-stream@3.6.2" + ] + }, + "boolbase@1.0.0": { + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "brace-expansion@1.1.11": { + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": [ + "balanced-match", + "concat-map" + ] + }, + "brace-expansion@2.0.1": { + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": [ + "balanced-match" + ] + }, + "braces@3.0.3": { + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": [ + "fill-range" + ] + }, + "broccoli-node-api@1.7.0": { + "integrity": "sha512-QIqLSVJWJUVOhclmkmypJJH9u9s/aWH4+FH6Q6Ju5l+Io4dtwqdPUNmDfw40o6sxhbZHhqGujDJuHTML1wG8Yw==" + }, + "broccoli-node-info@2.2.0": { + "integrity": "sha512-VabSGRpKIzpmC+r+tJueCE5h8k6vON7EIMMWu6d/FyPdtijwLQ7QvzShEw+m3mHoDzUaj/kiZsDYrS8X2adsBg==" + }, + "broccoli-output-wrapper@3.2.5": { + "integrity": "sha512-bQAtwjSrF4Nu0CK0JOy5OZqw9t5U0zzv2555EA/cF8/a8SLDTIetk9UgrtMVw7qKLKdSpOZ2liZNeZZDaKgayw==", + "dependencies": [ + "fs-extra@8.1.0", + "heimdalljs-logger", + "symlink-or-copy" + ] + }, + "broccoli-plugin@4.0.7": { + "integrity": "sha512-a4zUsWtA1uns1K7p9rExYVYG99rdKeGRymW0qOCNkvDPHQxVi3yVyJHhQbM3EZwdt2E0mnhr5e0c/bPpJ7p3Wg==", + "dependencies": [ + "broccoli-node-api", + "broccoli-output-wrapper", + "fs-merger", + "promise-map-series", + "quick-temp", + "rimraf@3.0.2", + "symlink-or-copy" + ] + }, + "browserslist@4.24.2": { + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dependencies": [ + "caniuse-lite", + "electron-to-chromium", + "node-releases", + "update-browserslist-db" + ] + }, + "buffer@6.0.3": { + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dependencies": [ + "base64-js", + "ieee754" + ] + }, + "busboy@1.6.0": { + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": [ + "streamsearch" + ] + }, + "call-bind@1.0.7": { + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": [ + "es-define-property", + "es-errors", + "function-bind", + "get-intrinsic", + "set-function-length" + ] + }, + "callsites@3.1.0": { + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase-css@2.0.1": { + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + }, + "caniuse-lite@1.0.30001680": { + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==" + }, + "chalk@4.1.2": { + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": [ + "ansi-styles@4.3.0", + "supports-color" + ] + }, + "cheerio-select@2.1.0": { + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": [ + "boolbase", + "css-select", + "css-what", + "domelementtype", + "domhandler", + "domutils" + ] + }, + "cheerio@1.0.0": { + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "dependencies": [ + "cheerio-select", + "dom-serializer", + "domhandler", + "domutils", + "encoding-sniffer", + "htmlparser2", + "parse5", + "parse5-htmlparser2-tree-adapter", + "parse5-parser-stream", + "undici", + "whatwg-mimetype" + ] + }, + "chokidar@3.6.0": { + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": [ + "anymatch", + "braces", + "fsevents", + "glob-parent@5.1.2", + "is-binary-path", + "is-glob", + "normalize-path", + "readdirp@3.6.0" + ] + }, + "chokidar@4.0.1": { + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dependencies": [ + "readdirp@4.0.2" + ] + }, + "client-only@0.0.1": { + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "clone-stats@1.0.0": { + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "clone@2.1.2": { + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "clsx@2.1.1": { + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": [ + "color-name" + ] + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string@1.9.1": { + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": [ + "color-name", + "simple-swizzle" + ] + }, + "color@4.2.3": { + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": [ + "color-convert", + "color-string" + ] + }, + "colors@1.4.0": { + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "commander@12.1.0": { + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==" + }, + "commander@4.1.1": { + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "concat-map@0.0.1": { + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "convert-source-map@2.0.0": { + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "core-util-is@1.0.3": { + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cross-spawn@7.0.5": { + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "dependencies": [ + "path-key", + "shebang-command", + "which" + ] + }, + "css-select@5.1.0": { + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": [ + "boolbase", + "css-what", + "domhandler", + "domutils", + "nth-check" + ] + }, + "css-what@6.1.0": { + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "cssesc@3.0.0": { + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "csstype@3.1.3": { + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "damerau-levenshtein@1.0.8": { + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "data-view-buffer@1.0.1": { + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": [ + "call-bind", + "es-errors", + "is-data-view" + ] + }, + "data-view-byte-length@1.0.1": { + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": [ + "call-bind", + "es-errors", + "is-data-view" + ] + }, + "data-view-byte-offset@1.0.0": { + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": [ + "call-bind", + "es-errors", + "is-data-view" + ] + }, + "debug@2.6.9": { + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": [ + "ms@2.0.0" + ] + }, + "debug@3.2.7": { + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": [ + "ms@2.1.3" + ] + }, + "debug@4.3.7": { + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": [ + "ms@2.1.3" + ] + }, + "deep-is@0.1.4": { + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "define-data-property@1.1.4": { + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": [ + "es-define-property", + "es-errors", + "gopd" + ] + }, + "define-properties@1.2.1": { + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": [ + "define-data-property", + "has-property-descriptors", + "object-keys" + ] + }, + "detect-libc@1.0.3": { + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + }, + "detect-libc@2.0.3": { + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, + "didyoumean@1.2.2": { + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "dlv@1.1.3": { + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "doctrine@2.1.0": { + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": [ + "esutils" + ] + }, + "doctrine@3.0.0": { + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": [ + "esutils" + ] + }, + "dom-serializer@2.0.0": { + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": [ + "domelementtype", + "domhandler", + "entities" + ] + }, + "domelementtype@2.3.0": { + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler@5.0.3": { + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": [ + "domelementtype" + ] + }, + "domutils@3.1.0": { + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": [ + "dom-serializer", + "domelementtype", + "domhandler" + ] + }, + "eastasianwidth@0.2.0": { + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "electron-to-chromium@1.5.57": { + "integrity": "sha512-xS65H/tqgOwUBa5UmOuNSLuslDo7zho0y/lgQw35pnrqiZh7UOWHCeL/Bt6noJATbA6tpQJGCifsFsIRZj1Fqg==" + }, + "emoji-regex@8.0.0": { + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emoji-regex@9.2.2": { + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "encoding-sniffer@0.2.0": { + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "dependencies": [ + "iconv-lite", + "whatwg-encoding" + ] + }, + "enhanced-resolve@5.17.1": { + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dependencies": [ + "graceful-fs", + "tapable" + ] + }, + "ensure-posix-path@1.1.1": { + "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==" + }, + "entities@4.5.0": { + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "eol@0.9.1": { + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" + }, + "es-abstract@1.23.4": { + "integrity": "sha512-HR1gxH5OaiN7XH7uiWH0RLw0RcFySiSoW1ctxmD1ahTw3uGBtkmm/ng0tDU1OtYx5OK6EOL5Y6O21cDflG3Jcg==", + "dependencies": [ + "array-buffer-byte-length", + "arraybuffer.prototype.slice", + "available-typed-arrays", + "call-bind", + "data-view-buffer", + "data-view-byte-length", + "data-view-byte-offset", + "es-define-property", + "es-errors", + "es-object-atoms", + "es-set-tostringtag", + "es-to-primitive", + "function.prototype.name", + "get-intrinsic", + "get-symbol-description", + "globalthis", + "gopd", + "has-property-descriptors", + "has-proto", + "has-symbols", + "hasown", + "internal-slot", + "is-array-buffer", + "is-callable", + "is-data-view", + "is-negative-zero", + "is-regex", + "is-shared-array-buffer", + "is-string", + "is-typed-array", + "is-weakref", + "object-inspect", + "object-keys", + "object.assign", + "regexp.prototype.flags", + "safe-array-concat", + "safe-regex-test", + "string.prototype.trim", + "string.prototype.trimend", + "string.prototype.trimstart", + "typed-array-buffer", + "typed-array-byte-length", + "typed-array-byte-offset", + "typed-array-length", + "unbox-primitive", + "which-typed-array" + ] + }, + "es-define-property@1.0.0": { + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": [ + "get-intrinsic" + ] + }, + "es-errors@1.3.0": { + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-iterator-helpers@1.2.0": { + "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "es-set-tostringtag", + "function-bind", + "get-intrinsic", + "globalthis", + "gopd", + "has-property-descriptors", + "has-proto", + "has-symbols", + "internal-slot", + "iterator.prototype", + "safe-array-concat" + ] + }, + "es-object-atoms@1.0.0": { + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": [ + "es-errors" + ] + }, + "es-set-tostringtag@2.0.3": { + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": [ + "get-intrinsic", + "has-tostringtag", + "hasown" + ] + }, + "es-shim-unscopables@1.0.2": { + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dependencies": [ + "hasown" + ] + }, + "es-to-primitive@1.2.1": { + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": [ + "is-callable", + "is-date-object", + "is-symbol" + ] + }, + "esbuild@0.23.1": { + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dependencies": [ + "@esbuild/aix-ppc64", + "@esbuild/android-arm", + "@esbuild/android-arm64", + "@esbuild/android-x64", + "@esbuild/darwin-arm64", + "@esbuild/darwin-x64", + "@esbuild/freebsd-arm64", + "@esbuild/freebsd-x64", + "@esbuild/linux-arm", + "@esbuild/linux-arm64", + "@esbuild/linux-ia32", + "@esbuild/linux-loong64", + "@esbuild/linux-mips64el", + "@esbuild/linux-ppc64", + "@esbuild/linux-riscv64", + "@esbuild/linux-s390x", + "@esbuild/linux-x64", + "@esbuild/netbsd-x64", + "@esbuild/openbsd-arm64", + "@esbuild/openbsd-x64", + "@esbuild/sunos-x64", + "@esbuild/win32-arm64", + "@esbuild/win32-ia32", + "@esbuild/win32-x64" + ] + }, + "escalade@3.2.0": { + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" + }, + "escape-string-regexp@4.0.0": { + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint-config-next@15.0.3_eslint@8.57.1_typescript@5.6.3_@typescript-eslint+parser@8.14.0__eslint@8.57.1__typescript@5.6.3_eslint-plugin-import@2.31.0__eslint@8.57.1": { + "integrity": "sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg==", + "dependencies": [ + "@next/eslint-plugin-next", + "@rushstack/eslint-patch", + "@typescript-eslint/eslint-plugin", + "@typescript-eslint/parser", + "eslint", + "eslint-import-resolver-node", + "eslint-import-resolver-typescript", + "eslint-plugin-import", + "eslint-plugin-jsx-a11y", + "eslint-plugin-react", + "eslint-plugin-react-hooks", + "typescript" + ] + }, + "eslint-import-resolver-node@0.3.9": { + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": [ + "debug@3.2.7", + "is-core-module", + "resolve@1.22.8" + ] + }, + "eslint-import-resolver-typescript@3.6.3_eslint@8.57.1_eslint-plugin-import@2.31.0__eslint@8.57.1": { + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dependencies": [ + "@nolyfill/is-core-module", + "debug@4.3.7", + "enhanced-resolve", + "eslint", + "eslint-module-utils", + "eslint-plugin-import", + "fast-glob@3.3.2", + "get-tsconfig", + "is-bun-module", + "is-glob" + ] + }, + "eslint-module-utils@2.12.0": { + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dependencies": [ + "debug@3.2.7" + ] + }, + "eslint-plugin-import@2.31.0_eslint@8.57.1": { + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dependencies": [ + "@rtsao/scc", + "array-includes", + "array.prototype.findlastindex", + "array.prototype.flat", + "array.prototype.flatmap", + "debug@3.2.7", + "doctrine@2.1.0", + "eslint", + "eslint-import-resolver-node", + "eslint-module-utils", + "hasown", + "is-core-module", + "is-glob", + "minimatch@3.1.2", + "object.fromentries", + "object.groupby", + "object.values", + "semver@6.3.1", + "string.prototype.trimend", + "tsconfig-paths" + ] + }, + "eslint-plugin-jsx-a11y@6.10.2_eslint@8.57.1": { + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dependencies": [ + "aria-query", + "array-includes", + "array.prototype.flatmap", + "ast-types-flow", + "axe-core", + "axobject-query", + "damerau-levenshtein", + "emoji-regex@9.2.2", + "eslint", + "hasown", + "jsx-ast-utils", + "language-tags", + "minimatch@3.1.2", + "object.fromentries", + "safe-regex-test", + "string.prototype.includes" + ] + }, + "eslint-plugin-react-hooks@5.0.0_eslint@8.57.1": { + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "dependencies": [ + "eslint" + ] + }, + "eslint-plugin-react@7.37.2_eslint@8.57.1": { + "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "dependencies": [ + "array-includes", + "array.prototype.findlast", + "array.prototype.flatmap", + "array.prototype.tosorted", + "doctrine@2.1.0", + "es-iterator-helpers", + "eslint", + "estraverse", + "hasown", + "jsx-ast-utils", + "minimatch@3.1.2", + "object.entries", + "object.fromentries", + "object.values", + "prop-types", + "resolve@2.0.0-next.5", + "semver@6.3.1", + "string.prototype.matchall", + "string.prototype.repeat" + ] + }, + "eslint-scope@7.2.2": { + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": [ + "esrecurse", + "estraverse" + ] + }, + "eslint-visitor-keys@3.4.3": { + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + }, + "eslint@8.57.1": { + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "dependencies": [ + "@eslint-community/eslint-utils", + "@eslint-community/regexpp", + "@eslint/eslintrc", + "@eslint/js", + "@humanwhocodes/config-array", + "@humanwhocodes/module-importer", + "@nodelib/fs.walk", + "@ungap/structured-clone", + "ajv", + "chalk", + "cross-spawn", + "debug@4.3.7", + "doctrine@3.0.0", + "escape-string-regexp", + "eslint-scope", + "eslint-visitor-keys", + "espree", + "esquery", + "esutils", + "fast-deep-equal", + "file-entry-cache", + "find-up", + "glob-parent@6.0.2", + "globals", + "graphemer", + "ignore", + "imurmurhash", + "is-glob", + "is-path-inside", + "js-yaml", + "json-stable-stringify-without-jsonify", + "levn", + "lodash.merge", + "minimatch@3.1.2", + "natural-compare", + "optionator", + "strip-ansi@6.0.1", + "text-table" + ] + }, + "espree@9.6.1_acorn@8.14.0": { + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": [ + "acorn", + "acorn-jsx", + "eslint-visitor-keys" + ] + }, + "esquery@1.6.0": { + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dependencies": [ + "estraverse" + ] + }, + "esrecurse@4.3.0": { + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": [ + "estraverse" + ] + }, + "estraverse@5.3.0": { + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils@2.0.3": { + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "fast-deep-equal@3.1.3": { + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-fifo@1.3.2": { + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "fast-glob@3.3.1": { + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": [ + "@nodelib/fs.stat", + "@nodelib/fs.walk", + "glob-parent@5.1.2", + "merge2", + "micromatch" + ] + }, + "fast-glob@3.3.2": { + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": [ + "@nodelib/fs.stat", + "@nodelib/fs.walk", + "glob-parent@5.1.2", + "merge2", + "micromatch" + ] + }, + "fast-json-stable-stringify@2.1.0": { + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein@2.0.6": { + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastq@1.17.1": { + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": [ + "reusify" + ] + }, + "file-entry-cache@6.0.1": { + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": [ + "flat-cache" + ] + }, + "fill-range@7.1.1": { + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": [ + "to-regex-range" + ] + }, + "find-up@5.0.0": { + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": [ + "locate-path", + "path-exists" + ] + }, + "flat-cache@3.2.0": { + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": [ + "flatted", + "keyv", + "rimraf@3.0.2" + ] + }, + "flatted@3.3.1": { + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + }, + "for-each@0.3.3": { + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": [ + "is-callable" + ] + }, + "foreground-child@3.3.0": { + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dependencies": [ + "cross-spawn", + "signal-exit" + ] + }, + "fp-ts@2.16.9": { + "integrity": "sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ==" + }, + "fraction.js@4.3.7": { + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" + }, + "fs-extra@11.2.0": { + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": [ + "graceful-fs", + "jsonfile@6.1.0", + "universalify@2.0.1" + ] + }, + "fs-extra@8.1.0": { + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": [ + "graceful-fs", + "jsonfile@4.0.0", + "universalify@0.1.2" + ] + }, + "fs-merger@3.2.1": { + "integrity": "sha512-AN6sX12liy0JE7C2evclwoo0aCG3PFulLjrTLsJpWh/2mM+DinhpSGqYLbHBBbIW1PLRNcFhJG8Axtz8mQW3ug==", + "dependencies": [ + "broccoli-node-api", + "broccoli-node-info", + "fs-extra@8.1.0", + "fs-tree-diff", + "walk-sync" + ] + }, + "fs-mkdirp-stream@2.0.1": { + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "dependencies": [ + "graceful-fs", + "streamx" + ] + }, + "fs-tree-diff@2.0.1": { + "integrity": "sha512-x+CfAZ/lJHQqwlD64pYM5QxWjzWhSjroaVsr8PW831zOApL55qPibed0c+xebaLWVr2BnHFoHdrwOv8pzt8R5A==", + "dependencies": [ + "@types/symlink-or-copy", + "heimdalljs-logger", + "object-assign", + "path-posix", + "symlink-or-copy" + ] + }, + "fs.realpath@1.0.0": { + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents@2.3.3": { + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name@1.1.6": { + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "functions-have-names" + ] + }, + "functions-have-names@1.2.3": { + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "get-intrinsic@1.2.4": { + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": [ + "es-errors", + "function-bind", + "has-proto", + "has-symbols", + "hasown" + ] + }, + "get-symbol-description@1.0.2": { + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dependencies": [ + "call-bind", + "es-errors", + "get-intrinsic" + ] + }, + "get-tsconfig@4.8.1": { + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dependencies": [ + "resolve-pkg-maps" + ] + }, + "glob-parent@5.1.2": { + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": [ + "is-glob" + ] + }, + "glob-parent@6.0.2": { + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": [ + "is-glob" + ] + }, + "glob-stream@8.0.2": { + "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", + "dependencies": [ + "@gulpjs/to-absolute-glob", + "anymatch", + "fastq", + "glob-parent@6.0.2", + "is-glob", + "is-negated-glob", + "normalize-path", + "streamx" + ] + }, + "glob@10.4.5": { + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": [ + "foreground-child", + "jackspeak", + "minimatch@9.0.5", + "minipass", + "package-json-from-dist", + "path-scurry" + ] + }, + "glob@7.2.3": { + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": [ + "fs.realpath", + "inflight", + "inherits", + "minimatch@3.1.2", + "once", + "path-is-absolute" + ] + }, + "globals@13.24.0": { + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": [ + "type-fest" + ] + }, + "globalthis@1.0.4": { + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dependencies": [ + "define-properties", + "gopd" + ] + }, + "gopd@1.0.1": { + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": [ + "get-intrinsic" + ] + }, + "graceful-fs@4.2.11": { + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "graphemer@1.4.0": { + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "gulp-sort@2.0.0": { + "integrity": "sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==", + "dependencies": [ + "through2" + ] + }, + "has-bigints@1.0.2": { + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors@1.0.2": { + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": [ + "es-define-property" + ] + }, + "has-proto@1.0.3": { + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols@1.0.3": { + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag@1.0.2": { + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": [ + "has-symbols" + ] + }, + "hasown@2.0.2": { + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": [ + "function-bind" + ] + }, + "heimdalljs-logger@0.1.10": { + "integrity": "sha512-pO++cJbhIufVI/fmB/u2Yty3KJD0TqNPecehFae0/eps0hkZ3b4Zc/PezUMOpYuHFQbA7FxHZxa305EhmjLj4g==", + "dependencies": [ + "debug@2.6.9", + "heimdalljs" + ] + }, + "heimdalljs@0.2.6": { + "integrity": "sha512-o9bd30+5vLBvBtzCPwwGqpry2+n0Hi6H1+qwt6y+0kwRHGGF8TFIhJPmnuM0xO97zaKrDZMwO/V56fAnn8m/tA==", + "dependencies": [ + "rsvp@3.2.1" + ] + }, + "htmlparser2@9.1.0": { + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "dependencies": [ + "domelementtype", + "domhandler", + "domutils", + "entities" + ] + }, + "i18next-parser@9.0.2": { + "integrity": "sha512-Q1yTZljBp1DcVAQD7LxduEqFRpjIeZc+5VnQ+gU8qG9WvY3U5rqK0IVONRWNtngh3orb197bfy1Sz4wlwcplxg==", + "dependencies": [ + "@babel/runtime", + "broccoli-plugin", + "cheerio", + "colors", + "commander@12.1.0", + "eol", + "esbuild", + "fs-extra@11.2.0", + "gulp-sort", + "i18next", + "js-yaml", + "lilconfig@3.1.2", + "rsvp@4.8.5", + "sort-keys", + "typescript", + "vinyl", + "vinyl-fs" + ] + }, + "i18next@23.16.5": { + "integrity": "sha512-KTlhE3EP9x6pPTAW7dy0WKIhoCpfOGhRQlO+jttQLgzVaoOjWwBWramu7Pp0i+8wDNduuzXfe3kkVbzrKyrbTA==", + "dependencies": [ + "@babel/runtime" + ] + }, + "iconv-lite@0.6.3": { + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": [ + "safer-buffer" + ] + }, + "ieee754@1.2.1": { + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore@5.3.2": { + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" + }, + "immutable@5.0.2": { + "integrity": "sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==" + }, + "import-fresh@3.3.0": { + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": [ + "parent-module", + "resolve-from" + ] + }, + "imurmurhash@0.1.4": { + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "inflight@1.0.6": { + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": [ + "once", + "wrappy" + ] + }, + "inherits@2.0.4": { + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "internal-slot@1.0.7": { + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": [ + "es-errors", + "hasown", + "side-channel" + ] + }, + "intl-messageformat@10.7.6": { + "integrity": "sha512-IsMU/hqyy3FJwNJ0hxDfY2heJ7MteSuFvcnCebxRp67di4Fhx1gKKE+qS0bBwUF8yXkX9SsPUhLeX/B6h5SKUA==", + "dependencies": [ + "@formatjs/ecma402-abstract", + "@formatjs/fast-memoize", + "@formatjs/icu-messageformat-parser", + "tslib@2.8.1" + ] + }, + "is-array-buffer@3.0.4": { + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": [ + "call-bind", + "get-intrinsic" + ] + }, + "is-arrayish@0.3.2": { + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-async-function@2.0.0": { + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-bigint@1.0.4": { + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": [ + "has-bigints" + ] + }, + "is-binary-path@2.1.0": { + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": [ + "binary-extensions" + ] + }, + "is-boolean-object@1.1.2": { + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": [ + "call-bind", + "has-tostringtag" + ] + }, + "is-bun-module@1.2.1": { + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dependencies": [ + "semver@7.6.3" + ] + }, + "is-callable@1.2.7": { + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-core-module@2.15.1": { + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dependencies": [ + "hasown" + ] + }, + "is-data-view@1.0.1": { + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": [ + "is-typed-array" + ] + }, + "is-date-object@1.0.5": { + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-finalizationregistry@1.0.2": { + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dependencies": [ + "call-bind" + ] + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-function@1.0.10": { + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": [ + "is-extglob" + ] + }, + "is-map@2.0.3": { + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" + }, + "is-negated-glob@1.0.0": { + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" + }, + "is-negative-zero@2.0.3": { + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" + }, + "is-number-object@1.0.7": { + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-path-inside@3.0.3": { + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj@4.1.0": { + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" + }, + "is-regex@1.1.4": { + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": [ + "call-bind", + "has-tostringtag" + ] + }, + "is-set@2.0.3": { + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" + }, + "is-shared-array-buffer@1.0.3": { + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": [ + "call-bind" + ] + }, + "is-string@1.0.7": { + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": [ + "has-tostringtag" + ] + }, + "is-symbol@1.0.4": { + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": [ + "has-symbols" + ] + }, + "is-typed-array@1.1.13": { + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": [ + "which-typed-array" + ] + }, + "is-valid-glob@1.0.0": { + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==" + }, + "is-weakmap@2.0.2": { + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" + }, + "is-weakref@1.0.2": { + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": [ + "call-bind" + ] + }, + "is-weakset@2.0.3": { + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dependencies": [ + "call-bind", + "get-intrinsic" + ] + }, + "isarray@1.0.0": { + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isarray@2.0.5": { + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "iterator.prototype@1.1.3": { + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "dependencies": [ + "define-properties", + "get-intrinsic", + "has-symbols", + "reflect.getprototypeof", + "set-function-name" + ] + }, + "jackspeak@3.4.3": { + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": [ + "@isaacs/cliui", + "@pkgjs/parseargs" + ] + }, + "jiti@1.21.6": { + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==" + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml@4.1.0": { + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": [ + "argparse" + ] + }, + "json-buffer@3.0.1": { + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-schema-traverse@0.4.1": { + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify@1.0.1": { + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "json5@1.0.2": { + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": [ + "minimist" + ] + }, + "jsonfile@4.0.0": { + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dependencies": [ + "graceful-fs" + ] + }, + "jsonfile@6.1.0": { + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": [ + "graceful-fs", + "universalify@2.0.1" + ] + }, + "jsx-ast-utils@3.3.5": { + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": [ + "array-includes", + "array.prototype.flat", + "object.assign", + "object.values" + ] + }, + "keyv@4.5.4": { + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": [ + "json-buffer" + ] + }, + "language-subtag-registry@0.3.23": { + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==" + }, + "language-tags@1.0.9": { + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dependencies": [ + "language-subtag-registry" + ] + }, + "lead@4.0.0": { + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==" + }, + "levn@0.4.1": { + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": [ + "prelude-ls", + "type-check" + ] + }, + "lilconfig@2.1.0": { + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" + }, + "lilconfig@3.1.2": { + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==" + }, + "lines-and-columns@1.2.4": { + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "locate-path@6.0.0": { + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": [ + "p-locate" + ] + }, + "lodash.merge@4.6.2": { + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "loose-envify@1.4.0": { + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": [ + "js-tokens" + ] + }, + "lru-cache@10.4.3": { + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "lucide-react@0.456.0_react@19.0.0-rc-66855b96-20241106": { + "integrity": "sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA==", + "dependencies": [ + "react" + ] + }, + "matcher-collection@2.0.1": { + "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", + "dependencies": [ + "@types/minimatch", + "minimatch@3.1.2" + ] + }, + "merge2@1.4.1": { + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch@4.0.8": { + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": [ + "braces", + "picomatch" + ] + }, + "minimatch@3.1.2": { + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": [ + "brace-expansion@1.1.11" + ] + }, + "minimatch@9.0.5": { + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": [ + "brace-expansion@2.0.1" + ] + }, + "minimist@1.2.8": { + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass@7.1.2": { + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + }, + "mktemp@0.4.0": { + "integrity": "sha512-IXnMcJ6ZyTuhRmJSjzvHSRhlVPiN9Jwc6e59V0bEJ0ba6OBeX2L0E+mRN1QseeOF4mM+F1Rit6Nh7o+rl2Yn/A==" + }, + "ms@2.0.0": { + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "mz@2.7.0": { + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": [ + "any-promise", + "object-assign", + "thenify-all" + ] + }, + "nanoid@3.3.7": { + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "natural-compare@1.4.0": { + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "negotiator@1.0.0": { + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" + }, + "next-intl@3.25.1_next@15.0.3__react@19.0.0-rc-66855b96-20241106__react-dom@19.0.0-rc-66855b96-20241106___react@19.0.0-rc-66855b96-20241106__sass@1.80.7_react@19.0.0-rc-66855b96-20241106_react-dom@19.0.0-rc-66855b96-20241106__react@19.0.0-rc-66855b96-20241106_sass@1.80.7": { + "integrity": "sha512-Z2dJWn5f/b1sb8EmuJcuDhbQTIp4RG1KBFAILgRt/y27W0ifU7Ll/os3liphUY4InyRH89uShTAk7ItAlpr0uA==", + "dependencies": [ + "@formatjs/intl-localematcher", + "negotiator", + "next", + "react", + "use-intl" + ] + }, + "next@15.0.3_react@19.0.0-rc-66855b96-20241106_react-dom@19.0.0-rc-66855b96-20241106__react@19.0.0-rc-66855b96-20241106_sass@1.80.7": { + "integrity": "sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==", + "dependencies": [ + "@next/env", + "@next/swc-darwin-arm64", + "@next/swc-darwin-x64", + "@next/swc-linux-arm64-gnu", + "@next/swc-linux-arm64-musl", + "@next/swc-linux-x64-gnu", + "@next/swc-linux-x64-musl", + "@next/swc-win32-arm64-msvc", + "@next/swc-win32-x64-msvc", + "@swc/counter", + "@swc/helpers", + "busboy", + "caniuse-lite", + "postcss@8.4.31", + "react", + "react-dom", + "sass", + "sharp", + "styled-jsx" + ] + }, + "node-addon-api@7.1.1": { + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" + }, + "node-releases@2.0.18": { + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "normalize-path@3.0.0": { + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range@0.1.2": { + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + }, + "now-and-later@3.0.0": { + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", + "dependencies": [ + "once" + ] + }, + "nth-check@2.1.1": { + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": [ + "boolbase" + ] + }, + "object-assign@4.1.1": { + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash@3.0.0": { + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "object-inspect@1.13.3": { + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==" + }, + "object-keys@1.1.1": { + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign@4.1.5": { + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": [ + "call-bind", + "define-properties", + "has-symbols", + "object-keys" + ] + }, + "object.entries@1.1.8": { + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-object-atoms" + ] + }, + "object.fromentries@2.0.8": { + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-object-atoms" + ] + }, + "object.groupby@1.0.3": { + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract" + ] + }, + "object.values@1.2.0": { + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-object-atoms" + ] + }, + "once@1.4.0": { + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": [ + "wrappy" + ] + }, + "optionator@0.9.4": { + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dependencies": [ + "deep-is", + "fast-levenshtein", + "levn", + "prelude-ls", + "type-check", + "word-wrap" + ] + }, + "p-limit@3.1.0": { + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": [ + "yocto-queue" + ] + }, + "p-locate@5.0.0": { + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": [ + "p-limit" + ] + }, + "package-json-from-dist@1.0.1": { + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + }, + "parent-module@1.0.1": { + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": [ + "callsites" + ] + }, + "parse5-htmlparser2-tree-adapter@7.1.0": { + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dependencies": [ + "domhandler", + "parse5" + ] + }, + "parse5-parser-stream@7.1.2": { + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dependencies": [ + "parse5" + ] + }, + "parse5@7.2.1": { + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dependencies": [ + "entities" + ] + }, + "path-exists@4.0.0": { + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute@1.0.1": { + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key@3.1.1": { + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse@1.0.7": { + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-posix@1.0.0": { + "integrity": "sha512-1gJ0WpNIiYcQydgg3Ed8KzvIqTsDpNwq+cjBCssvBtuTWjEqY1AW+i+OepiEMqDCzyro9B2sLAe4RBPajMYFiA==" + }, + "path-scurry@1.11.1": { + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": [ + "lru-cache", + "minipass" + ] + }, + "picocolors@1.1.1": { + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify@2.3.0": { + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pirates@4.0.6": { + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" + }, + "possible-typed-array-names@1.0.0": { + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, + "postcss-import@15.1.0_postcss@8.4.49": { + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": [ + "postcss@8.4.49", + "postcss-value-parser", + "read-cache", + "resolve@1.22.8" + ] + }, + "postcss-js@4.0.1_postcss@8.4.49": { + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": [ + "camelcase-css", + "postcss@8.4.49" + ] + }, + "postcss-load-config@4.0.2_postcss@8.4.49": { + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dependencies": [ + "lilconfig@3.1.2", + "postcss@8.4.49", + "yaml" + ] + }, + "postcss-nested@6.2.0_postcss@8.4.49": { + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dependencies": [ + "postcss@8.4.49", + "postcss-selector-parser" + ] + }, + "postcss-selector-parser@6.1.2": { + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": [ + "cssesc", + "util-deprecate" + ] + }, + "postcss-value-parser@4.2.0": { + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "postcss@8.4.31": { + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dependencies": [ + "nanoid", + "picocolors", + "source-map-js" + ] + }, + "postcss@8.4.49": { + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dependencies": [ + "nanoid", + "picocolors", + "source-map-js" + ] + }, + "prelude-ls@1.2.1": { + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "process-nextick-args@2.0.1": { + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-map-series@0.3.0": { + "integrity": "sha512-3npG2NGhTc8BWBolLLf8l/92OxMGaRLbqvIh9wjCHhDXNvk4zsxaTaCpiCunW09qWPrN2zeNSNwRLVBrQQtutA==" + }, + "prop-types@15.8.1": { + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": [ + "loose-envify", + "object-assign", + "react-is" + ] + }, + "punycode@2.3.1": { + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "queue-microtask@1.2.3": { + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "queue-tick@1.0.1": { + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "quick-temp@0.1.8": { + "integrity": "sha512-YsmIFfD9j2zaFwJkzI6eMG7y0lQP7YeWzgtFgNl38pGWZBSXJooZbOWwkcRot7Vt0Fg9L23pX0tqWU3VvLDsiA==", + "dependencies": [ + "mktemp", + "rimraf@2.7.1", + "underscore.string" + ] + }, + "react-dom@19.0.0-rc-66855b96-20241106_react@19.0.0-rc-66855b96-20241106": { + "integrity": "sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ==", + "dependencies": [ + "react", + "scheduler" + ] + }, + "react-is@16.13.1": { + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react@19.0.0-rc-66855b96-20241106": { + "integrity": "sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg==" + }, + "read-cache@1.0.0": { + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": [ + "pify" + ] + }, + "readable-stream@2.3.8": { + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": [ + "core-util-is", + "inherits", + "isarray@1.0.0", + "process-nextick-args", + "safe-buffer", + "string_decoder", + "util-deprecate" + ] + }, + "readable-stream@3.6.2": { + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": [ + "inherits", + "string_decoder", + "util-deprecate" + ] + }, + "readdirp@3.6.0": { + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": [ + "picomatch" + ] + }, + "readdirp@4.0.2": { + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==" + }, + "reflect.getprototypeof@1.0.6": { + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "get-intrinsic", + "globalthis", + "which-builtin-type" + ] + }, + "regenerator-runtime@0.14.1": { + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "regexp.prototype.flags@1.5.3": { + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-errors", + "set-function-name" + ] + }, + "remove-trailing-separator@1.1.0": { + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "replace-ext@2.0.0": { + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==" + }, + "resolve-from@4.0.0": { + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-options@2.0.0": { + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", + "dependencies": [ + "value-or-function" + ] + }, + "resolve-pkg-maps@1.0.0": { + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" + }, + "resolve@1.22.8": { + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": [ + "is-core-module", + "path-parse", + "supports-preserve-symlinks-flag" + ] + }, + "resolve@2.0.0-next.5": { + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dependencies": [ + "is-core-module", + "path-parse", + "supports-preserve-symlinks-flag" + ] + }, + "reusify@1.0.4": { + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf@2.7.1": { + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": [ + "glob@7.2.3" + ] + }, + "rimraf@3.0.2": { + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": [ + "glob@7.2.3" + ] + }, + "rsvp@3.2.1": { + "integrity": "sha512-Rf4YVNYpKjZ6ASAmibcwTNciQ5Co5Ztq6iZPEykHpkoflnD/K5ryE/rHehFsTm4NJj8nKDhbi3eKBWGogmNnkg==" + }, + "rsvp@4.8.5": { + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + }, + "run-parallel@1.2.0": { + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dependencies": [ + "queue-microtask" + ] + }, + "rxjs@7.8.1": { + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "safe-array-concat@1.1.2": { + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": [ + "call-bind", + "get-intrinsic", + "has-symbols", + "isarray@2.0.5" + ] + }, + "safe-buffer@5.1.2": { + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex-test@1.0.3": { + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dependencies": [ + "call-bind", + "es-errors", + "is-regex" + ] + }, + "safer-buffer@2.1.2": { + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass@1.80.7": { + "integrity": "sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==", + "dependencies": [ + "@parcel/watcher", + "chokidar@4.0.1", + "immutable", + "source-map-js" + ] + }, + "scheduler@0.25.0-rc-66855b96-20241106": { + "integrity": "sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA==" + }, + "semver@6.3.1": { + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "semver@7.6.3": { + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + }, + "set-function-length@1.2.2": { + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": [ + "define-data-property", + "es-errors", + "function-bind", + "get-intrinsic", + "gopd", + "has-property-descriptors" + ] + }, + "set-function-name@2.0.2": { + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": [ + "define-data-property", + "es-errors", + "functions-have-names", + "has-property-descriptors" + ] + }, + "sharp@0.33.5": { + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "dependencies": [ + "@img/sharp-darwin-arm64", + "@img/sharp-darwin-x64", + "@img/sharp-libvips-darwin-arm64", + "@img/sharp-libvips-darwin-x64", + "@img/sharp-libvips-linux-arm", + "@img/sharp-libvips-linux-arm64", + "@img/sharp-libvips-linux-s390x", + "@img/sharp-libvips-linux-x64", + "@img/sharp-libvips-linuxmusl-arm64", + "@img/sharp-libvips-linuxmusl-x64", + "@img/sharp-linux-arm", + "@img/sharp-linux-arm64", + "@img/sharp-linux-s390x", + "@img/sharp-linux-x64", + "@img/sharp-linuxmusl-arm64", + "@img/sharp-linuxmusl-x64", + "@img/sharp-wasm32", + "@img/sharp-win32-ia32", + "@img/sharp-win32-x64", + "color", + "detect-libc@2.0.3", + "semver@7.6.3" + ] + }, + "shebang-command@2.0.0": { + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": [ + "shebang-regex" + ] + }, + "shebang-regex@3.0.0": { + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "side-channel@1.0.6": { + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": [ + "call-bind", + "es-errors", + "get-intrinsic", + "object-inspect" + ] + }, + "signal-exit@4.1.0": { + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "simple-swizzle@0.2.2": { + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": [ + "is-arrayish" + ] + }, + "sort-keys@5.1.0": { + "integrity": "sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ==", + "dependencies": [ + "is-plain-obj" + ] + }, + "source-map-js@1.2.1": { + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + }, + "sprintf-js@1.1.3": { + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "stream-composer@1.0.2": { + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", + "dependencies": [ + "streamx" + ] + }, + "streamsearch@1.1.0": { + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + }, + "streamx@2.20.1": { + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "dependencies": [ + "bare-events", + "fast-fifo", + "queue-tick", + "text-decoder" + ] + }, + "string-width@4.2.3": { + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": [ + "emoji-regex@8.0.0", + "is-fullwidth-code-point", + "strip-ansi@6.0.1" + ] + }, + "string-width@5.1.2": { + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": [ + "eastasianwidth", + "emoji-regex@9.2.2", + "strip-ansi@7.1.0" + ] + }, + "string.prototype.includes@2.0.1": { + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract" + ] + }, + "string.prototype.matchall@4.0.11": { + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-errors", + "es-object-atoms", + "get-intrinsic", + "gopd", + "has-symbols", + "internal-slot", + "regexp.prototype.flags", + "set-function-name", + "side-channel" + ] + }, + "string.prototype.repeat@1.0.0": { + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dependencies": [ + "define-properties", + "es-abstract" + ] + }, + "string.prototype.trim@1.2.9": { + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": [ + "call-bind", + "define-properties", + "es-abstract", + "es-object-atoms" + ] + }, + "string.prototype.trimend@1.0.8": { + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": [ + "call-bind", + "define-properties", + "es-object-atoms" + ] + }, + "string.prototype.trimstart@1.0.8": { + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dependencies": [ + "call-bind", + "define-properties", + "es-object-atoms" + ] + }, + "string_decoder@1.1.1": { + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": [ + "safe-buffer" + ] + }, + "strip-ansi@6.0.1": { + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": [ + "ansi-regex@5.0.1" + ] + }, + "strip-ansi@7.1.0": { + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": [ + "ansi-regex@6.1.0" + ] + }, + "strip-bom@3.0.0": { + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + }, + "strip-json-comments@3.1.1": { + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "styled-jsx@5.1.6_react@19.0.0-rc-66855b96-20241106": { + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "dependencies": [ + "client-only", + "react" + ] + }, + "sucrase@3.35.0": { + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": [ + "@jridgewell/gen-mapping", + "commander@4.1.1", + "glob@10.4.5", + "lines-and-columns", + "mz", + "pirates", + "ts-interface-checker" + ] + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": [ + "has-flag" + ] + }, + "supports-preserve-symlinks-flag@1.0.0": { + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "symlink-or-copy@1.3.1": { + "integrity": "sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==" + }, + "tailwindcss@3.4.14_postcss@8.4.49": { + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "dependencies": [ + "@alloc/quick-lru", + "arg", + "chokidar@3.6.0", + "didyoumean", + "dlv", + "fast-glob@3.3.2", + "glob-parent@6.0.2", + "is-glob", + "jiti", + "lilconfig@2.1.0", + "micromatch", + "normalize-path", + "object-hash", + "picocolors", + "postcss@8.4.49", + "postcss-import", + "postcss-js", + "postcss-load-config", + "postcss-nested", + "postcss-selector-parser", + "resolve@1.22.8", + "sucrase" + ] + }, + "tapable@2.2.1": { + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "teex@1.0.1": { + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dependencies": [ + "streamx" + ] + }, + "text-decoder@1.2.1": { + "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==" + }, + "text-table@0.2.0": { + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "thenify-all@1.6.0": { + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": [ + "thenify" + ] + }, + "thenify@3.3.1": { + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": [ + "any-promise" + ] + }, + "through2@2.0.5": { + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": [ + "readable-stream@2.3.8", + "xtend" + ] + }, + "to-regex-range@5.0.1": { + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": [ + "is-number" + ] + }, + "to-through@3.0.0": { + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", + "dependencies": [ + "streamx" + ] + }, + "ts-api-utils@1.4.0_typescript@5.6.3": { + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "dependencies": [ + "typescript" + ] + }, + "ts-interface-checker@0.1.13": { + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "tsconfig-paths@3.15.0": { + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dependencies": [ + "@types/json5", + "json5", + "minimist", + "strip-bom" + ] + }, + "tslib@1.14.1": { + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tslib@2.8.1": { + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "type-check@0.4.0": { + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": [ + "prelude-ls" + ] + }, + "type-fest@0.20.2": { + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "typed-array-buffer@1.0.2": { + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": [ + "call-bind", + "es-errors", + "is-typed-array" + ] + }, + "typed-array-byte-length@1.0.1": { + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": [ + "call-bind", + "for-each", + "gopd", + "has-proto", + "is-typed-array" + ] + }, + "typed-array-byte-offset@1.0.2": { + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": [ + "available-typed-arrays", + "call-bind", + "for-each", + "gopd", + "has-proto", + "is-typed-array" + ] + }, + "typed-array-length@1.0.6": { + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": [ + "call-bind", + "for-each", + "gopd", + "has-proto", + "is-typed-array", + "possible-typed-array-names" + ] + }, + "typescript@5.6.3": { + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==" + }, + "unbox-primitive@1.0.2": { + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": [ + "call-bind", + "has-bigints", + "has-symbols", + "which-boxed-primitive" + ] + }, + "underscore.string@3.3.6": { + "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==", + "dependencies": [ + "sprintf-js", + "util-deprecate" + ] + }, + "undici-types@6.19.8": { + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "undici@6.21.0": { + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==" + }, + "universalify@0.1.2": { + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "universalify@2.0.1": { + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + }, + "update-browserslist-db@1.1.1_browserslist@4.24.2": { + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dependencies": [ + "browserslist", + "escalade", + "picocolors" + ] + }, + "uri-js@4.4.1": { + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": [ + "punycode" + ] + }, + "use-intl@3.25.1_react@19.0.0-rc-66855b96-20241106": { + "integrity": "sha512-Xeyl0+BjlBf6fJr2h5W/CESZ2IQAH7jzXYK4c/ao+qR26jNPW3FXBLjg7eLRxdeI6QaLcYGLtH3WYhC9I0+6Yg==", + "dependencies": [ + "@formatjs/fast-memoize", + "intl-messageformat", + "react" + ] + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "value-or-function@4.0.0": { + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==" + }, + "vinyl-contents@2.0.0": { + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", + "dependencies": [ + "bl", + "vinyl" + ] + }, + "vinyl-fs@4.0.0": { + "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", + "dependencies": [ + "fs-mkdirp-stream", + "glob-stream", + "graceful-fs", + "iconv-lite", + "is-valid-glob", + "lead", + "normalize-path", + "resolve-options", + "stream-composer", + "streamx", + "to-through", + "value-or-function", + "vinyl", + "vinyl-sourcemap" + ] + }, + "vinyl-sourcemap@2.0.0": { + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", + "dependencies": [ + "convert-source-map", + "graceful-fs", + "now-and-later", + "streamx", + "vinyl", + "vinyl-contents" + ] + }, + "vinyl@3.0.0": { + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dependencies": [ + "clone", + "clone-stats", + "remove-trailing-separator", + "replace-ext", + "teex" + ] + }, + "walk-sync@2.2.0": { + "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", + "dependencies": [ + "@types/minimatch", + "ensure-posix-path", + "matcher-collection", + "minimatch@3.1.2" + ] + }, + "whatwg-encoding@3.1.1": { + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dependencies": [ + "iconv-lite" + ] + }, + "whatwg-mimetype@4.0.0": { + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==" + }, + "which-boxed-primitive@1.0.2": { + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": [ + "is-bigint", + "is-boolean-object", + "is-number-object", + "is-string", + "is-symbol" + ] + }, + "which-builtin-type@1.1.4": { + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dependencies": [ + "function.prototype.name", + "has-tostringtag", + "is-async-function", + "is-date-object", + "is-finalizationregistry", + "is-generator-function", + "is-regex", + "is-weakref", + "isarray@2.0.5", + "which-boxed-primitive", + "which-collection", + "which-typed-array" + ] + }, + "which-collection@1.0.2": { + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dependencies": [ + "is-map", + "is-set", + "is-weakmap", + "is-weakset" + ] + }, + "which-typed-array@1.1.15": { + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": [ + "available-typed-arrays", + "call-bind", + "for-each", + "gopd", + "has-tostringtag" + ] + }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": [ + "isexe" + ] + }, + "word-wrap@1.2.5": { + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + }, + "wrap-ansi@7.0.0": { + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": [ + "ansi-styles@4.3.0", + "string-width@4.2.3", + "strip-ansi@6.0.1" + ] + }, + "wrap-ansi@8.1.0": { + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": [ + "ansi-styles@6.2.1", + "string-width@5.1.2", + "strip-ansi@7.1.0" + ] + }, + "wrappy@1.0.2": { + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yaml@2.6.0": { + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==" + }, + "yocto-queue@0.1.0": { + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } + }, + "workspace": { + "packageJson": { + "dependencies": [ + "npm:@reactivex/rxjs@^6.6.7", + "npm:@types/node@20", + "npm:@types/react-dom@18", + "npm:@types/react@18", + "npm:autoprefixer@^10.4.20", + "npm:clsx@^2.1.1", + "npm:eslint-config-next@15.0.3", + "npm:eslint@8", + "npm:fp-ts@^2.16.9", + "npm:i18next-parser@^9.0.2", + "npm:lucide-react@0.456", + "npm:next-intl@^3.25.0", + "npm:next@15.0.3", + "npm:postcss@^8.4.47", + "npm:react-dom@19.0.0-rc-66855b96-20241106", + "npm:react@19.0.0-rc-66855b96-20241106", + "npm:rxjs@^7.8.1", + "npm:sass@^1.80.6", + "npm:tailwindcss@^3.4.14", + "npm:typescript@5" + ] + } + } +} diff --git a/frontend-react/package-lock.json b/frontend-react/package-lock.json index 07bfad9..ec3d99c 100644 --- a/frontend-react/package-lock.json +++ b/frontend-react/package-lock.json @@ -8,12 +8,15 @@ "name": "frontend-react", "version": "0.1.0", "dependencies": { + "@reactivex/rxjs": "^6.6.7", "clsx": "^2.1.1", + "fp-ts": "^2.16.9", "lucide-react": "^0.456.0", "next": "15.0.3", "next-intl": "^3.25.0", "react": "19.0.0-rc-66855b96-20241106", - "react-dom": "19.0.0-rc-66855b96-20241106" + "react-dom": "19.0.0-rc-66855b96-20241106", + "rxjs": "^7.8.1" }, "devDependencies": { "@types/node": "^20", @@ -1625,6 +1628,24 @@ "node": ">=14" } }, + "node_modules/@reactivex/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/@reactivex/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-xZIV2JgHhWoVPm3uVcFbZDRVJfx2hgqmuTX7J4MuKaZ+j5jN29agniCPBwrlCmpA15/zLKcPi7/bogt0ZwOFyA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@reactivex/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -4083,6 +4104,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/fp-ts": { + "version": "2.16.9", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.9.tgz", + "integrity": "sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ==", + "license": "MIT" + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -6673,6 +6700,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", diff --git a/frontend-react/package.json b/frontend-react/package.json index a66f0e3..55bde25 100644 --- a/frontend-react/package.json +++ b/frontend-react/package.json @@ -9,12 +9,15 @@ "lint": "next lint" }, "dependencies": { + "@reactivex/rxjs": "^6.6.7", "clsx": "^2.1.1", + "fp-ts": "^2.16.9", "lucide-react": "^0.456.0", "next": "15.0.3", "next-intl": "^3.25.0", "react": "19.0.0-rc-66855b96-20241106", - "react-dom": "19.0.0-rc-66855b96-20241106" + "react-dom": "19.0.0-rc-66855b96-20241106", + "rxjs": "^7.8.1" }, "devDependencies": { "@types/node": "^20",