From 811e79411f770053ac93d090a0ed144e4f264179 Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Sat, 10 Jan 2026 21:50:54 +0100 Subject: [PATCH 1/7] refactor: adapt to Prisma 7 generated client --- package.json | 9 +- pnpm-lock.yaml | 619 ++++++- prisma.config.ts | 8 + prisma/client/browser.ts | 24 + prisma/client/client.ts | 46 + prisma/client/commonInputTypes.ts | 509 ++++++ prisma/client/enums.ts | 15 + prisma/client/internal/class.ts | 190 ++ prisma/client/internal/prismaNamespace.ts | 832 +++++++++ .../client/internal/prismaNamespaceBrowser.ts | 136 ++ prisma/client/models.ts | 12 + prisma/client/models/QueueJob.ts | 1604 +++++++++++++++++ prisma/index.ts | 1 + prisma/schema.prisma | 4 +- src/PrismaJob.ts | 9 +- src/PrismaQueue.ts | 10 +- src/types.ts | 3 +- src/utils/error.ts | 6 - src/utils/prisma.ts | 11 +- src/utils/stringify.ts | 2 +- test/utils/client.ts | 5 +- test/utils/queue.ts | 2 +- tsconfig.json | 2 +- 23 files changed, 3977 insertions(+), 82 deletions(-) create mode 100644 prisma.config.ts create mode 100644 prisma/client/browser.ts create mode 100644 prisma/client/client.ts create mode 100644 prisma/client/commonInputTypes.ts create mode 100644 prisma/client/enums.ts create mode 100644 prisma/client/internal/class.ts create mode 100644 prisma/client/internal/prismaNamespace.ts create mode 100644 prisma/client/internal/prismaNamespaceBrowser.ts create mode 100644 prisma/client/models.ts create mode 100644 prisma/client/models/QueueJob.ts create mode 100644 prisma/index.ts diff --git a/package.json b/package.json index 90a8c62..58139ac 100644 --- a/package.json +++ b/package.json @@ -37,10 +37,10 @@ "spec": "DEBUG=prisma-queue,prisma-query vitest --run --pool=forks", "coverage": "DEBUG=prisma-queue,prisma-query vitest --run --pool=forks --coverage", "dev": "DEBUG=prisma-queue vitest --watch --pool=forks --reporter=dot", - "test": "npm run lint && npm run prettycheck && npm run typecheck && npm run spec", + "test": "pnpm run lint && pnpm run prettycheck && pnpm run typecheck && pnpm run spec", "prepare": "prisma generate", "reset": "prisma db push --force-reset && prisma generate", - "prepublishOnly": "npm run build", + "prepublishOnly": "pnpm run build", "with-env": "dotenv -e ./.env --" }, "dependencies": { @@ -52,7 +52,8 @@ }, "devDependencies": { "@mgcrea/eslint-config-node": "^0.14.1", - "@prisma/client": "6.16.2", + "@prisma/adapter-pg": "^7.2.0", + "@prisma/client": "7.2.0", "@tsconfig/node-lts": "^24.0.0", "@tsconfig/strictest": "^2.0.8", "@types/debug": "^4.1.12", @@ -62,7 +63,7 @@ "eslint": "^9.39.2", "prettier": "^3.7.4", "prettier-plugin-organize-imports": "^4.3.0", - "prisma": "6.16.2", + "prisma": "7.2.0", "tsup": "^8.5.1", "tsx": "^4.21.0", "typescript": "^5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94b816b..d202460 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,9 +18,12 @@ importers: '@mgcrea/eslint-config-node': specifier: ^0.14.1 version: 0.14.1(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4)(typescript@5.9.3)(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)) + '@prisma/adapter-pg': + specifier: ^7.2.0 + version: 7.2.0 '@prisma/client': - specifier: 6.16.2 - version: 6.16.2(prisma@6.16.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3) + specifier: 7.2.0 + version: 7.2.0(prisma@7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3) '@tsconfig/node-lts': specifier: ^24.0.0 version: 24.0.0 @@ -49,8 +52,8 @@ importers: specifier: ^4.3.0 version: 4.3.0(prettier@3.7.4)(typescript@5.9.3) prisma: - specifier: 6.16.2 - version: 6.16.2(magicast@0.3.5)(typescript@5.9.3) + specifier: 7.2.0 + version: 7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) tsup: specifier: ^8.5.1 version: 8.5.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3) @@ -94,6 +97,32 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@chevrotain/cst-dts-gen@10.5.0': + resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==} + + '@chevrotain/gast@10.5.0': + resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==} + + '@chevrotain/types@10.5.0': + resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==} + + '@chevrotain/utils@10.5.0': + resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} + + '@electric-sql/pglite-socket@0.0.6': + resolution: {integrity: sha512-6RjmgzphIHIBA4NrMGJsjNWK4pu+bCWJlEWlwcxFTVY3WT86dFpKwbZaGWZV6C5Rd7sCk1Z0CI76QEfukLAUXw==} + hasBin: true + peerDependencies: + '@electric-sql/pglite': 0.3.2 + + '@electric-sql/pglite-tools@0.2.7': + resolution: {integrity: sha512-9dAccClqxx4cZB+Ar9B+FZ5WgxDc/Xvl9DPrTWv+dYTf0YNubLzi4wHHRGRGhrJv15XwnyKcGOZAP1VXSneSUg==} + peerDependencies: + '@electric-sql/pglite': 0.3.2 + + '@electric-sql/pglite@0.3.2': + resolution: {integrity: sha512-zfWWa+V2ViDCY/cmUfRqeWY1yLto+EpxjXnZzenB1TyxsTiXaTWeZFIZw6mac52BsuQm0RjCnisjBtdBaXOI6w==} + '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} @@ -298,6 +327,12 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@hono/node-server@1.19.6': + resolution: {integrity: sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -346,6 +381,10 @@ packages: '@mgcrea/eslint-config-node@0.14.1': resolution: {integrity: sha512-vM/zLzRru720IhQ1DPOy+ZVI4qsJTkPsa/TFhuFWutvioSYJ8MhzSx3wcDOlV44ueKIoKNYYGVpztgWZcw5+gg==} + '@mrleebo/prisma-ast@0.12.1': + resolution: {integrity: sha512-JwqeCQ1U3fvccttHZq7Tk0m/TMC6WcFAQZdukypW3AzlJYKYTGNVd1ANU2GuhKnv4UQuOFj3oAl0LLG/gxFN1w==} + engines: {node: '>=16'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -354,35 +393,63 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@prisma/client@6.16.2': - resolution: {integrity: sha512-E00PxBcalMfYO/TWnXobBVUai6eW/g5OsifWQsQDzJYm7yaY+IRLo7ZLsaefi0QkTpxfuhFcQ/w180i6kX3iJw==} - engines: {node: '>=18.18'} + '@prisma/adapter-pg@7.2.0': + resolution: {integrity: sha512-euIdQ13cRB2wZ3jPsnDnFhINquo1PYFPCg6yVL8b2rp3EdinQHsX9EDdCtRr489D5uhphcRk463OdQAFlsCr0w==} + + '@prisma/client-runtime-utils@7.2.0': + resolution: {integrity: sha512-dn7oB53v0tqkB0wBdMuTNFNPdEbfICEUe82Tn9FoKAhJCUkDH+fmyEp0ClciGh+9Hp2Tuu2K52kth2MTLstvmA==} + + '@prisma/client@7.2.0': + resolution: {integrity: sha512-JdLF8lWZ+LjKGKpBqyAlenxd/kXjd1Abf/xK+6vUA7R7L2Suo6AFTHFRpPSdAKCan9wzdFApsUpSa/F6+t1AtA==} + engines: {node: ^20.19 || ^22.12 || >=24.0} peerDependencies: prisma: '*' - typescript: '>=5.1.0' + typescript: '>=5.4.0' peerDependenciesMeta: prisma: optional: true typescript: optional: true - '@prisma/config@6.16.2': - resolution: {integrity: sha512-mKXSUrcqXj0LXWPmJsK2s3p9PN+aoAbyMx7m5E1v1FufofR1ZpPoIArjjzOIm+bJRLLvYftoNYLx1tbHgF9/yg==} + '@prisma/config@7.2.0': + resolution: {integrity: sha512-qmvSnfQ6l/srBW1S7RZGfjTQhc44Yl3ldvU6y3pgmuLM+83SBDs6UQVgMtQuMRe9J3gGqB0RF8wER6RlXEr6jQ==} + + '@prisma/debug@6.8.2': + resolution: {integrity: sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==} + + '@prisma/debug@7.2.0': + resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==} + + '@prisma/dev@0.17.0': + resolution: {integrity: sha512-6sGebe5jxX+FEsQTpjHLzvOGPn6ypFQprcs3jcuIWv1Xp/5v6P/rjfdvAwTkP2iF6pDx2tCd8vGLNWcsWzImTA==} + + '@prisma/driver-adapter-utils@7.2.0': + resolution: {integrity: sha512-gzrUcbI9VmHS24Uf+0+7DNzdIw7keglJsD5m/MHxQOU68OhGVzlphQRobLiDMn8CHNA2XN8uugwKjudVtnfMVQ==} - '@prisma/debug@6.16.2': - resolution: {integrity: sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA==} + '@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3': + resolution: {integrity: sha512-KezsjCZDsbjNR7SzIiVlUsn9PnLePI7r5uxABlwL+xoerurZTfgQVbIjvjF2sVr3Uc0ZcsnREw3F84HvbggGdA==} - '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': - resolution: {integrity: sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==} + '@prisma/engines@7.2.0': + resolution: {integrity: sha512-HUeOI/SvCDsHrR9QZn24cxxZcujOjcS3w1oW/XVhnSATAli5SRMOfp/WkG3TtT5rCxDA4xOnlJkW7xkho4nURA==} - '@prisma/engines@6.16.2': - resolution: {integrity: sha512-7yf3AjfPUgsg/l7JSu1iEhsmZZ/YE00yURPjTikqm2z4btM0bCl2coFtTGfeSOWbQMmq45Jab+53yGUIAT1sjA==} + '@prisma/fetch-engine@7.2.0': + resolution: {integrity: sha512-Z5XZztJ8Ap+wovpjPD2lQKnB8nWFGNouCrglaNFjxIWAGWz0oeHXwUJRiclIoSSXN/ptcs9/behptSk8d0Yy6w==} - '@prisma/fetch-engine@6.16.2': - resolution: {integrity: sha512-wPnZ8DMRqpgzye758ZvfAMiNJRuYpz+rhgEBZi60ZqDIgOU2694oJxiuu3GKFeYeR/hXxso4/2oBC243t/whxQ==} + '@prisma/get-platform@6.8.2': + resolution: {integrity: sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==} - '@prisma/get-platform@6.16.2': - resolution: {integrity: sha512-U/P36Uke5wS7r1+omtAgJpEB94tlT4SdlgaeTc6HVTTT93pXj7zZ+B/cZnmnvjcNPfWddgoDx8RLjmQwqGDYyA==} + '@prisma/get-platform@7.2.0': + resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} + + '@prisma/query-plan-executor@6.18.0': + resolution: {integrity: sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA==} + + '@prisma/studio-core@0.9.0': + resolution: {integrity: sha512-xA2zoR/ADu/NCSQuriBKTh6Ps4XjU0bErkEcgMfnSGh346K1VI7iWKnoq1l2DoxUqiddPHIEWwtxJ6xCHG6W7g==} + peerDependencies: + '@types/react': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 '@rollup/rollup-android-arm-eabi@4.51.0': resolution: {integrity: sha512-VyfldO8T/C5vAXBGIobrAnUE+VJNVLw5z9h4NgSDq/AJZWt/fXqdW+0PJbk+M74xz7yMDRiHtlsuDV7ew6K20w==} @@ -519,6 +586,9 @@ packages: '@types/node@24.10.6': resolution: {integrity: sha512-B8h60xgJMR/xmgyX9fncRzEW9gCxoJjdenUhke2v1JGOd/V66KopmWrLPXi5oUI4VuiGK+d+HlXJjDRZMj21EQ==} + '@types/react@19.2.8': + resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} + '@typescript-eslint/eslint-plugin@8.52.0': resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -667,6 +737,10 @@ packages: ast-v8-to-istanbul@0.3.10: resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} + aws-ssl-profiles@1.1.2: + resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} + engines: {node: '>= 6.0.0'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -706,6 +780,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chevrotain@10.5.0: + resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -745,6 +822,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -764,6 +844,10 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} @@ -786,8 +870,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect@3.16.12: - resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==} + effect@3.18.4: + resolution: {integrity: sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -930,11 +1014,21 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-tsconfig@4.7.5: resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} @@ -957,13 +1051,30 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grammex@3.1.12: + resolution: {integrity: sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + hono@4.10.6: + resolution: {integrity: sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==} + engines: {node: '>=16.9.0'} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + http-status-codes@2.3.0: + resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -992,6 +1103,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1045,6 +1159,10 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -1063,9 +1181,19 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru.min@1.1.3: + resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==} + engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -1103,9 +1231,17 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mysql2@3.15.3: + resolution: {integrity: sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==} + engines: {node: '>= 8.0'} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + named-placeholders@1.1.6: + resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} + engines: {node: '>=8.0.0'} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1169,6 +1305,40 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + pg-cloudflare@1.2.7: + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} + + pg-connection-string@2.9.1: + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.10.1: + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.16.3: + resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1208,6 +1378,30 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-array@3.0.4: + resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} + engines: {node: '>=12'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + postgres@3.4.7: + resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==} + engines: {node: '>=12'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -1231,16 +1425,22 @@ packages: engines: {node: '>=14'} hasBin: true - prisma@6.16.2: - resolution: {integrity: sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==} - engines: {node: '>=18.18'} + prisma@7.2.0: + resolution: {integrity: sha512-jSdHWgWOgFF24+nRyyNRVBIgGDQEsMEF8KPHvhBBg3jWyR9fUAK0Nq9ThUmiGlNgq2FA7vSk/ZoCvefod+a8qg==} + engines: {node: ^20.19 || ^22.12 || >=24.0} hasBin: true peerDependencies: - typescript: '>=5.1.0' + better-sqlite3: '>=9.0.0' + typescript: '>=5.4.0' peerDependenciesMeta: + better-sqlite3: + optional: true typescript: optional: true + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -1251,10 +1451,25 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + react-dom@19.2.3: + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + peerDependencies: + react: ^19.2.3 + + react@19.2.3: + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + engines: {node: '>=0.10.0'} + readdirp@4.0.2: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} + regexp-to-ast@0.5.0: + resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} + + remeda@2.21.3: + resolution: {integrity: sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -1266,11 +1481,21 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + rollup@4.51.0: resolution: {integrity: sha512-7cR0XWrdp/UAj2HMY/Y4QQEUjidn3l2AY1wSeZoFjMbD8aOMPoV9wgTFYbrJpPzzvejDEini1h3CiUP8wLzxQA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + semver@7.6.2: resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} @@ -1281,6 +1506,9 @@ packages: engines: {node: '>=10'} hasBin: true + seq-queue@0.0.5: + resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1292,6 +1520,9 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -1304,12 +1535,23 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sqlstring@2.3.3: + resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==} + engines: {node: '>= 0.6'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -1356,9 +1598,6 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.1: - resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -1422,6 +1661,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + typescript-eslint@8.52.0: resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1443,6 +1686,14 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + valibot@1.2.0: + resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + vite-tsconfig-paths@6.0.4: resolution: {integrity: sha512-iIsEJ+ek5KqRTK17pmxtgIxXtqr3qDdE6OxrP9mVeGhVDNXRJTKN/l9oMbujTQNzMLe6XZ8qmpztfbkPu2TiFQ==} peerDependencies: @@ -1543,10 +1794,17 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zeptomatch@2.0.2: + resolution: {integrity: sha512-H33jtSKf8Ijtb5BW6wua3G5DhnFjbFML36eFu+VdOoVY4HD9e7ggjqdM6639B+L87rjnR6Y+XeRzBXZdy52B/g==} + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -1566,6 +1824,31 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@chevrotain/cst-dts-gen@10.5.0': + dependencies: + '@chevrotain/gast': 10.5.0 + '@chevrotain/types': 10.5.0 + lodash: 4.17.21 + + '@chevrotain/gast@10.5.0': + dependencies: + '@chevrotain/types': 10.5.0 + lodash: 4.17.21 + + '@chevrotain/types@10.5.0': {} + + '@chevrotain/utils@10.5.0': {} + + '@electric-sql/pglite-socket@0.0.6(@electric-sql/pglite@0.3.2)': + dependencies: + '@electric-sql/pglite': 0.3.2 + + '@electric-sql/pglite-tools@0.2.7(@electric-sql/pglite@0.3.2)': + dependencies: + '@electric-sql/pglite': 0.3.2 + + '@electric-sql/pglite@0.3.2': {} + '@esbuild/aix-ppc64@0.27.2': optional: true @@ -1697,6 +1980,10 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@hono/node-server@1.19.6(hono@4.10.6)': + dependencies: + hono: 4.10.6 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -1753,45 +2040,102 @@ snapshots: - typescript - vitest + '@mrleebo/prisma-ast@0.12.1': + dependencies: + chevrotain: 10.5.0 + lilconfig: 2.1.0 + '@pkgjs/parseargs@0.11.0': optional: true '@pkgr/core@0.2.9': {} - '@prisma/client@6.16.2(prisma@6.16.2(magicast@0.3.5)(typescript@5.9.3))(typescript@5.9.3)': + '@prisma/adapter-pg@7.2.0': + dependencies: + '@prisma/driver-adapter-utils': 7.2.0 + pg: 8.16.3 + postgres-array: 3.0.4 + transitivePeerDependencies: + - pg-native + + '@prisma/client-runtime-utils@7.2.0': {} + + '@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@prisma/client-runtime-utils': 7.2.0 optionalDependencies: - prisma: 6.16.2(magicast@0.3.5)(typescript@5.9.3) + prisma: 7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) typescript: 5.9.3 - '@prisma/config@6.16.2(magicast@0.3.5)': + '@prisma/config@7.2.0(magicast@0.3.5)': dependencies: c12: 3.1.0(magicast@0.3.5) deepmerge-ts: 7.1.5 - effect: 3.16.12 + effect: 3.18.4 empathic: 2.0.0 transitivePeerDependencies: - magicast - '@prisma/debug@6.16.2': {} + '@prisma/debug@6.8.2': {} + + '@prisma/debug@7.2.0': {} - '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': {} + '@prisma/dev@0.17.0(typescript@5.9.3)': + dependencies: + '@electric-sql/pglite': 0.3.2 + '@electric-sql/pglite-socket': 0.0.6(@electric-sql/pglite@0.3.2) + '@electric-sql/pglite-tools': 0.2.7(@electric-sql/pglite@0.3.2) + '@hono/node-server': 1.19.6(hono@4.10.6) + '@mrleebo/prisma-ast': 0.12.1 + '@prisma/get-platform': 6.8.2 + '@prisma/query-plan-executor': 6.18.0 + foreground-child: 3.3.1 + get-port-please: 3.1.2 + hono: 4.10.6 + http-status-codes: 2.3.0 + pathe: 2.0.3 + proper-lockfile: 4.1.2 + remeda: 2.21.3 + std-env: 3.9.0 + valibot: 1.2.0(typescript@5.9.3) + zeptomatch: 2.0.2 + transitivePeerDependencies: + - typescript + + '@prisma/driver-adapter-utils@7.2.0': + dependencies: + '@prisma/debug': 7.2.0 + + '@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3': {} + + '@prisma/engines@7.2.0': + dependencies: + '@prisma/debug': 7.2.0 + '@prisma/engines-version': 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + '@prisma/fetch-engine': 7.2.0 + '@prisma/get-platform': 7.2.0 - '@prisma/engines@6.16.2': + '@prisma/fetch-engine@7.2.0': dependencies: - '@prisma/debug': 6.16.2 - '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43 - '@prisma/fetch-engine': 6.16.2 - '@prisma/get-platform': 6.16.2 + '@prisma/debug': 7.2.0 + '@prisma/engines-version': 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + '@prisma/get-platform': 7.2.0 - '@prisma/fetch-engine@6.16.2': + '@prisma/get-platform@6.8.2': dependencies: - '@prisma/debug': 6.16.2 - '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43 - '@prisma/get-platform': 6.16.2 + '@prisma/debug': 6.8.2 - '@prisma/get-platform@6.16.2': + '@prisma/get-platform@7.2.0': dependencies: - '@prisma/debug': 6.16.2 + '@prisma/debug': 7.2.0 + + '@prisma/query-plan-executor@6.18.0': {} + + '@prisma/studio-core@0.9.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@types/react': 19.2.8 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) '@rollup/rollup-android-arm-eabi@4.51.0': optional: true @@ -1882,6 +2226,10 @@ snapshots: dependencies: undici-types: 7.16.0 + '@types/react@19.2.8': + dependencies: + csstype: 3.2.3 + '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -2073,6 +2421,8 @@ snapshots: estree-walker: 3.0.3 js-tokens: 9.0.1 + aws-ssl-profiles@1.1.2: {} + balanced-match@1.0.2: {} brace-expansion@1.1.11: @@ -2117,6 +2467,15 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chevrotain@10.5.0: + dependencies: + '@chevrotain/cst-dts-gen': 10.5.0 + '@chevrotain/gast': 10.5.0 + '@chevrotain/types': 10.5.0 + '@chevrotain/utils': 10.5.0 + lodash: 4.17.21 + regexp-to-ast: 0.5.0 + chokidar@4.0.3: dependencies: readdirp: 4.0.2 @@ -2149,6 +2508,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + csstype@3.2.3: {} + debug@4.4.3: dependencies: ms: 2.1.3 @@ -2159,6 +2520,8 @@ snapshots: defu@6.1.4: {} + denque@2.1.0: {} + destr@2.0.5: {} dotenv-cli@11.0.0: @@ -2178,7 +2541,7 @@ snapshots: eastasianwidth@0.2.0: {} - effect@3.16.12: + effect@3.18.4: dependencies: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 @@ -2354,9 +2717,20 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fsevents@2.3.3: optional: true + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + + get-port-please@3.1.2: {} + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -2387,10 +2761,22 @@ snapshots: globrex@0.1.2: {} + graceful-fs@4.2.11: {} + + grammex@3.1.12: {} + has-flag@4.0.0: {} + hono@4.10.6: {} + html-escaper@2.0.2: {} + http-status-codes@2.3.0: {} + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + ignore@5.3.1: {} ignore@7.0.5: {} @@ -2410,6 +2796,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-property@1.0.2: {} + isexe@2.0.0: {} istanbul-lib-coverage@3.2.2: {} @@ -2464,6 +2852,8 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lilconfig@2.1.0: {} + lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -2476,8 +2866,14 @@ snapshots: lodash.merge@4.6.2: {} + lodash@4.17.21: {} + + long@5.3.2: {} + lru-cache@10.4.3: {} + lru.min@1.1.3: {} + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2524,12 +2920,28 @@ snapshots: ms@2.1.3: {} + mysql2@3.15.3: + dependencies: + aws-ssl-profiles: 1.1.2 + denque: 2.1.0 + generate-function: 2.3.1 + iconv-lite: 0.7.2 + long: 5.3.2 + lru.min: 1.1.3 + named-placeholders: 1.1.6 + seq-queue: 0.0.5 + sqlstring: 2.3.3 + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + named-placeholders@1.1.6: + dependencies: + lru.min: 1.1.3 + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -2542,7 +2954,7 @@ snapshots: consola: 3.4.2 pathe: 2.0.3 pkg-types: 2.3.0 - tinyexec: 1.0.1 + tinyexec: 1.0.2 object-assign@4.1.1: {} @@ -2586,6 +2998,41 @@ snapshots: perfect-debounce@1.0.0: {} + pg-cloudflare@1.2.7: + optional: true + + pg-connection-string@2.9.1: {} + + pg-int8@1.0.1: {} + + pg-pool@3.10.1(pg@8.16.3): + dependencies: + pg: 8.16.3 + + pg-protocol@1.10.3: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.16.3: + dependencies: + pg-connection-string: 2.9.1 + pg-pool: 3.10.1(pg@8.16.3) + pg-protocol: 1.10.3 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.2.7 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + picocolors@1.1.1: {} picomatch@4.0.3: {} @@ -2618,6 +3065,20 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-array@3.0.4: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + postgres@3.4.7: {} + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -2631,14 +3092,27 @@ snapshots: prettier@3.7.4: {} - prisma@6.16.2(magicast@0.3.5)(typescript@5.9.3): + prisma@7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: - '@prisma/config': 6.16.2(magicast@0.3.5) - '@prisma/engines': 6.16.2 + '@prisma/config': 7.2.0(magicast@0.3.5) + '@prisma/dev': 0.17.0(typescript@5.9.3) + '@prisma/engines': 7.2.0 + '@prisma/studio-core': 0.9.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + mysql2: 3.15.3 + postgres: 3.4.7 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: + - '@types/react' - magicast + - react + - react-dom + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 punycode@2.3.0: {} @@ -2649,14 +3123,29 @@ snapshots: defu: 6.1.4 destr: 2.0.5 + react-dom@19.2.3(react@19.2.3): + dependencies: + react: 19.2.3 + scheduler: 0.27.0 + + react@19.2.3: {} + readdirp@4.0.2: {} + regexp-to-ast@0.5.0: {} + + remeda@2.21.3: + dependencies: + type-fest: 4.41.0 + resolve-from@4.0.0: {} resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} + retry@0.12.0: {} + rollup@4.51.0: dependencies: '@types/estree': 1.0.8 @@ -2684,10 +3173,16 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.51.0 fsevents: 2.3.3 + safer-buffer@2.1.2: {} + + scheduler@0.27.0: {} + semver@7.6.2: {} semver@7.7.3: {} + seq-queue@0.0.5: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -2696,16 +3191,24 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} source-map-js@1.2.1: {} source-map@0.7.6: {} + split2@4.2.0: {} + + sqlstring@2.3.3: {} + stackback@0.0.2: {} std-env@3.10.0: {} + std-env@3.9.0: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -2758,8 +3261,6 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.1: {} - tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -2820,6 +3321,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@4.41.0: {} + typescript-eslint@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3): dependencies: '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) @@ -2841,6 +3344,10 @@ snapshots: dependencies: punycode: 2.3.0 + valibot@1.2.0(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)): dependencies: debug: 4.4.3 @@ -2924,4 +3431,10 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + xtend@4.0.2: {} + yocto-queue@0.1.0: {} + + zeptomatch@2.0.2: + dependencies: + grammex: 3.1.12 diff --git a/prisma.config.ts b/prisma.config.ts new file mode 100644 index 0000000..72a17e2 --- /dev/null +++ b/prisma.config.ts @@ -0,0 +1,8 @@ +import { defineConfig, env } from "prisma/config"; + +export default defineConfig({ + schema: "prisma/schema.prisma", + datasource: { + url: env("DATABASE_URL"), + }, +}); diff --git a/prisma/client/browser.ts b/prisma/client/browser.ts new file mode 100644 index 0000000..b4b1e2a --- /dev/null +++ b/prisma/client/browser.ts @@ -0,0 +1,24 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file should be your main import to use Prisma-related types and utilities in a browser. + * Use it to get access to models, enums, and input types. + * + * This file does not contain a `PrismaClient` class, nor several other helpers that are intended as server-side only. + * See `client.ts` for the standard, server-side entry point. + * + * 🟢 You can import this file directly. + */ + +import * as Prisma from './internal/prismaNamespaceBrowser' +export { Prisma } +export * as $Enums from './enums' +export * from './enums'; +/** + * Model QueueJob + * + */ +export type QueueJob = Prisma.QueueJobModel diff --git a/prisma/client/client.ts b/prisma/client/client.ts new file mode 100644 index 0000000..d08b8b6 --- /dev/null +++ b/prisma/client/client.ts @@ -0,0 +1,46 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file should be your main import to use Prisma. Through it you get access to all the models, enums, and input types. + * If you're looking for something you can import in the client-side of your application, please refer to the `browser.ts` file instead. + * + * 🟢 You can import this file directly. + */ + +import * as process from 'node:process' +import * as path from 'node:path' +import { fileURLToPath } from 'node:url' +globalThis['__dirname'] = path.dirname(fileURLToPath(import.meta.url)) + +import * as runtime from "@prisma/client/runtime/client" +import * as $Enums from "./enums" +import * as $Class from "./internal/class" +import * as Prisma from "./internal/prismaNamespace" + +export * as $Enums from './enums' +export * from "./enums" +/** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more QueueJobs + * const queueJobs = await prisma.queueJob.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ +export const PrismaClient = $Class.getPrismaClientClass() +export type PrismaClient = $Class.PrismaClient +export { Prisma } + +/** + * Model QueueJob + * + */ +export type QueueJob = Prisma.QueueJobModel diff --git a/prisma/client/commonInputTypes.ts b/prisma/client/commonInputTypes.ts new file mode 100644 index 0000000..5b06612 --- /dev/null +++ b/prisma/client/commonInputTypes.ts @@ -0,0 +1,509 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports various common sort, input & filter types that are not directly linked to a particular model. + * + * 🟢 You can import this file directly. + */ + +import type * as runtime from "@prisma/client/runtime/client" +import * as $Enums from "./enums" +import type * as Prisma from "./internal/prismaNamespace" + + +export type BigIntFilter<$PrismaModel = never> = { + equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + not?: Prisma.NestedBigIntFilter<$PrismaModel> | bigint | number +} + +export type StringFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringFilter<$PrismaModel> | string +} + +export type StringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type JsonNullableFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type JsonNullableFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string[] + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +} + +export type IntFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntFilter<$PrismaModel> | number +} + +export type IntNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null +} + +export type DateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type DateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null +} + +export type SortOrderInput = { + sort: Prisma.SortOrder + nulls?: Prisma.NullsOrder +} + +export type BigIntWithAggregatesFilter<$PrismaModel = never> = { + equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + not?: Prisma.NestedBigIntWithAggregatesFilter<$PrismaModel> | bigint | number + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedFloatFilter<$PrismaModel> + _sum?: Prisma.NestedBigIntFilter<$PrismaModel> + _min?: Prisma.NestedBigIntFilter<$PrismaModel> + _max?: Prisma.NestedBigIntFilter<$PrismaModel> +} + +export type StringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + mode?: Prisma.QueryMode + not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> +} + +export type JsonNullableWithAggregatesFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string[] + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedJsonNullableFilter<$PrismaModel> + _max?: Prisma.NestedJsonNullableFilter<$PrismaModel> +} + +export type IntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedFloatFilter<$PrismaModel> + _sum?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedIntFilter<$PrismaModel> + _max?: Prisma.NestedIntFilter<$PrismaModel> +} + +export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _avg?: Prisma.NestedFloatNullableFilter<$PrismaModel> + _sum?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedIntNullableFilter<$PrismaModel> + _max?: Prisma.NestedIntNullableFilter<$PrismaModel> +} + +export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> +} + +export type NestedBigIntFilter<$PrismaModel = never> = { + equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + not?: Prisma.NestedBigIntFilter<$PrismaModel> | bigint | number +} + +export type NestedStringFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringFilter<$PrismaModel> | string +} + +export type NestedStringNullableFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null +} + +export type NestedIntFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntFilter<$PrismaModel> | number +} + +export type NestedIntNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null +} + +export type NestedDateTimeFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string +} + +export type NestedDateTimeNullableFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null +} + +export type NestedBigIntWithAggregatesFilter<$PrismaModel = never> = { + equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> + lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> + not?: Prisma.NestedBigIntWithAggregatesFilter<$PrismaModel> | bigint | number + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedFloatFilter<$PrismaModel> + _sum?: Prisma.NestedBigIntFilter<$PrismaModel> + _min?: Prisma.NestedBigIntFilter<$PrismaModel> + _max?: Prisma.NestedBigIntFilter<$PrismaModel> +} + +export type NestedFloatFilter<$PrismaModel = never> = { + equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> + lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + not?: Prisma.NestedFloatFilter<$PrismaModel> | number +} + +export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedStringFilter<$PrismaModel> + _max?: Prisma.NestedStringFilter<$PrismaModel> +} + +export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null + in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null + lt?: string | Prisma.StringFieldRefInput<$PrismaModel> + lte?: string | Prisma.StringFieldRefInput<$PrismaModel> + gt?: string | Prisma.StringFieldRefInput<$PrismaModel> + gte?: string | Prisma.StringFieldRefInput<$PrismaModel> + contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> + not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedStringNullableFilter<$PrismaModel> + _max?: Prisma.NestedStringNullableFilter<$PrismaModel> +} + +export type NestedJsonNullableFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type NestedJsonNullableFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string[] + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +} + +export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number + _count?: Prisma.NestedIntFilter<$PrismaModel> + _avg?: Prisma.NestedFloatFilter<$PrismaModel> + _sum?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedIntFilter<$PrismaModel> + _max?: Prisma.NestedIntFilter<$PrismaModel> +} + +export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null + in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null + lt?: number | Prisma.IntFieldRefInput<$PrismaModel> + lte?: number | Prisma.IntFieldRefInput<$PrismaModel> + gt?: number | Prisma.IntFieldRefInput<$PrismaModel> + gte?: number | Prisma.IntFieldRefInput<$PrismaModel> + not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _avg?: Prisma.NestedFloatNullableFilter<$PrismaModel> + _sum?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedIntNullableFilter<$PrismaModel> + _max?: Prisma.NestedIntNullableFilter<$PrismaModel> +} + +export type NestedFloatNullableFilter<$PrismaModel = never> = { + equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null + in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null + notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null + lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> + gte?: number | Prisma.FloatFieldRefInput<$PrismaModel> + not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null +} + +export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeFilter<$PrismaModel> +} + +export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { + equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null + in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null + lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> + not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> + _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> +} + + diff --git a/prisma/client/enums.ts b/prisma/client/enums.ts new file mode 100644 index 0000000..043572d --- /dev/null +++ b/prisma/client/enums.ts @@ -0,0 +1,15 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* +* This file exports all enum related types from the schema. +* +* 🟢 You can import this file directly. +*/ + + + +// This file is empty because there are no enums in the schema. +export {} diff --git a/prisma/client/internal/class.ts b/prisma/client/internal/class.ts new file mode 100644 index 0000000..b85c0d2 --- /dev/null +++ b/prisma/client/internal/class.ts @@ -0,0 +1,190 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * Please import the `PrismaClient` class from the `client.ts` file instead. + */ + +import * as runtime from "@prisma/client/runtime/client" +import type * as Prisma from "./prismaNamespace" + + +const config: runtime.GetPrismaClientConfig = { + "previewFeatures": [], + "clientVersion": "7.2.0", + "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "activeProvider": "postgresql", + "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n previewFeatures = []\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel QueueJob {\n id BigInt @id @default(autoincrement()) @db.BigInt\n queue String\n key String?\n cron String?\n payload Json?\n result Json?\n error Json?\n progress Int @default(0)\n priority Int @default(0)\n attempts Int @default(0)\n maxAttempts Int?\n runAt DateTime @default(now())\n notBefore DateTime?\n finishedAt DateTime?\n processedAt DateTime?\n failedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([key, runAt])\n @@index([queue, priority, runAt, finishedAt])\n @@map(\"queue_jobs\")\n}\n", + "runtimeDataModel": { + "models": {}, + "enums": {}, + "types": {} + } +} + +config.runtimeDataModel = JSON.parse("{\"models\":{\"QueueJob\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"queue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cron\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"result\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"error\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"progress\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"attempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxAttempts\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"runAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"notBefore\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"queue_jobs\"}},\"enums\":{},\"types\":{}}") + +async function decodeBase64AsWasm(wasmBase64: string): Promise { + const { Buffer } = await import('node:buffer') + const wasmArray = Buffer.from(wasmBase64, 'base64') + return new WebAssembly.Module(wasmArray) +} + +config.compilerWasm = { + getRuntime: async () => await import("@prisma/client/runtime/query_compiler_bg.postgresql.mjs"), + + getQueryCompilerWasmModule: async () => { + const { wasm } = await import("@prisma/client/runtime/query_compiler_bg.postgresql.wasm-base64.mjs") + return await decodeBase64AsWasm(wasm) + } +} + + + +export type LogOptions = + 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array ? Prisma.GetEvents : never : never + +export interface PrismaClientConstructor { + /** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more QueueJobs + * const queueJobs = await prisma.queueJob.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ + + new < + Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, + LogOpts extends LogOptions = LogOptions, + OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'], + ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs + >(options: Prisma.Subset ): PrismaClient +} + +/** + * ## Prisma Client + * + * Type-safe database client for TypeScript + * @example + * ``` + * const prisma = new PrismaClient() + * // Fetch zero or more QueueJobs + * const queueJobs = await prisma.queueJob.findMany() + * ``` + * + * Read more in our [docs](https://pris.ly/d/client). + */ + +export interface PrismaClient< + in LogOpts extends Prisma.LogLevel = never, + in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined, + in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs +> { + [K: symbol]: { types: Prisma.TypeMap['other'] } + + $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient; + + /** + * Connect with the database + */ + $connect(): runtime.Types.Utils.JsPromise; + + /** + * Disconnect from the database + */ + $disconnect(): runtime.Types.Utils.JsPromise; + +/** + * Executes a prepared raw query and returns the number of affected rows. + * @example + * ``` + * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Executes a raw query and returns the number of affected rows. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a prepared raw query and returns the `SELECT` data. + * @example + * ``` + * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};` + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; + + /** + * Performs a raw query and returns the `SELECT` data. + * Susceptible to SQL injections, see documentation. + * @example + * ``` + * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com') + * ``` + * + * Read more in our [docs](https://pris.ly/d/raw-queries). + */ + $queryRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; + + + /** + * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole. + * @example + * ``` + * const [george, bob, alice] = await prisma.$transaction([ + * prisma.user.create({ data: { name: 'George' } }), + * prisma.user.create({ data: { name: 'Bob' } }), + * prisma.user.create({ data: { name: 'Alice' } }), + * ]) + * ``` + * + * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions). + */ + $transaction

[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise> + + $transaction(fn: (prisma: Omit) => runtime.Types.Utils.JsPromise, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise + + $extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb, ExtArgs, runtime.Types.Utils.Call, { + extArgs: ExtArgs + }>> + + /** + * `prisma.queueJob`: Exposes CRUD operations for the **QueueJob** model. + * Example usage: + * ```ts + * // Fetch zero or more QueueJobs + * const queueJobs = await prisma.queueJob.findMany() + * ``` + */ + get queueJob(): Prisma.QueueJobDelegate; +} + +export function getPrismaClientClass(): PrismaClientConstructor { + return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor +} diff --git a/prisma/client/internal/prismaNamespace.ts b/prisma/client/internal/prismaNamespace.ts new file mode 100644 index 0000000..01e34ea --- /dev/null +++ b/prisma/client/internal/prismaNamespace.ts @@ -0,0 +1,832 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file. + * While this enables partial backward compatibility, it is not part of the stable public API. + * + * If you are looking for your Models, Enums, and Input Types, please import them from the respective + * model files in the `model` directory! + */ + +import * as runtime from "@prisma/client/runtime/client" +import type * as Prisma from "../models" +import { type PrismaClient } from "./class" + +export type * from '../models' + +export type DMMF = typeof runtime.DMMF + +export type PrismaPromise = runtime.Types.Public.PrismaPromise + +/** + * Prisma Errors + */ + +export const PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError +export type PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError + +export const PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError +export type PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError + +export const PrismaClientRustPanicError = runtime.PrismaClientRustPanicError +export type PrismaClientRustPanicError = runtime.PrismaClientRustPanicError + +export const PrismaClientInitializationError = runtime.PrismaClientInitializationError +export type PrismaClientInitializationError = runtime.PrismaClientInitializationError + +export const PrismaClientValidationError = runtime.PrismaClientValidationError +export type PrismaClientValidationError = runtime.PrismaClientValidationError + +/** + * Re-export of sql-template-tag + */ +export const sql = runtime.sqltag +export const empty = runtime.empty +export const join = runtime.join +export const raw = runtime.raw +export const Sql = runtime.Sql +export type Sql = runtime.Sql + + + +/** + * Decimal.js + */ +export const Decimal = runtime.Decimal +export type Decimal = runtime.Decimal + +export type DecimalJsLike = runtime.DecimalJsLike + +/** +* Extensions +*/ +export type Extension = runtime.Types.Extensions.UserArgs +export const getExtensionContext = runtime.Extensions.getExtensionContext +export type Args = runtime.Types.Public.Args +export type Payload = runtime.Types.Public.Payload +export type Result = runtime.Types.Public.Result +export type Exact = runtime.Types.Public.Exact + +export type PrismaVersion = { + client: string + engine: string +} + +/** + * Prisma Client JS version: 7.2.0 + * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + */ +export const prismaVersion: PrismaVersion = { + client: "7.2.0", + engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" +} + +/** + * Utility Types + */ + +export type Bytes = runtime.Bytes +export type JsonObject = runtime.JsonObject +export type JsonArray = runtime.JsonArray +export type JsonValue = runtime.JsonValue +export type InputJsonObject = runtime.InputJsonObject +export type InputJsonArray = runtime.InputJsonArray +export type InputJsonValue = runtime.InputJsonValue + + +export const NullTypes = { + DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), + JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), + AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), +} +/** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const DbNull = runtime.DbNull + +/** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const JsonNull = runtime.JsonNull + +/** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const AnyNull = runtime.AnyNull + + +type SelectAndInclude = { + select: any + include: any +} + +type SelectAndOmit = { + select: any + omit: any +} + +/** + * From T, pick a set of properties whose keys are in the union K + */ +type Prisma__Pick = { + [P in K]: T[P]; +}; + +export type Enumerable = T | Array; + +/** + * Subset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection + */ +export type Subset = { + [key in keyof T]: key extends keyof U ? T[key] : never; +}; + +/** + * SelectSubset + * @desc From `T` pick properties that exist in `U`. Simple version of Intersection. + * Additionally, it validates, if both select and include are present. If the case, it errors. + */ +export type SelectSubset = { + [key in keyof T]: key extends keyof U ? T[key] : never +} & + (T extends SelectAndInclude + ? 'Please either choose `select` or `include`.' + : T extends SelectAndOmit + ? 'Please either choose `select` or `omit`.' + : {}) + +/** + * Subset + Intersection + * @desc From `T` pick properties that exist in `U` and intersect `K` + */ +export type SubsetIntersection = { + [key in keyof T]: key extends keyof U ? T[key] : never +} & + K + +type Without = { [P in Exclude]?: never }; + +/** + * XOR is needed to have a real mutually exclusive union type + * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types + */ +export type XOR = + T extends object ? + U extends object ? + (Without & U) | (Without & T) + : U : T + + +/** + * Is T a Record? + */ +type IsObject = T extends Array +? False +: T extends Date +? False +: T extends Uint8Array +? False +: T extends BigInt +? False +: T extends object +? True +: False + + +/** + * If it's T[], return T + */ +export type UnEnumerate = T extends Array ? U : T + +/** + * From ts-toolbelt + */ + +type __Either = Omit & + { + // Merge all but K + [P in K]: Prisma__Pick // With K possibilities + }[K] + +type EitherStrict = Strict<__Either> + +type EitherLoose = ComputeRaw<__Either> + +type _Either< + O extends object, + K extends Key, + strict extends Boolean +> = { + 1: EitherStrict + 0: EitherLoose +}[strict] + +export type Either< + O extends object, + K extends Key, + strict extends Boolean = 1 +> = O extends unknown ? _Either : never + +export type Union = any + +export type PatchUndefined = { + [K in keyof O]: O[K] extends undefined ? At : O[K] +} & {} + +/** Helper Types for "Merge" **/ +export type IntersectOf = ( + U extends unknown ? (k: U) => void : never +) extends (k: infer I) => void + ? I + : never + +export type Overwrite = { + [K in keyof O]: K extends keyof O1 ? O1[K] : O[K]; +} & {}; + +type _Merge = IntersectOf; +}>>; + +type Key = string | number | symbol; +type AtStrict = O[K & keyof O]; +type AtLoose = O extends unknown ? AtStrict : never; +export type At = { + 1: AtStrict; + 0: AtLoose; +}[strict]; + +export type ComputeRaw = A extends Function ? A : { + [K in keyof A]: A[K]; +} & {}; + +export type OptionalFlat = { + [K in keyof O]?: O[K]; +} & {}; + +type _Record = { + [P in K]: T; +}; + +// cause typescript not to expand types and preserve names +type NoExpand = T extends unknown ? T : never; + +// this type assumes the passed object is entirely optional +export type AtLeast = NoExpand< + O extends unknown + ? | (K extends keyof O ? { [P in K]: O[P] } & O : O) + | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O + : never>; + +type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never; + +export type Strict = ComputeRaw<_Strict>; +/** End Helper Types for "Merge" **/ + +export type Merge = ComputeRaw<_Merge>>; + +export type Boolean = True | False + +export type True = 1 + +export type False = 0 + +export type Not = { + 0: 1 + 1: 0 +}[B] + +export type Extends = [A1] extends [never] + ? 0 // anything `never` is false + : A1 extends A2 + ? 1 + : 0 + +export type Has = Not< + Extends, U1> +> + +export type Or = { + 0: { + 0: 0 + 1: 1 + } + 1: { + 0: 1 + 1: 1 + } +}[B1][B2] + +export type Keys = U extends unknown ? keyof U : never + +export type GetScalarType = O extends object ? { + [P in keyof T]: P extends keyof O + ? O[P] + : never +} : never + +type FieldPaths< + T, + U = Omit +> = IsObject extends True ? U : T + +export type GetHavingFields = { + [K in keyof T]: Or< + Or, Extends<'AND', K>>, + Extends<'NOT', K> + > extends True + ? // infer is only needed to not hit TS limit + // based on the brilliant idea of Pierre-Antoine Mills + // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437 + T[K] extends infer TK + ? GetHavingFields extends object ? Merge> : never> + : never + : {} extends FieldPaths + ? never + : K +}[keyof T] + +/** + * Convert tuple to union + */ +type _TupleToUnion = T extends (infer E)[] ? E : never +type TupleToUnion = _TupleToUnion +export type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T + +/** + * Like `Pick`, but additionally can also accept an array of keys + */ +export type PickEnumerable | keyof T> = Prisma__Pick> + +/** + * Exclude all keys with underscores + */ +export type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T + + +export type FieldRef = runtime.FieldRef + +type FieldRefInputType = Model extends never ? never : FieldRef + + +export const ModelName = { + QueueJob: 'QueueJob' +} as const + +export type ModelName = (typeof ModelName)[keyof typeof ModelName] + + + +export interface TypeMapCb extends runtime.Types.Utils.Fn<{extArgs: runtime.Types.Extensions.InternalArgs }, runtime.Types.Utils.Record> { + returns: TypeMap +} + +export type TypeMap = { + globalOmitOptions: { + omit: GlobalOmitOptions + } + meta: { + modelProps: "queueJob" + txIsolationLevel: TransactionIsolationLevel + } + model: { + QueueJob: { + payload: Prisma.$QueueJobPayload + fields: Prisma.QueueJobFieldRefs + operations: { + findUnique: { + args: Prisma.QueueJobFindUniqueArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.QueueJobFindUniqueOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findFirst: { + args: Prisma.QueueJobFindFirstArgs + result: runtime.Types.Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.QueueJobFindFirstOrThrowArgs + result: runtime.Types.Utils.PayloadToResult + } + findMany: { + args: Prisma.QueueJobFindManyArgs + result: runtime.Types.Utils.PayloadToResult[] + } + create: { + args: Prisma.QueueJobCreateArgs + result: runtime.Types.Utils.PayloadToResult + } + createMany: { + args: Prisma.QueueJobCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.QueueJobCreateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + delete: { + args: Prisma.QueueJobDeleteArgs + result: runtime.Types.Utils.PayloadToResult + } + update: { + args: Prisma.QueueJobUpdateArgs + result: runtime.Types.Utils.PayloadToResult + } + deleteMany: { + args: Prisma.QueueJobDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.QueueJobUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.QueueJobUpdateManyAndReturnArgs + result: runtime.Types.Utils.PayloadToResult[] + } + upsert: { + args: Prisma.QueueJobUpsertArgs + result: runtime.Types.Utils.PayloadToResult + } + aggregate: { + args: Prisma.QueueJobAggregateArgs + result: runtime.Types.Utils.Optional + } + groupBy: { + args: Prisma.QueueJobGroupByArgs + result: runtime.Types.Utils.Optional[] + } + count: { + args: Prisma.QueueJobCountArgs + result: runtime.Types.Utils.Optional | number + } + } + } + } +} & { + other: { + payload: any + operations: { + $executeRaw: { + args: [query: TemplateStringsArray | Sql, ...values: any[]], + result: any + } + $executeRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + $queryRaw: { + args: [query: TemplateStringsArray | Sql, ...values: any[]], + result: any + } + $queryRawUnsafe: { + args: [query: string, ...values: any[]], + result: any + } + } + } +} + +/** + * Enums + */ + +export const TransactionIsolationLevel = runtime.makeStrictEnum({ + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +} as const) + +export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + +export const QueueJobScalarFieldEnum = { + id: 'id', + queue: 'queue', + key: 'key', + cron: 'cron', + payload: 'payload', + result: 'result', + error: 'error', + progress: 'progress', + priority: 'priority', + attempts: 'attempts', + maxAttempts: 'maxAttempts', + runAt: 'runAt', + notBefore: 'notBefore', + finishedAt: 'finishedAt', + processedAt: 'processedAt', + failedAt: 'failedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type QueueJobScalarFieldEnum = (typeof QueueJobScalarFieldEnum)[keyof typeof QueueJobScalarFieldEnum] + + +export const SortOrder = { + asc: 'asc', + desc: 'desc' +} as const + +export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + +export const NullableJsonNullValueInput = { + DbNull: DbNull, + JsonNull: JsonNull +} as const + +export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] + + +export const QueryMode = { + default: 'default', + insensitive: 'insensitive' +} as const + +export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + +export const JsonNullValueFilter = { + DbNull: DbNull, + JsonNull: JsonNull, + AnyNull: AnyNull +} as const + +export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + + + +/** + * Field references + */ + + +/** + * Reference to a field of type 'BigInt' + */ +export type BigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt'> + + + +/** + * Reference to a field of type 'BigInt[]' + */ +export type ListBigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt[]'> + + + +/** + * Reference to a field of type 'String' + */ +export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> + + + +/** + * Reference to a field of type 'String[]' + */ +export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'> + + + +/** + * Reference to a field of type 'Json' + */ +export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> + + + +/** + * Reference to a field of type 'QueryMode' + */ +export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> + + + +/** + * Reference to a field of type 'Int' + */ +export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> + + + +/** + * Reference to a field of type 'Int[]' + */ +export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'> + + + +/** + * Reference to a field of type 'DateTime' + */ +export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> + + + +/** + * Reference to a field of type 'DateTime[]' + */ +export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'> + + + +/** + * Reference to a field of type 'Float' + */ +export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> + + + +/** + * Reference to a field of type 'Float[]' + */ +export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'> + + +/** + * Batch Payload for updateMany & deleteMany & createMany + */ +export type BatchPayload = { + count: number +} + +export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs> +export type DefaultPrismaClient = PrismaClient +export type ErrorFormat = 'pretty' | 'colorless' | 'minimal' +export type PrismaClientOptions = ({ + /** + * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`. + */ + adapter: runtime.SqlDriverAdapterFactory + accelerateUrl?: never +} | { + /** + * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database. + */ + accelerateUrl: string + adapter?: never +}) & { + /** + * @default "colorless" + */ + errorFormat?: ErrorFormat + /** + * @example + * ``` + * // Shorthand for `emit: 'stdout'` + * log: ['query', 'info', 'warn', 'error'] + * + * // Emit as events only + * log: [ + * { emit: 'event', level: 'query' }, + * { emit: 'event', level: 'info' }, + * { emit: 'event', level: 'warn' } + * { emit: 'event', level: 'error' } + * ] + * + * / Emit as events and log to stdout + * og: [ + * { emit: 'stdout', level: 'query' }, + * { emit: 'stdout', level: 'info' }, + * { emit: 'stdout', level: 'warn' } + * { emit: 'stdout', level: 'error' } + * + * ``` + * Read more in our [docs](https://pris.ly/d/logging). + */ + log?: (LogLevel | LogDefinition)[] + /** + * The default values for transactionOptions + * maxWait ?= 2000 + * timeout ?= 5000 + */ + transactionOptions?: { + maxWait?: number + timeout?: number + isolationLevel?: TransactionIsolationLevel + } + /** + * Global configuration for omitting model fields by default. + * + * @example + * ``` + * const prisma = new PrismaClient({ + * omit: { + * user: { + * password: true + * } + * } + * }) + * ``` + */ + omit?: GlobalOmitConfig + /** + * SQL commenter plugins that add metadata to SQL queries as comments. + * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/ + * + * @example + * ``` + * const prisma = new PrismaClient({ + * adapter, + * comments: [ + * traceContext(), + * queryInsights(), + * ], + * }) + * ``` + */ + comments?: runtime.SqlCommenterPlugin[] +} +export type GlobalOmitConfig = { + queueJob?: Prisma.QueueJobOmit +} + +/* Types for Logging */ +export type LogLevel = 'info' | 'query' | 'warn' | 'error' +export type LogDefinition = { + level: LogLevel + emit: 'stdout' | 'event' +} + +export type CheckIsLogLevel = T extends LogLevel ? T : never; + +export type GetLogType = CheckIsLogLevel< + T extends LogDefinition ? T['level'] : T +>; + +export type GetEvents = T extends Array + ? GetLogType + : never; + +export type QueryEvent = { + timestamp: Date + query: string + params: string + duration: number + target: string +} + +export type LogEvent = { + timestamp: Date + message: string + target: string +} +/* End Types for Logging */ + + +export type PrismaAction = + | 'findUnique' + | 'findUniqueOrThrow' + | 'findMany' + | 'findFirst' + | 'findFirstOrThrow' + | 'create' + | 'createMany' + | 'createManyAndReturn' + | 'update' + | 'updateMany' + | 'updateManyAndReturn' + | 'upsert' + | 'delete' + | 'deleteMany' + | 'executeRaw' + | 'queryRaw' + | 'aggregate' + | 'count' + | 'runCommandRaw' + | 'findRaw' + | 'groupBy' + +/** + * `PrismaClient` proxy available in interactive transactions. + */ +export type TransactionClient = Omit + diff --git a/prisma/client/internal/prismaNamespaceBrowser.ts b/prisma/client/internal/prismaNamespaceBrowser.ts new file mode 100644 index 0000000..fd3f897 --- /dev/null +++ b/prisma/client/internal/prismaNamespaceBrowser.ts @@ -0,0 +1,136 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * WARNING: This is an internal file that is subject to change! + * + * 🛑 Under no circumstances should you import this file directly! 🛑 + * + * All exports from this file are wrapped under a `Prisma` namespace object in the browser.ts file. + * While this enables partial backward compatibility, it is not part of the stable public API. + * + * If you are looking for your Models, Enums, and Input Types, please import them from the respective + * model files in the `model` directory! + */ + +import * as runtime from "@prisma/client/runtime/index-browser" + +export type * from '../models' +export type * from './prismaNamespace' + +export const Decimal = runtime.Decimal + + +export const NullTypes = { + DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), + JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), + AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), +} +/** + * Helper for filtering JSON entries that have `null` on the database (empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const DbNull = runtime.DbNull + +/** + * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const JsonNull = runtime.JsonNull + +/** + * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` + * + * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field + */ +export const AnyNull = runtime.AnyNull + + +export const ModelName = { + QueueJob: 'QueueJob' +} as const + +export type ModelName = (typeof ModelName)[keyof typeof ModelName] + +/* + * Enums + */ + +export const TransactionIsolationLevel = { + ReadUncommitted: 'ReadUncommitted', + ReadCommitted: 'ReadCommitted', + RepeatableRead: 'RepeatableRead', + Serializable: 'Serializable' +} as const + +export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] + + +export const QueueJobScalarFieldEnum = { + id: 'id', + queue: 'queue', + key: 'key', + cron: 'cron', + payload: 'payload', + result: 'result', + error: 'error', + progress: 'progress', + priority: 'priority', + attempts: 'attempts', + maxAttempts: 'maxAttempts', + runAt: 'runAt', + notBefore: 'notBefore', + finishedAt: 'finishedAt', + processedAt: 'processedAt', + failedAt: 'failedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt' +} as const + +export type QueueJobScalarFieldEnum = (typeof QueueJobScalarFieldEnum)[keyof typeof QueueJobScalarFieldEnum] + + +export const SortOrder = { + asc: 'asc', + desc: 'desc' +} as const + +export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] + + +export const NullableJsonNullValueInput = { + DbNull: 'DbNull', + JsonNull: 'JsonNull' +} as const + +export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] + + +export const QueryMode = { + default: 'default', + insensitive: 'insensitive' +} as const + +export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + +export const JsonNullValueFilter = { + DbNull: 'DbNull', + JsonNull: 'JsonNull', + AnyNull: 'AnyNull' +} as const + +export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + + +export const NullsOrder = { + first: 'first', + last: 'last' +} as const + +export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] + diff --git a/prisma/client/models.ts b/prisma/client/models.ts new file mode 100644 index 0000000..153ffce --- /dev/null +++ b/prisma/client/models.ts @@ -0,0 +1,12 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This is a barrel export file for all models and their related types. + * + * 🟢 You can import this file directly. + */ +export type * from './models/QueueJob' +export type * from './commonInputTypes' \ No newline at end of file diff --git a/prisma/client/models/QueueJob.ts b/prisma/client/models/QueueJob.ts new file mode 100644 index 0000000..146ae9a --- /dev/null +++ b/prisma/client/models/QueueJob.ts @@ -0,0 +1,1604 @@ + +/* !!! This is code generated by Prisma. Do not edit directly. !!! */ +/* eslint-disable */ +// biome-ignore-all lint: generated file +// @ts-nocheck +/* + * This file exports the `QueueJob` model and its related types. + * + * 🟢 You can import this file directly. + */ +import type * as runtime from "@prisma/client/runtime/client" +import type * as $Enums from "../enums" +import type * as Prisma from "../internal/prismaNamespace" + +/** + * Model QueueJob + * + */ +export type QueueJobModel = runtime.Types.Result.DefaultSelection + +export type AggregateQueueJob = { + _count: QueueJobCountAggregateOutputType | null + _avg: QueueJobAvgAggregateOutputType | null + _sum: QueueJobSumAggregateOutputType | null + _min: QueueJobMinAggregateOutputType | null + _max: QueueJobMaxAggregateOutputType | null +} + +export type QueueJobAvgAggregateOutputType = { + id: number | null + progress: number | null + priority: number | null + attempts: number | null + maxAttempts: number | null +} + +export type QueueJobSumAggregateOutputType = { + id: bigint | null + progress: number | null + priority: number | null + attempts: number | null + maxAttempts: number | null +} + +export type QueueJobMinAggregateOutputType = { + id: bigint | null + queue: string | null + key: string | null + cron: string | null + progress: number | null + priority: number | null + attempts: number | null + maxAttempts: number | null + runAt: Date | null + notBefore: Date | null + finishedAt: Date | null + processedAt: Date | null + failedAt: Date | null + createdAt: Date | null + updatedAt: Date | null +} + +export type QueueJobMaxAggregateOutputType = { + id: bigint | null + queue: string | null + key: string | null + cron: string | null + progress: number | null + priority: number | null + attempts: number | null + maxAttempts: number | null + runAt: Date | null + notBefore: Date | null + finishedAt: Date | null + processedAt: Date | null + failedAt: Date | null + createdAt: Date | null + updatedAt: Date | null +} + +export type QueueJobCountAggregateOutputType = { + id: number + queue: number + key: number + cron: number + payload: number + result: number + error: number + progress: number + priority: number + attempts: number + maxAttempts: number + runAt: number + notBefore: number + finishedAt: number + processedAt: number + failedAt: number + createdAt: number + updatedAt: number + _all: number +} + + +export type QueueJobAvgAggregateInputType = { + id?: true + progress?: true + priority?: true + attempts?: true + maxAttempts?: true +} + +export type QueueJobSumAggregateInputType = { + id?: true + progress?: true + priority?: true + attempts?: true + maxAttempts?: true +} + +export type QueueJobMinAggregateInputType = { + id?: true + queue?: true + key?: true + cron?: true + progress?: true + priority?: true + attempts?: true + maxAttempts?: true + runAt?: true + notBefore?: true + finishedAt?: true + processedAt?: true + failedAt?: true + createdAt?: true + updatedAt?: true +} + +export type QueueJobMaxAggregateInputType = { + id?: true + queue?: true + key?: true + cron?: true + progress?: true + priority?: true + attempts?: true + maxAttempts?: true + runAt?: true + notBefore?: true + finishedAt?: true + processedAt?: true + failedAt?: true + createdAt?: true + updatedAt?: true +} + +export type QueueJobCountAggregateInputType = { + id?: true + queue?: true + key?: true + cron?: true + payload?: true + result?: true + error?: true + progress?: true + priority?: true + attempts?: true + maxAttempts?: true + runAt?: true + notBefore?: true + finishedAt?: true + processedAt?: true + failedAt?: true + createdAt?: true + updatedAt?: true + _all?: true +} + +export type QueueJobAggregateArgs = { + /** + * Filter which QueueJob to aggregate. + */ + where?: Prisma.QueueJobWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of QueueJobs to fetch. + */ + orderBy?: Prisma.QueueJobOrderByWithRelationInput | Prisma.QueueJobOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: Prisma.QueueJobWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` QueueJobs from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` QueueJobs. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned QueueJobs + **/ + _count?: true | QueueJobCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: QueueJobAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: QueueJobSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: QueueJobMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: QueueJobMaxAggregateInputType +} + +export type GetQueueJobAggregateType = { + [P in keyof T & keyof AggregateQueueJob]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType +} + + + + +export type QueueJobGroupByArgs = { + where?: Prisma.QueueJobWhereInput + orderBy?: Prisma.QueueJobOrderByWithAggregationInput | Prisma.QueueJobOrderByWithAggregationInput[] + by: Prisma.QueueJobScalarFieldEnum[] | Prisma.QueueJobScalarFieldEnum + having?: Prisma.QueueJobScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: QueueJobCountAggregateInputType | true + _avg?: QueueJobAvgAggregateInputType + _sum?: QueueJobSumAggregateInputType + _min?: QueueJobMinAggregateInputType + _max?: QueueJobMaxAggregateInputType +} + +export type QueueJobGroupByOutputType = { + id: bigint + queue: string + key: string | null + cron: string | null + payload: runtime.JsonValue | null + result: runtime.JsonValue | null + error: runtime.JsonValue | null + progress: number + priority: number + attempts: number + maxAttempts: number | null + runAt: Date + notBefore: Date | null + finishedAt: Date | null + processedAt: Date | null + failedAt: Date | null + createdAt: Date + updatedAt: Date + _count: QueueJobCountAggregateOutputType | null + _avg: QueueJobAvgAggregateOutputType | null + _sum: QueueJobSumAggregateOutputType | null + _min: QueueJobMinAggregateOutputType | null + _max: QueueJobMaxAggregateOutputType | null +} + +type GetQueueJobGroupByPayload = Prisma.PrismaPromise< + Array< + Prisma.PickEnumerable & + { + [P in ((keyof T) & (keyof QueueJobGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : Prisma.GetScalarType + : Prisma.GetScalarType + } + > + > + + + +export type QueueJobWhereInput = { + AND?: Prisma.QueueJobWhereInput | Prisma.QueueJobWhereInput[] + OR?: Prisma.QueueJobWhereInput[] + NOT?: Prisma.QueueJobWhereInput | Prisma.QueueJobWhereInput[] + id?: Prisma.BigIntFilter<"QueueJob"> | bigint | number + queue?: Prisma.StringFilter<"QueueJob"> | string + key?: Prisma.StringNullableFilter<"QueueJob"> | string | null + cron?: Prisma.StringNullableFilter<"QueueJob"> | string | null + payload?: Prisma.JsonNullableFilter<"QueueJob"> + result?: Prisma.JsonNullableFilter<"QueueJob"> + error?: Prisma.JsonNullableFilter<"QueueJob"> + progress?: Prisma.IntFilter<"QueueJob"> | number + priority?: Prisma.IntFilter<"QueueJob"> | number + attempts?: Prisma.IntFilter<"QueueJob"> | number + maxAttempts?: Prisma.IntNullableFilter<"QueueJob"> | number | null + runAt?: Prisma.DateTimeFilter<"QueueJob"> | Date | string + notBefore?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + finishedAt?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + processedAt?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + failedAt?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + createdAt?: Prisma.DateTimeFilter<"QueueJob"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"QueueJob"> | Date | string +} + +export type QueueJobOrderByWithRelationInput = { + id?: Prisma.SortOrder + queue?: Prisma.SortOrder + key?: Prisma.SortOrderInput | Prisma.SortOrder + cron?: Prisma.SortOrderInput | Prisma.SortOrder + payload?: Prisma.SortOrderInput | Prisma.SortOrder + result?: Prisma.SortOrderInput | Prisma.SortOrder + error?: Prisma.SortOrderInput | Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrderInput | Prisma.SortOrder + runAt?: Prisma.SortOrder + notBefore?: Prisma.SortOrderInput | Prisma.SortOrder + finishedAt?: Prisma.SortOrderInput | Prisma.SortOrder + processedAt?: Prisma.SortOrderInput | Prisma.SortOrder + failedAt?: Prisma.SortOrderInput | Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type QueueJobWhereUniqueInput = Prisma.AtLeast<{ + id?: bigint | number + key_runAt?: Prisma.QueueJobKeyRunAtCompoundUniqueInput + AND?: Prisma.QueueJobWhereInput | Prisma.QueueJobWhereInput[] + OR?: Prisma.QueueJobWhereInput[] + NOT?: Prisma.QueueJobWhereInput | Prisma.QueueJobWhereInput[] + queue?: Prisma.StringFilter<"QueueJob"> | string + key?: Prisma.StringNullableFilter<"QueueJob"> | string | null + cron?: Prisma.StringNullableFilter<"QueueJob"> | string | null + payload?: Prisma.JsonNullableFilter<"QueueJob"> + result?: Prisma.JsonNullableFilter<"QueueJob"> + error?: Prisma.JsonNullableFilter<"QueueJob"> + progress?: Prisma.IntFilter<"QueueJob"> | number + priority?: Prisma.IntFilter<"QueueJob"> | number + attempts?: Prisma.IntFilter<"QueueJob"> | number + maxAttempts?: Prisma.IntNullableFilter<"QueueJob"> | number | null + runAt?: Prisma.DateTimeFilter<"QueueJob"> | Date | string + notBefore?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + finishedAt?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + processedAt?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + failedAt?: Prisma.DateTimeNullableFilter<"QueueJob"> | Date | string | null + createdAt?: Prisma.DateTimeFilter<"QueueJob"> | Date | string + updatedAt?: Prisma.DateTimeFilter<"QueueJob"> | Date | string +}, "id" | "key_runAt"> + +export type QueueJobOrderByWithAggregationInput = { + id?: Prisma.SortOrder + queue?: Prisma.SortOrder + key?: Prisma.SortOrderInput | Prisma.SortOrder + cron?: Prisma.SortOrderInput | Prisma.SortOrder + payload?: Prisma.SortOrderInput | Prisma.SortOrder + result?: Prisma.SortOrderInput | Prisma.SortOrder + error?: Prisma.SortOrderInput | Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrderInput | Prisma.SortOrder + runAt?: Prisma.SortOrder + notBefore?: Prisma.SortOrderInput | Prisma.SortOrder + finishedAt?: Prisma.SortOrderInput | Prisma.SortOrder + processedAt?: Prisma.SortOrderInput | Prisma.SortOrder + failedAt?: Prisma.SortOrderInput | Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder + _count?: Prisma.QueueJobCountOrderByAggregateInput + _avg?: Prisma.QueueJobAvgOrderByAggregateInput + _max?: Prisma.QueueJobMaxOrderByAggregateInput + _min?: Prisma.QueueJobMinOrderByAggregateInput + _sum?: Prisma.QueueJobSumOrderByAggregateInput +} + +export type QueueJobScalarWhereWithAggregatesInput = { + AND?: Prisma.QueueJobScalarWhereWithAggregatesInput | Prisma.QueueJobScalarWhereWithAggregatesInput[] + OR?: Prisma.QueueJobScalarWhereWithAggregatesInput[] + NOT?: Prisma.QueueJobScalarWhereWithAggregatesInput | Prisma.QueueJobScalarWhereWithAggregatesInput[] + id?: Prisma.BigIntWithAggregatesFilter<"QueueJob"> | bigint | number + queue?: Prisma.StringWithAggregatesFilter<"QueueJob"> | string + key?: Prisma.StringNullableWithAggregatesFilter<"QueueJob"> | string | null + cron?: Prisma.StringNullableWithAggregatesFilter<"QueueJob"> | string | null + payload?: Prisma.JsonNullableWithAggregatesFilter<"QueueJob"> + result?: Prisma.JsonNullableWithAggregatesFilter<"QueueJob"> + error?: Prisma.JsonNullableWithAggregatesFilter<"QueueJob"> + progress?: Prisma.IntWithAggregatesFilter<"QueueJob"> | number + priority?: Prisma.IntWithAggregatesFilter<"QueueJob"> | number + attempts?: Prisma.IntWithAggregatesFilter<"QueueJob"> | number + maxAttempts?: Prisma.IntNullableWithAggregatesFilter<"QueueJob"> | number | null + runAt?: Prisma.DateTimeWithAggregatesFilter<"QueueJob"> | Date | string + notBefore?: Prisma.DateTimeNullableWithAggregatesFilter<"QueueJob"> | Date | string | null + finishedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"QueueJob"> | Date | string | null + processedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"QueueJob"> | Date | string | null + failedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"QueueJob"> | Date | string | null + createdAt?: Prisma.DateTimeWithAggregatesFilter<"QueueJob"> | Date | string + updatedAt?: Prisma.DateTimeWithAggregatesFilter<"QueueJob"> | Date | string +} + +export type QueueJobCreateInput = { + id?: bigint | number + queue: string + key?: string | null + cron?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: number + priority?: number + attempts?: number + maxAttempts?: number | null + runAt?: Date | string + notBefore?: Date | string | null + finishedAt?: Date | string | null + processedAt?: Date | string | null + failedAt?: Date | string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type QueueJobUncheckedCreateInput = { + id?: bigint | number + queue: string + key?: string | null + cron?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: number + priority?: number + attempts?: number + maxAttempts?: number | null + runAt?: Date | string + notBefore?: Date | string | null + finishedAt?: Date | string | null + processedAt?: Date | string | null + failedAt?: Date | string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type QueueJobUpdateInput = { + id?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number + queue?: Prisma.StringFieldUpdateOperationsInput | string + key?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + cron?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: Prisma.IntFieldUpdateOperationsInput | number + priority?: Prisma.IntFieldUpdateOperationsInput | number + attempts?: Prisma.IntFieldUpdateOperationsInput | number + maxAttempts?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + runAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + notBefore?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + processedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type QueueJobUncheckedUpdateInput = { + id?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number + queue?: Prisma.StringFieldUpdateOperationsInput | string + key?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + cron?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: Prisma.IntFieldUpdateOperationsInput | number + priority?: Prisma.IntFieldUpdateOperationsInput | number + attempts?: Prisma.IntFieldUpdateOperationsInput | number + maxAttempts?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + runAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + notBefore?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + processedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type QueueJobCreateManyInput = { + id?: bigint | number + queue: string + key?: string | null + cron?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: number + priority?: number + attempts?: number + maxAttempts?: number | null + runAt?: Date | string + notBefore?: Date | string | null + finishedAt?: Date | string | null + processedAt?: Date | string | null + failedAt?: Date | string | null + createdAt?: Date | string + updatedAt?: Date | string +} + +export type QueueJobUpdateManyMutationInput = { + id?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number + queue?: Prisma.StringFieldUpdateOperationsInput | string + key?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + cron?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: Prisma.IntFieldUpdateOperationsInput | number + priority?: Prisma.IntFieldUpdateOperationsInput | number + attempts?: Prisma.IntFieldUpdateOperationsInput | number + maxAttempts?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + runAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + notBefore?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + processedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type QueueJobUncheckedUpdateManyInput = { + id?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number + queue?: Prisma.StringFieldUpdateOperationsInput | string + key?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + cron?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + result?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + error?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue + progress?: Prisma.IntFieldUpdateOperationsInput | number + priority?: Prisma.IntFieldUpdateOperationsInput | number + attempts?: Prisma.IntFieldUpdateOperationsInput | number + maxAttempts?: Prisma.NullableIntFieldUpdateOperationsInput | number | null + runAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + notBefore?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + finishedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + processedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + failedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null + createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + +export type QueueJobKeyRunAtCompoundUniqueInput = { + key: string + runAt: Date | string +} + +export type QueueJobCountOrderByAggregateInput = { + id?: Prisma.SortOrder + queue?: Prisma.SortOrder + key?: Prisma.SortOrder + cron?: Prisma.SortOrder + payload?: Prisma.SortOrder + result?: Prisma.SortOrder + error?: Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrder + runAt?: Prisma.SortOrder + notBefore?: Prisma.SortOrder + finishedAt?: Prisma.SortOrder + processedAt?: Prisma.SortOrder + failedAt?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type QueueJobAvgOrderByAggregateInput = { + id?: Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrder +} + +export type QueueJobMaxOrderByAggregateInput = { + id?: Prisma.SortOrder + queue?: Prisma.SortOrder + key?: Prisma.SortOrder + cron?: Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrder + runAt?: Prisma.SortOrder + notBefore?: Prisma.SortOrder + finishedAt?: Prisma.SortOrder + processedAt?: Prisma.SortOrder + failedAt?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type QueueJobMinOrderByAggregateInput = { + id?: Prisma.SortOrder + queue?: Prisma.SortOrder + key?: Prisma.SortOrder + cron?: Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrder + runAt?: Prisma.SortOrder + notBefore?: Prisma.SortOrder + finishedAt?: Prisma.SortOrder + processedAt?: Prisma.SortOrder + failedAt?: Prisma.SortOrder + createdAt?: Prisma.SortOrder + updatedAt?: Prisma.SortOrder +} + +export type QueueJobSumOrderByAggregateInput = { + id?: Prisma.SortOrder + progress?: Prisma.SortOrder + priority?: Prisma.SortOrder + attempts?: Prisma.SortOrder + maxAttempts?: Prisma.SortOrder +} + +export type BigIntFieldUpdateOperationsInput = { + set?: bigint | number + increment?: bigint | number + decrement?: bigint | number + multiply?: bigint | number + divide?: bigint | number +} + +export type StringFieldUpdateOperationsInput = { + set?: string +} + +export type NullableStringFieldUpdateOperationsInput = { + set?: string | null +} + +export type IntFieldUpdateOperationsInput = { + set?: number + increment?: number + decrement?: number + multiply?: number + divide?: number +} + +export type NullableIntFieldUpdateOperationsInput = { + set?: number | null + increment?: number + decrement?: number + multiply?: number + divide?: number +} + +export type DateTimeFieldUpdateOperationsInput = { + set?: Date | string +} + +export type NullableDateTimeFieldUpdateOperationsInput = { + set?: Date | string | null +} + + + +export type QueueJobSelect = runtime.Types.Extensions.GetSelect<{ + id?: boolean + queue?: boolean + key?: boolean + cron?: boolean + payload?: boolean + result?: boolean + error?: boolean + progress?: boolean + priority?: boolean + attempts?: boolean + maxAttempts?: boolean + runAt?: boolean + notBefore?: boolean + finishedAt?: boolean + processedAt?: boolean + failedAt?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["queueJob"]> + +export type QueueJobSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + queue?: boolean + key?: boolean + cron?: boolean + payload?: boolean + result?: boolean + error?: boolean + progress?: boolean + priority?: boolean + attempts?: boolean + maxAttempts?: boolean + runAt?: boolean + notBefore?: boolean + finishedAt?: boolean + processedAt?: boolean + failedAt?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["queueJob"]> + +export type QueueJobSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ + id?: boolean + queue?: boolean + key?: boolean + cron?: boolean + payload?: boolean + result?: boolean + error?: boolean + progress?: boolean + priority?: boolean + attempts?: boolean + maxAttempts?: boolean + runAt?: boolean + notBefore?: boolean + finishedAt?: boolean + processedAt?: boolean + failedAt?: boolean + createdAt?: boolean + updatedAt?: boolean +}, ExtArgs["result"]["queueJob"]> + +export type QueueJobSelectScalar = { + id?: boolean + queue?: boolean + key?: boolean + cron?: boolean + payload?: boolean + result?: boolean + error?: boolean + progress?: boolean + priority?: boolean + attempts?: boolean + maxAttempts?: boolean + runAt?: boolean + notBefore?: boolean + finishedAt?: boolean + processedAt?: boolean + failedAt?: boolean + createdAt?: boolean + updatedAt?: boolean +} + +export type QueueJobOmit = runtime.Types.Extensions.GetOmit<"id" | "queue" | "key" | "cron" | "payload" | "result" | "error" | "progress" | "priority" | "attempts" | "maxAttempts" | "runAt" | "notBefore" | "finishedAt" | "processedAt" | "failedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["queueJob"]> + +export type $QueueJobPayload = { + name: "QueueJob" + objects: {} + scalars: runtime.Types.Extensions.GetPayloadResult<{ + id: bigint + queue: string + key: string | null + cron: string | null + payload: runtime.JsonValue | null + result: runtime.JsonValue | null + error: runtime.JsonValue | null + progress: number + priority: number + attempts: number + maxAttempts: number | null + runAt: Date + notBefore: Date | null + finishedAt: Date | null + processedAt: Date | null + failedAt: Date | null + createdAt: Date + updatedAt: Date + }, ExtArgs["result"]["queueJob"]> + composites: {} +} + +export type QueueJobGetPayload = runtime.Types.Result.GetResult + +export type QueueJobCountArgs = + Omit & { + select?: QueueJobCountAggregateInputType | true + } + +export interface QueueJobDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['QueueJob'], meta: { name: 'QueueJob' } } + /** + * Find zero or one QueueJob that matches the filter. + * @param {QueueJobFindUniqueArgs} args - Arguments to find a QueueJob + * @example + * // Get one QueueJob + * const queueJob = await prisma.queueJob.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one QueueJob that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {QueueJobFindUniqueOrThrowArgs} args - Arguments to find a QueueJob + * @example + * // Get one QueueJob + * const queueJob = await prisma.queueJob.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first QueueJob that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobFindFirstArgs} args - Arguments to find a QueueJob + * @example + * // Get one QueueJob + * const queueJob = await prisma.queueJob.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first QueueJob that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobFindFirstOrThrowArgs} args - Arguments to find a QueueJob + * @example + * // Get one QueueJob + * const queueJob = await prisma.queueJob.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more QueueJobs that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all QueueJobs + * const queueJobs = await prisma.queueJob.findMany() + * + * // Get first 10 QueueJobs + * const queueJobs = await prisma.queueJob.findMany({ take: 10 }) + * + * // Only select the `id` + * const queueJobWithIdOnly = await prisma.queueJob.findMany({ select: { id: true } }) + * + */ + findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> + + /** + * Create a QueueJob. + * @param {QueueJobCreateArgs} args - Arguments to create a QueueJob. + * @example + * // Create one QueueJob + * const QueueJob = await prisma.queueJob.create({ + * data: { + * // ... data to create a QueueJob + * } + * }) + * + */ + create(args: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many QueueJobs. + * @param {QueueJobCreateManyArgs} args - Arguments to create many QueueJobs. + * @example + * // Create many QueueJobs + * const queueJob = await prisma.queueJob.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Create many QueueJobs and returns the data saved in the database. + * @param {QueueJobCreateManyAndReturnArgs} args - Arguments to create many QueueJobs. + * @example + * // Create many QueueJobs + * const queueJob = await prisma.queueJob.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many QueueJobs and only return the `id` + * const queueJobWithIdOnly = await prisma.queueJob.createManyAndReturn({ + * select: { id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a QueueJob. + * @param {QueueJobDeleteArgs} args - Arguments to delete one QueueJob. + * @example + * // Delete one QueueJob + * const QueueJob = await prisma.queueJob.delete({ + * where: { + * // ... filter to delete one QueueJob + * } + * }) + * + */ + delete(args: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one QueueJob. + * @param {QueueJobUpdateArgs} args - Arguments to update one QueueJob. + * @example + * // Update one QueueJob + * const queueJob = await prisma.queueJob.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more QueueJobs. + * @param {QueueJobDeleteManyArgs} args - Arguments to filter QueueJobs to delete. + * @example + * // Delete a few QueueJobs + * const { count } = await prisma.queueJob.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more QueueJobs. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many QueueJobs + * const queueJob = await prisma.queueJob.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more QueueJobs and returns the data updated in the database. + * @param {QueueJobUpdateManyAndReturnArgs} args - Arguments to update many QueueJobs. + * @example + * // Update many QueueJobs + * const queueJob = await prisma.queueJob.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more QueueJobs and only return the `id` + * const queueJobWithIdOnly = await prisma.queueJob.updateManyAndReturn({ + * select: { id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one QueueJob. + * @param {QueueJobUpsertArgs} args - Arguments to update or create a QueueJob. + * @example + * // Update or create a QueueJob + * const queueJob = await prisma.queueJob.upsert({ + * create: { + * // ... data to create a QueueJob + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the QueueJob we want to update + * } + * }) + */ + upsert(args: Prisma.SelectSubset>): Prisma.Prisma__QueueJobClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of QueueJobs. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobCountArgs} args - Arguments to filter QueueJobs to count. + * @example + * // Count the number of QueueJobs + * const count = await prisma.queueJob.count({ + * where: { + * // ... the filter for the QueueJobs we want to count + * } + * }) + **/ + count( + args?: Prisma.Subset, + ): Prisma.PrismaPromise< + T extends runtime.Types.Utils.Record<'select', any> + ? T['select'] extends true + ? number + : Prisma.GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a QueueJob. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Prisma.Subset): Prisma.PrismaPromise> + + /** + * Group by QueueJob. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {QueueJobGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends QueueJobGroupByArgs, + HasSelectOrTake extends Prisma.Or< + Prisma.Extends<'skip', Prisma.Keys>, + Prisma.Extends<'take', Prisma.Keys> + >, + OrderByArg extends Prisma.True extends HasSelectOrTake + ? { orderBy: QueueJobGroupByArgs['orderBy'] } + : { orderBy?: QueueJobGroupByArgs['orderBy'] }, + OrderFields extends Prisma.ExcludeUnderscoreKeys>>, + ByFields extends Prisma.MaybeTupleToUnion, + ByValid extends Prisma.Has, + HavingFields extends Prisma.GetHavingFields, + HavingValid extends Prisma.Has, + ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, + InputErrors extends ByEmpty extends Prisma.True + ? `Error: "by" must not be empty.` + : HavingValid extends Prisma.False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Prisma.Keys + ? 'orderBy' extends Prisma.Keys + ? ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends Prisma.True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetQueueJobGroupByPayload : Prisma.PrismaPromise +/** + * Fields of the QueueJob model + */ +readonly fields: QueueJobFieldRefs; +} + +/** + * The delegate class that acts as a "Promise-like" for QueueJob. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ +export interface Prisma__QueueJobClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise +} + + + + +/** + * Fields of the QueueJob model + */ +export interface QueueJobFieldRefs { + readonly id: Prisma.FieldRef<"QueueJob", 'BigInt'> + readonly queue: Prisma.FieldRef<"QueueJob", 'String'> + readonly key: Prisma.FieldRef<"QueueJob", 'String'> + readonly cron: Prisma.FieldRef<"QueueJob", 'String'> + readonly payload: Prisma.FieldRef<"QueueJob", 'Json'> + readonly result: Prisma.FieldRef<"QueueJob", 'Json'> + readonly error: Prisma.FieldRef<"QueueJob", 'Json'> + readonly progress: Prisma.FieldRef<"QueueJob", 'Int'> + readonly priority: Prisma.FieldRef<"QueueJob", 'Int'> + readonly attempts: Prisma.FieldRef<"QueueJob", 'Int'> + readonly maxAttempts: Prisma.FieldRef<"QueueJob", 'Int'> + readonly runAt: Prisma.FieldRef<"QueueJob", 'DateTime'> + readonly notBefore: Prisma.FieldRef<"QueueJob", 'DateTime'> + readonly finishedAt: Prisma.FieldRef<"QueueJob", 'DateTime'> + readonly processedAt: Prisma.FieldRef<"QueueJob", 'DateTime'> + readonly failedAt: Prisma.FieldRef<"QueueJob", 'DateTime'> + readonly createdAt: Prisma.FieldRef<"QueueJob", 'DateTime'> + readonly updatedAt: Prisma.FieldRef<"QueueJob", 'DateTime'> +} + + +// Custom InputTypes +/** + * QueueJob findUnique + */ +export type QueueJobFindUniqueArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * Filter, which QueueJob to fetch. + */ + where: Prisma.QueueJobWhereUniqueInput +} + +/** + * QueueJob findUniqueOrThrow + */ +export type QueueJobFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * Filter, which QueueJob to fetch. + */ + where: Prisma.QueueJobWhereUniqueInput +} + +/** + * QueueJob findFirst + */ +export type QueueJobFindFirstArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * Filter, which QueueJob to fetch. + */ + where?: Prisma.QueueJobWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of QueueJobs to fetch. + */ + orderBy?: Prisma.QueueJobOrderByWithRelationInput | Prisma.QueueJobOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for QueueJobs. + */ + cursor?: Prisma.QueueJobWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` QueueJobs from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` QueueJobs. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of QueueJobs. + */ + distinct?: Prisma.QueueJobScalarFieldEnum | Prisma.QueueJobScalarFieldEnum[] +} + +/** + * QueueJob findFirstOrThrow + */ +export type QueueJobFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * Filter, which QueueJob to fetch. + */ + where?: Prisma.QueueJobWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of QueueJobs to fetch. + */ + orderBy?: Prisma.QueueJobOrderByWithRelationInput | Prisma.QueueJobOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for QueueJobs. + */ + cursor?: Prisma.QueueJobWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` QueueJobs from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` QueueJobs. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of QueueJobs. + */ + distinct?: Prisma.QueueJobScalarFieldEnum | Prisma.QueueJobScalarFieldEnum[] +} + +/** + * QueueJob findMany + */ +export type QueueJobFindManyArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * Filter, which QueueJobs to fetch. + */ + where?: Prisma.QueueJobWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of QueueJobs to fetch. + */ + orderBy?: Prisma.QueueJobOrderByWithRelationInput | Prisma.QueueJobOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing QueueJobs. + */ + cursor?: Prisma.QueueJobWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` QueueJobs from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` QueueJobs. + */ + skip?: number + distinct?: Prisma.QueueJobScalarFieldEnum | Prisma.QueueJobScalarFieldEnum[] +} + +/** + * QueueJob create + */ +export type QueueJobCreateArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * The data needed to create a QueueJob. + */ + data: Prisma.XOR +} + +/** + * QueueJob createMany + */ +export type QueueJobCreateManyArgs = { + /** + * The data used to create many QueueJobs. + */ + data: Prisma.QueueJobCreateManyInput | Prisma.QueueJobCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * QueueJob createManyAndReturn + */ +export type QueueJobCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelectCreateManyAndReturn | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * The data used to create many QueueJobs. + */ + data: Prisma.QueueJobCreateManyInput | Prisma.QueueJobCreateManyInput[] + skipDuplicates?: boolean +} + +/** + * QueueJob update + */ +export type QueueJobUpdateArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * The data needed to update a QueueJob. + */ + data: Prisma.XOR + /** + * Choose, which QueueJob to update. + */ + where: Prisma.QueueJobWhereUniqueInput +} + +/** + * QueueJob updateMany + */ +export type QueueJobUpdateManyArgs = { + /** + * The data used to update QueueJobs. + */ + data: Prisma.XOR + /** + * Filter which QueueJobs to update + */ + where?: Prisma.QueueJobWhereInput + /** + * Limit how many QueueJobs to update. + */ + limit?: number +} + +/** + * QueueJob updateManyAndReturn + */ +export type QueueJobUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * The data used to update QueueJobs. + */ + data: Prisma.XOR + /** + * Filter which QueueJobs to update + */ + where?: Prisma.QueueJobWhereInput + /** + * Limit how many QueueJobs to update. + */ + limit?: number +} + +/** + * QueueJob upsert + */ +export type QueueJobUpsertArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * The filter to search for the QueueJob to update in case it exists. + */ + where: Prisma.QueueJobWhereUniqueInput + /** + * In case the QueueJob found by the `where` argument doesn't exist, create a new QueueJob with this data. + */ + create: Prisma.XOR + /** + * In case the QueueJob was found with the provided `where` argument, update it with this data. + */ + update: Prisma.XOR +} + +/** + * QueueJob delete + */ +export type QueueJobDeleteArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null + /** + * Filter which QueueJob to delete. + */ + where: Prisma.QueueJobWhereUniqueInput +} + +/** + * QueueJob deleteMany + */ +export type QueueJobDeleteManyArgs = { + /** + * Filter which QueueJobs to delete + */ + where?: Prisma.QueueJobWhereInput + /** + * Limit how many QueueJobs to delete. + */ + limit?: number +} + +/** + * QueueJob without action + */ +export type QueueJobDefaultArgs = { + /** + * Select specific fields to fetch from the QueueJob + */ + select?: Prisma.QueueJobSelect | null + /** + * Omit specific fields from the QueueJob + */ + omit?: Prisma.QueueJobOmit | null +} diff --git a/prisma/index.ts b/prisma/index.ts new file mode 100644 index 0000000..dee30e5 --- /dev/null +++ b/prisma/index.ts @@ -0,0 +1 @@ +export { Prisma, PrismaClient } from "./client/client"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f2efcff..7781d84 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -2,13 +2,13 @@ // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { - provider = "prisma-client-js" + provider = "prisma-client" + output = "./client" previewFeatures = [] } datasource db { provider = "postgresql" - url = env("DATABASE_URL") } model QueueJob { diff --git a/src/PrismaJob.ts b/src/PrismaJob.ts index e6bd1cf..b59e437 100644 --- a/src/PrismaJob.ts +++ b/src/PrismaJob.ts @@ -1,6 +1,6 @@ -import type { Prisma } from "@prisma/client"; +import { Prisma } from "../prisma"; +// import { PrismaClientKnownRequestError } from "../prisma/client/"; import type { DatabaseJob, PrismaLightClient } from "./types"; -import { isPrismaError } from "./utils"; // import { debug } from "./utils"; export type PrismaJobOptions = { @@ -156,9 +156,10 @@ export class PrismaJob { return false; } catch (error) { // Handle specific error types that indicate lock contention - if (isPrismaError(error) && error.meta?.["code"] === "55P03") { + if (error instanceof Prisma.PrismaClientKnownRequestError) { // PostgreSQL's lock_not_available - return true; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access + return (error.meta as any)?.driverAdapterError?.cause?.code === "55P03"; } // Re-throw other unexpected errors throw error; diff --git a/src/PrismaQueue.ts b/src/PrismaQueue.ts index d22d326..2a1844b 100644 --- a/src/PrismaQueue.ts +++ b/src/PrismaQueue.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unnecessary-condition */ -import { Prisma, PrismaClient } from "@prisma/client"; import { Cron } from "croner"; import { EventEmitter } from "events"; import assert from "node:assert"; +import { Prisma, PrismaClient } from "../prisma"; import { PrismaJob } from "./PrismaJob"; import type { DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker } from "./types"; import { @@ -17,7 +17,7 @@ import { } from "./utils"; export type PrismaQueueOptions = { - prisma?: PrismaClient; + prisma: PrismaClient; name?: string; maxAttempts?: number | null; maxConcurrency?: number; @@ -87,16 +87,16 @@ export class PrismaQueue< * @param worker - The worker function that processes jobs. */ public constructor( - private options: PrismaQueueOptions = {}, + private options: PrismaQueueOptions, public worker: JobWorker, ) { super(); const { - prisma = new PrismaClient(), + prisma, name = "default", modelName = "QueueJob", - tableName = getTableName(modelName), + tableName = getTableName(prisma, modelName), maxAttempts = null, maxConcurrency = DEFAULT_MAX_CONCURRENCY, pollInterval = DEFAULT_POLL_INTERVAL, diff --git a/src/types.ts b/src/types.ts index 1071799..42fe5f8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,5 @@ -import type { Prisma, PrismaClient, QueueJob as PrismaQueueJob } from "@prisma/client"; +import { Prisma, PrismaClient } from "../prisma"; +import { QueueJobModel as PrismaQueueJob } from "../prisma/client/models"; import type { PrismaJob } from "./PrismaJob"; export type Simplify = { [KeyType in keyof T]: T[KeyType] } & {}; diff --git a/src/utils/error.ts b/src/utils/error.ts index d8d76d9..6f88eec 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -1,5 +1,3 @@ -import { Prisma } from "@prisma/client"; - export const serializeError = (err: unknown) => { if (err instanceof Error) { return { @@ -14,7 +12,3 @@ export const serializeError = (err: unknown) => { stack: undefined, }; }; - -export const isPrismaError = (error: unknown): error is Prisma.PrismaClientKnownRequestError => { - return error instanceof Error && "code" in error; -}; diff --git a/src/utils/prisma.ts b/src/utils/prisma.ts index 4aacc0f..1cfc34e 100644 --- a/src/utils/prisma.ts +++ b/src/utils/prisma.ts @@ -1,4 +1,7 @@ -import { Prisma } from "@prisma/client"; +import { defineDmmfProperty } from "@prisma/client/runtime/client.js"; +import { PrismaClient } from "../../prisma"; + +type RuntimeDataModel = Parameters[1]; /** * Converts a PascalCase model name to snake_case table name. @@ -12,9 +15,11 @@ const toSnakeCase = (str: string): string => { * Gets the database table name for a Prisma model. * Falls back to snake_case conversion if DMMF is not available (e.g., edge environments). */ -export const getTableName = (modelName: string): string => { +export const getTableName = (prisma: PrismaClient, modelName: string): string => { try { - const model = Prisma.dmmf?.datamodel?.models?.find((model) => model.name === modelName); + // @ts-expect-error from messing with prisma internals + const datamodel = prisma._runtimeDataModel as RuntimeDataModel; + const model = datamodel.models["QueueJob"]; if (model?.dbName) { return model.dbName; } diff --git a/src/utils/stringify.ts b/src/utils/stringify.ts index 1bc6805..7afa769 100644 --- a/src/utils/stringify.ts +++ b/src/utils/stringify.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-unnecessary-condition */ -import type { Prisma } from "@prisma/client"; +import type { Prisma } from "../../prisma"; type InputJsonValue = Prisma.InputJsonValue; type InputJsonObject = Prisma.InputJsonObject; diff --git a/test/utils/client.ts b/test/utils/client.ts index 3876acf..0a5ed6a 100644 --- a/test/utils/client.ts +++ b/test/utils/client.ts @@ -1,9 +1,12 @@ -import { PrismaClient } from "@prisma/client"; +import { PrismaPg } from "@prisma/adapter-pg"; import createDebug from "debug"; +import { env } from "prisma/config"; +import { PrismaClient } from "../../prisma"; const debug = createDebug("prisma-query"); export const prisma = new PrismaClient({ + adapter: new PrismaPg({ connectionString: env("DATABASE_URL") }), log: [ { emit: "event", diff --git a/test/utils/queue.ts b/test/utils/queue.ts index 0a6a65c..55d06cb 100644 --- a/test/utils/queue.ts +++ b/test/utils/queue.ts @@ -10,7 +10,7 @@ export const DEFAULT_POLL_INTERVAL = 500; let globalQueueIndex = 0; export const createEmailQueue = ( - options: PrismaQueueOptions = {}, + options: Omit = {}, // eslint-disable-next-line @typescript-eslint/require-await worker: JobWorker = async (_job) => { return { code: "200" }; diff --git a/tsconfig.json b/tsconfig.json index 9d9796f..6acb1ab 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,5 +9,5 @@ "test/*": ["./test/*"] } }, - "include": ["src", "test", "*.config.ts"] + "include": ["src", "test", "prisma", "*.config.ts"], } From 284ee179ff20168f65a317f024ee8af9d059c3b7 Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Sun, 11 Jan 2026 00:15:04 +0100 Subject: [PATCH 2/7] refactor: refine types --- src/PrismaJob.ts | 7 +++---- src/PrismaQueue.ts | 8 ++++---- src/types.ts | 17 ++++++++++------- src/utils/prisma.ts | 4 ++-- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/PrismaJob.ts b/src/PrismaJob.ts index b59e437..d458f1b 100644 --- a/src/PrismaJob.ts +++ b/src/PrismaJob.ts @@ -1,11 +1,10 @@ import { Prisma } from "../prisma"; -// import { PrismaClientKnownRequestError } from "../prisma/client/"; -import type { DatabaseJob, PrismaLightClient } from "./types"; +import type { DatabaseJob, ITXClient } from "./types"; // import { debug } from "./utils"; export type PrismaJobOptions = { model: Prisma.QueueJobDelegate; - client: PrismaLightClient; + client: ITXClient; }; /** @@ -13,7 +12,7 @@ export type PrismaJobOptions = { */ export class PrismaJob { #model: Prisma.QueueJobDelegate; - #client: PrismaLightClient; + #client: ITXClient; #record: DatabaseJob; public readonly id; diff --git a/src/PrismaQueue.ts b/src/PrismaQueue.ts index 2a1844b..c1c378b 100644 --- a/src/PrismaQueue.ts +++ b/src/PrismaQueue.ts @@ -2,9 +2,9 @@ import { Cron } from "croner"; import { EventEmitter } from "events"; import assert from "node:assert"; -import { Prisma, PrismaClient } from "../prisma"; +import { Prisma } from "../prisma"; import { PrismaJob } from "./PrismaJob"; -import type { DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker } from "./types"; +import type { DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker, PrismaQueueClient } from "./types"; import { AbortError, calculateDelay, @@ -17,7 +17,7 @@ import { } from "./utils"; export type PrismaQueueOptions = { - prisma: PrismaClient; + prisma: PrismaQueueClient; name?: string; maxAttempts?: number | null; maxConcurrency?: number; @@ -73,7 +73,7 @@ export class PrismaQueue< T extends JobPayload = JobPayload, U extends JobResult = JobResult, > extends EventEmitter { - #prisma: PrismaClient; + #prisma: PrismaQueueClient; private name: string; private config: Required>; diff --git a/src/types.ts b/src/types.ts index 42fe5f8..9077e33 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,7 +1,15 @@ +import type { ITXClientDenyList } from "@prisma/client/runtime/client"; import { Prisma, PrismaClient } from "../prisma"; import { QueueJobModel as PrismaQueueJob } from "../prisma/client/models"; import type { PrismaJob } from "./PrismaJob"; +export type ITXClient = Omit; + +export type PrismaQueueClient = Pick< + PrismaClient, + "queueJob" | "$transaction" | "$executeRaw" | "$executeRawUnsafe" | "$queryRaw" | "$queryRawUnsafe" +>; + export type Simplify = { [KeyType in keyof T]: T[KeyType] } & {}; export type JobPayload = Prisma.InputJsonValue; @@ -10,13 +18,8 @@ export type DatabaseJob = Simplify< Omit & { payload: Payload; result: Result } >; -export type JobCreator = (client: PrismaLightClient) => Promise; +export type JobCreator = (client: ITXClient) => Promise; export type JobWorker = ( job: PrismaJob, - client: PrismaClient, + client: ITXClient, ) => Promise; - -export type PrismaLightClient = Omit< - PrismaClient, - "$connect" | "$disconnect" | "$on" | "$transaction" | "$use" | "$extends" ->; diff --git a/src/utils/prisma.ts b/src/utils/prisma.ts index 1cfc34e..f4ceb31 100644 --- a/src/utils/prisma.ts +++ b/src/utils/prisma.ts @@ -1,5 +1,5 @@ import { defineDmmfProperty } from "@prisma/client/runtime/client.js"; -import { PrismaClient } from "../../prisma"; +import { ITXClient } from "../types"; type RuntimeDataModel = Parameters[1]; @@ -15,7 +15,7 @@ const toSnakeCase = (str: string): string => { * Gets the database table name for a Prisma model. * Falls back to snake_case conversion if DMMF is not available (e.g., edge environments). */ -export const getTableName = (prisma: PrismaClient, modelName: string): string => { +export const getTableName = (prisma: ITXClient, modelName: string): string => { try { // @ts-expect-error from messing with prisma internals const datamodel = prisma._runtimeDataModel as RuntimeDataModel; From 516048ed27e01789d6e41eea18f7b906cb1e1482 Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Mon, 12 Jan 2026 13:18:12 +0100 Subject: [PATCH 3/7] refactor: prisma client instantiation --- src/PrismaQueue.spec.ts | 32 ++++++++++++++++---------------- src/PrismaQueue.ts | 35 ++++++++++++++++++++++------------- src/types.ts | 3 +++ test/utils/client.ts | 18 +++--------------- test/utils/queue.ts | 6 +++--- 5 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/PrismaQueue.spec.ts b/src/PrismaQueue.spec.ts index b0b974c..d2c0fe2 100644 --- a/src/PrismaQueue.spec.ts +++ b/src/PrismaQueue.spec.ts @@ -4,7 +4,6 @@ import { debug, serializeError, waitFor } from "src/utils"; import { createEmailQueue, DEFAULT_POLL_INTERVAL, - prisma, waitForNextEvent, waitForNextJob, waitForNthJob, @@ -25,6 +24,7 @@ describe("PrismaQueue", () => { "_events", "_eventsCount", "_maxListeners", + "prisma", "name", "config", "concurrency", @@ -42,7 +42,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -85,7 +85,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -109,7 +109,7 @@ describe("PrismaQueue", () => { ); void queue.start(); await waitForNextEvent(queue, "enqueue"); - const jobs = await prisma.queueJob.findMany({ where: { key: "email-schedule" } }); + const jobs = await queue.prisma.queueJob.findMany({ where: { key: "email-schedule" } }); expect(jobs.length).toBe(2); const record = jobs[1]; expect(record).toBeDefined(); @@ -119,14 +119,14 @@ describe("PrismaQueue", () => { it("should properly upsert a recurring job", async () => { await queue.schedule({ key: "email-schedule", cron: "5 5 * * *" }, { email: "foo@bar.com" }); await queue.schedule({ key: "email-schedule", cron: "5 5 * * *" }, { email: "baz@bar.com" }); - const jobs = await prisma.queueJob.findMany({ where: { key: "email-schedule" } }); + const jobs = await queue.prisma.queueJob.findMany({ where: { key: "email-schedule" } }); expect(jobs.length).toBe(1); expect(jobs[0]?.payload).toEqual({ email: "baz@bar.com" }); }); it("should properly upsert a recurring job with another schedule", async () => { await queue.schedule({ key: "email-schedule", cron: "5 5 * * *" }, { email: "foo@bar.com" }); await queue.schedule({ key: "email-schedule", cron: "0 5 * * *" }, { email: "foo@bar.com" }); - const jobs = await prisma.queueJob.findMany({ where: { key: "email-schedule" } }); + const jobs = await queue.prisma.queueJob.findMany({ where: { key: "email-schedule" } }); expect(jobs.length).toBe(1); expect(jobs[0]?.runAt.getMinutes()).toBe(0); }); @@ -138,7 +138,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -238,7 +238,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ deleteOn: "success" }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -264,7 +264,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ deleteOn: "failure" }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -292,7 +292,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ deleteOn: "always" }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -334,7 +334,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ maxConcurrency: 2 }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -365,7 +365,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); // void queue.start(); }); afterEach(() => { @@ -407,7 +407,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -436,7 +436,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ pollInterval: 200 }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -464,7 +464,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ pollInterval: 100, jobInterval: 10 }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); }); afterEach(() => { void queue.stop(); @@ -605,7 +605,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ pollInterval: 100, jobInterval: 10 }); }); beforeEach(async () => { - await prisma.queueJob.deleteMany(); + await queue.prisma.queueJob.deleteMany(); }); afterEach(async () => { await queue.stop(); diff --git a/src/PrismaQueue.ts b/src/PrismaQueue.ts index c1c378b..19c3967 100644 --- a/src/PrismaQueue.ts +++ b/src/PrismaQueue.ts @@ -2,9 +2,17 @@ import { Cron } from "croner"; import { EventEmitter } from "events"; import assert from "node:assert"; -import { Prisma } from "../prisma"; +import { Prisma, PrismaClient } from "../prisma"; import { PrismaJob } from "./PrismaJob"; -import type { DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker, PrismaQueueClient } from "./types"; +import type { + ClientOptions, + DatabaseJob, + JobCreator, + JobPayload, + JobResult, + JobWorker, + PrismaQueueClient, +} from "./types"; import { AbortError, calculateDelay, @@ -17,7 +25,8 @@ import { } from "./utils"; export type PrismaQueueOptions = { - prisma: PrismaQueueClient; + // prisma: PrismaQueueClient; + client: ClientOptions; name?: string; maxAttempts?: number | null; maxConcurrency?: number; @@ -73,9 +82,9 @@ export class PrismaQueue< T extends JobPayload = JobPayload, U extends JobResult = JobResult, > extends EventEmitter { - #prisma: PrismaQueueClient; + public prisma: PrismaQueueClient; private name: string; - private config: Required>; + private config: Required>; private concurrency = 0; private stopped = true; @@ -92,11 +101,12 @@ export class PrismaQueue< ) { super(); + this.prisma = new PrismaClient(this.options.client); + const { - prisma, name = "default", modelName = "QueueJob", - tableName = getTableName(prisma, modelName), + tableName = getTableName(this.prisma, modelName), maxAttempts = null, maxConcurrency = DEFAULT_MAX_CONCURRENCY, pollInterval = DEFAULT_POLL_INTERVAL, @@ -111,7 +121,6 @@ export class PrismaQueue< assert(jobInterval >= 10, "jobInterval must be more than 10 ms"); this.name = name; - this.#prisma = prisma; this.config = { modelName, tableName, @@ -147,7 +156,7 @@ export class PrismaQueue< */ private get model(): Prisma.QueueJobDelegate { const queueJobKey = uncapitalize(this.config.modelName) as "queueJob"; - return this.#prisma[queueJobKey]; + return this.prisma[queueJobKey]; } /** @@ -216,7 +225,7 @@ export class PrismaQueue< const { key = null, cron = null, maxAttempts = config.maxAttempts, priority = 0, runAt } = options; const queueJobKey = uncapitalize(this.config.modelName) as "queueJob"; const now = new Date(); - const record = await this.#prisma.$transaction(async (client) => { + const record = await this.prisma.$transaction(async (client) => { const model = client[queueJobKey]; const payload = payloadOrFunction instanceof Function ? await payloadOrFunction(client) : payloadOrFunction; @@ -254,7 +263,7 @@ export class PrismaQueue< }); const job = new PrismaJob(record as DatabaseJob, { model: this.model, - client: this.#prisma, + client: this.prisma, }); this.emit("enqueue", job); return job; @@ -349,7 +358,7 @@ export class PrismaQueue< const tableName = escape(tableNameRaw); const queueJobKey = uncapitalize(this.config.modelName) as "queueJob"; const now = new Date(); - const job = await this.#prisma.$transaction( + const job = await this.prisma.$transaction( async (client) => { const rows = await client.$queryRawUnsafe[]>( `UPDATE ${tableName} SET "processedAt" = $2, "attempts" = "attempts" + 1 @@ -381,7 +390,7 @@ export class PrismaQueue< let result; try { debug(`starting worker for job({id: ${id}, payload: ${JSON.stringify(payload)}})`); - result = await this.worker(job, this.#prisma); + result = await this.worker(job, this.prisma); debug(`finished worker for job({id: ${id}, payload: ${JSON.stringify(payload)}})`); const date = new Date(); await job.update({ finishedAt: date, progress: 100, result, error: Prisma.DbNull }); diff --git a/src/types.ts b/src/types.ts index 9077e33..b3f1217 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,3 +1,4 @@ +import { PrismaPg } from "@prisma/adapter-pg"; import type { ITXClientDenyList } from "@prisma/client/runtime/client"; import { Prisma, PrismaClient } from "../prisma"; import { QueueJobModel as PrismaQueueJob } from "../prisma/client/models"; @@ -23,3 +24,5 @@ export type JobWorker, client: ITXClient, ) => Promise; + +export type ClientOptions = Pick & { adapter: PrismaPg }; diff --git a/test/utils/client.ts b/test/utils/client.ts index 0a5ed6a..448a051 100644 --- a/test/utils/client.ts +++ b/test/utils/client.ts @@ -1,11 +1,8 @@ import { PrismaPg } from "@prisma/adapter-pg"; -import createDebug from "debug"; import { env } from "prisma/config"; -import { PrismaClient } from "../../prisma"; +import { ClientOptions } from "src/types"; -const debug = createDebug("prisma-query"); - -export const prisma = new PrismaClient({ +export const client = { adapter: new PrismaPg({ connectionString: env("DATABASE_URL") }), log: [ { @@ -25,13 +22,4 @@ export const prisma = new PrismaClient({ level: "warn", }, ], -}); - -prisma.$on("query", (queryEvent) => { - const { query, duration, params } = queryEvent; - debug(`${query} with params=${params} (took ${duration}ms)`); -}); - -// prisma.$use((params, next) => { - -// }) +} satisfies ClientOptions; diff --git a/test/utils/queue.ts b/test/utils/queue.ts index 55d06cb..50c8924 100644 --- a/test/utils/queue.ts +++ b/test/utils/queue.ts @@ -1,6 +1,6 @@ import { PrismaJob, PrismaQueue, PrismaQueueEvents, createQueue, type PrismaQueueOptions } from "src/index"; import type { JobPayload, JobResult, JobWorker } from "src/types"; -import { prisma } from "./client"; +import { client } from "./client"; export type EmailJobPayload = { email: string }; export type EmailJobResult = { code: string }; @@ -10,7 +10,7 @@ export const DEFAULT_POLL_INTERVAL = 500; let globalQueueIndex = 0; export const createEmailQueue = ( - options: Omit = {}, + options: Omit = {}, // eslint-disable-next-line @typescript-eslint/require-await worker: JobWorker = async (_job) => { return { code: "200" }; @@ -24,7 +24,7 @@ export const createEmailQueue = ( globalQueueIndex++; return createQueue( { - prisma, + client, name, pollInterval, ...otherOptions, From b1705644b15dff8d9f2d356cdc0e3c243623cd7c Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Mon, 12 Jan 2026 14:02:32 +0100 Subject: [PATCH 4/7] refactor: eliminate unnecessary type --- src/PrismaQueue.ts | 13 ++----------- src/types.ts | 5 ----- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/PrismaQueue.ts b/src/PrismaQueue.ts index 19c3967..69be302 100644 --- a/src/PrismaQueue.ts +++ b/src/PrismaQueue.ts @@ -4,15 +4,7 @@ import { EventEmitter } from "events"; import assert from "node:assert"; import { Prisma, PrismaClient } from "../prisma"; import { PrismaJob } from "./PrismaJob"; -import type { - ClientOptions, - DatabaseJob, - JobCreator, - JobPayload, - JobResult, - JobWorker, - PrismaQueueClient, -} from "./types"; +import type { ClientOptions, DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker } from "./types"; import { AbortError, calculateDelay, @@ -25,7 +17,6 @@ import { } from "./utils"; export type PrismaQueueOptions = { - // prisma: PrismaQueueClient; client: ClientOptions; name?: string; maxAttempts?: number | null; @@ -82,7 +73,7 @@ export class PrismaQueue< T extends JobPayload = JobPayload, U extends JobResult = JobResult, > extends EventEmitter { - public prisma: PrismaQueueClient; + public prisma: PrismaClient; private name: string; private config: Required>; diff --git a/src/types.ts b/src/types.ts index b3f1217..67a7ab5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -6,11 +6,6 @@ import type { PrismaJob } from "./PrismaJob"; export type ITXClient = Omit; -export type PrismaQueueClient = Pick< - PrismaClient, - "queueJob" | "$transaction" | "$executeRaw" | "$executeRawUnsafe" | "$queryRaw" | "$queryRawUnsafe" ->; - export type Simplify = { [KeyType in keyof T]: T[KeyType] } & {}; export type JobPayload = Prisma.InputJsonValue; From b7fd084d433c3bb870fcfdb5998f34b5e6613fb2 Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Mon, 12 Jan 2026 16:09:38 +0100 Subject: [PATCH 5/7] refactor: change PrismaQueue client interface --- src/PrismaQueue.ts | 12 ++++++++---- src/types.ts | 3 ++- test/utils/client.ts | 25 ------------------------- test/utils/index.ts | 1 - test/utils/queue.ts | 27 ++++++++++++++++++++++++--- 5 files changed, 34 insertions(+), 34 deletions(-) delete mode 100644 test/utils/client.ts diff --git a/src/PrismaQueue.ts b/src/PrismaQueue.ts index 69be302..5c43435 100644 --- a/src/PrismaQueue.ts +++ b/src/PrismaQueue.ts @@ -4,7 +4,7 @@ import { EventEmitter } from "events"; import assert from "node:assert"; import { Prisma, PrismaClient } from "../prisma"; import { PrismaJob } from "./PrismaJob"; -import type { ClientOptions, DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker } from "./types"; +import type { Adapter, DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker, Log } from "./types"; import { AbortError, calculateDelay, @@ -17,7 +17,8 @@ import { } from "./utils"; export type PrismaQueueOptions = { - client: ClientOptions; + adapter: Adapter; + log?: Log; name?: string; maxAttempts?: number | null; maxConcurrency?: number; @@ -75,7 +76,7 @@ export class PrismaQueue< > extends EventEmitter { public prisma: PrismaClient; private name: string; - private config: Required>; + private config: Required>; private concurrency = 0; private stopped = true; @@ -92,7 +93,10 @@ export class PrismaQueue< ) { super(); - this.prisma = new PrismaClient(this.options.client); + this.prisma = new PrismaClient({ + adapter: options.adapter, + log: options.log ?? [], + }); const { name = "default", diff --git a/src/types.ts b/src/types.ts index 67a7ab5..d0bd283 100644 --- a/src/types.ts +++ b/src/types.ts @@ -20,4 +20,5 @@ export type JobWorker Promise; -export type ClientOptions = Pick & { adapter: PrismaPg }; +export type Adapter = PrismaPg; +export type Log = Prisma.PrismaClientOptions["log"]; diff --git a/test/utils/client.ts b/test/utils/client.ts deleted file mode 100644 index 448a051..0000000 --- a/test/utils/client.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { PrismaPg } from "@prisma/adapter-pg"; -import { env } from "prisma/config"; -import { ClientOptions } from "src/types"; - -export const client = { - adapter: new PrismaPg({ connectionString: env("DATABASE_URL") }), - log: [ - { - emit: "event", - level: "query", - }, - { - emit: "stdout", - level: "error", - }, - { - emit: "stdout", - level: "info", - }, - { - emit: "stdout", - level: "warn", - }, - ], -} satisfies ClientOptions; diff --git a/test/utils/index.ts b/test/utils/index.ts index 13c25ce..3279cb3 100644 --- a/test/utils/index.ts +++ b/test/utils/index.ts @@ -1,4 +1,3 @@ -export * from "./client"; export * from "./debug"; export * from "./queue"; export * from "./time"; diff --git a/test/utils/queue.ts b/test/utils/queue.ts index 50c8924..4bcca23 100644 --- a/test/utils/queue.ts +++ b/test/utils/queue.ts @@ -1,6 +1,7 @@ +import { PrismaPg } from "@prisma/adapter-pg"; +import { env } from "prisma/config"; import { PrismaJob, PrismaQueue, PrismaQueueEvents, createQueue, type PrismaQueueOptions } from "src/index"; import type { JobPayload, JobResult, JobWorker } from "src/types"; -import { client } from "./client"; export type EmailJobPayload = { email: string }; export type EmailJobResult = { code: string }; @@ -9,8 +10,10 @@ export type EmailJob = PrismaJob; export const DEFAULT_POLL_INTERVAL = 500; let globalQueueIndex = 0; +const adapter = new PrismaPg({ connectionString: env("DATABASE_URL") }); + export const createEmailQueue = ( - options: Omit = {}, + options: Omit = {}, // eslint-disable-next-line @typescript-eslint/require-await worker: JobWorker = async (_job) => { return { code: "200" }; @@ -24,7 +27,25 @@ export const createEmailQueue = ( globalQueueIndex++; return createQueue( { - client, + adapter, + log: [ + { + emit: "event", + level: "query", + }, + { + emit: "stdout", + level: "error", + }, + { + emit: "stdout", + level: "info", + }, + { + emit: "stdout", + level: "warn", + }, + ], name, pollInterval, ...otherOptions, From a5be9778398b64bb771f632d88fefae0b5d4399e Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Mon, 12 Jan 2026 16:24:27 +0100 Subject: [PATCH 6/7] refactor: model and tableName acquisition --- src/PrismaJob.ts | 16 ++++++------- src/PrismaQueue.spec.ts | 32 +++++++++++++------------- src/PrismaQueue.ts | 51 +++++++++++------------------------------ src/utils/index.ts | 1 - src/utils/prisma.ts | 31 ------------------------- 5 files changed, 38 insertions(+), 93 deletions(-) delete mode 100644 src/utils/prisma.ts diff --git a/src/PrismaJob.ts b/src/PrismaJob.ts index d458f1b..8d26e48 100644 --- a/src/PrismaJob.ts +++ b/src/PrismaJob.ts @@ -3,7 +3,7 @@ import type { DatabaseJob, ITXClient } from "./types"; // import { debug } from "./utils"; export type PrismaJobOptions = { - model: Prisma.QueueJobDelegate; + tableName: string; client: ITXClient; }; @@ -11,7 +11,7 @@ export type PrismaJobOptions = { * Represents a job within a Prisma-managed queue. */ export class PrismaJob { - #model: Prisma.QueueJobDelegate; + #tableName: string; #client: ITXClient; #record: DatabaseJob; @@ -24,8 +24,8 @@ export class PrismaJob { * @param model - The Prisma delegate used for database operations related to the job. * @param client - The Prisma client for executing arbitrary queries. */ - constructor(record: DatabaseJob, { model, client }: PrismaJobOptions) { - this.#model = model; + constructor(record: DatabaseJob, { tableName, client }: PrismaJobOptions) { + this.#tableName = tableName; this.#client = client; this.#record = record; this.id = record.id; @@ -109,7 +109,7 @@ export class PrismaJob { * Fetches the latest job record from the database and updates the internal state. */ public async fetch(): Promise> { - const record = (await this.#model.findUnique({ + const record = (await this.#client.queueJob.findUnique({ where: { id: this.id }, })) as DatabaseJob; this.#assign(record); @@ -121,7 +121,7 @@ export class PrismaJob { * @param data - The new data to be merged with the existing job record. */ public async update(data: Prisma.QueueJobUpdateInput): Promise> { - const record = (await this.#model.update({ + const record = (await this.#client.queueJob.update({ where: { id: this.id }, data, })) as DatabaseJob; @@ -133,7 +133,7 @@ export class PrismaJob { * Deletes the job from the database. */ public async delete(): Promise> { - const record = (await this.#model.delete({ + const record = (await this.#client.queueJob.delete({ where: { id: this.id }, })) as DatabaseJob; return record; @@ -147,7 +147,7 @@ export class PrismaJob { try { // Attempt to select and lock the row with a timeout await this.#client.$executeRawUnsafe( - `SELECT "id" FROM "public"."queue_jobs" WHERE "id" = $1 FOR UPDATE NOWAIT`, + `SELECT "id" FROM "public"."${this.#tableName}" WHERE "id" = $1 FOR UPDATE NOWAIT`, this.id, ); diff --git a/src/PrismaQueue.spec.ts b/src/PrismaQueue.spec.ts index d2c0fe2..054ec24 100644 --- a/src/PrismaQueue.spec.ts +++ b/src/PrismaQueue.spec.ts @@ -24,7 +24,7 @@ describe("PrismaQueue", () => { "_events", "_eventsCount", "_maxListeners", - "prisma", + "client", "name", "config", "concurrency", @@ -42,7 +42,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -85,7 +85,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -109,7 +109,7 @@ describe("PrismaQueue", () => { ); void queue.start(); await waitForNextEvent(queue, "enqueue"); - const jobs = await queue.prisma.queueJob.findMany({ where: { key: "email-schedule" } }); + const jobs = await queue.client.queueJob.findMany({ where: { key: "email-schedule" } }); expect(jobs.length).toBe(2); const record = jobs[1]; expect(record).toBeDefined(); @@ -119,14 +119,14 @@ describe("PrismaQueue", () => { it("should properly upsert a recurring job", async () => { await queue.schedule({ key: "email-schedule", cron: "5 5 * * *" }, { email: "foo@bar.com" }); await queue.schedule({ key: "email-schedule", cron: "5 5 * * *" }, { email: "baz@bar.com" }); - const jobs = await queue.prisma.queueJob.findMany({ where: { key: "email-schedule" } }); + const jobs = await queue.client.queueJob.findMany({ where: { key: "email-schedule" } }); expect(jobs.length).toBe(1); expect(jobs[0]?.payload).toEqual({ email: "baz@bar.com" }); }); it("should properly upsert a recurring job with another schedule", async () => { await queue.schedule({ key: "email-schedule", cron: "5 5 * * *" }, { email: "foo@bar.com" }); await queue.schedule({ key: "email-schedule", cron: "0 5 * * *" }, { email: "foo@bar.com" }); - const jobs = await queue.prisma.queueJob.findMany({ where: { key: "email-schedule" } }); + const jobs = await queue.client.queueJob.findMany({ where: { key: "email-schedule" } }); expect(jobs.length).toBe(1); expect(jobs[0]?.runAt.getMinutes()).toBe(0); }); @@ -138,7 +138,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -238,7 +238,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ deleteOn: "success" }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -264,7 +264,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ deleteOn: "failure" }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -292,7 +292,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ deleteOn: "always" }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -334,7 +334,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ maxConcurrency: 2 }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -365,7 +365,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); // void queue.start(); }); afterEach(() => { @@ -407,7 +407,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue(); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -436,7 +436,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ pollInterval: 200 }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); void queue.start(); }); afterEach(() => { @@ -464,7 +464,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ pollInterval: 100, jobInterval: 10 }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); }); afterEach(() => { void queue.stop(); @@ -605,7 +605,7 @@ describe("PrismaQueue", () => { queue = createEmailQueue({ pollInterval: 100, jobInterval: 10 }); }); beforeEach(async () => { - await queue.prisma.queueJob.deleteMany(); + await queue.client.queueJob.deleteMany(); }); afterEach(async () => { await queue.stop(); diff --git a/src/PrismaQueue.ts b/src/PrismaQueue.ts index 5c43435..2cf8a6d 100644 --- a/src/PrismaQueue.ts +++ b/src/PrismaQueue.ts @@ -5,16 +5,7 @@ import assert from "node:assert"; import { Prisma, PrismaClient } from "../prisma"; import { PrismaJob } from "./PrismaJob"; import type { Adapter, DatabaseJob, JobCreator, JobPayload, JobResult, JobWorker, Log } from "./types"; -import { - AbortError, - calculateDelay, - debug, - escape, - getTableName, - serializeError, - uncapitalize, - waitFor, -} from "./utils"; +import { AbortError, calculateDelay, debug, escape, serializeError, waitFor } from "./utils"; export type PrismaQueueOptions = { adapter: Adapter; @@ -24,7 +15,6 @@ export type PrismaQueueOptions = { maxConcurrency?: number; pollInterval?: number; jobInterval?: number; - modelName?: string; tableName?: string; deleteOn?: "success" | "failure" | "always" | "never"; /** @@ -74,7 +64,7 @@ export class PrismaQueue< T extends JobPayload = JobPayload, U extends JobResult = JobResult, > extends EventEmitter { - public prisma: PrismaClient; + public client: PrismaClient; private name: string; private config: Required>; @@ -93,15 +83,14 @@ export class PrismaQueue< ) { super(); - this.prisma = new PrismaClient({ + this.client = new PrismaClient({ adapter: options.adapter, log: options.log ?? [], }); const { name = "default", - modelName = "QueueJob", - tableName = getTableName(this.prisma, modelName), + tableName = "queue_jobs", maxAttempts = null, maxConcurrency = DEFAULT_MAX_CONCURRENCY, pollInterval = DEFAULT_POLL_INTERVAL, @@ -117,7 +106,6 @@ export class PrismaQueue< this.name = name; this.config = { - modelName, tableName, maxAttempts, maxConcurrency, @@ -146,14 +134,6 @@ export class PrismaQueue< } } - /** - * Gets the Prisma delegate associated with the queue job model. - */ - private get model(): Prisma.QueueJobDelegate { - const queueJobKey = uncapitalize(this.config.modelName) as "queueJob"; - return this.prisma[queueJobKey]; - } - /** * Starts the job processing in the queue. */ @@ -218,10 +198,8 @@ export class PrismaQueue< debug(`enqueue`, this.name, payloadOrFunction, options); const { name: queueName, config } = this; const { key = null, cron = null, maxAttempts = config.maxAttempts, priority = 0, runAt } = options; - const queueJobKey = uncapitalize(this.config.modelName) as "queueJob"; const now = new Date(); - const record = await this.prisma.$transaction(async (client) => { - const model = client[queueJobKey]; + const record = await this.client.$transaction(async (client) => { const payload = payloadOrFunction instanceof Function ? await payloadOrFunction(client) : payloadOrFunction; const data = { @@ -235,7 +213,7 @@ export class PrismaQueue< runAt: runAt ?? now, }; if (key && runAt) { - const { count } = await model.deleteMany({ + const { count } = await client.queueJob.deleteMany({ where: { queue: queueName, key, @@ -248,17 +226,17 @@ export class PrismaQueue< if (count > 0) { debug(`deleted ${count} conflicting upcoming queue jobs`); } - return await model.upsert({ + return await client.queueJob.upsert({ where: { key_runAt: { key, runAt } }, create: data, update: data, }); } - return await model.create({ data }); + return await client.queueJob.create({ data }); }); const job = new PrismaJob(record as DatabaseJob, { - model: this.model, - client: this.prisma, + tableName: this.config.tableName, + client: this.client, }); this.emit("enqueue", job); return job; @@ -351,9 +329,8 @@ export class PrismaQueue< const { name: queueName } = this; const { tableName: tableNameRaw, deleteOn } = this.config; const tableName = escape(tableNameRaw); - const queueJobKey = uncapitalize(this.config.modelName) as "queueJob"; const now = new Date(); - const job = await this.prisma.$transaction( + const job = await this.client.$transaction( async (client) => { const rows = await client.$queryRawUnsafe[]>( `UPDATE ${tableName} SET "processedAt" = $2, "attempts" = "attempts" + 1 @@ -379,13 +356,13 @@ export class PrismaQueue< } const { id, payload, attempts, maxAttempts } = rows[0]; const job = new PrismaJob(rows[0], { - model: client[queueJobKey], + tableName: this.config.tableName, client, }); let result; try { debug(`starting worker for job({id: ${id}, payload: ${JSON.stringify(payload)}})`); - result = await this.worker(job, this.prisma); + result = await this.worker(job, this.client); debug(`finished worker for job({id: ${id}, payload: ${JSON.stringify(payload)}})`); const date = new Date(); await job.update({ finishedAt: date, progress: 100, result, error: Prisma.DbNull }); @@ -447,7 +424,7 @@ export class PrismaQueue< where.runAt = { lte: date }; where.AND = { OR: [{ notBefore: { lte: date } }, { notBefore: null }] }; } - return await this.model.count({ + return await this.client.queueJob.count({ where, }); } diff --git a/src/utils/index.ts b/src/utils/index.ts index 10a7312..5774f58 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,6 +1,5 @@ export * from "./debug"; export * from "./error"; -export * from "./prisma"; export * from "./string"; export * from "./stringify"; export * from "./time"; diff --git a/src/utils/prisma.ts b/src/utils/prisma.ts deleted file mode 100644 index f4ceb31..0000000 --- a/src/utils/prisma.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { defineDmmfProperty } from "@prisma/client/runtime/client.js"; -import { ITXClient } from "../types"; - -type RuntimeDataModel = Parameters[1]; - -/** - * Converts a PascalCase model name to snake_case table name. - * @example "QueueJob" -> "queue_job" - */ -const toSnakeCase = (str: string): string => { - return str.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase(); -}; - -/** - * Gets the database table name for a Prisma model. - * Falls back to snake_case conversion if DMMF is not available (e.g., edge environments). - */ -export const getTableName = (prisma: ITXClient, modelName: string): string => { - try { - // @ts-expect-error from messing with prisma internals - const datamodel = prisma._runtimeDataModel as RuntimeDataModel; - const model = datamodel.models["QueueJob"]; - if (model?.dbName) { - return model.dbName; - } - } catch { - // DMMF not available (edge environment or separately generated Prisma client) - } - // Fallback to conventional snake_case table name - return toSnakeCase(modelName); -}; From 15f2d60244bbacf662a2f0ca8390847831ba9abc Mon Sep 17 00:00:00 2001 From: Andreas Korth Date: Thu, 22 Jan 2026 09:10:26 +0100 Subject: [PATCH 7/7] chore: update dependencies --- package.json | 16 +- pnpm-lock.yaml | 1398 +++++++---------- prisma/client/internal/class.ts | 12 +- prisma/client/internal/prismaNamespace.ts | 8 +- .../client/internal/prismaNamespaceBrowser.ts | 14 +- 5 files changed, 626 insertions(+), 822 deletions(-) diff --git a/package.json b/package.json index 58139ac..301861b 100644 --- a/package.json +++ b/package.json @@ -48,27 +48,27 @@ "debug": "^4.4.3" }, "peerDependencies": { - "@prisma/client": ">=3" + "@prisma/client": ">=7" }, "devDependencies": { "@mgcrea/eslint-config-node": "^0.14.1", - "@prisma/adapter-pg": "^7.2.0", - "@prisma/client": "7.2.0", + "@prisma/adapter-pg": "^7.3.0", + "@prisma/client": "^7.3.0", "@tsconfig/node-lts": "^24.0.0", "@tsconfig/strictest": "^2.0.8", "@types/debug": "^4.1.12", - "@types/node": "^24.10.6", - "@vitest/coverage-v8": "^4.0.16", + "@types/node": "^25.0.10", + "@vitest/coverage-v8": "^4.0.17", "dotenv-cli": "^11.0.0", "eslint": "^9.39.2", - "prettier": "^3.7.4", + "prettier": "^3.8.1", "prettier-plugin-organize-imports": "^4.3.0", - "prisma": "7.2.0", + "prisma": "^7.3.0", "tsup": "^8.5.1", "tsx": "^4.21.0", "typescript": "^5.9.3", "vite-tsconfig-paths": "^6.0.4", - "vitest": "^4.0.16" + "vitest": "^4.0.17" }, "packageManager": "pnpm@10.28.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d202460..ac81ce7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,13 +17,13 @@ importers: devDependencies: '@mgcrea/eslint-config-node': specifier: ^0.14.1 - version: 0.14.1(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4)(typescript@5.9.3)(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)) + version: 0.14.1(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1)(typescript@5.9.3)(vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0)) '@prisma/adapter-pg': - specifier: ^7.2.0 - version: 7.2.0 + specifier: ^7.3.0 + version: 7.3.0 '@prisma/client': - specifier: 7.2.0 - version: 7.2.0(prisma@7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3) + specifier: ^7.3.0 + version: 7.3.0(prisma@7.3.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3) '@tsconfig/node-lts': specifier: ^24.0.0 version: 24.0.0 @@ -34,29 +34,29 @@ importers: specifier: ^4.1.12 version: 4.1.12 '@types/node': - specifier: ^24.10.6 - version: 24.10.6 + specifier: ^25.0.10 + version: 25.0.10 '@vitest/coverage-v8': - specifier: ^4.0.16 - version: 4.0.16(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)) + specifier: ^4.0.17 + version: 4.0.17(vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0)) dotenv-cli: specifier: ^11.0.0 version: 11.0.0 eslint: specifier: ^9.39.2 - version: 9.39.2(jiti@2.5.1) + version: 9.39.2(jiti@2.6.1) prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.1 + version: 3.8.1 prettier-plugin-organize-imports: specifier: ^4.3.0 - version: 4.3.0(prettier@3.7.4)(typescript@5.9.3) + version: 4.3.0(prettier@3.8.1)(typescript@5.9.3) prisma: - specifier: 7.2.0 - version: 7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + specifier: ^7.3.0 + version: 7.3.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) tsup: specifier: ^8.5.1 - version: 8.5.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -65,17 +65,13 @@ importers: version: 5.9.3 vite-tsconfig-paths: specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)) + version: 6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0)) vitest: - specifier: ^4.0.16 - version: 4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0) + specifier: ^4.0.17 + version: 4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -84,13 +80,13 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': @@ -109,19 +105,19 @@ packages: '@chevrotain/utils@10.5.0': resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} - '@electric-sql/pglite-socket@0.0.6': - resolution: {integrity: sha512-6RjmgzphIHIBA4NrMGJsjNWK4pu+bCWJlEWlwcxFTVY3WT86dFpKwbZaGWZV6C5Rd7sCk1Z0CI76QEfukLAUXw==} + '@electric-sql/pglite-socket@0.0.20': + resolution: {integrity: sha512-J5nLGsicnD9wJHnno9r+DGxfcZWh+YJMCe0q/aCgtG6XOm9Z7fKeite8IZSNXgZeGltSigM9U/vAWZQWdgcSFg==} hasBin: true peerDependencies: - '@electric-sql/pglite': 0.3.2 + '@electric-sql/pglite': 0.3.15 - '@electric-sql/pglite-tools@0.2.7': - resolution: {integrity: sha512-9dAccClqxx4cZB+Ar9B+FZ5WgxDc/Xvl9DPrTWv+dYTf0YNubLzi4wHHRGRGhrJv15XwnyKcGOZAP1VXSneSUg==} + '@electric-sql/pglite-tools@0.2.20': + resolution: {integrity: sha512-BK50ZnYa3IG7ztXhtgYf0Q7zijV32Iw1cYS8C+ThdQlwx12V5VZ9KRJ42y82Hyb4PkTxZQklVQA9JHyUlex33A==} peerDependencies: - '@electric-sql/pglite': 0.3.2 + '@electric-sql/pglite': 0.3.15 - '@electric-sql/pglite@0.3.2': - resolution: {integrity: sha512-zfWWa+V2ViDCY/cmUfRqeWY1yLto+EpxjXnZzenB1TyxsTiXaTWeZFIZw6mac52BsuQm0RjCnisjBtdBaXOI6w==} + '@electric-sql/pglite@0.3.15': + resolution: {integrity: sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==} '@esbuild/aix-ppc64@0.27.2': resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} @@ -279,22 +275,12 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -311,8 +297,8 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@9.39.2': @@ -327,8 +313,8 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@hono/node-server@1.19.6': - resolution: {integrity: sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==} + '@hono/node-server@1.19.9': + resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 @@ -337,41 +323,25 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} - engines: {node: '>=18.18'} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -381,26 +351,22 @@ packages: '@mgcrea/eslint-config-node@0.14.1': resolution: {integrity: sha512-vM/zLzRru720IhQ1DPOy+ZVI4qsJTkPsa/TFhuFWutvioSYJ8MhzSx3wcDOlV44ueKIoKNYYGVpztgWZcw5+gg==} - '@mrleebo/prisma-ast@0.12.1': - resolution: {integrity: sha512-JwqeCQ1U3fvccttHZq7Tk0m/TMC6WcFAQZdukypW3AzlJYKYTGNVd1ANU2GuhKnv4UQuOFj3oAl0LLG/gxFN1w==} + '@mrleebo/prisma-ast@0.13.1': + resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==} engines: {node: '>=16'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@prisma/adapter-pg@7.2.0': - resolution: {integrity: sha512-euIdQ13cRB2wZ3jPsnDnFhINquo1PYFPCg6yVL8b2rp3EdinQHsX9EDdCtRr489D5uhphcRk463OdQAFlsCr0w==} + '@prisma/adapter-pg@7.3.0': + resolution: {integrity: sha512-iuYQMbIPO6i9O45Fv8TB7vWu00BXhCaNAShenqF7gLExGDbnGp5BfFB4yz1K59zQ59jF6tQ9YHrg0P6/J3OoLg==} - '@prisma/client-runtime-utils@7.2.0': - resolution: {integrity: sha512-dn7oB53v0tqkB0wBdMuTNFNPdEbfICEUe82Tn9FoKAhJCUkDH+fmyEp0ClciGh+9Hp2Tuu2K52kth2MTLstvmA==} + '@prisma/client-runtime-utils@7.3.0': + resolution: {integrity: sha512-dG/ceD9c+tnXATPk8G+USxxYM9E6UdMTnQeQ+1SZUDxTz7SgQcfxEqafqIQHcjdlcNK/pvmmLfSwAs3s2gYwUw==} - '@prisma/client@7.2.0': - resolution: {integrity: sha512-JdLF8lWZ+LjKGKpBqyAlenxd/kXjd1Abf/xK+6vUA7R7L2Suo6AFTHFRpPSdAKCan9wzdFApsUpSa/F6+t1AtA==} + '@prisma/client@7.3.0': + resolution: {integrity: sha512-FXBIxirqQfdC6b6HnNgxGmU7ydCPEPk7maHMOduJJfnTP+MuOGa15X4omjR/zpPUUpm8ef/mEFQjJudOGkXFcQ==} engines: {node: ^20.19 || ^22.12 || >=24.0} peerDependencies: prisma: '*' @@ -411,153 +377,173 @@ packages: typescript: optional: true - '@prisma/config@7.2.0': - resolution: {integrity: sha512-qmvSnfQ6l/srBW1S7RZGfjTQhc44Yl3ldvU6y3pgmuLM+83SBDs6UQVgMtQuMRe9J3gGqB0RF8wER6RlXEr6jQ==} - - '@prisma/debug@6.8.2': - resolution: {integrity: sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==} + '@prisma/config@7.3.0': + resolution: {integrity: sha512-QyMV67+eXF7uMtKxTEeQqNu/Be7iH+3iDZOQZW5ttfbSwBamCSdwPszA0dum+Wx27I7anYTPLmRmMORKViSW1A==} '@prisma/debug@7.2.0': resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==} - '@prisma/dev@0.17.0': - resolution: {integrity: sha512-6sGebe5jxX+FEsQTpjHLzvOGPn6ypFQprcs3jcuIWv1Xp/5v6P/rjfdvAwTkP2iF6pDx2tCd8vGLNWcsWzImTA==} + '@prisma/debug@7.3.0': + resolution: {integrity: sha512-yh/tHhraCzYkffsI1/3a7SHX8tpgbJu1NPnuxS4rEpJdWAUDHUH25F1EDo6PPzirpyLNkgPPZdhojQK804BGtg==} - '@prisma/driver-adapter-utils@7.2.0': - resolution: {integrity: sha512-gzrUcbI9VmHS24Uf+0+7DNzdIw7keglJsD5m/MHxQOU68OhGVzlphQRobLiDMn8CHNA2XN8uugwKjudVtnfMVQ==} + '@prisma/dev@0.20.0': + resolution: {integrity: sha512-ovlBYwWor0OzG+yH4J3Ot+AneD818BttLA+Ii7wjbcLHUrnC4tbUPVGyNd3c/+71KETPKZfjhkTSpdS15dmXNQ==} - '@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3': - resolution: {integrity: sha512-KezsjCZDsbjNR7SzIiVlUsn9PnLePI7r5uxABlwL+xoerurZTfgQVbIjvjF2sVr3Uc0ZcsnREw3F84HvbggGdA==} + '@prisma/driver-adapter-utils@7.3.0': + resolution: {integrity: sha512-Wdlezh1ck0Rq2dDINkfSkwbR53q53//Eo1vVqVLwtiZ0I6fuWDGNPxwq+SNAIHnsU+FD/m3aIJKevH3vF13U3w==} - '@prisma/engines@7.2.0': - resolution: {integrity: sha512-HUeOI/SvCDsHrR9QZn24cxxZcujOjcS3w1oW/XVhnSATAli5SRMOfp/WkG3TtT5rCxDA4xOnlJkW7xkho4nURA==} + '@prisma/engines-version@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': + resolution: {integrity: sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==} - '@prisma/fetch-engine@7.2.0': - resolution: {integrity: sha512-Z5XZztJ8Ap+wovpjPD2lQKnB8nWFGNouCrglaNFjxIWAGWz0oeHXwUJRiclIoSSXN/ptcs9/behptSk8d0Yy6w==} + '@prisma/engines@7.3.0': + resolution: {integrity: sha512-cWRQoPDXPtR6stOWuWFZf9pHdQ/o8/QNWn0m0zByxf5Kd946Q875XdEJ52pEsX88vOiXUmjuPG3euw82mwQNMg==} - '@prisma/get-platform@6.8.2': - resolution: {integrity: sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==} + '@prisma/fetch-engine@7.3.0': + resolution: {integrity: sha512-Mm0F84JMqM9Vxk70pzfNpGJ1lE4hYjOeLMu7nOOD1i83nvp8MSAcFYBnHqLvEZiA6onUR+m8iYogtOY4oPO5lQ==} '@prisma/get-platform@7.2.0': resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} - '@prisma/query-plan-executor@6.18.0': - resolution: {integrity: sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA==} + '@prisma/get-platform@7.3.0': + resolution: {integrity: sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==} + + '@prisma/query-plan-executor@7.2.0': + resolution: {integrity: sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==} - '@prisma/studio-core@0.9.0': - resolution: {integrity: sha512-xA2zoR/ADu/NCSQuriBKTh6Ps4XjU0bErkEcgMfnSGh346K1VI7iWKnoq1l2DoxUqiddPHIEWwtxJ6xCHG6W7g==} + '@prisma/studio-core@0.13.1': + resolution: {integrity: sha512-agdqaPEePRHcQ7CexEfkX1RvSH9uWDb6pXrZnhCRykhDFAV0/0P3d07WtfiY8hZWb7oRU4v+NkT4cGFHkQJIPg==} peerDependencies: '@types/react': ^18.0.0 || ^19.0.0 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@rollup/rollup-android-arm-eabi@4.51.0': - resolution: {integrity: sha512-VyfldO8T/C5vAXBGIobrAnUE+VJNVLw5z9h4NgSDq/AJZWt/fXqdW+0PJbk+M74xz7yMDRiHtlsuDV7ew6K20w==} + '@rollup/rollup-android-arm-eabi@4.56.0': + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.51.0': - resolution: {integrity: sha512-Z3ujzDZgsEVSokgIhmOAReh9SGT2qloJJX2Xo1Q3nPU1EhCXrV0PbpR3r7DWRgozqnjrPZQkLe5cgBPIYp70Vg==} + '@rollup/rollup-android-arm64@4.56.0': + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.51.0': - resolution: {integrity: sha512-T3gskHgArUdR6TCN69li5VELVAZK+iQ4iwMoSMNYixoj+56EC9lTj35rcxhXzIJt40YfBkvDy3GS+t5zh7zM6g==} + '@rollup/rollup-darwin-arm64@4.56.0': + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.51.0': - resolution: {integrity: sha512-Hh7n/fh0g5UjH6ATDF56Qdf5bzdLZKIbhp5KftjMYG546Ocjeyg15dxphCpH1FFY2PJ2G6MiOVL4jMq5VLTyrQ==} + '@rollup/rollup-darwin-x64@4.56.0': + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.51.0': - resolution: {integrity: sha512-0EddADb6FBvfqYoxwVom3hAbAvpSVUbZqmR1wmjk0MSZ06hn/UxxGHKRqEQDMkts7XiZjejVB+TLF28cDTU+gA==} + '@rollup/rollup-freebsd-arm64@4.56.0': + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.51.0': - resolution: {integrity: sha512-MpqaEDLo3JuVPF+wWV4mK7V8akL76WCz8ndfz1aVB7RhvXFO3k7yT7eu8OEuog4VTSyNu5ibvN9n6lgjq/qLEQ==} + '@rollup/rollup-freebsd-x64@4.56.0': + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.51.0': - resolution: {integrity: sha512-WEWAGFNFFpvSWAIT3MYvxTkYHv/cJl9yWKpjhheg7ONfB0hetZt/uwBnM3GZqSHrk5bXCDYTFXg3jQyk/j7eXQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.51.0': - resolution: {integrity: sha512-9bxtxj8QoAp++LOq5PGDGkEEOpCDk9rOEHUcXadnijedDH8IXrBt6PnBa4Y6NblvGWdoxvXZYghZLaliTCmAng==} + '@rollup/rollup-linux-arm-musleabihf@4.56.0': + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.51.0': - resolution: {integrity: sha512-DdqA+fARqIsfqDYkKo2nrWMp0kvu/wPJ2G8lZ4DjYhn+8QhrjVuzmsh7tTkhULwjvHTN59nWVzAixmOi6rqjNA==} + '@rollup/rollup-linux-arm64-gnu@4.56.0': + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.51.0': - resolution: {integrity: sha512-2XVRNzcUJE1UJua8P4a1GXS5jafFWE+pQ6zhUbZzptOu/70p1F6+0FTi6aGPd6jNtnJqGMjtBCXancC2dhYlWw==} + '@rollup/rollup-linux-arm64-musl@4.56.0': + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.51.0': - resolution: {integrity: sha512-R8QhY0kLIPCAVXWi2yftDSpn7Jtejey/WhMoBESSfwGec5SKdFVupjxFlKoQ7clVRuaDpiQf7wNx3EBZf4Ey6g==} + '@rollup/rollup-linux-loong64-gnu@4.56.0': + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.51.0': - resolution: {integrity: sha512-I498RPfxx9cMv1KTHQ9tg2Ku1utuQm+T5B+Xro+WNu3FzAFSKp4awKfgMoZwjoPgNbaFGINaOM25cQW6WuBhiQ==} + '@rollup/rollup-linux-loong64-musl@4.56.0': + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.56.0': + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.56.0': + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.51.0': - resolution: {integrity: sha512-o8COudsb8lvtdm9ixg9aKjfX5aeoc2x9KGE7WjtrmQFquoCRZ9jtzGlonujE4WhvXFepTraWzT4RcwyDDeHXjA==} + '@rollup/rollup-linux-riscv64-gnu@4.56.0': + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.51.0': - resolution: {integrity: sha512-0shJPgSXMdYzOQzpM5BJN2euXY1f8uV8mS6AnrbMcH2KrkNsbpMxWB1wp8UEdiJ1NtyBkCk3U/HfX5mEONBq6w==} + '@rollup/rollup-linux-riscv64-musl@4.56.0': + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.51.0': - resolution: {integrity: sha512-L7pV+ny7865jamSCQwyozBYjFRUKaTsPqDz7ClOtJCDu4paf2uAa0mrcHwSt4XxZP2ogFZS9uuitH3NXdeBEJA==} + '@rollup/rollup-linux-s390x-gnu@4.56.0': + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.51.0': - resolution: {integrity: sha512-4YHhP+Rv3T3+H3TPbUvWOw5tuSwhrVhkHHZhk4hC9VXeAOKR26/IsUAT4FsB4mT+kfIdxxb1BezQDEg/voPO8A==} + '@rollup/rollup-linux-x64-gnu@4.56.0': + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.51.0': - resolution: {integrity: sha512-P7U7U03+E5w7WgJtvSseNLOX1UhknVPmEaqgUENFWfNxNBa1OhExT6qYGmyF8gepcxWSaSfJsAV5UwhWrYefdQ==} + '@rollup/rollup-linux-x64-musl@4.56.0': + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.51.0': - resolution: {integrity: sha512-FuD8g3u9W6RPwdO1R45hZFORwa1g9YXEMesAKP/sOi7mDqxjbni8S3zAXJiDcRfGfGBqpRYVuH54Gu3FTuSoEw==} + '@rollup/rollup-openbsd-x64@4.56.0': + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.56.0': + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.51.0': - resolution: {integrity: sha512-zST+FdMCX3QAYfmZX3dp/Fy8qLUetfE17QN5ZmmFGPrhl86qvRr+E9u2bk7fzkIXsfQR30Z7ZRS7WMryPPn4rQ==} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.51.0': - resolution: {integrity: sha512-U+qhoCVAZmTHCmUKxdQxw1jwAFNFXmOpMME7Npt5GTb1W/7itfgAgNluVOvyeuSeqW+dEQLFuNZF3YZPO8XkMg==} + '@rollup/rollup-win32-ia32-msvc@4.56.0': + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.51.0': - resolution: {integrity: sha512-z6UpFzMhXSD8NNUfCi2HO+pbpSzSWIIPgb1TZsEZjmZYtk6RUIC63JYjlFBwbBZS3jt3f1q6IGfkj3g+GnBt2Q==} + '@rollup/rollup-win32-x64-gnu@4.56.0': + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@rollup/rollup-win32-x64-msvc@4.56.0': + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@tsconfig/node-lts@24.0.0': resolution: {integrity: sha512-8mSTqWwCd6aQpvxSrpQlMoA9RiUZSs7bYhL5qsLXIIaN9HQaINeoydrRu/Y7/fws4bvfuyhs0BRnW9/NI8tySg==} @@ -565,8 +551,8 @@ packages: '@tsconfig/strictest@2.0.8': resolution: {integrity: sha512-XnQ7vNz5HRN0r88GYf1J9JJjqtZPiHt2woGJOo2dYqyHGGcd6OLGqSlBB6p1j9mpzja6Oe5BoPqWmeDx6X9rLw==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -580,79 +566,79 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/ms@0.7.31': - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@24.10.6': - resolution: {integrity: sha512-B8h60xgJMR/xmgyX9fncRzEW9gCxoJjdenUhke2v1JGOd/V66KopmWrLPXi5oUI4VuiGK+d+HlXJjDRZMj21EQ==} + '@types/node@25.0.10': + resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} '@types/react@19.2.8': resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} - '@typescript-eslint/eslint-plugin@8.52.0': - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + '@typescript-eslint/eslint-plugin@8.53.1': + resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.52.0': - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + '@typescript-eslint/parser@8.53.1': + resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.1': + resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + '@typescript-eslint/scope-manager@8.53.1': + resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.1': + resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.52.0': - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + '@typescript-eslint/type-utils@8.53.1': + resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + '@typescript-eslint/types@8.53.1': + resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + '@typescript-eslint/typescript-estree@8.53.1': + resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.53.1': + resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + '@typescript-eslint/visitor-keys@8.53.1': + resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/coverage-v8@4.0.16': - resolution: {integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==} + '@vitest/coverage-v8@4.0.17': + resolution: {integrity: sha512-/6zU2FLGg0jsd+ePZcwHRy3+WpNTBBhDY56P4JTRqUN/Dp6CvOEa9HrikcQ4KfV2b2kAHUFB4dl1SuocWXSFEw==} peerDependencies: - '@vitest/browser': 4.0.16 - vitest: 4.0.16 + '@vitest/browser': 4.0.17 + vitest: 4.0.17 peerDependenciesMeta: '@vitest/browser': optional: true @@ -670,11 +656,11 @@ packages: vitest: optional: true - '@vitest/expect@4.0.16': - resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} + '@vitest/expect@4.0.17': + resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} - '@vitest/mocker@4.0.16': - resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} + '@vitest/mocker@4.0.17': + resolution: {integrity: sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -684,20 +670,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.16': - resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} + '@vitest/pretty-format@4.0.17': + resolution: {integrity: sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==} - '@vitest/runner@4.0.16': - resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} + '@vitest/runner@4.0.17': + resolution: {integrity: sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==} - '@vitest/snapshot@4.0.16': - resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} + '@vitest/snapshot@4.0.17': + resolution: {integrity: sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==} - '@vitest/spy@4.0.16': - resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} + '@vitest/spy@4.0.17': + resolution: {integrity: sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==} - '@vitest/utils@4.0.16': - resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} + '@vitest/utils@4.0.17': + resolution: {integrity: sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -712,28 +698,20 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-v8-to-istanbul@0.3.10: resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} @@ -744,11 +722,11 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} @@ -790,6 +768,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + citty@0.2.0: + resolution: {integrity: sha512-8csy5IBFI2ex2hTVpaHN2j+LNE199AgiI7y4dMintrr8i0lQiFn+0AWMZrWdHKIgMOer65f8IThysYhoReqjWA==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -863,22 +844,13 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - dotenv@17.2.2: - resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect@3.18.4: resolution: {integrity: sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - empathic@2.0.0: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} @@ -901,8 +873,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.5.4: - resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} + eslint-plugin-prettier@5.5.5: + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -941,8 +913,8 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -960,12 +932,12 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - exsolve@1.0.7: - resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} fast-check@3.23.2: resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} @@ -1007,12 +979,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} @@ -1026,11 +994,11 @@ packages: generate-function@2.3.1: resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} - get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-port-please@3.2.0: + resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} giget@2.0.0: resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} @@ -1040,10 +1008,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1057,12 +1021,15 @@ packages: grammex@3.1.12: resolution: {integrity: sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==} + graphmatch@1.1.0: + resolution: {integrity: sha512-0E62MaTW5rPZVRLyIJZG/YejmdA/Xr1QydHEw3Vt+qOKkMIOE8WDLc9ZX2bmAjtJFZcId4lEdrdmASsEy7D1QA==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - hono@4.10.6: - resolution: {integrity: sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==} + hono@4.11.4: + resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} engines: {node: '>=16.9.0'} html-escaper@2.0.2: @@ -1075,16 +1042,16 @@ packages: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} ignore@7.0.5: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} imurmurhash@0.1.4: @@ -1095,10 +1062,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1117,19 +1080,12 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true joycon@3.1.1: @@ -1139,8 +1095,8 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true json-buffer@3.0.1: @@ -1163,8 +1119,8 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} lines-and-columns@1.2.4: @@ -1187,9 +1143,6 @@ packages: long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru.min@1.1.3: resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==} engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} @@ -1210,10 +1163,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -1221,10 +1170,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} @@ -1253,9 +1198,9 @@ packages: node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - nypm@0.6.2: - resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} - engines: {node: ^14.16.0 || >=16.10.0} + nypm@0.6.4: + resolution: {integrity: sha512-1TvCKjZyyklN+JJj2TS3P4uSQEInrM/HkkuSXsEzm1ApPgBffOn8gFguNnZf07r/1X6vlryfIqMUkJKQMzlZiw==} + engines: {node: '>=18'} hasBin: true object-assign@4.1.1: @@ -1268,8 +1213,8 @@ packages: ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} p-limit@3.1.0: @@ -1280,9 +1225,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1295,40 +1237,36 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - pg-cloudflare@1.2.7: - resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} - pg-connection-string@2.9.1: - resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + pg-connection-string@2.10.1: + resolution: {integrity: sha512-iNzslsoeSH2/gmDDKiyMqF64DATUCWj3YJ0wP14kqcsf2TUklwimd+66yYojKwZCA7h2yRNLGug71hCBA2a4sw==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.10.1: - resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + pg-pool@3.11.0: + resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} peerDependencies: pg: '>=8.0' - pg-protocol@1.10.3: - resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + pg-protocol@1.11.0: + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.16.3: - resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} + pg@8.17.2: + resolution: {integrity: sha512-vjbKdiBJRqzcYw1fNU5KuHyYvdJ1qpcQg1CeBrHFqV1pWgHeVR6j/+kX0E1AAXfyuLUGY1ICrN2ELKA/z2HWzw==} engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -1346,8 +1284,8 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} pkg-types@1.3.1: @@ -1406,8 +1344,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} prettier-plugin-organize-imports@4.3.0: @@ -1420,13 +1358,13 @@ packages: vue-tsc: optional: true - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true - prisma@7.2.0: - resolution: {integrity: sha512-jSdHWgWOgFF24+nRyyNRVBIgGDQEsMEF8KPHvhBBg3jWyR9fUAK0Nq9ThUmiGlNgq2FA7vSk/ZoCvefod+a8qg==} + prisma@7.3.0: + resolution: {integrity: sha512-ApYSOLHfMN8WftJA+vL6XwAPOh/aZ0BgUyyKPwUFgjARmG6EBI9LzDPf6SWULQMSAxydV9qn5gLj037nPNlg2w==} engines: {node: ^20.19 || ^22.12 || >=24.0} hasBin: true peerDependencies: @@ -1441,8 +1379,8 @@ packages: proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} pure-rand@6.1.0: @@ -1460,15 +1398,15 @@ packages: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} regexp-to-ast@0.5.0: resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} - remeda@2.21.3: - resolution: {integrity: sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg==} + remeda@2.33.4: + resolution: {integrity: sha512-ygHswjlc/opg2VrtiYvUOPLjxjtdKvjGz1/plDhkG66hjNjFr1xmfrs2ClNFo/E6TyUFiwYNh53bKV26oBoMGQ==} resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -1485,8 +1423,8 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - rollup@4.51.0: - resolution: {integrity: sha512-7cR0XWrdp/UAj2HMY/Y4QQEUjidn3l2AY1wSeZoFjMbD8aOMPoV9wgTFYbrJpPzzvejDEini1h3CiUP8wLzxQA==} + rollup@4.56.0: + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1496,11 +1434,6 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -1549,31 +1482,12 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true @@ -1581,8 +1495,8 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} thenify-all@1.6.0: @@ -1623,8 +1537,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfck@3.0.3: - resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} + tsconfck@3.1.6: + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -1661,12 +1575,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@4.41.0: - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} - engines: {node: '>=16'} - - typescript-eslint@8.52.0: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + typescript-eslint@8.53.1: + resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1677,8 +1587,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -1742,18 +1652,18 @@ packages: yaml: optional: true - vitest@4.0.16: - resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} + vitest@4.0.17: + resolution: {integrity: sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.16 - '@vitest/browser-preview': 4.0.16 - '@vitest/browser-webdriverio': 4.0.16 - '@vitest/ui': 4.0.16 + '@vitest/browser-playwright': 4.0.17 + '@vitest/browser-preview': 4.0.17 + '@vitest/browser-webdriverio': 4.0.17 + '@vitest/ui': 4.0.17 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -1786,13 +1696,9 @@ packages: engines: {node: '>=8'} hasBin: true - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -1802,22 +1708,20 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zeptomatch@2.0.2: - resolution: {integrity: sha512-H33jtSKf8Ijtb5BW6wua3G5DhnFjbFML36eFu+VdOoVY4HD9e7ggjqdM6639B+L87rjnR6Y+XeRzBXZdy52B/g==} + zeptomatch@2.1.0: + resolution: {integrity: sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA==} snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.28.5': + '@babel/parser@7.28.6': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 - '@babel/types@7.28.5': + '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -1839,15 +1743,15 @@ snapshots: '@chevrotain/utils@10.5.0': {} - '@electric-sql/pglite-socket@0.0.6(@electric-sql/pglite@0.3.2)': + '@electric-sql/pglite-socket@0.0.20(@electric-sql/pglite@0.3.15)': dependencies: - '@electric-sql/pglite': 0.3.2 + '@electric-sql/pglite': 0.3.15 - '@electric-sql/pglite-tools@0.2.7(@electric-sql/pglite@0.3.2)': + '@electric-sql/pglite-tools@0.2.20(@electric-sql/pglite@0.3.15)': dependencies: - '@electric-sql/pglite': 0.3.2 + '@electric-sql/pglite': 0.3.15 - '@electric-sql/pglite@0.3.2': {} + '@electric-sql/pglite@0.3.15': {} '@esbuild/aix-ppc64@0.27.2': optional: true @@ -1927,18 +1831,11 @@ snapshots: '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.39.2(jiti@2.5.1) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.5.1))': - dependencies: - eslint: 9.39.2(jiti@2.5.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - '@eslint-community/regexpp@4.12.2': {} '@eslint/config-array@0.21.1': @@ -1957,15 +1854,15 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -1980,58 +1877,42 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@hono/node-server@1.19.6(hono@4.10.6)': + '@hono/node-server@1.19.9(hono@4.11.4)': dependencies: - hono: 4.10.6 + hono: 4.11.4 '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': {} + '@humanwhocodes/retry@0.4.3': {} - '@humanwhocodes/retry@0.4.2': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.0': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.31': dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - '@mgcrea/eslint-config-node@0.14.1(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4)(typescript@5.9.3)(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0))': + '@mgcrea/eslint-config-node@0.14.1(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1)(typescript@5.9.3)(vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0))': dependencies: '@eslint/js': 9.39.2 - '@vitest/eslint-plugin': 1.6.6(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)) - eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.5.1)) - eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)))(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4) - typescript-eslint: 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + '@vitest/eslint-plugin': 1.6.6(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0)) + eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1) + typescript-eslint: 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - '@types/eslint' - eslint @@ -2040,34 +1921,31 @@ snapshots: - typescript - vitest - '@mrleebo/prisma-ast@0.12.1': + '@mrleebo/prisma-ast@0.13.1': dependencies: chevrotain: 10.5.0 lilconfig: 2.1.0 - '@pkgjs/parseargs@0.11.0': - optional: true - '@pkgr/core@0.2.9': {} - '@prisma/adapter-pg@7.2.0': + '@prisma/adapter-pg@7.3.0': dependencies: - '@prisma/driver-adapter-utils': 7.2.0 - pg: 8.16.3 + '@prisma/driver-adapter-utils': 7.3.0 + pg: 8.17.2 postgres-array: 3.0.4 transitivePeerDependencies: - pg-native - '@prisma/client-runtime-utils@7.2.0': {} + '@prisma/client-runtime-utils@7.3.0': {} - '@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3)': + '@prisma/client@7.3.0(prisma@7.3.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3)': dependencies: - '@prisma/client-runtime-utils': 7.2.0 + '@prisma/client-runtime-utils': 7.3.0 optionalDependencies: - prisma: 7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + prisma: 7.3.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) typescript: 5.9.3 - '@prisma/config@7.2.0(magicast@0.3.5)': + '@prisma/config@7.3.0(magicast@0.3.5)': dependencies: c12: 3.1.0(magicast@0.3.5) deepmerge-ts: 7.1.5 @@ -2076,143 +1954,156 @@ snapshots: transitivePeerDependencies: - magicast - '@prisma/debug@6.8.2': {} - '@prisma/debug@7.2.0': {} - '@prisma/dev@0.17.0(typescript@5.9.3)': + '@prisma/debug@7.3.0': {} + + '@prisma/dev@0.20.0(typescript@5.9.3)': dependencies: - '@electric-sql/pglite': 0.3.2 - '@electric-sql/pglite-socket': 0.0.6(@electric-sql/pglite@0.3.2) - '@electric-sql/pglite-tools': 0.2.7(@electric-sql/pglite@0.3.2) - '@hono/node-server': 1.19.6(hono@4.10.6) - '@mrleebo/prisma-ast': 0.12.1 - '@prisma/get-platform': 6.8.2 - '@prisma/query-plan-executor': 6.18.0 + '@electric-sql/pglite': 0.3.15 + '@electric-sql/pglite-socket': 0.0.20(@electric-sql/pglite@0.3.15) + '@electric-sql/pglite-tools': 0.2.20(@electric-sql/pglite@0.3.15) + '@hono/node-server': 1.19.9(hono@4.11.4) + '@mrleebo/prisma-ast': 0.13.1 + '@prisma/get-platform': 7.2.0 + '@prisma/query-plan-executor': 7.2.0 foreground-child: 3.3.1 - get-port-please: 3.1.2 - hono: 4.10.6 + get-port-please: 3.2.0 + hono: 4.11.4 http-status-codes: 2.3.0 pathe: 2.0.3 proper-lockfile: 4.1.2 - remeda: 2.21.3 - std-env: 3.9.0 + remeda: 2.33.4 + std-env: 3.10.0 valibot: 1.2.0(typescript@5.9.3) - zeptomatch: 2.0.2 + zeptomatch: 2.1.0 transitivePeerDependencies: - typescript - '@prisma/driver-adapter-utils@7.2.0': + '@prisma/driver-adapter-utils@7.3.0': dependencies: - '@prisma/debug': 7.2.0 + '@prisma/debug': 7.3.0 - '@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3': {} + '@prisma/engines-version@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': {} - '@prisma/engines@7.2.0': + '@prisma/engines@7.3.0': dependencies: - '@prisma/debug': 7.2.0 - '@prisma/engines-version': 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 - '@prisma/fetch-engine': 7.2.0 - '@prisma/get-platform': 7.2.0 + '@prisma/debug': 7.3.0 + '@prisma/engines-version': 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + '@prisma/fetch-engine': 7.3.0 + '@prisma/get-platform': 7.3.0 - '@prisma/fetch-engine@7.2.0': + '@prisma/fetch-engine@7.3.0': dependencies: - '@prisma/debug': 7.2.0 - '@prisma/engines-version': 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 - '@prisma/get-platform': 7.2.0 - - '@prisma/get-platform@6.8.2': - dependencies: - '@prisma/debug': 6.8.2 + '@prisma/debug': 7.3.0 + '@prisma/engines-version': 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + '@prisma/get-platform': 7.3.0 '@prisma/get-platform@7.2.0': dependencies: '@prisma/debug': 7.2.0 - '@prisma/query-plan-executor@6.18.0': {} + '@prisma/get-platform@7.3.0': + dependencies: + '@prisma/debug': 7.3.0 - '@prisma/studio-core@0.9.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@prisma/query-plan-executor@7.2.0': {} + + '@prisma/studio-core@0.13.1(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@types/react': 19.2.8 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@rollup/rollup-android-arm-eabi@4.51.0': + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true - '@rollup/rollup-android-arm64@4.51.0': + '@rollup/rollup-android-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-arm64@4.51.0': + '@rollup/rollup-darwin-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-x64@4.51.0': + '@rollup/rollup-darwin-x64@4.56.0': optional: true - '@rollup/rollup-freebsd-arm64@4.51.0': + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true - '@rollup/rollup-freebsd-x64@4.51.0': + '@rollup/rollup-freebsd-x64@4.56.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.51.0': + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.51.0': + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.51.0': + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.51.0': + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.51.0': + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.51.0': + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.51.0': + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.51.0': + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.51.0': + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.51.0': + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true - '@rollup/rollup-linux-x64-musl@4.51.0': + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true - '@rollup/rollup-openharmony-arm64@4.51.0': + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.51.0': + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.51.0': + '@rollup/rollup-openbsd-x64@4.56.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.51.0': + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true - '@standard-schema/spec@1.0.0': {} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.56.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.56.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.56.0': + optional: true + + '@standard-schema/spec@1.1.0': {} '@tsconfig/node-lts@24.0.0': {} '@tsconfig/strictest@2.0.8': {} - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/debug@4.1.12': dependencies: - '@types/ms': 0.7.31 + '@types/ms': 2.1.0 '@types/deep-eql@4.0.2': {} @@ -2220,9 +2111,9 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/ms@0.7.31': {} + '@types/ms@2.1.0': {} - '@types/node@24.10.6': + '@types/node@25.0.10': dependencies: undici-types: 7.16.0 @@ -2230,15 +2121,15 @@ snapshots: dependencies: csstype: 3.2.3 - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 - eslint: 9.39.2(jiti@2.5.1) + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 + eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -2246,56 +2137,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 - eslint: 9.39.2(jiti@2.5.1) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.52.0': + '@typescript-eslint/scope-manager@8.53.1': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.2(jiti@2.5.1) + eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.52.0': {} + '@typescript-eslint/types@8.53.1': {} - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -2305,87 +2196,84 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - eslint: 9.39.2(jiti@2.5.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.52.0': + '@typescript-eslint/visitor-keys@8.53.1': dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 - '@vitest/coverage-v8@4.0.16(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0))': + '@vitest/coverage-v8@4.0.17(vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.0.17 ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 magicast: 0.5.1 obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0) - transitivePeerDependencies: - - supports-color + vitest: 4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0) - '@vitest/eslint-plugin@1.6.6(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3)(vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0))': + '@vitest/eslint-plugin@1.6.6(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0))': dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.5.1) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) optionalDependencies: typescript: 5.9.3 - vitest: 4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0) + vitest: 4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0) transitivePeerDependencies: - supports-color - '@vitest/expect@4.0.16': + '@vitest/expect@4.0.17': dependencies: - '@standard-schema/spec': 1.0.0 - '@types/chai': 5.2.2 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0))': + '@vitest/mocker@4.0.17(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0))': dependencies: - '@vitest/spy': 4.0.16 + '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0) - '@vitest/pretty-format@4.0.16': + '@vitest/pretty-format@4.0.17': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.16': + '@vitest/runner@4.0.17': dependencies: - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.0.17 pathe: 2.0.3 - '@vitest/snapshot@4.0.16': + '@vitest/snapshot@4.0.17': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.0.17 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.16': {} + '@vitest/spy@4.0.17': {} - '@vitest/utils@4.0.16': + '@vitest/utils@4.0.17': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.0.17 tinyrainbow: 3.0.3 acorn-jsx@5.3.2(acorn@8.15.0): @@ -2401,20 +2289,16 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} - any-promise@1.3.0: {} argparse@2.0.1: {} + assertion-error@2.0.1: {} + ast-v8-to-istanbul@0.3.10: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -2425,12 +2309,12 @@ snapshots: balanced-match@1.0.2: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -2445,9 +2329,9 @@ snapshots: confbox: 0.2.2 defu: 6.1.4 dotenv: 16.6.1 - exsolve: 1.0.7 + exsolve: 1.0.8 giget: 2.0.0 - jiti: 2.5.1 + jiti: 2.6.1 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 @@ -2478,12 +2362,14 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.2 citty@0.1.6: dependencies: consola: 3.4.2 + citty@0.2.0: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -2527,7 +2413,7 @@ snapshots: dotenv-cli@11.0.0: dependencies: cross-spawn: 7.0.6 - dotenv: 17.2.2 + dotenv: 17.2.3 dotenv-expand: 12.0.3 minimist: 1.2.8 @@ -2537,19 +2423,13 @@ snapshots: dotenv@16.6.1: {} - dotenv@17.2.2: {} - - eastasianwidth@0.2.0: {} + dotenv@17.2.3: {} effect@3.18.4: dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - empathic@2.0.0: {} es-module-lexer@1.7.0: {} @@ -2585,18 +2465,18 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.39.2(jiti@2.5.1) + eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.5.1)))(eslint@9.39.2(jiti@2.5.1))(prettier@3.7.4): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1): dependencies: - eslint: 9.39.2(jiti@2.5.1) - prettier: 3.7.4 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + eslint: 9.39.2(jiti@2.6.1) + prettier: 3.8.1 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.5.1)) + eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.6.1)) eslint-scope@8.4.0: dependencies: @@ -2607,19 +2487,19 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2(jiti@2.5.1): + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.5.1)) - '@eslint-community/regexpp': 4.12.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.1 + '@eslint/eslintrc': 3.3.3 '@eslint/js': 9.39.2 '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.6 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 @@ -2629,22 +2509,22 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.5.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -2654,7 +2534,7 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - esquery@1.5.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -2670,9 +2550,9 @@ snapshots: esutils@2.0.3: {} - expect-type@1.2.2: {} + expect-type@1.3.0: {} - exsolve@1.0.7: {} + exsolve@1.0.8: {} fast-check@3.23.2: dependencies: @@ -2703,19 +2583,14 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.51.0 + rollup: 4.56.0 flat-cache@4.0.1: dependencies: - flatted: 3.3.1 + flatted: 3.3.3 keyv: 4.5.4 - flatted@3.3.1: {} - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 + flatted@3.3.3: {} foreground-child@3.3.1: dependencies: @@ -2729,9 +2604,9 @@ snapshots: dependencies: is-property: 1.0.2 - get-port-please@3.1.2: {} + get-port-please@3.2.0: {} - get-tsconfig@4.7.5: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -2741,22 +2616,13 @@ snapshots: consola: 3.4.2 defu: 6.1.4 node-fetch-native: 1.6.7 - nypm: 0.6.2 + nypm: 0.6.4 pathe: 2.0.3 glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.4 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - globals@14.0.0: {} globrex@0.1.2: {} @@ -2765,9 +2631,11 @@ snapshots: grammex@3.1.12: {} + graphmatch@1.1.0: {} + has-flag@4.0.0: {} - hono@4.10.6: {} + hono@4.11.4: {} html-escaper@2.0.2: {} @@ -2777,11 +2645,11 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ignore@5.3.1: {} + ignore@5.3.2: {} ignore@7.0.5: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -2790,8 +2658,6 @@ snapshots: is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -2808,32 +2674,18 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@2.5.1: {} + jiti@2.6.1: {} joycon@3.1.1: {} js-tokens@9.0.1: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -2854,7 +2706,7 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.2: {} + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -2870,8 +2722,6 @@ snapshots: long@5.3.2: {} - lru-cache@10.4.3: {} - lru.min@1.1.3: {} magic-string@0.30.21: @@ -2880,43 +2730,37 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 source-map-js: 1.2.1 optional: true magicast@0.5.1: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.6.2 + semver: 7.7.3 minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 + brace-expansion: 1.1.12 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} - minipass@7.1.2: {} - mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.6.3 ms@2.1.3: {} @@ -2948,12 +2792,10 @@ snapshots: node-fetch-native@1.6.7: {} - nypm@0.6.2: + nypm@0.6.4: dependencies: - citty: 0.1.6 - consola: 3.4.2 + citty: 0.2.0 pathe: 2.0.3 - pkg-types: 2.3.0 tinyexec: 1.0.2 object-assign@4.1.1: {} @@ -2962,14 +2804,14 @@ snapshots: ohash@2.0.11: {} - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 p-limit@3.1.0: dependencies: @@ -2979,8 +2821,6 @@ snapshots: dependencies: p-limit: 3.1.0 - package-json-from-dist@1.0.1: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -2989,27 +2829,22 @@ snapshots: path-key@3.1.1: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - pathe@2.0.3: {} perfect-debounce@1.0.0: {} - pg-cloudflare@1.2.7: + pg-cloudflare@1.3.0: optional: true - pg-connection-string@2.9.1: {} + pg-connection-string@2.10.1: {} pg-int8@1.0.1: {} - pg-pool@3.10.1(pg@8.16.3): + pg-pool@3.11.0(pg@8.17.2): dependencies: - pg: 8.16.3 + pg: 8.17.2 - pg-protocol@1.10.3: {} + pg-protocol@1.11.0: {} pg-types@2.2.0: dependencies: @@ -3019,15 +2854,15 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.16.3: + pg@8.17.2: dependencies: - pg-connection-string: 2.9.1 - pg-pool: 3.10.1(pg@8.16.3) - pg-protocol: 1.10.3 + pg-connection-string: 2.10.1 + pg-pool: 3.11.0(pg@8.17.2) + pg-protocol: 1.11.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.7 + pg-cloudflare: 1.3.0 pgpass@1.0.5: dependencies: @@ -3037,7 +2872,7 @@ snapshots: picomatch@4.0.3: {} - pirates@4.0.5: {} + pirates@4.0.7: {} pkg-types@1.3.1: dependencies: @@ -3048,14 +2883,14 @@ snapshots: pkg-types@2.3.0: dependencies: confbox: 0.2.2 - exsolve: 1.0.7 + exsolve: 1.0.8 pathe: 2.0.3 - postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0): dependencies: - lilconfig: 3.1.2 + lilconfig: 3.1.3 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.1 postcss: 8.5.6 tsx: 4.21.0 @@ -3081,23 +2916,23 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3): dependencies: - prettier: 3.7.4 + prettier: 3.8.1 typescript: 5.9.3 - prettier@3.7.4: {} + prettier@3.8.1: {} - prisma@7.2.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): + prisma@7.3.0(@types/react@19.2.8)(magicast@0.3.5)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: - '@prisma/config': 7.2.0(magicast@0.3.5) - '@prisma/dev': 0.17.0(typescript@5.9.3) - '@prisma/engines': 7.2.0 - '@prisma/studio-core': 0.9.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@prisma/config': 7.3.0(magicast@0.3.5) + '@prisma/dev': 0.20.0(typescript@5.9.3) + '@prisma/engines': 7.3.0 + '@prisma/studio-core': 0.13.1(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) mysql2: 3.15.3 postgres: 3.4.7 optionalDependencies: @@ -3114,7 +2949,7 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 - punycode@2.3.0: {} + punycode@2.3.1: {} pure-rand@6.1.0: {} @@ -3130,13 +2965,11 @@ snapshots: react@19.2.3: {} - readdirp@4.0.2: {} + readdirp@4.1.2: {} regexp-to-ast@0.5.0: {} - remeda@2.21.3: - dependencies: - type-fest: 4.41.0 + remeda@2.33.4: {} resolve-from@4.0.0: {} @@ -3146,39 +2979,41 @@ snapshots: retry@0.12.0: {} - rollup@4.51.0: + rollup@4.56.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.51.0 - '@rollup/rollup-android-arm64': 4.51.0 - '@rollup/rollup-darwin-arm64': 4.51.0 - '@rollup/rollup-darwin-x64': 4.51.0 - '@rollup/rollup-freebsd-arm64': 4.51.0 - '@rollup/rollup-freebsd-x64': 4.51.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.51.0 - '@rollup/rollup-linux-arm-musleabihf': 4.51.0 - '@rollup/rollup-linux-arm64-gnu': 4.51.0 - '@rollup/rollup-linux-arm64-musl': 4.51.0 - '@rollup/rollup-linux-loong64-gnu': 4.51.0 - '@rollup/rollup-linux-ppc64-gnu': 4.51.0 - '@rollup/rollup-linux-riscv64-gnu': 4.51.0 - '@rollup/rollup-linux-riscv64-musl': 4.51.0 - '@rollup/rollup-linux-s390x-gnu': 4.51.0 - '@rollup/rollup-linux-x64-gnu': 4.51.0 - '@rollup/rollup-linux-x64-musl': 4.51.0 - '@rollup/rollup-openharmony-arm64': 4.51.0 - '@rollup/rollup-win32-arm64-msvc': 4.51.0 - '@rollup/rollup-win32-ia32-msvc': 4.51.0 - '@rollup/rollup-win32-x64-msvc': 4.51.0 + '@rollup/rollup-android-arm-eabi': 4.56.0 + '@rollup/rollup-android-arm64': 4.56.0 + '@rollup/rollup-darwin-arm64': 4.56.0 + '@rollup/rollup-darwin-x64': 4.56.0 + '@rollup/rollup-freebsd-arm64': 4.56.0 + '@rollup/rollup-freebsd-x64': 4.56.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 + '@rollup/rollup-linux-arm64-musl': 4.56.0 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 + '@rollup/rollup-linux-loong64-musl': 4.56.0 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 + '@rollup/rollup-linux-x64-gnu': 4.56.0 + '@rollup/rollup-linux-x64-musl': 4.56.0 + '@rollup/rollup-openbsd-x64': 4.56.0 + '@rollup/rollup-openharmony-arm64': 4.56.0 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 + '@rollup/rollup-win32-x64-gnu': 4.56.0 + '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 safer-buffer@2.1.2: {} scheduler@0.27.0: {} - semver@7.6.2: {} - semver@7.7.3: {} seq-queue@0.0.5: {} @@ -3207,45 +3042,23 @@ snapshots: std-env@3.10.0: {} - std-env@3.9.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - strip-json-comments@3.1.1: {} - sucrase@3.35.0: + sucrase@3.35.1: dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.5 + pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 supports-color@7.2.0: dependencies: has-flag: 4.0.0 - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -3278,11 +3091,11 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.0.3(typescript@5.9.3): + tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 - tsup@8.5.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3): + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3): dependencies: bundle-require: 5.1.0(esbuild@0.27.2) cac: 6.7.14 @@ -3293,11 +3106,11 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0) resolve-from: 5.0.0 - rollup: 4.51.0 + rollup: 4.56.0 source-map: 0.7.6 - sucrase: 3.35.0 + sucrase: 3.35.1 tinyexec: 0.3.2 tinyglobby: 0.2.15 tree-kill: 1.2.2 @@ -3313,7 +3126,7 @@ snapshots: tsx@4.21.0: dependencies: esbuild: 0.27.2 - get-tsconfig: 4.7.5 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -3321,69 +3134,67 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@4.41.0: {} - - typescript-eslint@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3): + typescript-eslint@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.5.1) + '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color typescript@5.9.3: {} - ufo@1.6.1: {} + ufo@1.6.3: {} undici-types@7.16.0: {} uri-js@4.4.1: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 valibot@1.2.0(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)): + vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0)): dependencies: debug: 4.4.3 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.9.3) + tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0): + vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.51.0 + rollup: 4.56.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.6 + '@types/node': 25.0.10 fsevents: 2.3.3 - jiti: 2.5.1 + jiti: 2.6.1 tsx: 4.21.0 - vitest@4.0.16(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0): + vitest@4.0.17(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0): dependencies: - '@vitest/expect': 4.0.16 - '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0)) - '@vitest/pretty-format': 4.0.16 - '@vitest/runner': 4.0.16 - '@vitest/snapshot': 4.0.16 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@vitest/expect': 4.0.17 + '@vitest/mocker': 4.0.17(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0)) + '@vitest/pretty-format': 4.0.17 + '@vitest/runner': 4.0.17 + '@vitest/snapshot': 4.0.17 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 es-module-lexer: 1.7.0 - expect-type: 1.2.2 + expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 @@ -3393,10 +3204,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.6)(jiti@2.5.1)(tsx@4.21.0) + vite: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(tsx@4.21.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.6 + '@types/node': 25.0.10 transitivePeerDependencies: - jiti - less @@ -3419,22 +3230,13 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 + word-wrap@1.2.5: {} xtend@4.0.2: {} yocto-queue@0.1.0: {} - zeptomatch@2.0.2: + zeptomatch@2.1.0: dependencies: grammex: 3.1.12 + graphmatch: 1.1.0 diff --git a/prisma/client/internal/class.ts b/prisma/client/internal/class.ts index b85c0d2..42a737e 100644 --- a/prisma/client/internal/class.ts +++ b/prisma/client/internal/class.ts @@ -17,8 +17,8 @@ import type * as Prisma from "./prismaNamespace" const config: runtime.GetPrismaClientConfig = { "previewFeatures": [], - "clientVersion": "7.2.0", - "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", + "clientVersion": "7.3.0", + "engineVersion": "9d6ad21cbbceab97458517b147a6a09ff43aa735", "activeProvider": "postgresql", "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n previewFeatures = []\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel QueueJob {\n id BigInt @id @default(autoincrement()) @db.BigInt\n queue String\n key String?\n cron String?\n payload Json?\n result Json?\n error Json?\n progress Int @default(0)\n priority Int @default(0)\n attempts Int @default(0)\n maxAttempts Int?\n runAt DateTime @default(now())\n notBefore DateTime?\n finishedAt DateTime?\n processedAt DateTime?\n failedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([key, runAt])\n @@index([queue, priority, runAt, finishedAt])\n @@map(\"queue_jobs\")\n}\n", "runtimeDataModel": { @@ -37,12 +37,14 @@ async function decodeBase64AsWasm(wasmBase64: string): Promise await import("@prisma/client/runtime/query_compiler_bg.postgresql.mjs"), + getRuntime: async () => await import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.mjs"), getQueryCompilerWasmModule: async () => { - const { wasm } = await import("@prisma/client/runtime/query_compiler_bg.postgresql.wasm-base64.mjs") + const { wasm } = await import("@prisma/client/runtime/query_compiler_fast_bg.postgresql.wasm-base64.mjs") return await decodeBase64AsWasm(wasm) - } + }, + + importName: "./query_compiler_fast_bg.js" } diff --git a/prisma/client/internal/prismaNamespace.ts b/prisma/client/internal/prismaNamespace.ts index 01e34ea..2d6494f 100644 --- a/prisma/client/internal/prismaNamespace.ts +++ b/prisma/client/internal/prismaNamespace.ts @@ -80,12 +80,12 @@ export type PrismaVersion = { } /** - * Prisma Client JS version: 7.2.0 - * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + * Prisma Client JS version: 7.3.0 + * Query Engine version: 9d6ad21cbbceab97458517b147a6a09ff43aa735 */ export const prismaVersion: PrismaVersion = { - client: "7.2.0", - engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" + client: "7.3.0", + engine: "9d6ad21cbbceab97458517b147a6a09ff43aa735" } /** diff --git a/prisma/client/internal/prismaNamespaceBrowser.ts b/prisma/client/internal/prismaNamespaceBrowser.ts index fd3f897..5be2334 100644 --- a/prisma/client/internal/prismaNamespaceBrowser.ts +++ b/prisma/client/internal/prismaNamespaceBrowser.ts @@ -60,12 +60,12 @@ export type ModelName = (typeof ModelName)[keyof typeof ModelName] * Enums */ -export const TransactionIsolationLevel = { +export const TransactionIsolationLevel = runtime.makeStrictEnum({ ReadUncommitted: 'ReadUncommitted', ReadCommitted: 'ReadCommitted', RepeatableRead: 'RepeatableRead', Serializable: 'Serializable' -} as const +} as const) export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] @@ -103,8 +103,8 @@ export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] export const NullableJsonNullValueInput = { - DbNull: 'DbNull', - JsonNull: 'JsonNull' + DbNull: DbNull, + JsonNull: JsonNull } as const export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] @@ -119,9 +119,9 @@ export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] export const JsonNullValueFilter = { - DbNull: 'DbNull', - JsonNull: 'JsonNull', - AnyNull: 'AnyNull' + DbNull: DbNull, + JsonNull: JsonNull, + AnyNull: AnyNull } as const export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter]