diff --git a/dashboard/bun.lock b/dashboard/bun.lock index e852708a..be94ff59 100644 --- a/dashboard/bun.lock +++ b/dashboard/bun.lock @@ -95,7 +95,7 @@ "eslint": "^9.39.4", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.26", - "orval": "7.4.1", + "orval": "8.10.0", "postcss": "^8.5.13", "prettier": "^3.8.3", "prettier-plugin-tailwindcss": "^0.8.0", @@ -114,16 +114,6 @@ "@apideck/better-ajv-errors": ["@apideck/better-ajv-errors@0.3.6", "", { "dependencies": { "json-schema": "^0.4.0", "jsonpointer": "^5.0.0", "leven": "^3.1.0" }, "peerDependencies": { "ajv": ">=8" } }, "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA=="], - "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@11.7.2", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA=="], - - "@apidevtools/openapi-schemas": ["@apidevtools/openapi-schemas@2.1.0", "", {}, "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ=="], - - "@apidevtools/swagger-methods": ["@apidevtools/swagger-methods@3.0.2", "", {}, "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="], - - "@apidevtools/swagger-parser": ["@apidevtools/swagger-parser@10.1.1", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "11.7.2", "@apidevtools/openapi-schemas": "^2.1.0", "@apidevtools/swagger-methods": "^3.0.2", "@jsdevtools/ono": "^7.1.3", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "call-me-maybe": "^1.0.2" }, "peerDependencies": { "openapi-types": ">=7" } }, "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA=="], - - "@asyncapi/specs": ["@asyncapi/specs@6.8.1", "", { "dependencies": { "@types/json-schema": "^7.0.11" } }, "sha512-czHoAk3PeXTLR+X8IUaD+IpT+g+zUvkcgMDJVothBsan+oHN3jfcFcFUNdOPAAFoUCQN1hXF1dWuphWy05THlA=="], - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@babel/compat-data": ["@babel/compat-data@7.28.0", "", {}, "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw=="], @@ -324,6 +314,8 @@ "@babel/types": ["@babel/types@7.28.1", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ=="], + "@commander-js/extra-typings": ["@commander-js/extra-typings@14.0.0", "", { "peerDependencies": { "commander": "~14.0.0" } }, "sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg=="], + "@date-fns/tz": ["@date-fns/tz@1.2.0", "", {}, "sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg=="], "@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="], @@ -382,7 +374,7 @@ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.6", "", { "os": "none", "cpu": "arm64" }, "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="], "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="], @@ -410,8 +402,6 @@ "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], - "@exodus/schemasafe": ["@exodus/schemasafe@1.3.0", "", {}, "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw=="], - "@floating-ui/core": ["@floating-ui/core@1.7.2", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw=="], "@floating-ui/dom": ["@floating-ui/dom@1.7.2", "", { "dependencies": { "@floating-ui/core": "^1.7.2", "@floating-ui/utils": "^0.2.10" } }, "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA=="], @@ -420,6 +410,8 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], + "@gerrit0/mini-shiki": ["@gerrit0/mini-shiki@3.23.0", "", { "dependencies": { "@shikijs/engine-oniguruma": "^3.23.0", "@shikijs/langs": "^3.23.0", "@shikijs/themes": "^3.23.0", "@shikijs/types": "^3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg=="], + "@hookform/resolvers": ["@hookform/resolvers@5.2.2", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "react-hook-form": "^7.55.0" } }, "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA=="], "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], @@ -430,10 +422,6 @@ "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - "@ibm-cloud/openapi-ruleset": ["@ibm-cloud/openapi-ruleset@1.31.1", "", { "dependencies": { "@ibm-cloud/openapi-ruleset-utilities": "1.9.0", "@stoplight/spectral-formats": "^1.8.2", "@stoplight/spectral-functions": "^1.9.3", "@stoplight/spectral-rulesets": "^1.21.3", "chalk": "^4.1.2", "jsonschema": "^1.5.0", "lodash": "^4.17.21", "loglevel": "^1.9.2", "loglevel-plugin-prefix": "0.8.4", "minimatch": "^6.2.0", "validator": "^13.11.0" } }, "sha512-3WK2FREmDA2aadCjD71PE7tx5evyvmhg80ts1kXp2IzXIA0ZJ7guGM66tj40kxaqwpMSGchwEnnfYswntav76g=="], - - "@ibm-cloud/openapi-ruleset-utilities": ["@ibm-cloud/openapi-ruleset-utilities@1.9.0", "", {}, "sha512-AoFbSarOqFBYH+1TZ9Ahkm2IWYSi5v0pBk88fpV+5b3qGJukypX8PwvCWADjuyIccKg48/F73a6hTTkBzDQ2UA=="], - "@isaacs/cliui": ["@isaacs/cliui@9.0.0", "", {}, "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg=="], "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.12", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg=="], @@ -448,14 +436,6 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.29", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ=="], - "@jsdevtools/ono": ["@jsdevtools/ono@7.1.3", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="], - - "@jsep-plugin/assignment": ["@jsep-plugin/assignment@1.3.0", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ=="], - - "@jsep-plugin/regex": ["@jsep-plugin/regex@1.0.4", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg=="], - - "@jsep-plugin/ternary": ["@jsep-plugin/ternary@1.1.4", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg=="], - "@mjackson/node-fetch-server": ["@mjackson/node-fetch-server@0.2.0", "", {}, "sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng=="], "@monaco-editor/loader": ["@monaco-editor/loader@1.5.0", "", { "dependencies": { "state-local": "^1.0.6" } }, "sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw=="], @@ -476,23 +456,27 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], - "@orval/angular": ["@orval/angular@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1" } }, "sha512-ypqJk/WJ9tnMQv17ZRoB73xZrNTskaR1FXc1j5FyC19dQgmBgCtyJrJsXDSRVj747KA9qtdHpS0sIzofwOTx/A=="], + "@orval/angular": ["@orval/angular@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0" } }, "sha512-MAamzCA68K796MwgmS1WEnVrDIDeMm3iv2fmKtz8oOhYxjVRDLX+Bh3dgsoGPmQwCN1x8xMHdHW1c6vrnIZCCA=="], + + "@orval/axios": ["@orval/axios@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0" } }, "sha512-i5RLA1fJ+DW8sgVK3A71YfvugBNurfb78jxXUgiPBrCVw7jVzxnuZT3hYv3ABsMfpk3lyONcO/o1EGzOwLsB3A=="], + + "@orval/core": ["@orval/core@8.10.0", "", { "dependencies": { "@scalar/openapi-types": "0.8.0", "acorn": "^8.15.0", "compare-versions": "^6.1.1", "debug": "^4.4.3", "esbuild": "^0.27.4", "esutils": "2.0.3", "fs-extra": "^11.3.2", "globby": "16.1.0", "jiti": "^2.6.1", "remeda": "^2.33.6", "typedoc": "^0.28.19" }, "peerDependencies": { "@faker-js/faker": ">=10" }, "optionalPeers": ["@faker-js/faker"] }, "sha512-JKO1sPNCVjp5ktIP9xl06XcnEFkXQAw65q9gxzXBrBR8i3+ifMRF9UESuwGJvvMZJMZofT0IKp2zbKONZyG5RA=="], - "@orval/axios": ["@orval/axios@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1" } }, "sha512-Izg99898tPutkvFUSDD9LROEul1Gh88yxgSHSDFuWZcImkdjeg30Sc6b/EXytjn5I/De/PtQPgEIFPCEsZ9O4A=="], + "@orval/fetch": ["@orval/fetch@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "@scalar/openapi-types": "0.8.0" } }, "sha512-U4tBjhzXeBJKvqx3xJG9OK95XLFKhPtdgPu2VPwq3SN2WE/xEkbdZnSz1pF0N9IAAG9mHuFIMz/C+H//TdT+ZQ=="], - "@orval/core": ["@orval/core@7.4.1", "", { "dependencies": { "@apidevtools/swagger-parser": "^10.1.0", "@ibm-cloud/openapi-ruleset": "^1.26.0", "acorn": "^8.14.0", "ajv": "^8.17.1", "chalk": "^4.1.2", "compare-versions": "^6.1.1", "debug": "^4.3.7", "esbuild": "^0.24.2", "esutils": "2.0.3", "fs-extra": "^11.2.0", "globby": "11.1.0", "lodash.get": "^4.4.2", "lodash.isempty": "^4.4.0", "lodash.omit": "^4.5.0", "lodash.uniq": "^4.5.0", "lodash.uniqby": "^4.7.0", "lodash.uniqwith": "^4.5.0", "micromatch": "^4.0.8", "openapi3-ts": "4.4.0", "swagger2openapi": "^7.0.8" } }, "sha512-puqyqfA7uolvd/cSy11Siq7UqrgzLAWeVUMxhsuql5KFn3Vi+5n3XUztzbtW0kuTb27vX8kcpnlOMQMf8Jf1Og=="], + "@orval/hono": ["@orval/hono@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "@orval/zod": "8.10.0", "fs-extra": "^11.3.2", "remeda": "^2.33.6" } }, "sha512-hWqBXaycTOaXWAMwh7YV7Y8ff72xRRRIh+8NnhfVIT2IKf5/r43rv6Q9wpV9CtFR/ciquVUZHejuIJFUr0RrRw=="], - "@orval/fetch": ["@orval/fetch@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1" } }, "sha512-EVirxs0ii0rt/Lsl5IO7ADAKdEWNnHB7GinbdvtfugZ8rENzNzOQLyBm5QP70kJM70FVLBxWGpeH6Jnqz0Fv8g=="], + "@orval/mcp": ["@orval/mcp@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "@orval/fetch": "8.10.0", "@orval/zod": "8.10.0" } }, "sha512-IiLMvr/NZKZxmSgZvvnsA4iXH93CF/SdSQN1SBmvQtpWVhinHOLKGFjH/iXJm6byxiw0SjWsI/4BaL7/WhPbew=="], - "@orval/hono": ["@orval/hono@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1", "@orval/zod": "7.4.1", "lodash.uniq": "^4.5.0" } }, "sha512-qzoOl2KvbxpBZKZB19+vn5iOZIwGcbdYY+/qNmSlJQ3jA7bbHNbn26ZfItDlAh3WFH+fTvme58ezRNP7HVc0rw=="], + "@orval/mock": ["@orval/mock@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "remeda": "^2.33.6" } }, "sha512-oVfEs89/7G7PorEHE/spHr4FRpONvDX7DB5h+VWsGYY8k/uuHeIRPfQBlsFTe4yilblFypAka9nD/7uDKAuzVQ=="], - "@orval/mock": ["@orval/mock@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1", "lodash.get": "^4.4.2", "lodash.omit": "^4.5.0", "openapi3-ts": "^4.2.2" } }, "sha512-ywKwcQaLIyZXKE6kHmdF3M3HGtlOKaZZ6+ciSEV1vbKMBr7ahFyv0m2pitUiwHyJ3ameKarMArX0hk31klZbtA=="], + "@orval/query": ["@orval/query@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "@orval/fetch": "8.10.0", "remeda": "^2.33.6" } }, "sha512-gnztWtnIeGDUHdeiAcLzMkGJ0dvq+vfrwEzOthM7nSBNsnT8RV1beS7xwXdERPcvP89GnSkZ7RZ+2zKy31FF6w=="], - "@orval/query": ["@orval/query@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1", "@orval/fetch": "7.4.1", "lodash.omitby": "^4.6.0" } }, "sha512-zlkrdiK+Bas7xOYM36cfZKGGoslKqh1B9mKaGQKadkCj9+54PzI9CxIxtCGZWJhLXB8kqPxaenNxyYoV/JW02A=="], + "@orval/solid-start": ["@orval/solid-start@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "@scalar/openapi-types": "0.8.0" } }, "sha512-sFB2OZeVxHw7+LD9cwGe+CbU0I41UAZt+fuZ/AwCt8Q5scHlIzRmmIEDuQQ7ElB6vqa5vc+wsffCx+/rlvD0aw=="], - "@orval/swr": ["@orval/swr@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1", "@orval/fetch": "7.4.1" } }, "sha512-OnmSjDiS4xZUrkJhbmEQjdY95gfRHdp9uU5q9fGM4Qg1VVaR/KcOG7FRNk4WHcQmCmi4KDvwbboE/KJjsDsF7Q=="], + "@orval/swr": ["@orval/swr@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "@orval/fetch": "8.10.0" } }, "sha512-a/pMtv5Y8WF7TWkvttL1UvcOnkprcNwScCRZ2+zVfNeShlIu9/+FEpSE3n2YCcMYBNo+ZZLCe7/i2Fr57JhaMg=="], - "@orval/zod": ["@orval/zod@7.4.1", "", { "dependencies": { "@orval/core": "7.4.1", "lodash.uniq": "^4.5.0" } }, "sha512-TqFidfTx9OtjTeA48P43/Vw1OaWuEkhURsMQGy8hn8w8/AKIAN7j0e/m8eoMLV/C3BN1ErfLDC1lkQ52q7u6SQ=="], + "@orval/zod": ["@orval/zod@8.10.0", "", { "dependencies": { "@orval/core": "8.10.0", "remeda": "^2.33.6" } }, "sha512-3OyEXdcm/j4Qqj/TFz/xpsgP4swANH6Vd2WHLLDbzj2ed7zIzfLM/H8iPSErO49cioGLazYsxQawIX8/SyZq7A=="], "@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], @@ -692,20 +676,30 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.45.0", "", { "os": "win32", "cpu": "x64" }, "sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA=="], - "@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + "@scalar/helpers": ["@scalar/helpers@0.8.0", "", {}, "sha512-gmOC6VravNB9VDl6wnt/GOj4K/hn48tj5bpW4AM4MhH8Ubil6uu7g1DSoKHwltu8Ks79KEtR6JmOrROi9R7jaQ=="], + + "@scalar/json-magic": ["@scalar/json-magic@0.12.14", "", { "dependencies": { "@scalar/helpers": "0.8.0", "pathe": "^2.0.3", "yaml": "^2.8.3" } }, "sha512-dWrCy3ew1r7OQ1pu2r4ZjiKEVy0yVd66kXdmsl41bteOG2F2I2IBlPjmPV6p8ckjImQHxtNBIntFaQfNrdBhJg=="], + + "@scalar/openapi-parser": ["@scalar/openapi-parser@0.25.12", "", { "dependencies": { "@scalar/helpers": "0.5.2", "@scalar/json-magic": "0.12.8", "@scalar/openapi-types": "0.8.0", "@scalar/openapi-upgrader": "0.2.6", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-formats": "^3.0.1", "jsonpointer": "^5.0.1", "leven": "^4.0.0", "yaml": "^2.8.0" } }, "sha512-1hajBAbc7cbEcsSZEQxaPXZyCjMf6h6hObV+SO32jkC6rrxinPXQIucDu9HTu/jm/FaaMnNhc8/XDWz5/E49cQ=="], + + "@scalar/openapi-types": ["@scalar/openapi-types@0.8.0", "", {}, "sha512-WmaxVSfvY5K/TwcG2B2TU1WOe1As1uc2s7myswtP6dBlcjU3hM08SApxv/jmyGaCE8t4gO5BBhmHY4pDUfmr2g=="], - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + "@scalar/openapi-upgrader": ["@scalar/openapi-upgrader@0.2.6", "", { "dependencies": { "@scalar/openapi-types": "0.8.0" } }, "sha512-pvEmfSCDNYR4+lygidUqfo+shzyp4OSh9+UgK110rzA8Oot6WbJBM03Fuq3M255G7G6R9iXyfsebB7MBUocPkw=="], - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], - "@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g=="], - "@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], + "@shikijs/langs": ["@shikijs/langs@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg=="], - "@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + "@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="], + + "@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], + "@stablelib/base64": ["@stablelib/base64@2.0.1", "", {}, "sha512-P2z89A7N1ETt6RxgpVdDT2xlg8cnm3n6td0lY9gyK7EiWK3wdq388yFX/hLknkCC0we05OZAD1rfxlQJUbl5VQ=="], "@stablelib/binary": ["@stablelib/binary@2.0.1", "", { "dependencies": { "@stablelib/int": "^2.0.1" } }, "sha512-U9iAO8lXgEDONsA0zPPSgcf3HUBNAqHiJmSHgZz62OvC3Hi2Bhc5kTnQ3S1/L+sthDTHtCMhcEiklmIly6uQ3w=="], @@ -724,38 +718,6 @@ "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], - "@stoplight/better-ajv-errors": ["@stoplight/better-ajv-errors@1.0.3", "", { "dependencies": { "jsonpointer": "^5.0.0", "leven": "^3.1.0" }, "peerDependencies": { "ajv": ">=8" } }, "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA=="], - - "@stoplight/json": ["@stoplight/json@3.21.7", "", { "dependencies": { "@stoplight/ordered-object-literal": "^1.0.3", "@stoplight/path": "^1.3.2", "@stoplight/types": "^13.6.0", "jsonc-parser": "~2.2.1", "lodash": "^4.17.21", "safe-stable-stringify": "^1.1" } }, "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A=="], - - "@stoplight/json-ref-readers": ["@stoplight/json-ref-readers@1.2.2", "", { "dependencies": { "node-fetch": "^2.6.0", "tslib": "^1.14.1" } }, "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ=="], - - "@stoplight/json-ref-resolver": ["@stoplight/json-ref-resolver@3.1.6", "", { "dependencies": { "@stoplight/json": "^3.21.0", "@stoplight/path": "^1.3.2", "@stoplight/types": "^12.3.0 || ^13.0.0", "@types/urijs": "^1.19.19", "dependency-graph": "~0.11.0", "fast-memoize": "^2.5.2", "immer": "^9.0.6", "lodash": "^4.17.21", "tslib": "^2.6.0", "urijs": "^1.19.11" } }, "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A=="], - - "@stoplight/ordered-object-literal": ["@stoplight/ordered-object-literal@1.0.5", "", {}, "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg=="], - - "@stoplight/path": ["@stoplight/path@1.3.2", "", {}, "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ=="], - - "@stoplight/spectral-core": ["@stoplight/spectral-core@1.20.0", "", { "dependencies": { "@stoplight/better-ajv-errors": "1.0.3", "@stoplight/json": "~3.21.0", "@stoplight/path": "1.3.2", "@stoplight/spectral-parsers": "^1.0.0", "@stoplight/spectral-ref-resolver": "^1.0.4", "@stoplight/spectral-runtime": "^1.1.2", "@stoplight/types": "~13.6.0", "@types/es-aggregate-error": "^1.0.2", "@types/json-schema": "^7.0.11", "ajv": "^8.17.1", "ajv-errors": "~3.0.0", "ajv-formats": "~2.1.1", "es-aggregate-error": "^1.0.7", "jsonpath-plus": "^10.3.0", "lodash": "~4.17.21", "lodash.topath": "^4.5.2", "minimatch": "3.1.2", "nimma": "0.2.3", "pony-cause": "^1.1.1", "simple-eval": "1.0.1", "tslib": "^2.8.1" } }, "sha512-5hBP81nCC1zn1hJXL/uxPNRKNcB+/pEIHgCjPRpl/w/qy9yC9ver04tw1W0l/PMiv0UeB5dYgozXVQ4j5a6QQQ=="], - - "@stoplight/spectral-formats": ["@stoplight/spectral-formats@1.8.2", "", { "dependencies": { "@stoplight/json": "^3.17.0", "@stoplight/spectral-core": "^1.19.2", "@types/json-schema": "^7.0.7", "tslib": "^2.8.1" } }, "sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw=="], - - "@stoplight/spectral-functions": ["@stoplight/spectral-functions@1.10.1", "", { "dependencies": { "@stoplight/better-ajv-errors": "1.0.3", "@stoplight/json": "^3.17.1", "@stoplight/spectral-core": "^1.19.4", "@stoplight/spectral-formats": "^1.8.1", "@stoplight/spectral-runtime": "^1.1.2", "ajv": "^8.17.1", "ajv-draft-04": "~1.0.0", "ajv-errors": "~3.0.0", "ajv-formats": "~2.1.1", "lodash": "~4.17.21", "tslib": "^2.8.1" } }, "sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg=="], - - "@stoplight/spectral-parsers": ["@stoplight/spectral-parsers@1.0.5", "", { "dependencies": { "@stoplight/json": "~3.21.0", "@stoplight/types": "^14.1.1", "@stoplight/yaml": "~4.3.0", "tslib": "^2.8.1" } }, "sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ=="], - - "@stoplight/spectral-ref-resolver": ["@stoplight/spectral-ref-resolver@1.0.5", "", { "dependencies": { "@stoplight/json-ref-readers": "1.2.2", "@stoplight/json-ref-resolver": "~3.1.6", "@stoplight/spectral-runtime": "^1.1.2", "dependency-graph": "0.11.0", "tslib": "^2.8.1" } }, "sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA=="], - - "@stoplight/spectral-rulesets": ["@stoplight/spectral-rulesets@1.22.0", "", { "dependencies": { "@asyncapi/specs": "^6.8.0", "@stoplight/better-ajv-errors": "1.0.3", "@stoplight/json": "^3.17.0", "@stoplight/spectral-core": "^1.19.4", "@stoplight/spectral-formats": "^1.8.1", "@stoplight/spectral-functions": "^1.9.1", "@stoplight/spectral-runtime": "^1.1.2", "@stoplight/types": "^13.6.0", "@types/json-schema": "^7.0.7", "ajv": "^8.17.1", "ajv-formats": "~2.1.1", "json-schema-traverse": "^1.0.0", "leven": "3.1.0", "lodash": "~4.17.21", "tslib": "^2.8.1" } }, "sha512-l2EY2jiKKLsvnPfGy+pXC0LeGsbJzcQP5G/AojHgf+cwN//VYxW1Wvv4WKFx/CLmLxc42mJYF2juwWofjWYNIQ=="], - - "@stoplight/spectral-runtime": ["@stoplight/spectral-runtime@1.1.4", "", { "dependencies": { "@stoplight/json": "^3.20.1", "@stoplight/path": "^1.3.2", "@stoplight/types": "^13.6.0", "abort-controller": "^3.0.0", "lodash": "^4.17.21", "node-fetch": "^2.7.0", "tslib": "^2.8.1" } }, "sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ=="], - - "@stoplight/types": ["@stoplight/types@13.20.0", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA=="], - - "@stoplight/yaml": ["@stoplight/yaml@4.3.0", "", { "dependencies": { "@stoplight/ordered-object-literal": "^1.0.5", "@stoplight/types": "^14.1.1", "@stoplight/yaml-ast-parser": "0.0.50", "tslib": "^2.2.0" } }, "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w=="], - - "@stoplight/yaml-ast-parser": ["@stoplight/yaml-ast-parser@0.0.50", "", {}, "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ=="], - "@surma/rollup-plugin-off-main-thread": ["@surma/rollup-plugin-off-main-thread@2.2.3", "", { "dependencies": { "ejs": "^3.1.6", "json5": "^2.2.0", "magic-string": "^0.25.0", "string.prototype.matchall": "^4.0.6" } }, "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ=="], "@svgr/babel-plugin-add-jsx-attribute": ["@svgr/babel-plugin-add-jsx-attribute@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g=="], @@ -868,8 +830,6 @@ "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], - "@types/es-aggregate-error": ["@types/es-aggregate-error@1.0.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg=="], - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], @@ -880,8 +840,6 @@ "@types/lodash.debounce": ["@types/lodash.debounce@4.0.9", "", { "dependencies": { "@types/lodash": "*" } }, "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ=="], - "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@types/node": ["@types/node@24.12.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g=="], "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="], @@ -894,8 +852,6 @@ "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - "@types/urijs": ["@types/urijs@1.19.25", "", {}, "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.59.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.59.1", "@typescript-eslint/type-utils": "8.59.1", "@typescript-eslint/utils": "8.59.1", "@typescript-eslint/visitor-keys": "8.59.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.59.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-BOziFIfE+6osHO9FoJG4zjoHUcvI7fTNBSpdAwrNH0/TLvzjsk2oo8XSSOT2HhqUyhZPfHv4UOffoJ9oEEQ7Ag=="], "@typescript-eslint/parser": ["@typescript-eslint/parser@8.59.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.59.1", "@typescript-eslint/types": "8.59.1", "@typescript-eslint/typescript-estree": "8.59.1", "@typescript-eslint/visitor-keys": "8.59.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-HDQH9O/47Dxi1ceDhBXdaldtf/WV9yRYMjbjCuNk3qnaTD564qwv61Y7+gTxwxRKzSrgO5uhtw584igXVuuZkA=="], @@ -916,12 +872,8 @@ "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.59.1", "", { "dependencies": { "@typescript-eslint/types": "8.59.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-LdDNl6C5iJExcM0Yh0PwAIBb9PrSiCsWamF/JyEZawm3kFDnRoaq3LGE4bpyRao/fWeGKKyw7icx0YxrLFC5Cg=="], - "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.1", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.7" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ=="], - "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], - "ace-builds": ["ace-builds@1.43.6", "", {}, "sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg=="], "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], @@ -932,9 +884,7 @@ "ajv-draft-04": ["ajv-draft-04@1.0.0", "", { "peerDependencies": { "ajv": "^8.5.0" }, "optionalPeers": ["ajv"] }, "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw=="], - "ajv-errors": ["ajv-errors@3.0.0", "", { "peerDependencies": { "ajv": "^8.0.1" } }, "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ=="], - - "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], + "ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="], "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], @@ -950,12 +900,8 @@ "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], - "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], - "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], - "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], @@ -994,28 +940,18 @@ "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - "call-me-maybe": ["call-me-maybe@1.0.2", "", {}, "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="], - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], "caniuse-lite": ["caniuse-lite@1.0.30001727", "", {}, "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q=="], - "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], - - "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], - "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], - "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], "cmdk": ["cmdk@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "^1.1.1", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-id": "^1.1.0", "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg=="], @@ -1024,9 +960,7 @@ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - - "commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], + "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], "common-tags": ["common-tags@1.8.2", "", {}, "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="], @@ -1108,22 +1042,14 @@ "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "dependency-graph": ["dependency-graph@0.11.0", "", {}, "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg=="], - - "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - "diff-match-patch": ["diff-match-patch@1.0.5", "", {}, "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="], - "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], - "dom-helpers": ["dom-helpers@5.2.1", "", { "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA=="], "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], @@ -1150,10 +1076,6 @@ "embla-carousel-reactive-utils": ["embla-carousel-reactive-utils@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A=="], - "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], - "enhanced-resolve": ["enhanced-resolve@5.21.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA=="], "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], @@ -1166,8 +1088,6 @@ "es-abstract": ["es-abstract@1.24.0", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg=="], - "es-aggregate-error": ["es-aggregate-error@1.0.14", "", { "dependencies": { "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "set-function-name": "^2.0.2" } }, "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA=="], - "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], @@ -1182,8 +1102,6 @@ "es-toolkit": ["es-toolkit@1.46.1", "", {}, "sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ=="], - "es6-promise": ["es6-promise@3.3.1", "", {}, "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg=="], - "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], @@ -1214,15 +1132,13 @@ "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], - "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], "eventsource": ["eventsource@4.1.0", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-2GuF51iuHX6A9xdTccMTsNb7VO0lHZihApxhvQzJB5A03DvHDd2FQepodbMaztPBmBcE/ox7o2gqaxGhYB9LhQ=="], "eventsource-parser": ["eventsource-parser@3.0.3", "", {}, "sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA=="], - "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + "execa": ["execa@9.6.1", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.6", "figures": "^6.1.0", "get-stream": "^9.0.0", "human-signals": "^8.0.1", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", "npm-run-path": "^6.0.0", "pretty-ms": "^9.2.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", "yoctocolors": "^2.1.1" } }, "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA=="], "exit-hook": ["exit-hook@2.2.1", "", {}, "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw=="], @@ -1240,16 +1156,14 @@ "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fast-memoize": ["fast-memoize@2.5.2", "", {}, "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="], - - "fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="], - "fast-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="], "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + "figures": ["figures@6.1.0", "", { "dependencies": { "is-unicode-supported": "^2.0.0" } }, "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg=="], + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], "filelist": ["filelist@1.0.4", "", { "dependencies": { "minimatch": "^5.0.1" } }, "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q=="], @@ -1266,7 +1180,7 @@ "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "fs-extra": ["fs-extra@11.3.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew=="], + "fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -1278,8 +1192,6 @@ "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], - "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], @@ -1288,10 +1200,12 @@ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + "get-stream": ["get-stream@9.0.1", "", { "dependencies": { "@sec-ant/readable-stream": "^0.4.1", "is-stream": "^4.0.1" } }, "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA=="], "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], + "get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="], + "github-buttons": ["github-buttons@2.29.1", "", {}, "sha512-TV3YgAKda5hPz75n7QXmGCsSzgVya1vvmBieebg3EB5ScmashTZ0FldViG1aU2d4V5rcAGrtQ7k5uAaCo0A4PA=="], "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], @@ -1302,7 +1216,7 @@ "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], - "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + "globby": ["globby@16.1.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "fast-glob": "^3.3.3", "ignore": "^7.0.5", "is-path-inside": "^4.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.4.0" } }, "sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ=="], "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], @@ -1322,17 +1236,9 @@ "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], - - "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], - "html-parse-stringify": ["html-parse-stringify@3.0.1", "", { "dependencies": { "void-elements": "3.1.0" } }, "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg=="], - "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], - - "http2-client": ["http2-client@1.3.5", "", {}, "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA=="], - - "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], + "human-signals": ["human-signals@8.0.1", "", {}, "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ=="], "i18next": ["i18next@25.10.10", "", { "dependencies": { "@babel/runtime": "^7.29.2" }, "peerDependencies": { "typescript": "^5 || ^6" }, "optionalPeers": ["typescript"] }, "sha512-cqUW2Z3EkRx7NqSyywjkgCLK7KLCL6IFVFcONG7nVYIJ3ekZ1/N5jUsihHV6Bq37NfhgtczxJcxduELtjTwkuQ=="], @@ -1376,8 +1282,6 @@ "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], @@ -1394,6 +1298,10 @@ "is-obj": ["is-obj@1.0.1", "", {}, "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg=="], + "is-path-inside": ["is-path-inside@4.0.0", "", {}, "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA=="], + + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], "is-regexp": ["is-regexp@1.0.0", "", {}, "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA=="], @@ -1402,7 +1310,7 @@ "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], - "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + "is-stream": ["is-stream@4.0.1", "", {}, "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A=="], "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], @@ -1410,6 +1318,8 @@ "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], + "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], @@ -1432,8 +1342,6 @@ "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], - "jsep": ["jsep@1.4.0", "", {}, "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw=="], - "jsesc": ["jsesc@3.0.2", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], @@ -1448,19 +1356,13 @@ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], - "jsonc-parser": ["jsonc-parser@2.2.1", "", {}, "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="], - "jsonfile": ["jsonfile@6.1.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="], - "jsonpath-plus": ["jsonpath-plus@10.3.0", "", { "dependencies": { "@jsep-plugin/assignment": "^1.3.0", "@jsep-plugin/regex": "^1.0.4", "jsep": "^1.4.0" }, "bin": { "jsonpath": "bin/jsonpath-cli.js", "jsonpath-plus": "bin/jsonpath-cli.js" } }, "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA=="], - "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], - "jsonschema": ["jsonschema@1.5.0", "", {}, "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw=="], - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], + "leven": ["leven@4.1.0", "", {}, "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew=="], "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], @@ -1500,30 +1402,12 @@ "lodash.get": ["lodash.get@4.4.2", "", {}, "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="], - "lodash.isempty": ["lodash.isempty@4.4.0", "", {}, "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg=="], - "lodash.isequal": ["lodash.isequal@4.5.0", "", {}, "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="], "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "lodash.omit": ["lodash.omit@4.5.0", "", {}, "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg=="], - - "lodash.omitby": ["lodash.omitby@4.6.0", "", {}, "sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ=="], - "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], - "lodash.topath": ["lodash.topath@4.5.2", "", {}, "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg=="], - - "lodash.uniq": ["lodash.uniq@4.5.0", "", {}, "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="], - - "lodash.uniqby": ["lodash.uniqby@4.7.0", "", {}, "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww=="], - - "lodash.uniqwith": ["lodash.uniqwith@4.5.0", "", {}, "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q=="], - - "loglevel": ["loglevel@1.9.2", "", {}, "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg=="], - - "loglevel-plugin-prefix": ["loglevel-plugin-prefix@0.8.4", "", {}, "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g=="], - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], "lower-case": ["lower-case@2.0.2", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg=="], @@ -1536,36 +1420,20 @@ "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="], + "markdown-it": ["markdown-it@14.1.1", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA=="], "marked": ["marked@14.0.0", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - "mdast-util-to-hast": ["mdast-util-to-hast@13.2.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA=="], - "mdn-data": ["mdn-data@2.0.30", "", {}, "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="], "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="], - "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], - - "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], - - "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], - - "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], - - "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], @@ -1584,34 +1452,18 @@ "next-themes": ["next-themes@0.4.6", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="], - "nimma": ["nimma@0.2.3", "", { "dependencies": { "@jsep-plugin/regex": "^1.0.1", "@jsep-plugin/ternary": "^1.0.2", "astring": "^1.8.1", "jsep": "^1.2.0" }, "optionalDependencies": { "jsonpath-plus": "^6.0.1 || ^10.1.0", "lodash.topath": "^4.5.2" } }, "sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA=="], - "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - "node-fetch-h2": ["node-fetch-h2@2.3.0", "", { "dependencies": { "http2-client": "^1.2.5" } }, "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg=="], - "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], - "node-readfiles": ["node-readfiles@0.2.0", "", { "dependencies": { "es6-promise": "^3.2.1" } }, "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA=="], - "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], - "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + "npm-run-path": ["npm-run-path@6.0.0", "", { "dependencies": { "path-key": "^4.0.0", "unicorn-magic": "^0.3.0" } }, "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA=="], "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], - "oas-kit-common": ["oas-kit-common@1.0.8", "", { "dependencies": { "fast-safe-stringify": "^2.0.7" } }, "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ=="], - - "oas-linter": ["oas-linter@3.2.2", "", { "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", "yaml": "^1.10.0" } }, "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ=="], - - "oas-resolver": ["oas-resolver@2.5.6", "", { "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "resolve": "resolve.js" } }, "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ=="], - - "oas-schema-walker": ["oas-schema-walker@1.1.5", "", {}, "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ=="], - - "oas-validator": ["oas-validator@5.0.8", "", { "dependencies": { "call-me-maybe": "^1.0.1", "oas-kit-common": "^1.0.8", "oas-linter": "^3.2.2", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "reftools": "^1.1.9", "should": "^13.2.1", "yaml": "^1.10.0" } }, "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], @@ -1622,17 +1474,9 @@ "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], - "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - - "oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], - - "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - - "openapi3-ts": ["openapi3-ts@4.2.2", "", { "dependencies": { "yaml": "^2.3.4" } }, "sha512-+9g4actZKeb3czfi9gVQ4Br2Ju3KwhCAQJBNaKgye5KggqcBLIhFHH+nIkcm0BUX00TrAJl6dH4JWgM4G4JWrw=="], - "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "orval": ["orval@7.4.1", "", { "dependencies": { "@apidevtools/swagger-parser": "^10.1.0", "@orval/angular": "7.4.1", "@orval/axios": "7.4.1", "@orval/core": "7.4.1", "@orval/fetch": "7.4.1", "@orval/hono": "7.4.1", "@orval/mock": "7.4.1", "@orval/query": "7.4.1", "@orval/swr": "7.4.1", "@orval/zod": "7.4.1", "ajv": "^8.17.1", "cac": "^6.7.14", "chalk": "^4.1.2", "chokidar": "^4.0.1", "enquirer": "^2.4.1", "execa": "^5.1.1", "find-up": "5.0.0", "fs-extra": "^11.2.0", "lodash.uniq": "^4.5.0", "openapi3-ts": "4.2.2", "string-argv": "^0.3.2", "tsconfck": "^2.0.1", "typedoc": "0.26.11", "typedoc-plugin-markdown": "4.2.10", "typescript": "^5.6.3" }, "bin": { "orval": "dist/bin/orval.js" } }, "sha512-pXg5g5gdAzFqCUURZsMJoVeiWynSNSzqi6lXI1Opw08ILtmzDTdiU7PoSOf7pKVTB6oEf82zQzWeJMqSk8nzuQ=="], + "orval": ["orval@8.10.0", "", { "dependencies": { "@commander-js/extra-typings": "^14.0.0", "@orval/angular": "8.10.0", "@orval/axios": "8.10.0", "@orval/core": "8.10.0", "@orval/fetch": "8.10.0", "@orval/hono": "8.10.0", "@orval/mcp": "8.10.0", "@orval/mock": "8.10.0", "@orval/query": "8.10.0", "@orval/solid-start": "8.10.0", "@orval/swr": "8.10.0", "@orval/zod": "8.10.0", "@scalar/json-magic": "^0.12.8", "@scalar/openapi-parser": "^0.25.12", "@scalar/openapi-types": "0.8.0", "chokidar": "^5.0.0", "commander": "^14.0.2", "enquirer": "^2.4.1", "execa": "^9.6.1", "find-up": "8.0.0", "fs-extra": "^11.3.2", "get-tsconfig": "^4.14.0", "jiti": "^2.6.1", "js-yaml": "4.1.1", "remeda": "^2.33.6", "string-argv": "^0.3.2", "typedoc": "^0.28.19", "typedoc-plugin-coverage": "^4.0.2", "typedoc-plugin-markdown": "^4.10.0" }, "peerDependencies": { "prettier": ">=3.0.0" }, "optionalPeers": ["prettier"], "bin": { "orval": "dist/bin/orval.mjs" } }, "sha512-rdvKP0HqFcGe1Q83i+MIxzDDduj4qt3sNymbKnMHamuFZrR6hfko+7p3euX/gjIJBdaYHRunkwmawiwKVPeKIA=="], "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], @@ -1648,6 +1492,8 @@ "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + "parse-ms": ["parse-ms@4.0.0", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], @@ -1666,8 +1512,6 @@ "pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], - "pony-cause": ["pony-cause@1.1.1", "", {}, "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g=="], - "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], "postcss": ["postcss@8.5.13", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag=="], @@ -1680,9 +1524,9 @@ "pretty-bytes": ["pretty-bytes@6.1.1", "", {}, "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ=="], - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], + "pretty-ms": ["pretty-ms@9.3.0", "", { "dependencies": { "parse-ms": "^4.0.0" } }, "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ=="], - "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], @@ -1736,18 +1580,10 @@ "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], - "reftools": ["reftools@1.1.9", "", {}, "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w=="], - "regenerate": ["regenerate@1.4.2", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="], "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.0", "", { "dependencies": { "regenerate": "^1.4.2" } }, "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA=="], - "regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], - - "regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], - - "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], - "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], "regexpu-core": ["regexpu-core@6.2.0", "", { "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA=="], @@ -1756,7 +1592,7 @@ "regjsparser": ["regjsparser@0.12.0", "", { "dependencies": { "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ=="], - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + "remeda": ["remeda@2.34.1", "", {}, "sha512-k5iIF3lHm2NQ+2bNGDvZTD5jZl/JZkCS6AQOfGjYBd7V4rbb3K5whHvab0/O7CqPI43vYzbnIVCQXQJqmOyI6w=="], "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], @@ -1764,6 +1600,8 @@ "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], "rolldown": ["rolldown@1.0.0-rc.17", "", { "dependencies": { "@oxc-project/types": "=0.127.0", "@rolldown/pluginutils": "1.0.0-rc.17" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.17", "@rolldown/binding-darwin-arm64": "1.0.0-rc.17", "@rolldown/binding-darwin-x64": "1.0.0-rc.17", "@rolldown/binding-freebsd-x64": "1.0.0-rc.17", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA=="], @@ -1780,8 +1618,6 @@ "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], - "safe-stable-stringify": ["safe-stable-stringify@1.1.1", "", {}, "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="], - "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], @@ -1800,20 +1636,6 @@ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], - - "should": ["should@13.2.3", "", { "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", "should-type": "^1.4.0", "should-type-adaptors": "^1.0.1", "should-util": "^1.0.0" } }, "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ=="], - - "should-equal": ["should-equal@2.0.0", "", { "dependencies": { "should-type": "^1.4.0" } }, "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA=="], - - "should-format": ["should-format@3.0.3", "", { "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" } }, "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q=="], - - "should-type": ["should-type@1.4.0", "", {}, "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ=="], - - "should-type-adaptors": ["should-type-adaptors@1.1.0", "", { "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" } }, "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA=="], - - "should-util": ["should-util@1.0.1", "", {}, "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g=="], - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], @@ -1822,11 +1644,9 @@ "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - - "simple-eval": ["simple-eval@1.0.1", "", { "dependencies": { "jsep": "^1.3.6" } }, "sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ=="], + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], + "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], "smob": ["smob@1.5.0", "", {}, "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig=="], @@ -1842,16 +1662,12 @@ "sourcemap-codec": ["sourcemap-codec@1.4.8", "", {}, "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="], - "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - "state-local": ["state-local@1.0.7", "", {}, "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w=="], "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], @@ -1860,15 +1676,13 @@ "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], - "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], - "stringify-object": ["stringify-object@3.3.0", "", { "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" } }, "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw=="], "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "strip-comments": ["strip-comments@2.0.1", "", {}, "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw=="], - "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], + "strip-final-newline": ["strip-final-newline@4.0.0", "", {}, "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw=="], "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], @@ -1880,8 +1694,6 @@ "svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="], - "swagger2openapi": ["swagger2openapi@7.0.8", "", { "dependencies": { "call-me-maybe": "^1.0.1", "node-fetch": "^2.6.1", "node-fetch-h2": "^2.3.0", "node-readfiles": "^0.2.0", "oas-kit-common": "^1.0.8", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "oas-validator": "^5.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "swagger2openapi": "swagger2openapi.js", "oas-validate": "oas-validate.js", "boast": "boast.js" } }, "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g=="], - "tailwind-merge": ["tailwind-merge@3.5.0", "", {}, "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A=="], "tailwindcss": ["tailwindcss@4.2.4", "", {}, "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA=="], @@ -1904,12 +1716,8 @@ "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], - "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], - "ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="], - "tsconfck": ["tsconfck@2.1.2", "", { "peerDependencies": { "typescript": "^4.3.5 || ^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg=="], - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], @@ -1924,9 +1732,11 @@ "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], - "typedoc": ["typedoc@0.26.11", "", { "dependencies": { "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", "shiki": "^1.16.2", "yaml": "^2.5.1" }, "peerDependencies": { "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw=="], + "typedoc": ["typedoc@0.28.19", "", { "dependencies": { "@gerrit0/mini-shiki": "^3.23.0", "lunr": "^2.3.9", "markdown-it": "^14.1.1", "minimatch": "^10.2.5", "yaml": "^2.8.3" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw=="], - "typedoc-plugin-markdown": ["typedoc-plugin-markdown@4.2.10", "", { "peerDependencies": { "typedoc": "0.26.x" } }, "sha512-PLX3pc1/7z13UJm4TDE9vo9jWGcClFUErXXtd5LdnoLjV6mynPpqZLU992DwMGFSRqJFZeKbVyqlNNeNHnk2tQ=="], + "typedoc-plugin-coverage": ["typedoc-plugin-coverage@4.0.3", "", { "peerDependencies": { "typedoc": "0.28.x" } }, "sha512-baim3wyMkqpX7rBzL/6iZ7wzKJuSr9ffP16RHOsdTUNoHUZeXLIZHSUBtUhXmNHaUNRgfqdmKLBwyggbJjGdeQ=="], + + "typedoc-plugin-markdown": ["typedoc-plugin-markdown@4.11.0", "", { "peerDependencies": { "typedoc": "0.28.x" } }, "sha512-2iunh2ALyfyh204OF7h2u0kuQ84xB3jFZtFyUr01nThJkLvR8oGGSSDlyt2gyO4kXhvUxDcVbO0y43+qX+wFbw=="], "typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], @@ -1948,17 +1758,9 @@ "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.1.0", "", {}, "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="], - "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="], - - "unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], - - "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], - - "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], - - "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], - "unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], + "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="], "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], @@ -1968,28 +1770,18 @@ "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - "urijs": ["urijs@1.19.11", "", {}, "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="], - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], "use-sync-external-store": ["use-sync-external-store@1.5.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A=="], - "utility-types": ["utility-types@3.11.0", "", {}, "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw=="], - "uuid": ["uuid@11.1.1", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ=="], "valibot": ["valibot@1.2.0", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg=="], - "validator": ["validator@13.15.15", "", {}, "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A=="], - "vaul": ["vaul@1.1.2", "", { "dependencies": { "@radix-ui/react-dialog": "^1.1.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA=="], - "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], - - "vfile-message": ["vfile-message@4.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw=="], - "victory-vendor": ["victory-vendor@36.9.2", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], "vite": ["vite@8.0.10", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.10", "rolldown": "1.0.0-rc.17", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw=="], @@ -2052,31 +1844,21 @@ "workbox-window": ["workbox-window@7.4.0", "", { "dependencies": { "@types/trusted-types": "^2.0.2", "workbox-core": "7.4.0" } }, "sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw=="], - "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], - "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], "yaml": ["yaml@2.8.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ=="], - "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - - "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], "zustand": ["zustand@5.0.13", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-efI2tVaVQPqtOh114loML/Z80Y4NP3yc+Ff0fYiZJPauNeWZeIp/bRFD7I9bfmCOYBh/PHxlglQ9+wvlwnPikQ=="], - "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - - "@apidevtools/json-schema-ref-parser/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], - - "@apidevtools/swagger-parser/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "@apideck/better-ajv-errors/leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2098,13 +1880,11 @@ "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], - "@ibm-cloud/openapi-ruleset/minimatch": ["minimatch@6.2.0", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg=="], - - "@orval/core/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "@orval/core/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "@orval/core/openapi3-ts": ["openapi3-ts@4.4.0", "", { "dependencies": { "yaml": "^2.5.0" } }, "sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw=="], + "@orval/core/esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="], - "@orval/mock/openapi3-ts": ["openapi3-ts@4.4.0", "", { "dependencies": { "yaml": "^2.5.0" } }, "sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw=="], + "@orval/core/jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], "@radix-ui/react-alert-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], @@ -2142,21 +1922,15 @@ "@rollup/pluginutils/picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], - "@stoplight/json-ref-readers/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - - "@stoplight/spectral-core/@stoplight/types": ["@stoplight/types@13.6.0", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ=="], - - "@stoplight/spectral-core/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "@scalar/json-magic/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "@stoplight/spectral-core/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], + "@scalar/json-magic/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], - "@stoplight/spectral-functions/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "@scalar/openapi-parser/@scalar/helpers": ["@scalar/helpers@0.5.2", "", {}, "sha512-Pi1GAl8jO6ungmGj2sjDfCfqiBNrKW6HXDZmminV94ybGU/KtRLOqHwd0n9FIhY3j0RYGpGC0VCuniCICfQPHg=="], - "@stoplight/spectral-parsers/@stoplight/types": ["@stoplight/types@14.1.1", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g=="], + "@scalar/openapi-parser/@scalar/json-magic": ["@scalar/json-magic@0.12.8", "", { "dependencies": { "@scalar/helpers": "0.5.2", "pathe": "^2.0.3", "yaml": "^2.8.0" } }, "sha512-a559iO8tmFeA90JJAAM3U5x1Asf3mr0Z8uDC1PmyLTDjdSOfajP7EY9VzNoXE2cM48ilf9qrjmkbw/d4VCFjQw=="], - "@stoplight/spectral-rulesets/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "@stoplight/yaml/@stoplight/types": ["@stoplight/types@14.1.1", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g=="], + "@scalar/openapi-parser/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], "@surma/rollup-plugin-off-main-thread/magic-string": ["magic-string@0.25.9", "", { "dependencies": { "sourcemap-codec": "^1.4.8" } }, "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="], @@ -2180,8 +1954,6 @@ "@telegram-apps/transformers/valibot": ["valibot@1.0.0-beta.14", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-tLyV2rE5QL6U29MFy3xt4AqMrn+/HErcp2ZThASnQvPMwfSozjV1uBGKIGiegtZIGjinJqn0SlBdannf18wENA=="], - "@types/es-aggregate-error/@types/node": ["@types/node@20.19.7", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA=="], - "@typescript-eslint/eslint-plugin/@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], @@ -2202,8 +1974,6 @@ "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], - "ajv-formats/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "cmdk/@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.10", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.4", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw=="], @@ -2220,10 +1990,12 @@ "filelist/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], - "foreground-child/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "glob/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "globby/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + + "globby/unicorn-magic": ["unicorn-magic@0.4.0", "", {}, "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw=="], + "i18next-browser-languagedetector/@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], "jake/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], @@ -2234,15 +2006,15 @@ "node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], - "oas-linter/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], - "oas-resolver/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + "ofetch/ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], - "oas-validator/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + "orval/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - "ofetch/ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], + "orval/find-up": ["find-up@8.0.0", "", { "dependencies": { "locate-path": "^8.0.0", "unicorn-magic": "^0.3.0" } }, "sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww=="], - "orval/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + "orval/jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], "path-scurry/lru-cache": ["lru-cache@11.2.7", "", {}, "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA=="], @@ -2258,12 +2030,16 @@ "svgo/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], - "swagger2openapi/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], + "tempy/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "typedoc/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + + "typedoc/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + "vaul/@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.10", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.4", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw=="], "vite/tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], @@ -2272,6 +2048,8 @@ "vite-node/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + "wait-port/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], + "workbox-build/ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="], "workbox-build/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], @@ -2284,6 +2062,56 @@ "@eslint/eslintrc/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], + "@orval/core/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.7", "", { "os": "aix", "cpu": "ppc64" }, "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg=="], + + "@orval/core/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.7", "", { "os": "android", "cpu": "arm" }, "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ=="], + + "@orval/core/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.7", "", { "os": "android", "cpu": "arm64" }, "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ=="], + + "@orval/core/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.7", "", { "os": "android", "cpu": "x64" }, "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg=="], + + "@orval/core/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw=="], + + "@orval/core/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ=="], + + "@orval/core/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.7", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w=="], + + "@orval/core/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ=="], + + "@orval/core/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.7", "", { "os": "linux", "cpu": "arm" }, "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA=="], + + "@orval/core/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A=="], + + "@orval/core/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.7", "", { "os": "linux", "cpu": "ia32" }, "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg=="], + + "@orval/core/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q=="], + + "@orval/core/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw=="], + + "@orval/core/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ=="], + + "@orval/core/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ=="], + + "@orval/core/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw=="], + + "@orval/core/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.7", "", { "os": "linux", "cpu": "x64" }, "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA=="], + + "@orval/core/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w=="], + + "@orval/core/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.7", "", { "os": "none", "cpu": "x64" }, "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw=="], + + "@orval/core/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.7", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A=="], + + "@orval/core/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.7", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg=="], + + "@orval/core/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.7", "", { "os": "sunos", "cpu": "x64" }, "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA=="], + + "@orval/core/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA=="], + + "@orval/core/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.7", "", { "os": "win32", "cpu": "ia32" }, "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw=="], + + "@orval/core/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.7", "", { "os": "win32", "cpu": "x64" }, "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg=="], + "@rollup/plugin-babel/@rollup/pluginutils/@types/estree": ["@types/estree@0.0.39", "", {}, "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="], "@rollup/plugin-babel/@rollup/pluginutils/estree-walker": ["estree-walker@1.0.1", "", {}, "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg=="], @@ -2296,9 +2124,7 @@ "@rollup/plugin-replace/@rollup/pluginutils/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "@stoplight/spectral-core/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - - "@types/es-aggregate-error/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "@scalar/openapi-parser/@scalar/json-magic/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="], @@ -2328,6 +2154,12 @@ "node-fetch/whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + "orval/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "orval/find-up/locate-path": ["locate-path@8.0.0", "", { "dependencies": { "p-locate": "^6.0.0" } }, "sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg=="], + + "typedoc/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="], + "vaul/@radix-ui/react-dialog/@radix-ui/primitive": ["@radix-ui/primitive@1.1.2", "", {}, "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA=="], "vaul/@radix-ui/react-dialog/@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ=="], @@ -2354,6 +2186,10 @@ "glob/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "orval/find-up/locate-path/p-locate": ["p-locate@6.0.0", "", { "dependencies": { "p-limit": "^4.0.0" } }, "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw=="], + + "typedoc/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "vite-node/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.6", "", { "os": "aix", "cpu": "ppc64" }, "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw=="], "vite-node/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.6", "", { "os": "android", "cpu": "arm" }, "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg=="], @@ -2396,6 +2232,8 @@ "vite-node/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.6", "", { "os": "openbsd", "cpu": "x64" }, "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw=="], + "vite-node/vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.6", "", { "os": "none", "cpu": "arm64" }, "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA=="], + "vite-node/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.6", "", { "os": "sunos", "cpu": "x64" }, "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA=="], "vite-node/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q=="], @@ -2403,5 +2241,9 @@ "vite-node/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ=="], "vite-node/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.6", "", { "os": "win32", "cpu": "x64" }, "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA=="], + + "orval/find-up/locate-path/p-locate/p-limit": ["p-limit@4.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ=="], + + "orval/find-up/locate-path/p-locate/p-limit/yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], } } diff --git a/dashboard/orval.config.ts b/dashboard/orval.config.ts index 8929acb0..bee715b9 100644 --- a/dashboard/orval.config.ts +++ b/dashboard/orval.config.ts @@ -8,10 +8,11 @@ export default defineConfig({ target: './src/service/api/index.ts', mode: 'single', clean: false, - prettier: true, - tslint: true, headers: false, override: { + fetch: { + includeHttpResponseReturnType: false, + }, mutator: { path: './src/service/http.ts', name: 'orvalFetcher', diff --git a/dashboard/package.json b/dashboard/package.json index 68147d93..33a964fe 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -101,7 +101,7 @@ "eslint": "^9.39.4", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.26", - "orval": "7.4.1", + "orval": "8.10.0", "postcss": "^8.5.13", "prettier": "^3.8.3", "prettier-plugin-tailwindcss": "^0.8.0", @@ -113,5 +113,5 @@ "vite-plugin-svgr": "^4.5.0", "wait-port": "^1.1.0" }, - "packageManager": "bun@1.0.0" + "packageManager": "bun@1.3.14" } diff --git a/dashboard/src/app/router.tsx b/dashboard/src/app/router.tsx index 0bef294e..1d75ec3f 100644 --- a/dashboard/src/app/router.tsx +++ b/dashboard/src/app/router.tsx @@ -1,10 +1,12 @@ -import { Suspense } from 'react' -import { useAdmin } from '@/hooks/use-admin' -import { getCurrentAdmin } from '@/service/api' -import { createHashRouter, Navigate, RouteObject } from 'react-router' import { LoadingSpinner } from '@/components/common/loading-spinner' import { TabbedRouteSuspenseFallback } from '@/components/layout/tabbed-route-suspense-fallback' +import { useAdmin } from '@/hooks/use-admin' +import { AdminDetails, getCurrentAdmin } from '@/service/api' +import { clearAuthSession } from '@/utils/authSession' +import { getAuthToken } from '@/utils/authStorage' import { lazyWithChunkRecovery } from '@/utils/chunk-recovery' +import { Suspense } from 'react' +import { createHashRouter, Navigate, RouteObject } from 'react-router' // Replace direct imports with lazy imports for route-level components const CoresLayout = lazyWithChunkRecovery(() => import('@/pages/_dashboard.nodes.cores')) const CoresIndex = lazyWithChunkRecovery(() => import('@/pages/_dashboard.nodes.cores._index')) @@ -52,11 +54,16 @@ function SettingsIndex() { return } -const fetchAdminLoader = async (): Promise => { +const fetchAdminLoader = async (): Promise => { + if (!getAuthToken()) { + throw Response.redirect('/login') + } + try { const response = await getCurrentAdmin() return response - } catch (error) { + } catch { + await clearAuthSession() throw Response.redirect('/login') } } diff --git a/dashboard/src/components/layout/nav-user.tsx b/dashboard/src/components/layout/nav-user.tsx index fa84ed1d..d90bcc50 100644 --- a/dashboard/src/components/layout/nav-user.tsx +++ b/dashboard/src/components/layout/nav-user.tsx @@ -1,19 +1,17 @@ 'use client' -import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' -import { SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar' +import { Language } from '@/components/common/language' +import { ThemeToggle } from '@/components/common/theme-toggle' +import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' +import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover' -import { useSidebar } from '@/components/ui/sidebar' +import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '@/components/ui/sidebar' import { type AdminDetails } from '@/service/api' -import { ChevronsUpDown, LogOut, UserRoundKey, UsersIcon, UserCircle, ChartPie, ChartNoAxesColumn, UserRound } from 'lucide-react' +import { clearAuthSession } from '@/utils/authSession' +import { formatBytes } from '@/utils/formatByte' +import { ChartNoAxesColumn, ChartPie, ChevronsUpDown, LogOut, UserCircle, UserRound, UserRoundKey, UsersIcon } from 'lucide-react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router' -import { formatBytes } from '@/utils/formatByte' -import { Badge } from '@/components/ui/badge' -import { removeAuthToken } from '@/utils/authStorage' -import { queryClient } from '@/utils/query-client' -import { ThemeToggle } from '@/components/common/theme-toggle' -import { Language } from '@/components/common/language' export function NavUser({ username, @@ -28,15 +26,9 @@ export function NavUser({ const { state, isMobile } = useSidebar() const navigate = useNavigate() - const handleLogout = (e: React.MouseEvent) => { + const handleLogout = async (e: React.MouseEvent) => { e.preventDefault() - // Cancel all ongoing queries - queryClient.cancelQueries() - // Remove auth token - removeAuthToken() - // Clear React Query cache - queryClient.clear() - // Navigate to login + await clearAuthSession() navigate('/login', { replace: true }) } @@ -49,13 +41,13 @@ export function NavUser({
- +
{username.name} {admin && ( @@ -125,7 +117,7 @@ export function NavUser({ - +
{username.name} @@ -146,7 +138,7 @@ export function NavUser({ )}
{admin && ( -
+
{formatBytes(admin?.used_traffic || 0)} @@ -181,7 +173,7 @@ export function NavUser({
{admin && ( -
+
@@ -211,7 +203,7 @@ export function NavUser({
- + {t('header.logout')} diff --git a/dashboard/src/features/bulk/components/bulk-flow.tsx b/dashboard/src/features/bulk/components/bulk-flow.tsx index 929fbcd3..eec0db17 100644 --- a/dashboard/src/features/bulk/components/bulk-flow.tsx +++ b/dashboard/src/features/bulk/components/bulk-flow.tsx @@ -1,43 +1,42 @@ 'use client' -import { useState, useEffect } from 'react' -import { - useGetGroupsSimple, - useGetUsersSimple, - useGetAdminsSimple, - useBulkModifyUsersProxySettings, - useBulkModifyUsersDatalimit, - useBulkModifyUsersExpire, - useBulkAddGroupsToUsers, - useBulkRemoveUsersFromGroups, - useBulkReallocateWireguardPeerIps, - XTLSFlows, - ShadowsocksMethods, - UserStatus, -} from '@/service/api' -import { Button } from '@/components/ui/button' -import { LoaderButton } from '@/components/ui/loader-button' +import { DecimalInput } from '@/components/common/decimal-input' +import { TIME_UNIT_SECONDS, TimeUnitSelect, type TimeUnit } from '@/components/common/time-unit-select' +import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from '@/components/ui/alert-dialog' import { Badge } from '@/components/ui/badge' +import { Button } from '@/components/ui/button' import { Card, CardContent } from '@/components/ui/card' -import { Label } from '@/components/ui/label' import { Checkbox } from '@/components/ui/checkbox' +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from '@/components/ui/command' +import { Label } from '@/components/ui/label' +import { LoaderButton } from '@/components/ui/loader-button' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' -import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from '@/components/ui/alert-dialog' import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group' -import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from '@/components/ui/command' -import { useTranslation } from 'react-i18next' -import { toast } from 'sonner' -import { Settings, Group, User, Shield, CheckCircle, AlertTriangle, Plus, Minus, X, HardDrive, Calendar, Network, CheckCircle2, ChevronLeft, ChevronRight, Eye, Loader2 } from 'lucide-react' import { BulkExpiredDateFilters } from '@/features/bulk/components/bulk-expired-date-filters' -import { DecimalInput } from '@/components/common/decimal-input' import { SelectorPanel } from '@/features/bulk/components/selector-panel' -import { TimeUnitSelect, TIME_UNIT_SECONDS, type TimeUnit } from '@/components/common/time-unit-select' -import { formatDateByLocale } from '@/utils/datePickerUtils' -import { formatBytes, gbToBytes } from '@/utils/formatByte' import { useDebouncedSearch } from '@/hooks/use-debounced-search' -import { cn } from '@/lib/utils' import useDirDetection from '@/hooks/use-dir-detection' +import { cn } from '@/lib/utils' +import { + ShadowsocksMethods, + useBulkAddGroupsToUsers, + useBulkModifyUsersDatalimit, + useBulkModifyUsersExpire, + useBulkModifyUsersProxySettings, + useBulkReallocateWireguardPeerIps, + useBulkRemoveUsersFromGroups, + useGetAdminsSimple, + useGetGroupsSimple, + useGetUsersSimple, + UserStatus, +} from '@/service/api' +import { formatDateByLocale } from '@/utils/datePickerUtils' +import { formatBytes, gbToBytes } from '@/utils/formatByte' import { endOfDay, startOfDay } from 'date-fns' +import { AlertTriangle, Calendar, CheckCircle, CheckCircle2, ChevronLeft, ChevronRight, Eye, Group, HardDrive, Loader2, Minus, Plus, Settings, Shield, User, X } from 'lucide-react' +import { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { toast } from 'sonner' const PAGE_SIZE = 50 @@ -57,7 +56,6 @@ export default function BulkFlow({ operationType }: BulkFlowProps) { const [currentStep, setCurrentStep] = useState<1 | 2 | 3>(1) - const [selectedFlow, setSelectedFlow] = useState(undefined) const [selectedMethod, setSelectedMethod] = useState(undefined) const [dataLimit, setDataLimit] = useState(undefined) @@ -157,7 +155,7 @@ export default function BulkFlow({ operationType }: BulkFlowProps) { return true } if (operationType === 'proxy') { - return selectedFlow || selectedMethod + return selectedMethod } if (operationType === 'groups') { return selectedGroups.length > 0 @@ -172,7 +170,7 @@ export default function BulkFlow({ operationType }: BulkFlowProps) { case 2: switch (operationType) { case 'proxy': - return selectedFlow || selectedMethod + return selectedMethod case 'data': return dataLimit !== undefined case 'expire': @@ -246,7 +244,6 @@ export default function BulkFlow({ operationType }: BulkFlowProps) { case 'proxy': return { ...basePayload, - flow: selectedFlow === 'none' ? ('' as XTLSFlows) : selectedFlow, method: selectedMethod, dry_run: false, } @@ -348,7 +345,6 @@ export default function BulkFlow({ operationType }: BulkFlowProps) { toast.success(t('operationSuccess', { defaultValue: 'Operation successful!' }), { description }) setCurrentStep(1) - setSelectedFlow(undefined) setSelectedMethod(undefined) setDataLimit(undefined) setExpireSeconds(undefined) @@ -386,7 +382,6 @@ export default function BulkFlow({ operationType }: BulkFlowProps) { case 'proxy': return { ...basePayload, - flow: selectedFlow === 'none' ? ('' as XTLSFlows) : selectedFlow, method: selectedMethod, dry_run: true, } @@ -541,28 +536,7 @@ export default function BulkFlow({ operationType }: BulkFlowProps) {
{operationType === 'proxy' && (
-
-
- - -
+
diff --git a/dashboard/src/features/templates/forms/user-template-form.ts b/dashboard/src/features/templates/forms/user-template-form.ts index 46387bcc..ff33478e 100644 --- a/dashboard/src/features/templates/forms/user-template-form.ts +++ b/dashboard/src/features/templates/forms/user-template-form.ts @@ -1,4 +1,4 @@ -import { DataLimitResetStrategy, ShadowsocksMethods, UserStatusCreate, XTLSFlows } from '@/service/api' +import { DataLimitResetStrategy, ShadowsocksMethods, UserStatusCreate } from '@/service/api' import { zodResolver } from '@hookform/resolvers/zod' import type { TFunction } from 'i18next' import type { FieldError, FieldErrors, Resolver } from 'react-hook-form' @@ -16,7 +16,6 @@ const userTemplateFormObjectSchema = z.object({ method: z .enum([ShadowsocksMethods['aes-128-gcm'], ShadowsocksMethods['aes-256-gcm'], ShadowsocksMethods['chacha20-ietf-poly1305'], ShadowsocksMethods['xchacha20-poly1305']]) .default(ShadowsocksMethods['chacha20-ietf-poly1305']), - flow: z.enum([XTLSFlows[''], XTLSFlows['xtls-rprx-vision'], XTLSFlows['xtls-rprx-vision-udp443']]).default(XTLSFlows['']), groups: z.array(z.number()).min(1, 'validation.required'), data_limit_reset_strategy: z .enum([ @@ -57,7 +56,6 @@ export const userTemplateFormDefaultValues: Partial hwid_limit: undefined, expire_duration: 0, method: ShadowsocksMethods['chacha20-ietf-poly1305'], - flow: XTLSFlows[''], on_hold_timeout: undefined, groups: [], reset_usages: false, @@ -74,14 +72,7 @@ export function createUserTemplateFormResolver(t: TFunction): Resolver)[fieldName] = { ...err, message: t('validation.required', { field: t(fieldLabelKey, { defaultValue: fieldName }) }), diff --git a/dashboard/src/pages/_dashboard._index.tsx b/dashboard/src/pages/_dashboard._index.tsx index 80dbfec1..cc9c7ff5 100644 --- a/dashboard/src/pages/_dashboard._index.tsx +++ b/dashboard/src/pages/_dashboard._index.tsx @@ -1,26 +1,27 @@ -import AdminStatisticsCard from '@/features/dashboard/components/admin-statistics-card' -import DashboardStatistics from '@/features/dashboard/components/dashboard-statistics' -import WorkersHealthCard from '@/features/dashboard/components/workers-health-card' import AdminFilterCombobox from '@/components/common/admin-filter-combobox' +import PageHeader from '@/components/layout/page-header' +import { Separator } from '@/components/ui/separator' import AdminModal from '@/features/admins/dialogs/admin-modal' import { adminFormDefaultValues, adminFormSchema, type AdminFormValuesInput } from '@/features/admins/forms/admin-form' -import { coreConfigFormDefaultValues, coreConfigFormSchema, type CoreConfigFormValues } from '@/features/nodes/forms/core-config-form' +import AdminStatisticsCard from '@/features/dashboard/components/admin-statistics-card' +import DashboardStatistics from '@/features/dashboard/components/dashboard-statistics' +import WorkersHealthCard from '@/features/dashboard/components/workers-health-card' +import QuickActionsModal from '@/features/dashboard/dialogs/shortcuts-modal' import GroupModal from '@/features/groups/dialogs/group-modal' import { groupFormDefaultValues, groupFormSchema, type GroupFormValues } from '@/features/groups/forms/group-form' import HostModal from '@/features/hosts/dialogs/host-modal' +import { hostFormDefaultValues, HostFormSchema, type HostFormValues } from '@/features/hosts/forms/host-form' import NodeModal from '@/features/nodes/dialogs/node-modal' +import { coreConfigFormDefaultValues, coreConfigFormSchema, type CoreConfigFormValues } from '@/features/nodes/forms/core-config-form' import { nodeFormDefaultValues, nodeFormSchema, type NodeFormValues } from '@/features/nodes/forms/node-form' -import QuickActionsModal from '@/features/dashboard/dialogs/shortcuts-modal' -import UserModal from '@/features/users/dialogs/user-modal' import UserTemplateModal from '@/features/templates/dialogs/user-template-modal' import { createUserTemplateFormResolver, userTemplateFormDefaultValues, type UserTemplatesFromValueInput } from '@/features/templates/forms/user-template-form' -import { HostFormSchema, hostFormDefaultValues, type HostFormValues } from '@/features/hosts/forms/host-form' -import { Separator } from '@/components/ui/separator' +import UserModal from '@/features/users/dialogs/user-modal' +import { getDefaultUserForm, type UseEditFormValues, type UseFormValues } from '@/features/users/forms/user-form' import { useAdmin } from '@/hooks/use-admin' import { useClipboard } from '@/hooks/use-clipboard' import type { AdminDetails, UserResponse } from '@/service/api' -import { useGetSystemStats } from '@/service/api' -import { getInboundDetails } from '@/service/api' +import { getInboundDetails, useGetSystemStats } from '@/service/api' import { zodResolver } from '@hookform/resolvers/zod' import { useQuery, useQueryClient } from '@tanstack/react-query' import { Bookmark } from 'lucide-react' @@ -28,8 +29,6 @@ import { lazy, Suspense, useEffect, useMemo, useState } from 'react' import { type Resolver, useForm } from 'react-hook-form' import { useTranslation } from 'react-i18next' import { toast } from 'sonner' -import PageHeader from '@/components/layout/page-header' -import { type UseEditFormValues, type UseFormValues, getDefaultUserForm } from '@/features/users/forms/user-form' // Lazy load CoreConfigModal to prevent Monaco Editor from loading until needed const CoreConfigModal = lazy(() => import('@/features/nodes/dialogs/core-config-modal')) @@ -164,7 +163,7 @@ const Dashboard = () => { const { data: inboundDetails = [], isLoading: isLoadingInbounds } = useQuery({ queryKey: ['getInboundDetailsQueryKey'], - queryFn: ({ signal }) => getInboundDetails(signal), + queryFn: ({ signal }) => getInboundDetails({ signal }), enabled: isHostModalOpen, }) @@ -204,23 +203,23 @@ const Dashboard = () => { return (
-
+
-
+
{is_sudo && ( -
+
)} -
+
{is_sudo ? ( <>
- - setSearchQuery(e.target.value)} className={cn('pl-8 pr-10', dir === 'rtl' && 'pl-10 pr-8')} /> + + setSearchQuery(e.target.value)} className={cn('pr-10 pl-8', dir === 'rtl' && 'pr-8 pl-10')} /> {searchQuery && ( - )} @@ -377,7 +380,7 @@ export default function UserTemplates() {

{t('templates.noTemplates')}

-

{t('templates.noTemplatesDescription')}

+

{t('templates.noTemplatesDescription')}

@@ -387,7 +390,7 @@ export default function UserTemplates() {

{t('noResults')}

-

{t('templates.noSearchResults')}

+

{t('templates.noSearchResults')}

diff --git a/dashboard/src/pages/_dashboard.tsx b/dashboard/src/pages/_dashboard.tsx index 6d928986..2a98688c 100644 --- a/dashboard/src/pages/_dashboard.tsx +++ b/dashboard/src/pages/_dashboard.tsx @@ -1,20 +1,27 @@ +import DonationPopup from '@/components/common/donation-popup' +import TopbarAd from '@/components/common/topbar-ad' import { Footer } from '@/components/layout/footer' -import { AppSidebar } from '@/components/layout/sidebar' import PageTransition from '@/components/layout/page-transition' import RouteGuard from '@/components/layout/route-guard' +import { AppSidebar } from '@/components/layout/sidebar' import { TopLoadingBar } from '@/components/layout/top-loading-bar' import { VersionUpdateBanner } from '@/components/layout/version-update-banner' -import DonationPopup from '@/components/common/donation-popup' import { SidebarInset, SidebarProvider } from '@/components/ui/sidebar' -import { getCurrentAdmin } from '@/service/api' +import { AdminDetails, getCurrentAdmin } from '@/service/api' +import { clearAuthSession } from '@/utils/authSession' +import { getAuthToken } from '@/utils/authStorage' import { Outlet } from 'react-router' -import TopbarAd from '@/components/common/topbar-ad' -export const clientLoader = async (): Promise => { +export const clientLoader = async (): Promise => { + if (!getAuthToken()) { + throw Response.redirect('/login') + } + try { const response = await getCurrentAdmin() return response - } catch (error) { + } catch { + await clearAuthSession() throw Response.redirect('/login') } } diff --git a/dashboard/src/pages/login.tsx b/dashboard/src/pages/login.tsx index 8f6102b4..eb50578b 100644 --- a/dashboard/src/pages/login.tsx +++ b/dashboard/src/pages/login.tsx @@ -1,22 +1,21 @@ -import { Footer } from '@/components/layout/footer' -import { Language } from '@/components/common/language' import { useTheme } from '@/app/providers/theme-provider' +import { Language } from '@/components/common/language' import { ThemeToggle } from '@/components/common/theme-toggle' +import { Footer } from '@/components/layout/footer' import { Alert, AlertDescription } from '@/components/ui/alert' import { Input } from '@/components/ui/input' import { LoaderButton } from '@/components/ui/loader-button' import { PasswordInput } from '@/components/ui/password-input' import { useAdminMiniAppToken, useAdminToken } from '@/service/api' import { $fetch } from '@/service/http' -import { removeAuthToken, setAuthToken } from '@/utils/authStorage' -import { queryClient } from '@/utils/query-client' +import { setAuthToken } from '@/utils/authStorage' import { zodResolver } from '@hookform/resolvers/zod' import { retrieveRawInitData } from '@telegram-apps/sdk' import { CircleAlertIcon, LogInIcon } from 'lucide-react' import { FC, useEffect, useState } from 'react' import { useForm } from 'react-hook-form' import { useTranslation } from 'react-i18next' -import { useLocation, useNavigate } from 'react-router' +import { useNavigate } from 'react-router' import { z } from 'zod' const schema = z.object({ @@ -29,7 +28,6 @@ type LoginSchema = z.infer export const Login: FC = () => { const navigate = useNavigate() const { t } = useTranslation() - const location = useLocation() const { resolvedTheme } = useTheme() const { register, @@ -42,17 +40,6 @@ export const Login: FC = () => { }, resolver: zodResolver(schema), }) - useEffect(() => { - // Cancel all ongoing queries first to stop any in-flight requests - queryClient.cancelQueries() - // Remove the auth token - removeAuthToken() - // Clear all React Query cache to ensure fresh state after logout - queryClient.clear() - if (location.pathname !== '/login') { - navigate('/login', { replace: true }) - } - }, [location.pathname, navigate]) let isTelegram = false let initDataRaw = '' try { diff --git a/dashboard/src/service/api/index.ts b/dashboard/src/service/api/index.ts index 35bd6ccc..4511f347 100644 --- a/dashboard/src/service/api/index.ts +++ b/dashboard/src/service/api/index.ts @@ -1,11236 +1,15456 @@ /** - * Generated by orval v7.4.1 🍺 + * Generated by orval v8.10.0 🍺 * Do not edit manually. * PasarGuardAPI * Unified GUI Censorship Resistant Solution * OpenAPI spec version: 4.0.0-rc.1 */ -import { useMutation, useQuery } from '@tanstack/react-query' +import { + useMutation, + useQuery +} from '@tanstack/react-query'; import type { DataTag, DefinedInitialDataOptions, DefinedUseQueryResult, MutationFunction, + QueryClient, QueryFunction, QueryKey, UndefinedInitialDataOptions, UseMutationOptions, UseMutationResult, UseQueryOptions, - UseQueryResult, -} from '@tanstack/react-query' -import { orvalFetcher } from '../http' -import type { ErrorType, BodyType } from '../http' -export type GetUserTemplatesSimpleParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null - search?: string | null - sort?: string | null - all?: boolean + UseQueryResult +} from '@tanstack/react-query'; + +import { orvalFetcher } from '../http'; +import type { ErrorType , BodyType } from '../http'; +/** + * Minimal admin model containing only the username. + */ +export interface AdminBase { + username: string; } -export type GetUserTemplatesParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null +export interface UserNotificationEnable { + create?: boolean; + modify?: boolean; + delete?: boolean; + status_change?: boolean; + reset_data_usage?: boolean; + data_reset_by_next?: boolean; + subscription_revoked?: boolean; } -export type GetSubUserUsageParams = { - period?: Period - start?: string | null - end?: string | null +/** + * Base model containing the core admin identification fields. + */ +export interface AdminContactInfo { + username: string; + telegram_id?: number | null; + discord_webhook?: string | null; + sub_domain?: string | null; + profile_title?: string | null; + support_url?: string | null; + notification_enable?: UserNotificationEnable | null; } -export type DeleteExpiredUsersTarget = (typeof DeleteExpiredUsersTarget)[keyof typeof DeleteExpiredUsersTarget] +/** + * Model for creating new admin accounts requiring username and password. + */ +export interface AdminCreate { + password: string; + is_sudo: boolean; + telegram_id?: number | null; + discord_webhook?: string | null; + discord_id?: number | null; + is_disabled?: boolean | null; + sub_template?: string | null; + sub_domain?: string | null; + profile_title?: string | null; + support_url?: string | null; + note?: string | null; + notification_enable?: UserNotificationEnable | null; + username: string; +} -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DeleteExpiredUsersTarget = { - expired: 'expired', - limited: 'limited', -} as const +/** + * Complete admin model with all fields for database representation and API responses. + */ +export interface AdminDetails { + username: string; + telegram_id?: number | null; + discord_webhook?: string | null; + sub_domain?: string | null; + profile_title?: string | null; + support_url?: string | null; + notification_enable?: UserNotificationEnable | null; + id?: number | null; + is_sudo: boolean; + total_users?: number; + used_traffic?: number; + is_disabled?: boolean; + discord_id?: number | null; + sub_template?: string | null; + lifetime_used_traffic?: number | null; + note?: string | null; +} -export type DeleteExpiredUsersParams = { - admin_username?: string | null - target?: DeleteExpiredUsersTarget - expired_after?: string | null - expired_before?: string | null +export interface AdminModify { + password?: string | null; + is_sudo: boolean; + telegram_id?: number | null; + discord_webhook?: string | null; + discord_id?: number | null; + is_disabled?: boolean | null; + sub_template?: string | null; + sub_domain?: string | null; + profile_title?: string | null; + support_url?: string | null; + note?: string | null; + notification_enable?: UserNotificationEnable | null; } -export type GetExpiredUsersTarget = (typeof GetExpiredUsersTarget)[keyof typeof GetExpiredUsersTarget] +export interface AdminNotificationEnable { + create?: boolean; + modify?: boolean; + delete?: boolean; + reset_usage?: boolean; + login?: boolean; +} -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const GetExpiredUsersTarget = { - expired: 'expired', - limited: 'limited', -} as const +/** + * Lightweight admin model with only id and username for performance. + */ +export interface AdminSimple { + id: number; + username: string; +} -export type GetExpiredUsersParams = { - admin_username?: string | null - target?: GetExpiredUsersTarget - expired_after?: string | null - expired_before?: string | null +/** + * Response model for admins list with pagination and statistics. + */ +export interface AdminsResponse { + admins: AdminDetails[]; + total: number; + active: number; + disabled: number; } -export type GetUsersCountMetricParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null - admin?: string[] | null +/** + * Response model for lightweight admin list. + */ +export interface AdminsSimpleResponse { + admins: AdminSimple[]; + total: number; } -export type GetUsersUsageParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null - admin?: string[] | null +export type Language = typeof Language[keyof typeof Language]; + + +export const Language = { + fa: 'fa', + en: 'en', + ru: 'ru', + zh: 'zh', +} as const; + +export type Platform = typeof Platform[keyof typeof Platform]; + + +export const Platform = { + android: 'android', + ios: 'ios', + windows: 'windows', + macos: 'macos', + linux: 'linux', + appletv: 'appletv', + androidtv: 'androidtv', +} as const; + +export interface DownloadLink { + /** @maxLength 64 */ + name: string; + url: string; + language: Language; } -export type GetUserUsageByIdParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null +export interface Application { + /** @maxLength 32 */ + name: string; + /** @maxLength 512 */ + icon_url?: string; + /** @maxLength 256 */ + import_url?: string; + description?: Partial>; + recommended?: boolean; + platform: Platform; + download_links: DownloadLink[]; } -export type GetUserUsageByUsernameParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null +export type BaseHostHttpHeaders = {[key: string]: string} | null; + +export type ProxyHostSecurity = typeof ProxyHostSecurity[keyof typeof ProxyHostSecurity]; + + +export const ProxyHostSecurity = { + inbound_default: 'inbound_default', + none: 'none', + tls: 'tls', +} as const; + +export type ProxyHostALPN = typeof ProxyHostALPN[keyof typeof ProxyHostALPN]; + + +export const ProxyHostALPN = { + 'http/11': 'http/1.1', + h2: 'h2', + h3: 'h3', +} as const; + +export type ProxyHostFingerprint = typeof ProxyHostFingerprint[keyof typeof ProxyHostFingerprint]; + + +export const ProxyHostFingerprint = { + '': '', + chrome: 'chrome', + firefox: 'firefox', + safari: 'safari', + ios: 'ios', + android: 'android', + edge: 'edge', + NUMBER_360: '360', + qq: 'qq', + random: 'random', + randomized: 'randomized', + randomizednoalpn: 'randomizednoalpn', + unsafe: 'unsafe', +} as const; + +export type XHttpModes = typeof XHttpModes[keyof typeof XHttpModes]; + + +export const XHttpModes = { + auto: 'auto', + 'packet-up': 'packet-up', + 'stream-up': 'stream-up', + 'stream-one': 'stream-one', +} as const; + +export interface XMuxSettingsOutput { + maxConcurrency?: string | null; + maxConnections?: string | null; + cMaxReuseTimes?: string | null; + hMaxReusableSecs?: string | null; + hMaxRequestTimes?: string | null; + hKeepAlivePeriod?: number | null; } -export type GetUserUsageParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null +export interface XHttpSettingsOutput { + mode?: XHttpModes | null; + no_grpc_header?: boolean | null; + x_padding_bytes?: string | null; + x_padding_obfs_mode?: boolean | null; + x_padding_key?: string | null; + x_padding_header?: string | null; + x_padding_placement?: string | null; + x_padding_method?: string | null; + uplink_http_method?: string | null; + session_placement?: string | null; + session_key?: string | null; + seq_placement?: string | null; + seq_key?: string | null; + uplink_data_placement?: string | null; + uplink_data_key?: string | null; + uplink_chunk_size?: string | null; + sc_max_each_post_bytes?: string | null; + sc_min_posts_interval_ms?: string | null; + xmux?: XMuxSettingsOutput | null; + download_settings?: number | null; } -export type GetUsersSimpleParams = { - ids?: number[] | null - usernames?: string[] | null - offset?: number | null - limit?: number | null - search?: string | null - sort?: string | null - all?: boolean +export interface GRPCSettings { + multi_mode?: boolean; + idle_timeout?: number | null; + health_check_timeout?: number | null; + permit_without_stream?: boolean; + initial_windows_size?: number | null; } -export type GetUsersParams = { - offset?: number | null - limit?: number | null - ids?: number[] | null - username?: string[] | null - usernames?: string[] | null - admin?: string[] | null - admin_ids?: number[] | null - group?: number[] | null - search?: string | null - status?: UserStatus | UserStatus[] | null - sort?: string | null - proxy_id?: string | null - data_limit_reset_strategy?: DataLimitResetStrategy | DataLimitResetStrategy[] | null - data_limit_min?: number | null - data_limit_max?: number | null - expire_after?: string | null - expire_before?: string | null - online_after?: string | null - online_before?: string | null - online?: boolean - no_data_limit?: boolean - no_expire?: boolean - load_sub?: boolean +export interface KCPSettings { + mtu?: number | null; + tti?: number | null; + uplink_capacity?: number | null; + downlink_capacity?: number | null; + congestion?: boolean | null; + read_buffer_size?: number | null; + write_buffer_size?: number | null; } -export type GetUserSubUpdateListByIdParams = { - offset?: number - limit?: number +export type HTTPRequestHeaders = {[key: string]: string[]} | null; + +export interface HTTPRequest { + /** @pattern ^(1(?:\.0|\.1)|2\.0|3\.0)$ */ + version?: string; + headers?: HTTPRequestHeaders; + /** @pattern ^(GET|POST|PUT|DELETE|HEAD|OPTIONS|PATCH|TRACE|CONNECT)$ */ + method?: string; } -export type GetUserSubUpdateListByUsernameParams = { - offset?: number - limit?: number +export type HTTPResponseHeaders = {[key: string]: string[]} | null; + +export interface HTTPResponse { + /** @pattern ^(1(?:\.0|\.1)|2\.0|3\.0)$ */ + version?: string; + headers?: HTTPResponseHeaders; + /** @pattern ^[1-5]\d{2}$ */ + status?: string; + /** @pattern ^(?i)(?:OK|Created|Accepted|Non-Authoritative Information|No Content|Reset Content|Partial Content|Multiple Choices|Moved Permanently|Found|See Other|Not Modified|Use Proxy|Temporary Redirect|Permanent Redirect|Bad Request|Unauthorized|Payment Required|Forbidden|Not Found|Method Not Allowed|Not Acceptable|Proxy Authentication Required|Request Timeout|Conflict|Gone|Length Required|Precondition Failed|Payload Too Large|URI Too Long|Unsupported Media Type|Range Not Satisfiable|Expectation Failed|I'm a teapot|Misdirected Request|Unprocessable Entity|Locked|Failed Dependency|Too Early|Upgrade Required|Precondition Required|Too Many Requests|Request Header Fields Too Large|Unavailable For Legal Reasons|Internal Server Error|Not Implemented|Bad Gateway|Service Unavailable|Gateway Timeout|HTTP Version Not Supported)$ */ + reason?: string; } -export type GetUserSubUpdateListParams = { - offset?: number - limit?: number +export interface TcpSettings { + /** @pattern ^(?:|none|http)$ */ + header?: string; + request?: HTTPRequest | null; + response?: HTTPResponse | null; } -export type SetOwnerByIdParams = { - admin_username: string +export interface WebSocketSettings { + heartbeatPeriod?: number | null; } -export type SetOwnerByUsernameParams = { - admin_username: string +export interface TransportSettingsOutput { + xhttp_settings?: XHttpSettingsOutput | null; + grpc_settings?: GRPCSettings | null; + kcp_settings?: KCPSettings | null; + tcp_settings?: TcpSettings | null; + websocket_settings?: WebSocketSettings | null; } -export type SetOwnerParams = { - admin_username: string +export type MultiplexProtocol = typeof MultiplexProtocol[keyof typeof MultiplexProtocol]; + + +export const MultiplexProtocol = { + smux: 'smux', + yamux: 'yamux', + h2mux: 'h2mux', +} as const; + +export interface Brutal { + enable?: boolean; + up_mbps: number; + down_mbps: number; } -export type GetUsersSubUpdateChartParams = { - user_id?: number | null - username?: string | null - admin_id?: number | null +export interface SingBoxMuxSettings { + enable?: boolean; + protocol?: MultiplexProtocol; + max_connections?: number | null; + max_streams?: number | null; + min_streams?: number | null; + padding?: boolean; + brutal?: Brutal | null; } -export type ClearUsageDataParams = { - start?: string | null - end?: string | null +export interface ClashMuxSettings { + enable?: boolean; + protocol?: MultiplexProtocol; + max_connections?: number | null; + max_streams?: number | null; + min_streams?: number | null; + padding?: boolean; + brutal?: Brutal | null; + statistic?: boolean; + only_tcp?: boolean; } -export type UserOnlineStats200 = { [key: string]: number } +export type Xudp = typeof Xudp[keyof typeof Xudp]; -export type RealtimeNodesStats200 = { [key: string]: NodeRealtimeStats | null } -export type GetNodeStatsPeriodicParams = { - period?: Period - start?: string | null - end?: string | null +export const Xudp = { + reject: 'reject', + allow: 'allow', + skip: 'skip', +} as const; + +export interface XrayMuxSettingsOutput { + enabled?: boolean; + concurrency?: number | null; + xudpConcurrency?: number | null; + xudpProxyUDP443?: Xudp; } -export type SyncNodeParams = { - flush_users?: boolean +export interface MuxSettingsOutput { + sing_box?: SingBoxMuxSettings | null; + clash?: ClashMuxSettings | null; + xray?: XrayMuxSettingsOutput | null; } -export type ReconnectAllNodeParams = { - core_id?: number | null +export interface XrayFragmentSettings { + /** @pattern ^(:?tlshello|[\d-]{1,16})$ */ + packets: string; + /** @pattern ^[\d-]{1,16}$ */ + length: string; + /** @pattern ^[\d-]{1,16}$ */ + interval: string; } -export type GetNodesSimpleParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null - search?: string | null - sort?: string | null - all?: boolean +export interface SingBoxFragmentSettings { + fragment?: boolean; + /** @pattern ^$|^\d+ms$ */ + fragment_fallback_delay?: string; + record_fragment?: boolean; } -export type GetNodesParams = { - core_id?: number | null - offset?: number | null - limit?: number | null - ids?: number[] | null - status?: NodeStatus | NodeStatus[] | null - enabled?: boolean - search?: string | null +export interface FragmentSettings { + xray?: XrayFragmentSettings | null; + sing_box?: SingBoxFragmentSettings | null; } -export type GetUserCountMetricParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null +export interface XrayNoiseSettings { + /** @pattern ^(:?rand|str|base64|hex)$ */ + type: string; + packet: string; + /** @pattern ^\d{1,16}(-\d{1,16})?$ */ + delay: string; + /** @pattern ip|ipv4|ipv6 */ + apply_to?: string; + rand_range?: string | null; } -export type GetUsageParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null +export interface NoiseSettings { + xray?: XrayNoiseSettings[] | null; } -export type GetHostsParams = { - ids?: number[] | null - offset?: number - limit?: number +export type UserStatus = typeof UserStatus[keyof typeof UserStatus]; + + +export const UserStatus = { + active: 'active', + disabled: 'disabled', + limited: 'limited', + expired: 'expired', + on_hold: 'on_hold', +} as const; + +export type ECHQueryStrategy = typeof ECHQueryStrategy[keyof typeof ECHQueryStrategy]; + + +export const ECHQueryStrategy = { + none: 'none', + half: 'half', + full: 'full', +} as const; + +/** + * Optional per-host values merged into WireGuard subscription output. + */ +export interface WireGuardHostOverrides { + allowed_ips?: string[] | null; + mtu?: number | null; + reserved?: string | null; + keepalive_seconds?: number | null; + dns?: string[] | null; } -export type GetClientTemplatesSimpleParams = { - ids?: number[] | null - template_type?: ClientTemplateType | null - offset?: number | null - limit?: number | null - search?: string | null - sort?: string | null - all?: boolean +export interface SubscriptionTemplates { + xray?: number | null; } -export type GetClientTemplatesParams = { - ids?: number[] | null - template_type?: ClientTemplateType | null - offset?: number | null - limit?: number | null +export interface BaseHost { + id?: number | null; + remark: string; + address?: string[]; + inbound_tag?: string | null; + port?: number | null; + sni?: string[] | null; + host?: string[] | null; + path?: string | null; + security?: ProxyHostSecurity; + alpn?: ProxyHostALPN[] | null; + fingerprint?: ProxyHostFingerprint; + allowinsecure?: boolean | null; + is_disabled?: boolean; + http_headers?: BaseHostHttpHeaders; + transport_settings?: TransportSettingsOutput | null; + mux_settings?: MuxSettingsOutput | null; + fragment_settings?: FragmentSettings | null; + noise_settings?: NoiseSettings | null; + random_user_agent?: boolean; + use_sni_as_host?: boolean; + vless_route?: string | null; + priority: number; + status?: UserStatus[] | null; + ech_config_list?: string | null; + ech_query_strategy?: ECHQueryStrategy | null; + pinned_peer_cert_sha256?: string | null; + verify_peer_cert_by_name?: string[] | null; + wireguard_overrides?: WireGuardHostOverrides | null; + subscription_templates?: SubscriptionTemplates | null; } -export type GetCoresSimpleParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null - search?: string | null - sort?: string | null - all?: boolean +export interface BaseNotificationEnable { + create?: boolean; + modify?: boolean; + delete?: boolean; } -export type GetAllCoresParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null +export interface BodyAdminTokenApiAdminTokenPost { + grant_type?: string | null; + username: string; + password: string; + scope?: string; + client_id?: string | null; + client_secret?: string | null; +} + +/** + * Model for bulk admin selection by usernames + */ +export interface BulkAdminSelection { + usernames?: string[]; +} + +/** + * Response model for bulk admin actions. + */ +export interface BulkAdminsActionResponse { + admins: string[]; + count: number; +} + +/** + * Model for bulk client template selection by IDs + */ +export interface BulkClientTemplateSelection { + ids?: number[]; +} + +/** + * Model for bulk core selection by IDs + */ +export interface BulkCoreSelection { + ids?: number[]; +} + +export interface BulkGroup { + group_ids: number[]; + has_group_ids?: number[]; + admins?: number[]; + users?: number[]; + dry_run?: boolean; +} + +/** + * Model for bulk group selection by IDs + */ +export interface BulkGroupSelection { + ids?: number[]; +} + +/** + * Response model for bulk group actions. + */ +export interface BulkGroupsActionResponse { + groups: string[]; + count: number; } -export type DeleteCoreConfigParams = { - restart_nodes?: boolean +/** + * Model for bulk host selection by IDs + */ +export interface BulkHostSelection { + ids?: number[]; +} + +/** + * Response model for bulk host actions. + */ +export interface BulkHostsActionResponse { + hosts: string[]; + count: number; +} + +/** + * Model for bulk node selection by IDs + */ +export interface BulkNodeSelection { + ids?: number[]; +} + +/** + * Response model for bulk node actions. + */ +export interface BulkNodesActionResponse { + nodes: string[]; + count: number; +} + +export interface BulkUser { + dry_run?: boolean; + group_ids?: number[]; + admins?: number[]; + users?: number[]; + status?: UserStatus[]; + expire_after?: string | null; + expire_before?: string | null; + amount: number; +} + +/** + * Model for bulk user template selection by IDs + */ +export interface BulkUserTemplateSelection { + ids?: number[]; +} + +/** + * Response model for bulk user template actions. + */ +export interface BulkUserTemplatesActionResponse { + templates: string[]; + count: number; +} + +export interface BulkUsersActionResponse { + users: string[]; + count: number; +} + +/** + * Apply a user template to a selection of existing users (by ID). + */ +export interface BulkUsersApplyTemplate { + user_template_id: number; + note?: string | null; + ids?: number[]; +} + +export interface BulkUsersCreateResponse { + subscription_urls?: string[]; + created?: number; +} + +export type UsernameGenerationStrategy = typeof UsernameGenerationStrategy[keyof typeof UsernameGenerationStrategy]; + + +export const UsernameGenerationStrategy = { + random: 'random', + sequence: 'sequence', +} as const; + +export interface BulkUsersFromTemplate { + user_template_id: number; + note?: string | null; + username?: string | null; + /** + * @maximum 500 + * @exclusiveMinimum 0 + */ + count: number; + strategy?: UsernameGenerationStrategy; + /** Starting suffix for sequence strategy (defaults to 1; base username digits are ignored) */ + start_number?: number | null; +} + +export type ShadowsocksMethods = typeof ShadowsocksMethods[keyof typeof ShadowsocksMethods]; + + +export const ShadowsocksMethods = { + 'aes-128-gcm': 'aes-128-gcm', + 'aes-256-gcm': 'aes-256-gcm', + 'chacha20-ietf-poly1305': 'chacha20-ietf-poly1305', + 'xchacha20-poly1305': 'xchacha20-poly1305', +} as const; + +export interface BulkUsersProxy { + dry_run?: boolean; + group_ids?: number[]; + admins?: number[]; + users?: number[]; + status?: UserStatus[]; + expire_after?: string | null; + expire_before?: string | null; + method?: ShadowsocksMethods | null; +} + +export interface BulkUsersSelection { + ids?: number[]; +} + +export interface BulkUsersSetOwner { + ids?: number[]; + admin_username: string; +} + +/** + * Re-seat WireGuard peer IPs (same scoping as BulkUser: users, admins, group_ids, status). + */ +export interface BulkWireGuardPeerIPs { + dry_run?: boolean; + group_ids?: number[]; + admins?: number[]; + users?: number[]; + status?: UserStatus[]; + expire_after?: string | null; + expire_before?: string | null; + confirm?: boolean; + replace_all?: boolean; +} + +export type ClientTemplateType = typeof ClientTemplateType[keyof typeof ClientTemplateType]; + + +export const ClientTemplateType = { + clash_subscription: 'clash_subscription', + xray_subscription: 'xray_subscription', + singbox_subscription: 'singbox_subscription', + user_agent: 'user_agent', + grpc_user_agent: 'grpc_user_agent', +} as const; + +export interface ClientTemplateCreate { + /** @maxLength 64 */ + name: string; + template_type: ClientTemplateType; + content: string; + is_default?: boolean; +} + +export interface ClientTemplateModify { + name?: string | null; + content?: string | null; + is_default?: boolean | null; +} + +export interface ClientTemplateResponse { + id: number; + name: string; + template_type: ClientTemplateType; + content: string; + is_default: boolean; + is_system: boolean; +} + +export interface ClientTemplateResponseList { + count: number; + templates?: ClientTemplateResponse[]; +} + +export interface ClientTemplateSimple { + id: number; + name: string; + template_type: ClientTemplateType; + is_default: boolean; +} + +export interface ClientTemplatesSimpleResponse { + templates: ClientTemplateSimple[]; + total: number; +} + +export type ConfigFormat = typeof ConfigFormat[keyof typeof ConfigFormat]; + + +export const ConfigFormat = { + links: 'links', + links_base64: 'links_base64', + xray: 'xray', + wireguard: 'wireguard', + sing_box: 'sing_box', + clash: 'clash', + clash_meta: 'clash_meta', + outline: 'outline', + block: 'block', +} as const; + +export interface Conflict { + detail?: string; +} + +export type CoreCreateConfig = { [key: string]: unknown }; + +export type CoreType = typeof CoreType[keyof typeof CoreType]; + + +export const CoreType = { + xray: 'xray', + wg: 'wg', + mtproto: 'mtproto', + singbox: 'singbox', +} as const; + +export interface CoreCreate { + name?: string | null; + config: CoreCreateConfig; + type?: CoreType | null; + exclude_inbound_tags?: unknown[] | null; + fallbacks_inbound_tags?: unknown[] | null; +} + +export type CoreResponseConfig = { [key: string]: unknown }; + +export interface CoreResponse { + name: string; + config: CoreResponseConfig; + type?: CoreType | null; + exclude_inbound_tags: string[]; + fallbacks_inbound_tags: string[]; + id: number; + created_at: string; +} + +export interface CoreResponseList { + count: number; + cores?: CoreResponse[]; +} + +/** + * Lightweight core model with only id, name and type for performance. + */ +export interface CoreSimple { + id: number; + name: string; + type?: CoreType | null; +} + +/** + * Response model for lightweight core list. + */ +export interface CoresSimpleResponse { + cores: CoreSimple[]; + total: number; +} + +export type CreateHostHttpHeaders = {[key: string]: string} | null; + +export interface XMuxSettingsInput { + max_concurrency?: string | number | null; + max_connections?: string | number | null; + c_max_reuse_times?: string | number | null; + h_max_reusable_secs?: string | number | null; + h_max_request_times?: string | number | null; + h_keep_alive_period?: number | null; +} + +export interface XHttpSettingsInput { + mode?: XHttpModes | null; + no_grpc_header?: boolean | null; + x_padding_bytes?: string | number | null; + x_padding_obfs_mode?: boolean | null; + x_padding_key?: string | null; + x_padding_header?: string | null; + x_padding_placement?: string | null; + x_padding_method?: string | null; + uplink_http_method?: string | null; + session_placement?: string | null; + session_key?: string | null; + seq_placement?: string | null; + seq_key?: string | null; + uplink_data_placement?: string | null; + uplink_data_key?: string | null; + uplink_chunk_size?: string | number | null; + sc_max_each_post_bytes?: string | number | null; + sc_min_posts_interval_ms?: string | number | null; + xmux?: XMuxSettingsInput | null; + download_settings?: number | null; +} + +export interface TransportSettingsInput { + xhttp_settings?: XHttpSettingsInput | null; + grpc_settings?: GRPCSettings | null; + kcp_settings?: KCPSettings | null; + tcp_settings?: TcpSettings | null; + websocket_settings?: WebSocketSettings | null; +} + +export interface XrayMuxSettingsInput { + enabled?: boolean; + concurrency?: number | null; + xudp_concurrency?: number | null; + xudp_proxy_udp_443?: Xudp; +} + +export interface MuxSettingsInput { + sing_box?: SingBoxMuxSettings | null; + clash?: ClashMuxSettings | null; + xray?: XrayMuxSettingsInput | null; +} + +export interface CreateHost { + id?: number | null; + remark: string; + address?: string[]; + inbound_tag?: string | null; + port?: number | null; + sni?: string[] | null; + host?: string[] | null; + path?: string | null; + security?: ProxyHostSecurity; + alpn?: ProxyHostALPN[] | null; + fingerprint?: ProxyHostFingerprint; + allowinsecure?: boolean | null; + is_disabled?: boolean; + http_headers?: CreateHostHttpHeaders; + transport_settings?: TransportSettingsInput | null; + mux_settings?: MuxSettingsInput | null; + fragment_settings?: FragmentSettings | null; + noise_settings?: NoiseSettings | null; + random_user_agent?: boolean; + use_sni_as_host?: boolean; + vless_route?: string | null; + priority: number; + status?: UserStatus[] | null; + ech_config_list?: string | null; + ech_query_strategy?: ECHQueryStrategy | null; + pinned_peer_cert_sha256?: string | null; + verify_peer_cert_by_name?: string[] | null; + wireguard_overrides?: WireGuardHostOverrides | null; + subscription_templates?: SubscriptionTemplates | null; +} + +export interface CreateUserFromTemplate { + user_template_id: number; + note?: string | null; + username: string; +} + +export type DataLimitResetStrategy = typeof DataLimitResetStrategy[keyof typeof DataLimitResetStrategy]; + + +export const DataLimitResetStrategy = { + no_reset: 'no_reset', + day: 'day', + week: 'week', + month: 'month', + year: 'year', +} as const; + +export interface Discord { + enable?: boolean; + token?: string | null; + proxy_url?: string | null; +} + +export interface ExtraSettings { + method?: ShadowsocksMethods | null; +} + +export interface Forbidden { + detail?: string; +} + +export interface General { + default_method?: ShadowsocksMethods; +} + +export type GeoFilseRegion = typeof GeoFilseRegion[keyof typeof GeoFilseRegion]; + + +export const GeoFilseRegion = { + iran: 'iran', + china: 'china', + russia: 'russia', +} as const; + +export interface GroupCreate { + /** + * @minLength 3 + * @maxLength 64 + */ + name: string; + inbound_tags: string[]; + is_disabled?: boolean; +} + +export interface GroupModify { + /** + * @minLength 3 + * @maxLength 64 + */ + name: string; + inbound_tags?: string[] | null; + is_disabled?: boolean; +} + +export interface GroupResponse { + /** + * @minLength 3 + * @maxLength 64 + */ + name: string; + inbound_tags?: string[] | null; + is_disabled?: boolean; + id: number; + total_users?: number; +} + +/** + * Lightweight group model with only id and name for performance. + */ +export interface GroupSimple { + id: number; + name: string; +} + +export interface GroupsResponse { + groups: GroupResponse[]; + total: number; +} + +/** + * Response model for lightweight group list. + */ +export interface GroupsSimpleResponse { + groups: GroupSimple[]; + total: number; +} + +export interface HTTPException { + detail: string; +} + +export type ValidationErrorCtx = { [key: string]: unknown }; + +export interface ValidationError { + loc: (string | number)[]; + msg: string; + type: string; + input?: unknown; + ctx?: ValidationErrorCtx; +} + +export interface HTTPValidationError { + detail?: ValidationError[]; +} + +export interface HWIDSettings { + enabled?: boolean; + forced?: boolean; + /** @minimum 0 */ + fallback_limit?: number; + /** @minimum 0 */ + min_limit?: number; + /** @minimum 0 */ + max_limit?: number; +} + +export interface HostNotificationEnable { + create?: boolean; + modify?: boolean; + delete?: boolean; + modify_hosts?: boolean; +} + +export interface HysteriaSettings { + /** @minLength 1 */ + auth?: string; +} + +export interface InboundSummary { + tag: string; + protocol: string; + network?: string | null; +} + +export interface ModifyUserByTemplate { + user_template_id: number; + note?: string | null; +} + +export interface NextPlanModel { + user_template_id?: number | null; + data_limit?: number | null; + expire?: number | null; + add_remaining_traffic?: boolean; +} + +export type NodeConnectionType = typeof NodeConnectionType[keyof typeof NodeConnectionType]; + + +export const NodeConnectionType = { + grpc: 'grpc', + rest: 'rest', +} as const; + +export interface NodeCoreUpdate { + /** @pattern ^(latest|v?\d+\.\d+\.\d+)$ */ + core_version?: string; +} + +export interface NodeCreate { + name: string; + address: string; + port?: number; + api_port?: number; + /** @exclusiveMinimum 0 */ + usage_coefficient?: number; + connection_type: NodeConnectionType; + server_ca: string; + keep_alive: number; + core_config_id: number; + api_key: string; + data_limit?: number; + data_limit_reset_strategy?: DataLimitResetStrategy; + reset_time?: number; + /** + * @minimum 3 + * @maximum 60 + */ + default_timeout?: number; + /** + * @minimum 3 + * @maximum 60 + */ + internal_timeout?: number; + proxy_url?: string | null; +} + +export interface NodeGeoFilesUpdate { + region?: GeoFilseRegion; +} + +export type NodeStatus = typeof NodeStatus[keyof typeof NodeStatus]; + + +export const NodeStatus = { + connected: 'connected', + connecting: 'connecting', + error: 'error', + disabled: 'disabled', + limited: 'limited', +} as const; + +export interface NodeModify { + name?: string | null; + address?: string | null; + port?: number | null; + api_port?: number; + usage_coefficient?: number | null; + connection_type?: NodeConnectionType | null; + server_ca?: string | null; + keep_alive?: number | null; + core_config_id?: number | null; + api_key?: string | null; + data_limit?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy | null; + reset_time?: number | null; + default_timeout?: number | null; + internal_timeout?: number | null; + proxy_url?: string | null; + status?: NodeStatus | null; +} + +export interface NodeNotificationEnable { + create?: boolean; + modify?: boolean; + delete?: boolean; + connect?: boolean; + error?: boolean; + limited?: boolean; + reset_usage?: boolean; +} + +export interface NodeRealtimeStats { + mem_total: number; + mem_used: number; + cpu_cores: number; + cpu_usage: number; + incoming_bandwidth_speed: number; + outgoing_bandwidth_speed: number; + uptime: number; +} + +export interface NodeResponse { + name: string; + address: string; + port?: number; + api_port?: number; + /** @exclusiveMinimum 0 */ + usage_coefficient?: number; + connection_type: NodeConnectionType; + server_ca: string; + keep_alive: number; + core_config_id: number | null; + api_key: string | null; + data_limit?: number; + data_limit_reset_strategy?: DataLimitResetStrategy; + reset_time?: number; + /** + * @minimum 3 + * @maximum 60 + */ + default_timeout?: number; + /** + * @minimum 3 + * @maximum 60 + */ + internal_timeout?: number; + proxy_url?: string | null; + id: number; + xray_version: string | null; + node_version: string | null; + status: NodeStatus; + message: string | null; + uplink?: number; + downlink?: number; + lifetime_uplink?: number | null; + lifetime_downlink?: number | null; + readonly core_version: string | null; +} + +export interface NodeSettings { + min_node_version?: string; +} + +/** + * Lightweight node model with only id and name for performance. + */ +export interface NodeSimple { + id: number; + name: string; + status: NodeStatus; +} + +export interface NodeStats { + period_start: string; + mem_usage_percentage: number; + cpu_usage_percentage: number; + incoming_bandwidth_speed: number; + outgoing_bandwidth_speed: number; +} + +export type Period = typeof Period[keyof typeof Period]; + + +export const Period = { + minute: 'minute', + hour: 'hour', + day: 'day', + month: 'month', +} as const; + +export interface NodeStatsList { + period?: Period | null; + start: string; + end: string; + stats: NodeStats[]; +} + +export interface NodeUsageStat { + uplink: number; + downlink: number; + period_start: string; +} + +export type NodeUsageStatsListStats = {[key: string]: NodeUsageStat[]}; + +export interface NodeUsageStatsList { + period?: Period | null; + start: string; + end: string; + stats: NodeUsageStatsListStats; +} + +export interface NodesResponse { + nodes: NodeResponse[]; + total: number; +} + +/** + * Response model for lightweight node list. + */ +export interface NodesSimpleResponse { + nodes: NodeSimple[]; + total: number; +} + +export interface NotFound { + detail?: string; +} + +/** + * Channel configuration for sending notifications to a specific entity + */ +export interface NotificationChannel { + telegram_chat_id?: number | null; + telegram_topic_id?: number | null; + discord_webhook_url?: string | null; +} + +/** + * Per-object notification channels + */ +export interface NotificationChannels { + admin?: NotificationChannel; + core?: NotificationChannel; + group?: NotificationChannel; + host?: NotificationChannel; + node?: NotificationChannel; + user?: NotificationChannel; + user_template?: NotificationChannel; +} + +export interface NotificationEnable { + admin?: AdminNotificationEnable; + core?: BaseNotificationEnable; + group?: BaseNotificationEnable; + host?: HostNotificationEnable; + node?: NodeNotificationEnable; + user?: UserNotificationEnable; + user_template?: BaseNotificationEnable; + days_left?: boolean; + percentage_reached?: boolean; +} + +export interface NotificationSettings { + notify_telegram?: boolean; + notify_discord?: boolean; + telegram_api_token?: string | null; + telegram_chat_id?: number | null; + telegram_topic_id?: number | null; + discord_webhook_url?: string | null; + channels?: NotificationChannels; + proxy_url?: string | null; + /** @exclusiveMinimum 1 */ + max_retries: number; +} + +export interface VMessSettings { + id?: string; +} + +export interface VlessSettings { + id?: string; +} + +export interface TrojanSettings { + password?: string; +} + +export interface ShadowsocksSettings { + /** @minLength 22 */ + password?: string; + method?: ShadowsocksMethods; +} + +export interface WireGuardSettings { + private_key?: string | null; + public_key?: string | null; + peer_ips?: string[]; +} + +export interface ProxyTable { + vmess?: VMessSettings; + vless?: VlessSettings; + trojan?: TrojanSettings; + shadowsocks?: ShadowsocksSettings; + wireguard?: WireGuardSettings; + hysteria?: HysteriaSettings; +} + +/** + * Response model for bulk admin deletion + */ +export interface RemoveAdminsResponse { + admins: string[]; + count: number; +} + +/** + * Response model for bulk client template deletion + */ +export interface RemoveClientTemplatesResponse { + templates: string[]; + count: number; +} + +/** + * Response model for bulk core deletion + */ +export interface RemoveCoresResponse { + cores: string[]; + count: number; +} + +/** + * Response model for bulk group deletion + */ +export interface RemoveGroupsResponse { + groups: string[]; + count: number; +} + +/** + * Response model for bulk host deletion + */ +export interface RemoveHostsResponse { + hosts: string[]; + count: number; +} + +/** + * Response model for bulk node deletion + */ +export interface RemoveNodesResponse { + nodes: string[]; + count: number; +} + +/** + * Response model for bulk user template deletion + */ +export interface RemoveUserTemplatesResponse { + templates: string[]; + count: number; +} + +export interface RemoveUsersResponse { + users: string[]; + count: number; +} + +export type RunMethod = typeof RunMethod[keyof typeof RunMethod]; + + +export const RunMethod = { + webhook: 'webhook', + 'long-polling': 'long-polling', +} as const; + +export interface Telegram { + enable?: boolean; + token?: string | null; + webhook_url?: string | null; + webhook_secret?: string | null; + proxy_url?: string | null; + method?: RunMethod; + mini_app_login?: boolean; + mini_app_web_url?: string | null; + for_admins_only?: boolean; +} + +export interface WebhookInfo { + url: string; + secret: string; +} + +export interface Webhook { + enable?: boolean; + webhooks?: WebhookInfo[]; + days_left?: number[]; + usage_percent?: number[]; + /** @exclusiveMinimum 0 */ + timeout: number; + /** @exclusiveMinimum 0 */ + recurrent: number; + proxy_url?: string | null; +} + +export type SubRuleResponseHeaders = { [key: string]: unknown }; + +export interface SubRule { + pattern: string; + target: ConfigFormat; + response_headers?: SubRuleResponseHeaders; +} + +export interface SubFormatEnable { + links?: boolean; + links_base64?: boolean; + xray?: boolean; + wireguard?: boolean; + sing_box?: boolean; + clash?: boolean; + clash_meta?: boolean; + outline?: boolean; +} + +export type SubscriptionResponseHeaders = { [key: string]: unknown }; + +export interface Subscription { + url_prefix?: string; + update_interval?: number; + support_url?: string; + profile_title?: string; + /** @maxLength 128 */ + announce?: string; + announce_url?: string; + response_headers?: SubscriptionResponseHeaders; + rules: SubRule[]; + manual_sub_request?: SubFormatEnable; + applications?: Application[]; + allow_browser_config?: boolean; + disable_sub_template?: boolean; + randomize_order?: boolean; +} + +export interface SettingsSchema { + telegram?: Telegram | null; + discord?: Discord | null; + webhook?: Webhook | null; + notification_settings?: NotificationSettings | null; + notification_enable?: NotificationEnable | null; + subscription?: Subscription | null; + hwid?: HWIDSettings | null; + general?: General | null; +} + +export interface SubscriptionUserResponse { + proxy_settings?: ProxyTable; + expire?: string | number | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy | null; + on_hold_expire_duration?: number | null; + on_hold_timeout?: string | number | null; + group_ids?: number[] | null; + hwid_limit?: number | null; + next_plan?: NextPlanModel | null; + id: number; + username: string; + status: UserStatus; + used_traffic: number; + lifetime_used_traffic?: number; + created_at: string; + edit_at?: string | null; + online_at?: string | null; + ip?: string | null; +} + +export interface SystemStats { + version: string; + uptime_seconds: number; + mem_total?: number | null; + mem_used?: number | null; + disk_total?: number | null; + disk_used?: number | null; + cpu_cores?: number | null; + cpu_usage?: number | null; + total_user: number; + online_users: number; + active_users: number; + on_hold_users: number; + disabled_users: number; + expired_users: number; + limited_users: number; + incoming_bandwidth: number; + outgoing_bandwidth: number; +} + +export interface Token { + access_token: string; + token_type?: string; +} + +export interface Unauthorized { + detail?: string; +} + +export type UsageTable = typeof UsageTable[keyof typeof UsageTable]; + + +export const UsageTable = { + node_user_usages: 'node_user_usages', + node_usages: 'node_usages', +} as const; + +export type UserCountMetric = typeof UserCountMetric[keyof typeof UserCountMetric]; + + +export const UserCountMetric = { + online: 'online', + expired: 'expired', + limited: 'limited', +} as const; + +export interface UserCountMetricStat { + count: number; + period_start: string; +} + +export type UserCountMetricStatsListStats = {[key: string]: UserCountMetricStat[]}; + +export interface UserCountMetricStatsList { + period?: Period | null; + start: string; + end: string; + metric: UserCountMetric; + stats: UserCountMetricStatsListStats; +} + +export interface UserCreate { + proxy_settings?: ProxyTable; + expire?: string | number | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy | null; + note?: string | null; + on_hold_expire_duration?: number | null; + on_hold_timeout?: string | number | null; + group_ids?: number[] | null; + auto_delete_in_days?: number | null; + hwid_limit?: number | null; + next_plan?: NextPlanModel | null; + username: string; + status?: UserStatus | null; +} + +export interface UserHWIDResponse { + id: number; + hwid: string; + device_os?: string | null; + os_version?: string | null; + device_model?: string | null; + created_at: string; + last_used_at: string; +} + +export interface UserHWIDListResponse { + hwids: UserHWIDResponse[]; + count: number; +} + +export type UserIPListIps = {[key: string]: number}; + +/** + * User IP list - mapping of IP addresses to connection counts + */ +export interface UserIPList { + ips: UserIPListIps; +} + +export type UserIPListAllNodes = {[key: string]: UserIPList | null}; + +/** + * User IP lists for all nodes + */ +export interface UserIPListAll { + nodes: UserIPListAllNodes; +} + +export interface UserModify { + proxy_settings?: ProxyTable | null; + expire?: string | number | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy | null; + note?: string | null; + on_hold_expire_duration?: number | null; + on_hold_timeout?: string | number | null; + group_ids?: number[] | null; + auto_delete_in_days?: number | null; + hwid_limit?: number | null; + next_plan?: NextPlanModel | null; + status?: UserStatus | null; +} + +export interface UserResponse { + proxy_settings?: ProxyTable; + expire?: string | number | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy | null; + note?: string | null; + on_hold_expire_duration?: number | null; + on_hold_timeout?: string | number | null; + group_ids?: number[] | null; + auto_delete_in_days?: number | null; + hwid_limit?: number | null; + next_plan?: NextPlanModel | null; + id: number; + username: string; + status: UserStatus; + used_traffic: number; + lifetime_used_traffic?: number; + created_at: string; + edit_at?: string | null; + online_at?: string | null; + subscription_url?: string; + admin?: AdminBase | null; +} + +/** + * Lightweight user model with only id and username for performance. + */ +export interface UserSimple { + id: number; + username: string; +} + +export type UserStatusCreate = typeof UserStatusCreate[keyof typeof UserStatusCreate]; + + +export const UserStatusCreate = { + active: 'active', + on_hold: 'on_hold', +} as const; + +export interface UserSubscriptionUpdateChartSegment { + name: string; + count: number; + percentage: number; +} + +export interface UserSubscriptionUpdateChart { + total: number; + segments?: UserSubscriptionUpdateChartSegment[]; +} + +export interface UserSubscriptionUpdateSchema { + created_at: string; + user_agent: string; + ip?: string | null; + hwid?: string | null; +} + +export interface UserSubscriptionUpdateList { + updates?: UserSubscriptionUpdateSchema[]; + count: number; +} + +export interface UserTemplateCreate { + name?: string | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + hwid_limit?: number | null; + /** expire_duration can be 0 or greater in seconds */ + expire_duration?: number | null; + username_prefix?: string | null; + username_suffix?: string | null; + group_ids: number[]; + extra_settings?: ExtraSettings | null; + status?: UserStatusCreate | null; + reset_usages?: boolean | null; + on_hold_timeout?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy; + is_disabled?: boolean | null; +} + +export interface UserTemplateModify { + name?: string | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + hwid_limit?: number | null; + /** expire_duration can be 0 or greater in seconds */ + expire_duration?: number | null; + username_prefix?: string | null; + username_suffix?: string | null; + group_ids?: number[] | null; + extra_settings?: ExtraSettings | null; + status?: UserStatusCreate | null; + reset_usages?: boolean | null; + on_hold_timeout?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy; + is_disabled?: boolean | null; +} + +export interface UserTemplateResponse { + name?: string | null; + /** data_limit can be 0 or greater */ + data_limit?: number | null; + hwid_limit?: number | null; + /** expire_duration can be 0 or greater in seconds */ + expire_duration?: number | null; + username_prefix?: string | null; + username_suffix?: string | null; + group_ids: number[]; + extra_settings?: ExtraSettings | null; + status?: UserStatusCreate | null; + reset_usages?: boolean | null; + on_hold_timeout?: number | null; + data_limit_reset_strategy?: DataLimitResetStrategy; + is_disabled?: boolean | null; + id: number; +} + +/** + * Lightweight user template model with only id and name for performance. + */ +export interface UserTemplateSimple { + id: number; + name?: string | null; +} + +/** + * Response model for lightweight user template list. + */ +export interface UserTemplatesSimpleResponse { + templates: UserTemplateSimple[]; + total: number; +} + +export interface UserUsageStat { + total_traffic: number; + period_start: string; +} + +export type UserUsageStatsListStats = {[key: string]: UserUsageStat[]}; + +export interface UserUsageStatsList { + period?: Period | null; + start: string; + end: string; + stats: UserUsageStatsListStats; +} + +export interface UsersResponse { + users: UserResponse[]; + total: number; +} + +/** + * Response model for lightweight user list. + */ +export interface UsersSimpleResponse { + users: UserSimple[]; + total: number; +} + +export interface WireGuardPeerIPsReallocateResponse { + wireguard_inbound_tags: number; + candidates: number; + updated: number; + dry_run: boolean; + sample_usernames: string[]; + affected_users: number; +} + +export interface WorkerHealth { + status: string; + response_time_ms?: number | null; + error?: string | null; +} + +export interface WorkersHealth { + scheduler: WorkerHealth; + node: WorkerHealth; +} + +export type Health200 = { [key: string]: unknown }; + +export type GetAdminsParams = { +ids?: number[] | null; +usernames?: string[] | null; +username?: string | null; +offset?: number | null; +limit?: number | null; +sort?: string | null; +}; + +export type GetAdminsSimpleParams = { +ids?: number[] | null; +usernames?: string[] | null; +search?: string | null; +offset?: number | null; +limit?: number | null; +sort?: string | null; +all?: boolean; +}; + +export type GetAdminUsageParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetAdminUsageByUsernameParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetAdminUsageByIdParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetSystemStatsParams = { +admin_username?: string | null; +}; + +export type GetAllGroupsParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +}; + +export type GetGroupsSimpleParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +search?: string | null; +sort?: string | null; +all?: boolean; +}; + +export type ModifyCoreConfigParams = { +restart_nodes: boolean; +}; + +export type DeleteCoreConfigParams = { +restart_nodes?: boolean; +}; + +export type GetAllCoresParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +}; + +export type GetCoresSimpleParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +search?: string | null; +sort?: string | null; +all?: boolean; +}; + +export type GetClientTemplatesParams = { +ids?: number[] | null; +template_type?: ClientTemplateType | null; +offset?: number | null; +limit?: number | null; +}; + +export type GetClientTemplatesSimpleParams = { +ids?: number[] | null; +template_type?: ClientTemplateType | null; +offset?: number | null; +limit?: number | null; +search?: string | null; +sort?: string | null; +all?: boolean; +}; + +export type GetHostsParams = { +ids?: number[] | null; +offset?: number; +limit?: number; +}; + +export type GetUsageParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetUserCountMetricParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetNodesParams = { +core_id?: number | null; +offset?: number | null; +limit?: number | null; +ids?: number[] | null; +status?: NodeStatus | NodeStatus[] | null; +enabled?: boolean; +search?: string | null; +}; + +export type GetNodesSimpleParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +search?: string | null; +sort?: string | null; +all?: boolean; +}; + +export type ReconnectAllNodeParams = { +core_id?: number | null; +}; + +export type SyncNodeParams = { +flush_users?: boolean; +}; + +export type GetNodeStatsPeriodicParams = { +period?: Period; +start?: string | null; +end?: string | null; +}; + +export type RealtimeNodesStats200 = {[key: string]: NodeRealtimeStats | null}; + +export type UserOnlineStats200 = {[key: string]: number}; + +export type ClearUsageDataParams = { +start?: string | null; +end?: string | null; +}; + +export type GetUsersSubUpdateChartParams = { +user_id?: number | null; +username?: string | null; +admin_id?: number | null; +}; + +export type SetOwnerParams = { +admin_username: string; +}; + +export type SetOwnerByUsernameParams = { +admin_username: string; +}; + +export type SetOwnerByIdParams = { +admin_username: string; +}; + +export type GetUserSubUpdateListParams = { +offset?: number; +limit?: number; +}; + +export type GetUserSubUpdateListByUsernameParams = { +offset?: number; +limit?: number; +}; + +export type GetUserSubUpdateListByIdParams = { +offset?: number; +limit?: number; +}; + +export type GetUsersParams = { +offset?: number | null; +limit?: number | null; +ids?: number[] | null; +username?: string[] | null; +usernames?: string[] | null; +admin?: string[] | null; +admin_ids?: number[] | null; +group?: number[] | null; +search?: string | null; +status?: UserStatus | UserStatus[] | null; +sort?: string | null; +proxy_id?: string | null; +data_limit_reset_strategy?: DataLimitResetStrategy | DataLimitResetStrategy[] | null; +data_limit_min?: number | null; +data_limit_max?: number | null; +expire_after?: string | null; +expire_before?: string | null; +online_after?: string | null; +online_before?: string | null; +online?: boolean; +no_data_limit?: boolean; +no_expire?: boolean; +load_sub?: boolean; +}; + +export type GetUsersSimpleParams = { +ids?: number[] | null; +usernames?: string[] | null; +offset?: number | null; +limit?: number | null; +search?: string | null; +sort?: string | null; +all?: boolean; +}; + +export type GetUserUsageParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetUserUsageByUsernameParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetUserUsageByIdParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +}; + +export type GetUsersUsageParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +admin?: string[] | null; +}; + +export type GetUsersCountMetricParams = { +period?: Period; +node_id?: number | null; +group_by_node?: boolean; +start?: string | null; +end?: string | null; +admin?: string[] | null; +}; + +export type GetExpiredUsersParams = { +admin_username?: string | null; +target?: GetExpiredUsersTarget; +expired_after?: string | null; +expired_before?: string | null; +}; + +export type GetExpiredUsersTarget = typeof GetExpiredUsersTarget[keyof typeof GetExpiredUsersTarget]; + + +export const GetExpiredUsersTarget = { + expired: 'expired', + limited: 'limited', +} as const; + +export type DeleteExpiredUsersParams = { +admin_username?: string | null; +target?: DeleteExpiredUsersTarget; +expired_after?: string | null; +expired_before?: string | null; +}; + +export type DeleteExpiredUsersTarget = typeof DeleteExpiredUsersTarget[keyof typeof DeleteExpiredUsersTarget]; + + +export const DeleteExpiredUsersTarget = { + expired: 'expired', + limited: 'limited', +} as const; + +export type GetSubUserUsageParams = { +period?: Period; +start?: string | null; +end?: string | null; +}; + +export type GetUserTemplatesParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +}; + +export type GetUserTemplatesSimpleParams = { +ids?: number[] | null; +offset?: number | null; +limit?: number | null; +search?: string | null; +sort?: string | null; +all?: boolean; +}; + +type SecondParameter unknown> = Parameters[1]; + + + +export const getBaseUrl = () => { + + + + + return `/` +} + +/** + * @summary Base + */ +export const base = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getBaseUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getBaseQueryKey = () => { + return [ + `/` + ] as const; + } + + +export const getBaseQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getBaseQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => base({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type BaseQueryResult = NonNullable>> +export type BaseQueryError = ErrorType + + +export function useBase>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useBase>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useBase>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Base + */ + +export function useBase>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getBaseQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getHealthUrl = () => { + + + + + return `/health` +} + +/** + * @summary Health + */ +export const health = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getHealthUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getHealthQueryKey = () => { + return [ + `/health` + ] as const; + } + + +export const getHealthQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getHealthQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => health({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type HealthQueryResult = NonNullable>> +export type HealthQueryError = ErrorType + + +export function useHealth>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useHealth>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useHealth>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Health + */ + +export function useHealth>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getHealthQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getAdminTokenUrl = () => { + + + + + return `/api/admin/token` +} + +/** + * Authenticate an admin and issue a token. + * @summary Admin Token + */ +export const adminToken = async (bodyAdminTokenApiAdminTokenPost: BodyAdminTokenApiAdminTokenPost, options?: RequestInit): Promise => { + const formUrlEncoded = new URLSearchParams(); +if(bodyAdminTokenApiAdminTokenPost.grant_type !== undefined && bodyAdminTokenApiAdminTokenPost.grant_type !== null) { + formUrlEncoded.append(`grant_type`, bodyAdminTokenApiAdminTokenPost.grant_type); + } +formUrlEncoded.append(`username`, bodyAdminTokenApiAdminTokenPost.username); +formUrlEncoded.append(`password`, bodyAdminTokenApiAdminTokenPost.password); +if(bodyAdminTokenApiAdminTokenPost.scope !== undefined) { + formUrlEncoded.append(`scope`, bodyAdminTokenApiAdminTokenPost.scope); + } +if(bodyAdminTokenApiAdminTokenPost.client_id !== undefined && bodyAdminTokenApiAdminTokenPost.client_id !== null) { + formUrlEncoded.append(`client_id`, bodyAdminTokenApiAdminTokenPost.client_id); + } +if(bodyAdminTokenApiAdminTokenPost.client_secret !== undefined && bodyAdminTokenApiAdminTokenPost.client_secret !== null) { + formUrlEncoded.append(`client_secret`, bodyAdminTokenApiAdminTokenPost.client_secret); + } + + return orvalFetcher(getAdminTokenUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded', ...options?.headers }, + body: formUrlEncoded + } +);} + + + + +export const getAdminTokenMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['adminToken']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return adminToken(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type AdminTokenMutationResult = NonNullable>> + export type AdminTokenMutationBody = BodyType + export type AdminTokenMutationError = ErrorType + + /** + * @summary Admin Token + */ +export const useAdminToken = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getAdminTokenMutationOptions(options), queryClient); + } + +export const getAdminMiniAppTokenUrl = () => { + + + + + return `/api/admin/miniapp/token` +} + +/** + * Authenticate an admin and issue a token. + * @summary Admin Mini App Token + */ +export const adminMiniAppToken = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getAdminMiniAppTokenUrl(), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getAdminMiniAppTokenMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,void, TContext> => { + +const mutationKey = ['adminMiniAppToken']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, void> = () => { + + + return adminMiniAppToken(requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type AdminMiniAppTokenMutationResult = NonNullable>> + + export type AdminMiniAppTokenMutationError = ErrorType + + /** + * @summary Admin Mini App Token + */ +export const useAdminMiniAppToken = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + void, + TContext + > => { + return useMutation(getAdminMiniAppTokenMutationOptions(options), queryClient); + } + +export const getGetCurrentAdminUrl = () => { + + + + + return `/api/admin` +} + +/** + * Retrieve the current authenticated admin. + * @summary Get Current Admin + */ +export const getCurrentAdmin = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetCurrentAdminUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetCurrentAdminQueryKey = () => { + return [ + `/api/admin` + ] as const; + } + + +export const getGetCurrentAdminQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetCurrentAdminQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getCurrentAdmin({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetCurrentAdminQueryResult = NonNullable>> +export type GetCurrentAdminQueryError = ErrorType + + +export function useGetCurrentAdmin>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetCurrentAdmin>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetCurrentAdmin>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Current Admin + */ + +export function useGetCurrentAdmin>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetCurrentAdminQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getCreateAdminUrl = () => { + + + + + return `/api/admin` +} + +/** + * Create a new admin if the current admin has sudo privileges. + * @summary Create Admin + */ +export const createAdmin = async (adminCreate: AdminCreate, options?: RequestInit): Promise => { + + return orvalFetcher(getCreateAdminUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(adminCreate) + } +);} + + + + +export const getCreateAdminMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['createAdmin']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return createAdmin(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type CreateAdminMutationResult = NonNullable>> + export type CreateAdminMutationBody = BodyType + export type CreateAdminMutationError = ErrorType + + /** + * @summary Create Admin + */ +export const useCreateAdmin = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateAdminMutationOptions(options), queryClient); + } + +export const getModifyAdminUrl = (username: string,) => { + + + + + return `/api/admin/${username}` +} + +/** + * Modify an existing admin's details. + * @summary Modify Admin + */ +export const modifyAdmin = async (username: string, + adminModify: AdminModify, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyAdminUrl(username), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(adminModify) + } +);} + + + + +export const getModifyAdminMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;data: BodyType}, TContext> => { + +const mutationKey = ['modifyAdmin']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string;data: BodyType}> = (props) => { + const {username,data} = props ?? {}; + + return modifyAdmin(username,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyAdminMutationResult = NonNullable>> + export type ModifyAdminMutationBody = BodyType + export type ModifyAdminMutationError = ErrorType + + /** + * @summary Modify Admin + */ +export const useModifyAdmin = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;data: BodyType}, + TContext + > => { + return useMutation(getModifyAdminMutationOptions(options), queryClient); + } + +export const getRemoveAdminUrl = (username: string,) => { + + + + + return `/api/admin/${username}` +} + +/** + * Remove an admin from the database. + * @summary Remove Admin + */ +export const removeAdmin = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveAdminUrl(username), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveAdminMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['removeAdmin']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return removeAdmin(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveAdminMutationResult = NonNullable>> + + export type RemoveAdminMutationError = ErrorType + + /** + * @summary Remove Admin + */ +export const useRemoveAdmin = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRemoveAdminMutationOptions(options), queryClient); + } + +export const getModifyAdminByUsernameUrl = (username: string,) => { + + + + + return `/api/admin/by-username/${username}` +} + +/** + * @summary Modify Admin By Username + */ +export const modifyAdminByUsername = async (username: string, + adminModify: AdminModify, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyAdminByUsernameUrl(username), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(adminModify) + } +);} + + + + +export const getModifyAdminByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;data: BodyType}, TContext> => { + +const mutationKey = ['modifyAdminByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string;data: BodyType}> = (props) => { + const {username,data} = props ?? {}; + + return modifyAdminByUsername(username,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyAdminByUsernameMutationResult = NonNullable>> + export type ModifyAdminByUsernameMutationBody = BodyType + export type ModifyAdminByUsernameMutationError = ErrorType + + /** + * @summary Modify Admin By Username + */ +export const useModifyAdminByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;data: BodyType}, + TContext + > => { + return useMutation(getModifyAdminByUsernameMutationOptions(options), queryClient); + } + +export const getRemoveAdminByUsernameUrl = (username: string,) => { + + + + + return `/api/admin/by-username/${username}` +} + +/** + * @summary Remove Admin By Username + */ +export const removeAdminByUsername = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveAdminByUsernameUrl(username), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveAdminByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['removeAdminByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return removeAdminByUsername(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveAdminByUsernameMutationResult = NonNullable>> + + export type RemoveAdminByUsernameMutationError = ErrorType + + /** + * @summary Remove Admin By Username + */ +export const useRemoveAdminByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRemoveAdminByUsernameMutationOptions(options), queryClient); + } + +export const getModifyAdminByIdUrl = (adminId: number,) => { + + + + + return `/api/admin/by-id/${adminId}` +} + +/** + * @summary Modify Admin By Id + */ +export const modifyAdminById = async (adminId: number, + adminModify: AdminModify, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyAdminByIdUrl(adminId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(adminModify) + } +);} + + + + +export const getModifyAdminByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{adminId: number;data: BodyType}, TContext> => { + +const mutationKey = ['modifyAdminById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {adminId: number;data: BodyType}> = (props) => { + const {adminId,data} = props ?? {}; + + return modifyAdminById(adminId,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyAdminByIdMutationResult = NonNullable>> + export type ModifyAdminByIdMutationBody = BodyType + export type ModifyAdminByIdMutationError = ErrorType + + /** + * @summary Modify Admin By Id + */ +export const useModifyAdminById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {adminId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyAdminByIdMutationOptions(options), queryClient); + } + +export const getRemoveAdminByIdUrl = (adminId: number,) => { + + + + + return `/api/admin/by-id/${adminId}` +} + +/** + * @summary Remove Admin By Id + */ +export const removeAdminById = async (adminId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveAdminByIdUrl(adminId), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveAdminByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{adminId: number}, TContext> => { + +const mutationKey = ['removeAdminById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {adminId: number}> = (props) => { + const {adminId} = props ?? {}; + + return removeAdminById(adminId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveAdminByIdMutationResult = NonNullable>> + + export type RemoveAdminByIdMutationError = ErrorType + + /** + * @summary Remove Admin By Id + */ +export const useRemoveAdminById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {adminId: number}, + TContext + > => { + return useMutation(getRemoveAdminByIdMutationOptions(options), queryClient); + } + +export const getGetAdminsUrl = (params?: GetAdminsParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/admins?${stringifiedParams}` : `/api/admins` +} + +/** + * Fetch a list of admins with optional filters for pagination and username. + * @summary Get Admins + */ +export const getAdmins = async (params?: GetAdminsParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAdminsUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAdminsQueryKey = (params?: GetAdminsParams,) => { + return [ + `/api/admins`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAdminsQueryOptions = >, TError = ErrorType>(params?: GetAdminsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAdminsQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAdmins(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAdminsQueryResult = NonNullable>> +export type GetAdminsQueryError = ErrorType + + +export function useGetAdmins>, TError = ErrorType>( + params: undefined | GetAdminsParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAdmins>, TError = ErrorType>( + params?: GetAdminsParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAdmins>, TError = ErrorType>( + params?: GetAdminsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Admins + */ + +export function useGetAdmins>, TError = ErrorType>( + params?: GetAdminsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAdminsQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetAdminsSimpleUrl = (params?: GetAdminsSimpleParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/admins/simple?${stringifiedParams}` : `/api/admins/simple` +} + +/** + * Returns only id and username for admins. Optimized for dropdowns and autocomplete. + * @summary Get lightweight admin list + */ +export const getAdminsSimple = async (params?: GetAdminsSimpleParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAdminsSimpleUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAdminsSimpleQueryKey = (params?: GetAdminsSimpleParams,) => { + return [ + `/api/admins/simple`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAdminsSimpleQueryOptions = >, TError = ErrorType>(params?: GetAdminsSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAdminsSimpleQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAdminsSimple(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAdminsSimpleQueryResult = NonNullable>> +export type GetAdminsSimpleQueryError = ErrorType + + +export function useGetAdminsSimple>, TError = ErrorType>( + params: undefined | GetAdminsSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAdminsSimple>, TError = ErrorType>( + params?: GetAdminsSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAdminsSimple>, TError = ErrorType>( + params?: GetAdminsSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get lightweight admin list + */ + +export function useGetAdminsSimple>, TError = ErrorType>( + params?: GetAdminsSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAdminsSimpleQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetAdminUsageUrl = (username: string, + params?: GetAdminUsageParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/admin/${username}/usage?${stringifiedParams}` : `/api/admin/${username}/usage` +} + +/** + * Get admin usage aggregated from user traffic. + * @summary Get Admin Usage + */ +export const getAdminUsage = async (username: string, + params?: GetAdminUsageParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAdminUsageUrl(username,params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAdminUsageQueryKey = (username: string, + params?: GetAdminUsageParams,) => { + return [ + `/api/admin/${username}/usage`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAdminUsageQueryOptions = >, TError = ErrorType>(username: string, + params?: GetAdminUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAdminUsageQueryKey(username,params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAdminUsage(username,params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAdminUsageQueryResult = NonNullable>> +export type GetAdminUsageQueryError = ErrorType + + +export function useGetAdminUsage>, TError = ErrorType>( + username: string, + params: undefined | GetAdminUsageParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAdminUsage>, TError = ErrorType>( + username: string, + params?: GetAdminUsageParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAdminUsage>, TError = ErrorType>( + username: string, + params?: GetAdminUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Admin Usage + */ + +export function useGetAdminUsage>, TError = ErrorType>( + username: string, + params?: GetAdminUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAdminUsageQueryOptions(username,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetAdminUsageByUsernameUrl = (username: string, + params?: GetAdminUsageByUsernameParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/admin/by-username/${username}/usage?${stringifiedParams}` : `/api/admin/by-username/${username}/usage` +} + +/** + * @summary Get Admin Usage By Username + */ +export const getAdminUsageByUsername = async (username: string, + params?: GetAdminUsageByUsernameParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAdminUsageByUsernameUrl(username,params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAdminUsageByUsernameQueryKey = (username: string, + params?: GetAdminUsageByUsernameParams,) => { + return [ + `/api/admin/by-username/${username}/usage`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAdminUsageByUsernameQueryOptions = >, TError = ErrorType>(username: string, + params?: GetAdminUsageByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAdminUsageByUsernameQueryKey(username,params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAdminUsageByUsername(username,params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAdminUsageByUsernameQueryResult = NonNullable>> +export type GetAdminUsageByUsernameQueryError = ErrorType + + +export function useGetAdminUsageByUsername>, TError = ErrorType>( + username: string, + params: undefined | GetAdminUsageByUsernameParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAdminUsageByUsername>, TError = ErrorType>( + username: string, + params?: GetAdminUsageByUsernameParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAdminUsageByUsername>, TError = ErrorType>( + username: string, + params?: GetAdminUsageByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Admin Usage By Username + */ + +export function useGetAdminUsageByUsername>, TError = ErrorType>( + username: string, + params?: GetAdminUsageByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAdminUsageByUsernameQueryOptions(username,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetAdminUsageByIdUrl = (adminId: number, + params?: GetAdminUsageByIdParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/admin/by-id/${adminId}/usage?${stringifiedParams}` : `/api/admin/by-id/${adminId}/usage` +} + +/** + * @summary Get Admin Usage By Id + */ +export const getAdminUsageById = async (adminId: number, + params?: GetAdminUsageByIdParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAdminUsageByIdUrl(adminId,params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAdminUsageByIdQueryKey = (adminId: number, + params?: GetAdminUsageByIdParams,) => { + return [ + `/api/admin/by-id/${adminId}/usage`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAdminUsageByIdQueryOptions = >, TError = ErrorType>(adminId: number, + params?: GetAdminUsageByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAdminUsageByIdQueryKey(adminId,params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAdminUsageById(adminId,params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: adminId !== null && adminId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAdminUsageByIdQueryResult = NonNullable>> +export type GetAdminUsageByIdQueryError = ErrorType + + +export function useGetAdminUsageById>, TError = ErrorType>( + adminId: number, + params: undefined | GetAdminUsageByIdParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAdminUsageById>, TError = ErrorType>( + adminId: number, + params?: GetAdminUsageByIdParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAdminUsageById>, TError = ErrorType>( + adminId: number, + params?: GetAdminUsageByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Admin Usage By Id + */ + +export function useGetAdminUsageById>, TError = ErrorType>( + adminId: number, + params?: GetAdminUsageByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAdminUsageByIdQueryOptions(adminId,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getDisableAllActiveUsersUrl = (username: string,) => { + + + + + return `/api/admin/${username}/users/disable` +} + +/** + * Disable all active users under a specific admin + * @summary Disable All Active Users + */ +export const disableAllActiveUsers = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getDisableAllActiveUsersUrl(username), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getDisableAllActiveUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['disableAllActiveUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return disableAllActiveUsers(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type DisableAllActiveUsersMutationResult = NonNullable>> + + export type DisableAllActiveUsersMutationError = ErrorType + + /** + * @summary Disable All Active Users + */ +export const useDisableAllActiveUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getDisableAllActiveUsersMutationOptions(options), queryClient); + } + +export const getDisableAllActiveUsersByUsernameUrl = (username: string,) => { + + + + + return `/api/admin/by-username/${username}/users/disable` +} + +/** + * @summary Disable All Active Users By Username + */ +export const disableAllActiveUsersByUsername = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getDisableAllActiveUsersByUsernameUrl(username), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getDisableAllActiveUsersByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['disableAllActiveUsersByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return disableAllActiveUsersByUsername(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type DisableAllActiveUsersByUsernameMutationResult = NonNullable>> + + export type DisableAllActiveUsersByUsernameMutationError = ErrorType + + /** + * @summary Disable All Active Users By Username + */ +export const useDisableAllActiveUsersByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getDisableAllActiveUsersByUsernameMutationOptions(options), queryClient); + } + +export const getDisableAllActiveUsersByIdUrl = (adminId: number,) => { + + + + + return `/api/admin/by-id/${adminId}/users/disable` +} + +/** + * @summary Disable All Active Users By Id + */ +export const disableAllActiveUsersById = async (adminId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getDisableAllActiveUsersByIdUrl(adminId), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getDisableAllActiveUsersByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{adminId: number}, TContext> => { + +const mutationKey = ['disableAllActiveUsersById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {adminId: number}> = (props) => { + const {adminId} = props ?? {}; + + return disableAllActiveUsersById(adminId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type DisableAllActiveUsersByIdMutationResult = NonNullable>> + + export type DisableAllActiveUsersByIdMutationError = ErrorType + + /** + * @summary Disable All Active Users By Id + */ +export const useDisableAllActiveUsersById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {adminId: number}, + TContext + > => { + return useMutation(getDisableAllActiveUsersByIdMutationOptions(options), queryClient); + } + +export const getActivateAllDisabledUsersUrl = (username: string,) => { + + + + + return `/api/admin/${username}/users/activate` +} + +/** + * Activate all disabled users under a specific admin + * @summary Activate All Disabled Users + */ +export const activateAllDisabledUsers = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getActivateAllDisabledUsersUrl(username), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getActivateAllDisabledUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['activateAllDisabledUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return activateAllDisabledUsers(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ActivateAllDisabledUsersMutationResult = NonNullable>> + + export type ActivateAllDisabledUsersMutationError = ErrorType + + /** + * @summary Activate All Disabled Users + */ +export const useActivateAllDisabledUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getActivateAllDisabledUsersMutationOptions(options), queryClient); + } + +export const getActivateAllDisabledUsersByUsernameUrl = (username: string,) => { + + + + + return `/api/admin/by-username/${username}/users/activate` +} + +/** + * @summary Activate All Disabled Users By Username + */ +export const activateAllDisabledUsersByUsername = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getActivateAllDisabledUsersByUsernameUrl(username), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getActivateAllDisabledUsersByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['activateAllDisabledUsersByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return activateAllDisabledUsersByUsername(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ActivateAllDisabledUsersByUsernameMutationResult = NonNullable>> + + export type ActivateAllDisabledUsersByUsernameMutationError = ErrorType + + /** + * @summary Activate All Disabled Users By Username + */ +export const useActivateAllDisabledUsersByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getActivateAllDisabledUsersByUsernameMutationOptions(options), queryClient); + } + +export const getActivateAllDisabledUsersByIdUrl = (adminId: number,) => { + + + + + return `/api/admin/by-id/${adminId}/users/activate` +} + +/** + * @summary Activate All Disabled Users By Id + */ +export const activateAllDisabledUsersById = async (adminId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getActivateAllDisabledUsersByIdUrl(adminId), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getActivateAllDisabledUsersByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{adminId: number}, TContext> => { + +const mutationKey = ['activateAllDisabledUsersById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {adminId: number}> = (props) => { + const {adminId} = props ?? {}; + + return activateAllDisabledUsersById(adminId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ActivateAllDisabledUsersByIdMutationResult = NonNullable>> + + export type ActivateAllDisabledUsersByIdMutationError = ErrorType + + /** + * @summary Activate All Disabled Users By Id + */ +export const useActivateAllDisabledUsersById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {adminId: number}, + TContext + > => { + return useMutation(getActivateAllDisabledUsersByIdMutationOptions(options), queryClient); + } + +export const getRemoveAllUsersUrl = (username: string,) => { + + + + + return `/api/admin/${username}/users` +} + +/** + * Remove all users under a specific admin. + * @summary Remove All Users + */ +export const removeAllUsers = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveAllUsersUrl(username), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveAllUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['removeAllUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return removeAllUsers(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveAllUsersMutationResult = NonNullable>> + + export type RemoveAllUsersMutationError = ErrorType + + /** + * @summary Remove All Users + */ +export const useRemoveAllUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRemoveAllUsersMutationOptions(options), queryClient); + } + +export const getRemoveAllUsersByUsernameUrl = (username: string,) => { + + + + + return `/api/admin/by-username/${username}/users` +} + +/** + * @summary Remove All Users By Username + */ +export const removeAllUsersByUsername = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveAllUsersByUsernameUrl(username), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveAllUsersByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['removeAllUsersByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return removeAllUsersByUsername(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveAllUsersByUsernameMutationResult = NonNullable>> + + export type RemoveAllUsersByUsernameMutationError = ErrorType + + /** + * @summary Remove All Users By Username + */ +export const useRemoveAllUsersByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRemoveAllUsersByUsernameMutationOptions(options), queryClient); + } + +export const getRemoveAllUsersByIdUrl = (adminId: number,) => { + + + + + return `/api/admin/by-id/${adminId}/users` +} + +/** + * @summary Remove All Users By Id + */ +export const removeAllUsersById = async (adminId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveAllUsersByIdUrl(adminId), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveAllUsersByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{adminId: number}, TContext> => { + +const mutationKey = ['removeAllUsersById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {adminId: number}> = (props) => { + const {adminId} = props ?? {}; + + return removeAllUsersById(adminId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveAllUsersByIdMutationResult = NonNullable>> + + export type RemoveAllUsersByIdMutationError = ErrorType + + /** + * @summary Remove All Users By Id + */ +export const useRemoveAllUsersById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {adminId: number}, + TContext + > => { + return useMutation(getRemoveAllUsersByIdMutationOptions(options), queryClient); + } + +export const getResetAdminUsageUrl = (username: string,) => { + + + + + return `/api/admin/${username}/reset` +} + +/** + * Resets usage of admin. + * @summary Reset Admin Usage + */ +export const resetAdminUsage = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getResetAdminUsageUrl(username), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getResetAdminUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['resetAdminUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return resetAdminUsage(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ResetAdminUsageMutationResult = NonNullable>> + + export type ResetAdminUsageMutationError = ErrorType + + /** + * @summary Reset Admin Usage + */ +export const useResetAdminUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getResetAdminUsageMutationOptions(options), queryClient); + } + +export const getResetAdminUsageByUsernameUrl = (username: string,) => { + + + + + return `/api/admin/by-username/${username}/reset` +} + +/** + * @summary Reset Admin Usage By Username + */ +export const resetAdminUsageByUsername = async (username: string, options?: RequestInit): Promise => { + + return orvalFetcher(getResetAdminUsageByUsernameUrl(username), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getResetAdminUsageByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { + +const mutationKey = ['resetAdminUsageByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return resetAdminUsageByUsername(username,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ResetAdminUsageByUsernameMutationResult = NonNullable>> + + export type ResetAdminUsageByUsernameMutationError = ErrorType + + /** + * @summary Reset Admin Usage By Username + */ +export const useResetAdminUsageByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getResetAdminUsageByUsernameMutationOptions(options), queryClient); + } + +export const getResetAdminUsageByIdUrl = (adminId: number,) => { + + + + + return `/api/admin/by-id/${adminId}/reset` +} + +/** + * @summary Reset Admin Usage By Id + */ +export const resetAdminUsageById = async (adminId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getResetAdminUsageByIdUrl(adminId), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getResetAdminUsageByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{adminId: number}, TContext> => { + +const mutationKey = ['resetAdminUsageById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {adminId: number}> = (props) => { + const {adminId} = props ?? {}; + + return resetAdminUsageById(adminId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ResetAdminUsageByIdMutationResult = NonNullable>> + + export type ResetAdminUsageByIdMutationError = ErrorType + + /** + * @summary Reset Admin Usage By Id + */ +export const useResetAdminUsageById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{adminId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {adminId: number}, + TContext + > => { + return useMutation(getResetAdminUsageByIdMutationOptions(options), queryClient); + } + +export const getBulkDeleteAdminsUrl = () => { + + + + + return `/api/admins/bulk/delete` +} + +/** + * Delete selected admins by username. + * @summary Bulk Delete Admins + */ +export const bulkDeleteAdmins = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDeleteAdminsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkDeleteAdminsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDeleteAdmins']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDeleteAdmins(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDeleteAdminsMutationResult = NonNullable>> + export type BulkDeleteAdminsMutationBody = BodyType + export type BulkDeleteAdminsMutationError = ErrorType + + /** + * @summary Bulk Delete Admins + */ +export const useBulkDeleteAdmins = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteAdminsMutationOptions(options), queryClient); + } + +export const getBulkResetAdminsUsageUrl = () => { + + + + + return `/api/admins/bulk/reset` +} + +/** + * Reset usage for selected admins by username. + * @summary Bulk Reset Admins Usage + */ +export const bulkResetAdminsUsage = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkResetAdminsUsageUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkResetAdminsUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkResetAdminsUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkResetAdminsUsage(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkResetAdminsUsageMutationResult = NonNullable>> + export type BulkResetAdminsUsageMutationBody = BodyType + export type BulkResetAdminsUsageMutationError = ErrorType + + /** + * @summary Bulk Reset Admins Usage + */ +export const useBulkResetAdminsUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkResetAdminsUsageMutationOptions(options), queryClient); + } + +export const getBulkDisableAdminsUrl = () => { + + + + + return `/api/admins/bulk/disable` +} + +/** + * Disable selected admins by username. + * @summary Bulk Disable Admins + */ +export const bulkDisableAdmins = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDisableAdminsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkDisableAdminsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDisableAdmins']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDisableAdmins(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDisableAdminsMutationResult = NonNullable>> + export type BulkDisableAdminsMutationBody = BodyType + export type BulkDisableAdminsMutationError = ErrorType + + /** + * @summary Bulk Disable Admins + */ +export const useBulkDisableAdmins = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableAdminsMutationOptions(options), queryClient); + } + +export const getBulkEnableAdminsUrl = () => { + + + + + return `/api/admins/bulk/enable` +} + +/** + * Enable selected admins by username. + * @summary Bulk Enable Admins + */ +export const bulkEnableAdmins = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkEnableAdminsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkEnableAdminsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkEnableAdmins']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkEnableAdmins(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkEnableAdminsMutationResult = NonNullable>> + export type BulkEnableAdminsMutationBody = BodyType + export type BulkEnableAdminsMutationError = ErrorType + + /** + * @summary Bulk Enable Admins + */ +export const useBulkEnableAdmins = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkEnableAdminsMutationOptions(options), queryClient); + } + +export const getBulkDisableAllActiveUsersUrl = () => { + + + + + return `/api/admins/bulk/users/disable` +} + +/** + * Disable all active users under selected admins. + * @summary Bulk Disable All Active Users + */ +export const bulkDisableAllActiveUsers = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDisableAllActiveUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkDisableAllActiveUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDisableAllActiveUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDisableAllActiveUsers(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDisableAllActiveUsersMutationResult = NonNullable>> + export type BulkDisableAllActiveUsersMutationBody = BodyType + export type BulkDisableAllActiveUsersMutationError = ErrorType + + /** + * @summary Bulk Disable All Active Users + */ +export const useBulkDisableAllActiveUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableAllActiveUsersMutationOptions(options), queryClient); + } + +export const getBulkActivateAllDisabledUsersUrl = () => { + + + + + return `/api/admins/bulk/users/activate` +} + +/** + * Activate all disabled users under selected admins. + * @summary Bulk Activate All Disabled Users + */ +export const bulkActivateAllDisabledUsers = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkActivateAllDisabledUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkActivateAllDisabledUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkActivateAllDisabledUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkActivateAllDisabledUsers(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkActivateAllDisabledUsersMutationResult = NonNullable>> + export type BulkActivateAllDisabledUsersMutationBody = BodyType + export type BulkActivateAllDisabledUsersMutationError = ErrorType + + /** + * @summary Bulk Activate All Disabled Users + */ +export const useBulkActivateAllDisabledUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkActivateAllDisabledUsersMutationOptions(options), queryClient); + } + +export const getBulkRemoveAllUsersUrl = () => { + + + + + return `/api/admins/bulk/users` +} + +/** + * Remove all users under selected admins. + * @summary Bulk Remove All Users + */ +export const bulkRemoveAllUsers = async (bulkAdminSelection: BulkAdminSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkRemoveAllUsersUrl(), + { + ...options, + method: 'DELETE', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkAdminSelection) + } +);} + + + + +export const getBulkRemoveAllUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkRemoveAllUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkRemoveAllUsers(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkRemoveAllUsersMutationResult = NonNullable>> + export type BulkRemoveAllUsersMutationBody = BodyType + export type BulkRemoveAllUsersMutationError = ErrorType + + /** + * @summary Bulk Remove All Users + */ +export const useBulkRemoveAllUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkRemoveAllUsersMutationOptions(options), queryClient); + } + +export const getGetSystemStatsUrl = (params?: GetSystemStatsParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/system?${stringifiedParams}` : `/api/system` +} + +/** + * Fetch system stats including memory, CPU, disk, and user metrics. + * @summary Get System Stats + */ +export const getSystemStats = async (params?: GetSystemStatsParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetSystemStatsUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetSystemStatsQueryKey = (params?: GetSystemStatsParams,) => { + return [ + `/api/system`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetSystemStatsQueryOptions = >, TError = ErrorType>(params?: GetSystemStatsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetSystemStatsQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getSystemStats(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetSystemStatsQueryResult = NonNullable>> +export type GetSystemStatsQueryError = ErrorType + + +export function useGetSystemStats>, TError = ErrorType>( + params: undefined | GetSystemStatsParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetSystemStats>, TError = ErrorType>( + params?: GetSystemStatsParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetSystemStats>, TError = ErrorType>( + params?: GetSystemStatsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get System Stats + */ + +export function useGetSystemStats>, TError = ErrorType>( + params?: GetSystemStatsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetSystemStatsQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetInboundsUrl = () => { + + + + + return `/api/inbounds` +} + +/** + * Retrieve inbound configurations grouped by protocol. + * @summary Get Inbounds + */ +export const getInbounds = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetInboundsUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetInboundsQueryKey = () => { + return [ + `/api/inbounds` + ] as const; + } + + +export const getGetInboundsQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetInboundsQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getInbounds({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetInboundsQueryResult = NonNullable>> +export type GetInboundsQueryError = ErrorType + + +export function useGetInbounds>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetInbounds>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetInbounds>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Inbounds + */ + +export function useGetInbounds>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetInboundsQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetInboundDetailsUrl = () => { + + + + + return `/api/inbounds/details` +} + +/** + * Retrieve lightweight inbound metadata for dashboard forms. + * @summary Get Inbound Details + */ +export const getInboundDetails = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetInboundDetailsUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetInboundDetailsQueryKey = () => { + return [ + `/api/inbounds/details` + ] as const; + } + + +export const getGetInboundDetailsQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetInboundDetailsQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getInboundDetails({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetInboundDetailsQueryResult = NonNullable>> +export type GetInboundDetailsQueryError = ErrorType + + +export function useGetInboundDetails>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetInboundDetails>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetInboundDetails>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Inbound Details + */ + +export function useGetInboundDetails>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetInboundDetailsQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetWorkersHealthUrl = () => { + + + + + return `/api/workers/health` +} + +/** + * @summary Get Workers Health + */ +export const getWorkersHealth = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetWorkersHealthUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetWorkersHealthQueryKey = () => { + return [ + `/api/workers/health` + ] as const; + } + + +export const getGetWorkersHealthQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetWorkersHealthQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getWorkersHealth({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetWorkersHealthQueryResult = NonNullable>> +export type GetWorkersHealthQueryError = ErrorType + + +export function useGetWorkersHealth>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetWorkersHealth>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetWorkersHealth>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Workers Health + */ + +export function useGetWorkersHealth>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetWorkersHealthQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetSettingsUrl = () => { + + + + + return `/api/settings` +} + +/** + * @summary Get Settings + */ +export const getSettings = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetSettingsUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetSettingsQueryKey = () => { + return [ + `/api/settings` + ] as const; + } + + +export const getGetSettingsQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetSettingsQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getSettings({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetSettingsQueryResult = NonNullable>> +export type GetSettingsQueryError = ErrorType + + +export function useGetSettings>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Settings + */ + +export function useGetSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetSettingsQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getModifySettingsUrl = () => { + + + + + return `/api/settings` +} + +/** + * @summary Modify Settings + */ +export const modifySettings = async (settingsSchema: SettingsSchema, options?: RequestInit): Promise => { + + return orvalFetcher(getModifySettingsUrl(), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(settingsSchema) + } +);} + + + + +export const getModifySettingsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['modifySettings']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return modifySettings(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifySettingsMutationResult = NonNullable>> + export type ModifySettingsMutationBody = BodyType + export type ModifySettingsMutationError = ErrorType + + /** + * @summary Modify Settings + */ +export const useModifySettings = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getModifySettingsMutationOptions(options), queryClient); + } + +export const getGetGeneralSettingsUrl = () => { + + + + + return `/api/settings/general` +} + +/** + * @summary Get General Settings + */ +export const getGeneralSettings = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetGeneralSettingsUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetGeneralSettingsQueryKey = () => { + return [ + `/api/settings/general` + ] as const; + } + + +export const getGetGeneralSettingsQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetGeneralSettingsQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getGeneralSettings({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetGeneralSettingsQueryResult = NonNullable>> +export type GetGeneralSettingsQueryError = ErrorType + + +export function useGetGeneralSettings>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetGeneralSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetGeneralSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get General Settings + */ + +export function useGetGeneralSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetGeneralSettingsQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getCreateGroupUrl = () => { + + + + + return `/api/group` +} + +/** + * Creates a new group in the system. Only sudo administrators can create groups. + * @summary Create a new group + */ +export const createGroup = async (groupCreate: GroupCreate, options?: RequestInit): Promise => { + + return orvalFetcher(getCreateGroupUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(groupCreate) + } +);} + + + + +export const getCreateGroupMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['createGroup']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return createGroup(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type CreateGroupMutationResult = NonNullable>> + export type CreateGroupMutationBody = BodyType + export type CreateGroupMutationError = ErrorType + + /** + * @summary Create a new group + */ +export const useCreateGroup = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateGroupMutationOptions(options), queryClient); + } + +export const getGetAllGroupsUrl = (params?: GetAllGroupsParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/groups?${stringifiedParams}` : `/api/groups` +} + +/** + * Retrieves a paginated list of all groups in the system. Requires admin authentication. + * @summary List all groups + */ +export const getAllGroups = async (params?: GetAllGroupsParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAllGroupsUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAllGroupsQueryKey = (params?: GetAllGroupsParams,) => { + return [ + `/api/groups`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAllGroupsQueryOptions = >, TError = ErrorType>(params?: GetAllGroupsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAllGroupsQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAllGroups(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAllGroupsQueryResult = NonNullable>> +export type GetAllGroupsQueryError = ErrorType + + +export function useGetAllGroups>, TError = ErrorType>( + params: undefined | GetAllGroupsParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAllGroups>, TError = ErrorType>( + params?: GetAllGroupsParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAllGroups>, TError = ErrorType>( + params?: GetAllGroupsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary List all groups + */ + +export function useGetAllGroups>, TError = ErrorType>( + params?: GetAllGroupsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAllGroupsQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetGroupsSimpleUrl = (params?: GetGroupsSimpleParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/groups/simple?${stringifiedParams}` : `/api/groups/simple` +} + +/** + * Returns only id and name for groups. Optimized for dropdowns and autocomplete. + * @summary Get lightweight group list + */ +export const getGroupsSimple = async (params?: GetGroupsSimpleParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetGroupsSimpleUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetGroupsSimpleQueryKey = (params?: GetGroupsSimpleParams,) => { + return [ + `/api/groups/simple`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetGroupsSimpleQueryOptions = >, TError = ErrorType>(params?: GetGroupsSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetGroupsSimpleQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getGroupsSimple(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetGroupsSimpleQueryResult = NonNullable>> +export type GetGroupsSimpleQueryError = ErrorType + + +export function useGetGroupsSimple>, TError = ErrorType>( + params: undefined | GetGroupsSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetGroupsSimple>, TError = ErrorType>( + params?: GetGroupsSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetGroupsSimple>, TError = ErrorType>( + params?: GetGroupsSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get lightweight group list + */ + +export function useGetGroupsSimple>, TError = ErrorType>( + params?: GetGroupsSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetGroupsSimpleQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetGroupUrl = (groupId: number,) => { + + + + + return `/api/group/${groupId}` +} + +/** + * Retrieves detailed information about a specific group by its ID. + * @summary Get group details + */ +export const getGroup = async (groupId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getGetGroupUrl(groupId), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetGroupQueryKey = (groupId: number,) => { + return [ + `/api/group/${groupId}` + ] as const; + } + + +export const getGetGroupQueryOptions = >, TError = ErrorType>(groupId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetGroupQueryKey(groupId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getGroup(groupId, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: groupId !== null && groupId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetGroupQueryResult = NonNullable>> +export type GetGroupQueryError = ErrorType + + +export function useGetGroup>, TError = ErrorType>( + groupId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetGroup>, TError = ErrorType>( + groupId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetGroup>, TError = ErrorType>( + groupId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get group details + */ + +export function useGetGroup>, TError = ErrorType>( + groupId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetGroupQueryOptions(groupId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getModifyGroupUrl = (groupId: number,) => { + + + + + return `/api/group/${groupId}` +} + +/** + * Updates an existing group's information. Only sudo administrators can modify groups. + * @summary Modify group + */ +export const modifyGroup = async (groupId: number, + groupModify: GroupModify, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyGroupUrl(groupId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(groupModify) + } +);} + + + + +export const getModifyGroupMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{groupId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{groupId: number;data: BodyType}, TContext> => { + +const mutationKey = ['modifyGroup']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {groupId: number;data: BodyType}> = (props) => { + const {groupId,data} = props ?? {}; + + return modifyGroup(groupId,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyGroupMutationResult = NonNullable>> + export type ModifyGroupMutationBody = BodyType + export type ModifyGroupMutationError = ErrorType + + /** + * @summary Modify group + */ +export const useModifyGroup = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{groupId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {groupId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyGroupMutationOptions(options), queryClient); + } + +export const getRemoveGroupUrl = (groupId: number,) => { + + + + + return `/api/group/${groupId}` +} + +/** + * Deletes a group from the system. Only sudo administrators can delete groups. + * @summary Remove group + */ +export const removeGroup = async (groupId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveGroupUrl(groupId), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveGroupMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{groupId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{groupId: number}, TContext> => { + +const mutationKey = ['removeGroup']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {groupId: number}> = (props) => { + const {groupId} = props ?? {}; + + return removeGroup(groupId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveGroupMutationResult = NonNullable>> + + export type RemoveGroupMutationError = ErrorType + + /** + * @summary Remove group + */ +export const useRemoveGroup = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{groupId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {groupId: number}, + TContext + > => { + return useMutation(getRemoveGroupMutationOptions(options), queryClient); + } + +export const getBulkAddGroupsToUsersUrl = () => { + + + + + return `/api/groups/bulk/add` +} + +/** + * Bulk assign groups to multiple users, users under specific admins, or all users. + +- **group_ids**: List of group IDs to add (required) +- **users**: Optional list of user IDs to assign the groups to +- **admins**: Optional list of admin IDs — their users will be targeted + +Notes: +- If neither 'users' nor 'admins' are provided, groups will be added to *all users* +- Existing user-group associations will be ignored (no duplication) +- Returns list of affected users (those who received new group associations) + * @summary Bulk add groups to users + */ +export const bulkAddGroupsToUsers = async (bulkGroup: BulkGroup, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkAddGroupsToUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkGroup) + } +);} + + + + +export const getBulkAddGroupsToUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkAddGroupsToUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkAddGroupsToUsers(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkAddGroupsToUsersMutationResult = NonNullable>> + export type BulkAddGroupsToUsersMutationBody = BodyType + export type BulkAddGroupsToUsersMutationError = ErrorType + + /** + * @summary Bulk add groups to users + */ +export const useBulkAddGroupsToUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkAddGroupsToUsersMutationOptions(options), queryClient); + } + +export const getBulkRemoveUsersFromGroupsUrl = () => { + + + + + return `/api/groups/bulk/remove` +} + +/** + * Bulk remove groups from multiple users, users under specific admins, or all users. + +- **group_ids**: List of group IDs to remove (required) +- **users**: Optional list of user IDs to remove the groups from +- **admins**: Optional list of admin IDs — their users will be targeted + +Notes: +- If neither 'users' nor 'admins' are provided, groups will be removed from *all users* +- Only existing user-group associations will be removed +- Returns list of affected users (those who had groups removed) + * @summary Bulk remove groups from users + */ +export const bulkRemoveUsersFromGroups = async (bulkGroup: BulkGroup, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkRemoveUsersFromGroupsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkGroup) + } +);} + + + + +export const getBulkRemoveUsersFromGroupsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkRemoveUsersFromGroups']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkRemoveUsersFromGroups(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkRemoveUsersFromGroupsMutationResult = NonNullable>> + export type BulkRemoveUsersFromGroupsMutationBody = BodyType + export type BulkRemoveUsersFromGroupsMutationError = ErrorType + + /** + * @summary Bulk remove groups from users + */ +export const useBulkRemoveUsersFromGroups = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkRemoveUsersFromGroupsMutationOptions(options), queryClient); + } + +export const getBulkDeleteGroupsUrl = () => { + + + + + return `/api/groups/bulk/delete` +} + +/** + * Delete selected groups by ID. + * @summary Bulk Delete Groups + */ +export const bulkDeleteGroups = async (bulkGroupSelection: BulkGroupSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDeleteGroupsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkGroupSelection) + } +);} + + + + +export const getBulkDeleteGroupsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDeleteGroups']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDeleteGroups(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDeleteGroupsMutationResult = NonNullable>> + export type BulkDeleteGroupsMutationBody = BodyType + export type BulkDeleteGroupsMutationError = ErrorType + + /** + * @summary Bulk Delete Groups + */ +export const useBulkDeleteGroups = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteGroupsMutationOptions(options), queryClient); + } + +export const getBulkDisableGroupsUrl = () => { + + + + + return `/api/groups/bulk/disable` +} + +/** + * Disable selected groups by ID. + * @summary Bulk Disable Groups + */ +export const bulkDisableGroups = async (bulkGroupSelection: BulkGroupSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDisableGroupsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkGroupSelection) + } +);} + + + + +export const getBulkDisableGroupsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDisableGroups']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDisableGroups(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDisableGroupsMutationResult = NonNullable>> + export type BulkDisableGroupsMutationBody = BodyType + export type BulkDisableGroupsMutationError = ErrorType + + /** + * @summary Bulk Disable Groups + */ +export const useBulkDisableGroups = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableGroupsMutationOptions(options), queryClient); + } + +export const getBulkEnableGroupsUrl = () => { + + + + + return `/api/groups/bulk/enable` +} + +/** + * Enable selected groups by ID. + * @summary Bulk Enable Groups + */ +export const bulkEnableGroups = async (bulkGroupSelection: BulkGroupSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkEnableGroupsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkGroupSelection) + } +);} + + + + +export const getBulkEnableGroupsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkEnableGroups']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkEnableGroups(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkEnableGroupsMutationResult = NonNullable>> + export type BulkEnableGroupsMutationBody = BodyType + export type BulkEnableGroupsMutationError = ErrorType + + /** + * @summary Bulk Enable Groups + */ +export const useBulkEnableGroups = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkEnableGroupsMutationOptions(options), queryClient); + } + +export const getCreateCoreConfigUrl = () => { + + + + + return `/api/core` +} + +/** + * Create a new core configuration. + * @summary Create Core Config + */ +export const createCoreConfig = async (coreCreate: CoreCreate, options?: RequestInit): Promise => { + + return orvalFetcher(getCreateCoreConfigUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(coreCreate) + } +);} + + + + +export const getCreateCoreConfigMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['createCoreConfig']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return createCoreConfig(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type CreateCoreConfigMutationResult = NonNullable>> + export type CreateCoreConfigMutationBody = BodyType + export type CreateCoreConfigMutationError = ErrorType + + /** + * @summary Create Core Config + */ +export const useCreateCoreConfig = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateCoreConfigMutationOptions(options), queryClient); + } + +export const getGetCoreConfigUrl = (coreId: number,) => { + + + + + return `/api/core/${coreId}` +} + +/** + * Get a core configuration by its ID. + * @summary Get Core Config + */ +export const getCoreConfig = async (coreId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getGetCoreConfigUrl(coreId), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetCoreConfigQueryKey = (coreId: number,) => { + return [ + `/api/core/${coreId}` + ] as const; + } + + +export const getGetCoreConfigQueryOptions = >, TError = ErrorType>(coreId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetCoreConfigQueryKey(coreId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getCoreConfig(coreId, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: coreId !== null && coreId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetCoreConfigQueryResult = NonNullable>> +export type GetCoreConfigQueryError = ErrorType + + +export function useGetCoreConfig>, TError = ErrorType>( + coreId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetCoreConfig>, TError = ErrorType>( + coreId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetCoreConfig>, TError = ErrorType>( + coreId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Core Config + */ + +export function useGetCoreConfig>, TError = ErrorType>( + coreId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetCoreConfigQueryOptions(coreId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getModifyCoreConfigUrl = (coreId: number, + params: ModifyCoreConfigParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/core/${coreId}?${stringifiedParams}` : `/api/core/${coreId}` +} + +/** + * Update an existing core configuration. + * @summary Modify Core Config + */ +export const modifyCoreConfig = async (coreId: number, + coreCreate: CoreCreate, + params: ModifyCoreConfigParams, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyCoreConfigUrl(coreId,params), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(coreCreate) + } +);} + + + + +export const getModifyCoreConfigMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{coreId: number;data: BodyType;params: ModifyCoreConfigParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{coreId: number;data: BodyType;params: ModifyCoreConfigParams}, TContext> => { + +const mutationKey = ['modifyCoreConfig']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {coreId: number;data: BodyType;params: ModifyCoreConfigParams}> = (props) => { + const {coreId,data,params} = props ?? {}; + + return modifyCoreConfig(coreId,data,params,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyCoreConfigMutationResult = NonNullable>> + export type ModifyCoreConfigMutationBody = BodyType + export type ModifyCoreConfigMutationError = ErrorType + + /** + * @summary Modify Core Config + */ +export const useModifyCoreConfig = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{coreId: number;data: BodyType;params: ModifyCoreConfigParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {coreId: number;data: BodyType;params: ModifyCoreConfigParams}, + TContext + > => { + return useMutation(getModifyCoreConfigMutationOptions(options), queryClient); + } + +export const getDeleteCoreConfigUrl = (coreId: number, + params?: DeleteCoreConfigParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/core/${coreId}?${stringifiedParams}` : `/api/core/${coreId}` +} + +/** + * Delete a core configuration. + * @summary Delete Core Config + */ +export const deleteCoreConfig = async (coreId: number, + params?: DeleteCoreConfigParams, options?: RequestInit): Promise => { + + return orvalFetcher(getDeleteCoreConfigUrl(coreId,params), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getDeleteCoreConfigMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{coreId: number;params?: DeleteCoreConfigParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{coreId: number;params?: DeleteCoreConfigParams}, TContext> => { + +const mutationKey = ['deleteCoreConfig']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {coreId: number;params?: DeleteCoreConfigParams}> = (props) => { + const {coreId,params} = props ?? {}; + + return deleteCoreConfig(coreId,params,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type DeleteCoreConfigMutationResult = NonNullable>> + + export type DeleteCoreConfigMutationError = ErrorType + + /** + * @summary Delete Core Config + */ +export const useDeleteCoreConfig = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{coreId: number;params?: DeleteCoreConfigParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {coreId: number;params?: DeleteCoreConfigParams}, + TContext + > => { + return useMutation(getDeleteCoreConfigMutationOptions(options), queryClient); + } + +export const getGetAllCoresUrl = (params?: GetAllCoresParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/cores?${stringifiedParams}` : `/api/cores` +} + +/** + * Get a list of all core configurations. + * @summary Get All Cores + */ +export const getAllCores = async (params?: GetAllCoresParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetAllCoresUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetAllCoresQueryKey = (params?: GetAllCoresParams,) => { + return [ + `/api/cores`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetAllCoresQueryOptions = >, TError = ErrorType>(params?: GetAllCoresParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetAllCoresQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getAllCores(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetAllCoresQueryResult = NonNullable>> +export type GetAllCoresQueryError = ErrorType + + +export function useGetAllCores>, TError = ErrorType>( + params: undefined | GetAllCoresParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetAllCores>, TError = ErrorType>( + params?: GetAllCoresParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetAllCores>, TError = ErrorType>( + params?: GetAllCoresParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get All Cores + */ + +export function useGetAllCores>, TError = ErrorType>( + params?: GetAllCoresParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetAllCoresQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetCoresSimpleUrl = (params?: GetCoresSimpleParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/cores/simple?${stringifiedParams}` : `/api/cores/simple` +} + +/** + * Returns only id and name for cores. Optimized for dropdowns and autocomplete. + * @summary Get lightweight core list + */ +export const getCoresSimple = async (params?: GetCoresSimpleParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetCoresSimpleUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetCoresSimpleQueryKey = (params?: GetCoresSimpleParams,) => { + return [ + `/api/cores/simple`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetCoresSimpleQueryOptions = >, TError = ErrorType>(params?: GetCoresSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetCoresSimpleQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getCoresSimple(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetCoresSimpleQueryResult = NonNullable>> +export type GetCoresSimpleQueryError = ErrorType + + +export function useGetCoresSimple>, TError = ErrorType>( + params: undefined | GetCoresSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetCoresSimple>, TError = ErrorType>( + params?: GetCoresSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetCoresSimple>, TError = ErrorType>( + params?: GetCoresSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get lightweight core list + */ + +export function useGetCoresSimple>, TError = ErrorType>( + params?: GetCoresSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetCoresSimpleQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getRestartCoreUrl = (coreId: number,) => { + + + + + return `/api/core/${coreId}/restart` +} + +/** + * restart nodes related to the core config + * @summary Restart Core + */ +export const restartCore = async (coreId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getRestartCoreUrl(coreId), + { + ...options, + method: 'POST' + + + } +);} + + + + +export const getRestartCoreMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{coreId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{coreId: number}, TContext> => { + +const mutationKey = ['restartCore']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {coreId: number}> = (props) => { + const {coreId} = props ?? {}; + + return restartCore(coreId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RestartCoreMutationResult = NonNullable>> + + export type RestartCoreMutationError = ErrorType + + /** + * @summary Restart Core + */ +export const useRestartCore = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{coreId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {coreId: number}, + TContext + > => { + return useMutation(getRestartCoreMutationOptions(options), queryClient); + } + +export const getBulkDeleteCoresUrl = () => { + + + + + return `/api/cores/bulk/delete` +} + +/** + * Delete selected cores by ID. + * @summary Bulk Delete Cores + */ +export const bulkDeleteCores = async (bulkCoreSelection: BulkCoreSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDeleteCoresUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkCoreSelection) + } +);} + + + + +export const getBulkDeleteCoresMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDeleteCores']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDeleteCores(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDeleteCoresMutationResult = NonNullable>> + export type BulkDeleteCoresMutationBody = BodyType + export type BulkDeleteCoresMutationError = ErrorType + + /** + * @summary Bulk Delete Cores + */ +export const useBulkDeleteCores = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteCoresMutationOptions(options), queryClient); + } + +export const getCreateClientTemplateUrl = () => { + + + + + return `/api/client_template` +} + +/** + * @summary Create Client Template + */ +export const createClientTemplate = async (clientTemplateCreate: ClientTemplateCreate, options?: RequestInit): Promise => { + + return orvalFetcher(getCreateClientTemplateUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(clientTemplateCreate) + } +);} + + + + +export const getCreateClientTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['createClientTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return createClientTemplate(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type CreateClientTemplateMutationResult = NonNullable>> + export type CreateClientTemplateMutationBody = BodyType + export type CreateClientTemplateMutationError = ErrorType + + /** + * @summary Create Client Template + */ +export const useCreateClientTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateClientTemplateMutationOptions(options), queryClient); + } + +export const getGetClientTemplateUrl = (templateId: number,) => { + + + + + return `/api/client_template/${templateId}` +} + +/** + * @summary Get Client Template + */ +export const getClientTemplate = async (templateId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getGetClientTemplateUrl(templateId), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetClientTemplateQueryKey = (templateId: number,) => { + return [ + `/api/client_template/${templateId}` + ] as const; + } + + +export const getGetClientTemplateQueryOptions = >, TError = ErrorType>(templateId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetClientTemplateQueryKey(templateId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getClientTemplate(templateId, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: templateId !== null && templateId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetClientTemplateQueryResult = NonNullable>> +export type GetClientTemplateQueryError = ErrorType + + +export function useGetClientTemplate>, TError = ErrorType>( + templateId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetClientTemplate>, TError = ErrorType>( + templateId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetClientTemplate>, TError = ErrorType>( + templateId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Client Template + */ + +export function useGetClientTemplate>, TError = ErrorType>( + templateId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetClientTemplateQueryOptions(templateId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getModifyClientTemplateUrl = (templateId: number,) => { + + + + + return `/api/client_template/${templateId}` +} + +/** + * @summary Modify Client Template + */ +export const modifyClientTemplate = async (templateId: number, + clientTemplateModify: ClientTemplateModify, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyClientTemplateUrl(templateId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(clientTemplateModify) + } +);} + + + + +export const getModifyClientTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{templateId: number;data: BodyType}, TContext> => { + +const mutationKey = ['modifyClientTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {templateId: number;data: BodyType}> = (props) => { + const {templateId,data} = props ?? {}; + + return modifyClientTemplate(templateId,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyClientTemplateMutationResult = NonNullable>> + export type ModifyClientTemplateMutationBody = BodyType + export type ModifyClientTemplateMutationError = ErrorType + + /** + * @summary Modify Client Template + */ +export const useModifyClientTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {templateId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyClientTemplateMutationOptions(options), queryClient); + } + +export const getRemoveClientTemplateUrl = (templateId: number,) => { + + + + + return `/api/client_template/${templateId}` +} + +/** + * @summary Remove Client Template + */ +export const removeClientTemplate = async (templateId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveClientTemplateUrl(templateId), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveClientTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{templateId: number}, TContext> => { + +const mutationKey = ['removeClientTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {templateId: number}> = (props) => { + const {templateId} = props ?? {}; + + return removeClientTemplate(templateId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveClientTemplateMutationResult = NonNullable>> + + export type RemoveClientTemplateMutationError = ErrorType + + /** + * @summary Remove Client Template + */ +export const useRemoveClientTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {templateId: number}, + TContext + > => { + return useMutation(getRemoveClientTemplateMutationOptions(options), queryClient); + } + +export const getGetClientTemplatesUrl = (params?: GetClientTemplatesParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/client_templates?${stringifiedParams}` : `/api/client_templates` +} + +/** + * @summary Get Client Templates + */ +export const getClientTemplates = async (params?: GetClientTemplatesParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetClientTemplatesUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetClientTemplatesQueryKey = (params?: GetClientTemplatesParams,) => { + return [ + `/api/client_templates`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetClientTemplatesQueryOptions = >, TError = ErrorType>(params?: GetClientTemplatesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetClientTemplatesQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getClientTemplates(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetClientTemplatesQueryResult = NonNullable>> +export type GetClientTemplatesQueryError = ErrorType + + +export function useGetClientTemplates>, TError = ErrorType>( + params: undefined | GetClientTemplatesParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetClientTemplates>, TError = ErrorType>( + params?: GetClientTemplatesParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetClientTemplates>, TError = ErrorType>( + params?: GetClientTemplatesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Client Templates + */ + +export function useGetClientTemplates>, TError = ErrorType>( + params?: GetClientTemplatesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetClientTemplatesQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetClientTemplatesSimpleUrl = (params?: GetClientTemplatesSimpleParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/client_templates/simple?${stringifiedParams}` : `/api/client_templates/simple` +} + +/** + * @summary Get Client Templates Simple + */ +export const getClientTemplatesSimple = async (params?: GetClientTemplatesSimpleParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetClientTemplatesSimpleUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetClientTemplatesSimpleQueryKey = (params?: GetClientTemplatesSimpleParams,) => { + return [ + `/api/client_templates/simple`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetClientTemplatesSimpleQueryOptions = >, TError = ErrorType>(params?: GetClientTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetClientTemplatesSimpleQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getClientTemplatesSimple(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetClientTemplatesSimpleQueryResult = NonNullable>> +export type GetClientTemplatesSimpleQueryError = ErrorType + + +export function useGetClientTemplatesSimple>, TError = ErrorType>( + params: undefined | GetClientTemplatesSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetClientTemplatesSimple>, TError = ErrorType>( + params?: GetClientTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetClientTemplatesSimple>, TError = ErrorType>( + params?: GetClientTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Client Templates Simple + */ + +export function useGetClientTemplatesSimple>, TError = ErrorType>( + params?: GetClientTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetClientTemplatesSimpleQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getBulkDeleteClientTemplatesUrl = () => { + + + + + return `/api/client_templates/bulk/delete` +} + +/** + * Delete selected client templates by ID. + * @summary Bulk Delete Client Templates + */ +export const bulkDeleteClientTemplates = async (bulkClientTemplateSelection: BulkClientTemplateSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDeleteClientTemplatesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkClientTemplateSelection) + } +);} + + + + +export const getBulkDeleteClientTemplatesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDeleteClientTemplates']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDeleteClientTemplates(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDeleteClientTemplatesMutationResult = NonNullable>> + export type BulkDeleteClientTemplatesMutationBody = BodyType + export type BulkDeleteClientTemplatesMutationError = ErrorType + + /** + * @summary Bulk Delete Client Templates + */ +export const useBulkDeleteClientTemplates = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteClientTemplatesMutationOptions(options), queryClient); + } + +export const getGetHostUrl = (hostId: number,) => { + + + + + return `/api/host/${hostId}` +} + +/** + * get host by **id** + * @summary Get Host + */ +export const getHost = async (hostId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getGetHostUrl(hostId), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetHostQueryKey = (hostId: number,) => { + return [ + `/api/host/${hostId}` + ] as const; + } + + +export const getGetHostQueryOptions = >, TError = ErrorType>(hostId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetHostQueryKey(hostId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getHost(hostId, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: hostId !== null && hostId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetHostQueryResult = NonNullable>> +export type GetHostQueryError = ErrorType + + +export function useGetHost>, TError = ErrorType>( + hostId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetHost>, TError = ErrorType>( + hostId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetHost>, TError = ErrorType>( + hostId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Host + */ + +export function useGetHost>, TError = ErrorType>( + hostId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetHostQueryOptions(hostId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getModifyHostUrl = (hostId: number,) => { + + + + + return `/api/host/${hostId}` +} + +/** + * modify host by **id** + +**inbound_tag** must be available in one of the configured cores + * @summary Modify Host + */ +export const modifyHost = async (hostId: number, + createHost: CreateHost, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyHostUrl(hostId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(createHost) + } +);} + + + + +export const getModifyHostMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{hostId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{hostId: number;data: BodyType}, TContext> => { + +const mutationKey = ['modifyHost']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {hostId: number;data: BodyType}> = (props) => { + const {hostId,data} = props ?? {}; + + return modifyHost(hostId,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyHostMutationResult = NonNullable>> + export type ModifyHostMutationBody = BodyType + export type ModifyHostMutationError = ErrorType + + /** + * @summary Modify Host + */ +export const useModifyHost = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{hostId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {hostId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyHostMutationOptions(options), queryClient); + } + +export const getRemoveHostUrl = (hostId: number,) => { + + + + + return `/api/host/${hostId}` +} + +/** + * remove host by **id** + * @summary Remove Host + */ +export const removeHost = async (hostId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getRemoveHostUrl(hostId), + { + ...options, + method: 'DELETE' + + + } +);} + + + + +export const getRemoveHostMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{hostId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{hostId: number}, TContext> => { + +const mutationKey = ['removeHost']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {hostId: number}> = (props) => { + const {hostId} = props ?? {}; + + return removeHost(hostId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveHostMutationResult = NonNullable>> + + export type RemoveHostMutationError = ErrorType + + /** + * @summary Remove Host + */ +export const useRemoveHost = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{hostId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {hostId: number}, + TContext + > => { + return useMutation(getRemoveHostMutationOptions(options), queryClient); + } + +export const getGetHostsUrl = (params?: GetHostsParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/hosts?${stringifiedParams}` : `/api/hosts` +} + +/** + * Get proxy hosts. + * @summary Get Hosts + */ +export const getHosts = async (params?: GetHostsParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetHostsUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetHostsQueryKey = (params?: GetHostsParams,) => { + return [ + `/api/hosts`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetHostsQueryOptions = >, TError = ErrorType>(params?: GetHostsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetHostsQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getHosts(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetHostsQueryResult = NonNullable>> +export type GetHostsQueryError = ErrorType + + +export function useGetHosts>, TError = ErrorType>( + params: undefined | GetHostsParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetHosts>, TError = ErrorType>( + params?: GetHostsParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetHosts>, TError = ErrorType>( + params?: GetHostsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Hosts + */ + +export function useGetHosts>, TError = ErrorType>( + params?: GetHostsParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetHostsQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getModifyHostsUrl = () => { + + + + + return `/api/hosts` +} + +/** + * Modify proxy hosts and update the configuration. + * @summary Modify Hosts + */ +export const modifyHosts = async (createHost: CreateHost[], options?: RequestInit): Promise => { + + return orvalFetcher(getModifyHostsUrl(), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(createHost) + } +);} + + + + +export const getModifyHostsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['modifyHosts']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return modifyHosts(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyHostsMutationResult = NonNullable>> + export type ModifyHostsMutationBody = BodyType + export type ModifyHostsMutationError = ErrorType + + /** + * @summary Modify Hosts + */ +export const useModifyHosts = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getModifyHostsMutationOptions(options), queryClient); + } + +export const getCreateHostUrl = () => { + + + + + return `/api/host/` +} + +/** + * create a new host + +**inbound_tag** must be available in one of the configured cores + * @summary Create Host + */ +export const createHost = async (createHost: CreateHost, options?: RequestInit): Promise => { + + return orvalFetcher(getCreateHostUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(createHost) + } +);} + + + + +export const getCreateHostMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['createHost']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return createHost(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type CreateHostMutationResult = NonNullable>> + export type CreateHostMutationBody = BodyType + export type CreateHostMutationError = ErrorType + + /** + * @summary Create Host + */ +export const useCreateHost = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateHostMutationOptions(options), queryClient); + } + +export const getBulkDeleteHostsUrl = () => { + + + + + return `/api/hosts/bulk/delete` +} + +/** + * Delete selected hosts by ID. + * @summary Bulk Delete Hosts + */ +export const bulkDeleteHosts = async (bulkHostSelection: BulkHostSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDeleteHostsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkHostSelection) + } +);} + + + + +export const getBulkDeleteHostsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDeleteHosts']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDeleteHosts(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDeleteHostsMutationResult = NonNullable>> + export type BulkDeleteHostsMutationBody = BodyType + export type BulkDeleteHostsMutationError = ErrorType + + /** + * @summary Bulk Delete Hosts + */ +export const useBulkDeleteHosts = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteHostsMutationOptions(options), queryClient); + } + +export const getBulkDisableHostsUrl = () => { + + + + + return `/api/hosts/bulk/disable` +} + +/** + * Disable selected hosts by ID. + * @summary Bulk Disable Hosts + */ +export const bulkDisableHosts = async (bulkHostSelection: BulkHostSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDisableHostsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkHostSelection) + } +);} + + + + +export const getBulkDisableHostsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDisableHosts']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDisableHosts(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDisableHostsMutationResult = NonNullable>> + export type BulkDisableHostsMutationBody = BodyType + export type BulkDisableHostsMutationError = ErrorType + + /** + * @summary Bulk Disable Hosts + */ +export const useBulkDisableHosts = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableHostsMutationOptions(options), queryClient); + } + +export const getBulkEnableHostsUrl = () => { + + + + + return `/api/hosts/bulk/enable` +} + +/** + * Enable selected hosts by ID. + * @summary Bulk Enable Hosts + */ +export const bulkEnableHosts = async (bulkHostSelection: BulkHostSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkEnableHostsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkHostSelection) + } +);} + + + + +export const getBulkEnableHostsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkEnableHosts']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkEnableHosts(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkEnableHostsMutationResult = NonNullable>> + export type BulkEnableHostsMutationBody = BodyType + export type BulkEnableHostsMutationError = ErrorType + + /** + * @summary Bulk Enable Hosts + */ +export const useBulkEnableHosts = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkEnableHostsMutationOptions(options), queryClient); + } + +export const getGetNodeSettingsUrl = () => { + + + + + return `/api/node/settings` +} + +/** + * Retrieve the current node settings. + * @summary Get Node Settings + */ +export const getNodeSettings = async ( options?: RequestInit): Promise => { + + return orvalFetcher(getGetNodeSettingsUrl(), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetNodeSettingsQueryKey = () => { + return [ + `/api/node/settings` + ] as const; + } + + +export const getGetNodeSettingsQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetNodeSettingsQueryKey(); + + + + const queryFn: QueryFunction>> = ({ signal }) => getNodeSettings({ signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetNodeSettingsQueryResult = NonNullable>> +export type GetNodeSettingsQueryError = ErrorType + + +export function useGetNodeSettings>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetNodeSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetNodeSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Node Settings + */ + +export function useGetNodeSettings>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetNodeSettingsQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetUsageUrl = (params?: GetUsageParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/node/usage?${stringifiedParams}` : `/api/node/usage` +} + +/** + * Retrieve usage statistics for nodes within a specified date range. + * @summary Get Usage + */ +export const getUsage = async (params?: GetUsageParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetUsageUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetUsageQueryKey = (params?: GetUsageParams,) => { + return [ + `/api/node/usage`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetUsageQueryOptions = >, TError = ErrorType>(params?: GetUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUsageQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUsage(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetUsageQueryResult = NonNullable>> +export type GetUsageQueryError = ErrorType + + +export function useGetUsage>, TError = ErrorType>( + params: undefined | GetUsageParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUsage>, TError = ErrorType>( + params?: GetUsageParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUsage>, TError = ErrorType>( + params?: GetUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Usage + */ + +export function useGetUsage>, TError = ErrorType>( + params?: GetUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUsageQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetUserCountMetricUrl = (metric: UserCountMetric, + params?: GetUserCountMetricParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/node/user_counts/${metric}?${stringifiedParams}` : `/api/node/user_counts/${metric}` +} + +/** + * Retrieve one user activity/status count metric from node user usage rows. + * @summary Get User Count Metric + */ +export const getUserCountMetric = async (metric: UserCountMetric, + params?: GetUserCountMetricParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetUserCountMetricUrl(metric,params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetUserCountMetricQueryKey = (metric: UserCountMetric, + params?: GetUserCountMetricParams,) => { + return [ + `/api/node/user_counts/${metric}`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetUserCountMetricQueryOptions = >, TError = ErrorType>(metric: UserCountMetric, + params?: GetUserCountMetricParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUserCountMetricQueryKey(metric,params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUserCountMetric(metric,params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: metric !== null && metric !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} + +export type GetUserCountMetricQueryResult = NonNullable>> +export type GetUserCountMetricQueryError = ErrorType + + +export function useGetUserCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params: undefined | GetUserCountMetricParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params?: GetUserCountMetricParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params?: GetUserCountMetricParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get User Count Metric + */ + +export function useGetUserCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params?: GetUserCountMetricParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserCountMetricQueryOptions(metric,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + + +export const getGetNodesUrl = (params?: GetNodesParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/nodes?${stringifiedParams}` : `/api/nodes` } -export type ModifyCoreConfigParams = { - restart_nodes: boolean -} +/** + * Retrieve a list of all nodes. Accessible only to sudo admins. + * @summary Get Nodes + */ +export const getNodes = async (params?: GetNodesParams, options?: RequestInit): Promise => { -export type GetGroupsSimpleParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null - search?: string | null - sort?: string | null - all?: boolean -} + return orvalFetcher(getGetNodesUrl(params), + { + ...options, + method: 'GET' -export type GetAllGroupsParams = { - ids?: number[] | null - offset?: number | null - limit?: number | null -} -export type GetSystemStatsParams = { - admin_username?: string | null -} + } +);} -export type GetAdminUsageByIdParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null -} -export type GetAdminUsageByUsernameParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null -} -export type GetAdminUsageParams = { - period?: Period - node_id?: number | null - group_by_node?: boolean - start?: string | null - end?: string | null -} -export type GetAdminsSimpleParams = { - ids?: number[] | null - usernames?: string[] | null - search?: string | null - offset?: number | null - limit?: number | null - sort?: string | null - all?: boolean -} -export type GetAdminsParams = { - ids?: number[] | null - usernames?: string[] | null - username?: string | null - offset?: number | null - limit?: number | null - sort?: string | null -} +export const getGetNodesQueryKey = (params?: GetNodesParams,) => { + return [ + `/api/nodes`, ...(params ? [params] : []) + ] as const; + } -export type Health200 = { [key: string]: unknown } -export type XrayNoiseSettingsRandRange = string | null +export const getGetNodesQueryOptions = >, TError = ErrorType>(params?: GetNodesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export interface XrayNoiseSettings { - /** @pattern ^(:?rand|str|base64|hex)$ */ - type: string - packet: string - /** @pattern ^\d{1,16}(-\d{1,16})?$ */ - delay: string - /** @pattern ip|ipv4|ipv6 */ - apply_to?: string - rand_range?: XrayNoiseSettingsRandRange -} +const {query: queryOptions, request: requestOptions} = options ?? {}; -export type XrayMuxSettingsOutputXudpConcurrency = number | null + const queryKey = queryOptions?.queryKey ?? getGetNodesQueryKey(params); -export type XrayMuxSettingsOutputConcurrency = number | null -export interface XrayMuxSettingsOutput { - enabled?: boolean - concurrency?: XrayMuxSettingsOutputConcurrency - xudpConcurrency?: XrayMuxSettingsOutputXudpConcurrency - xudpProxyUDP443?: Xudp -} -export type XrayMuxSettingsInputXudpConcurrency = number | null + const queryFn: QueryFunction>> = ({ signal }) => getNodes(params, { signal, ...requestOptions }); -export type XrayMuxSettingsInputConcurrency = number | null -export interface XrayFragmentSettings { - /** @pattern ^(:?tlshello|[\d-]{1,16})$ */ - packets: string - /** @pattern ^[\d-]{1,16}$ */ - length: string - /** @pattern ^[\d-]{1,16}$ */ - interval: string -} -export type Xudp = (typeof Xudp)[keyof typeof Xudp] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const Xudp = { - reject: 'reject', - allow: 'allow', - skip: 'skip', -} as const -export interface XrayMuxSettingsInput { - enabled?: boolean - concurrency?: XrayMuxSettingsInputConcurrency - xudp_concurrency?: XrayMuxSettingsInputXudpConcurrency - xudp_proxy_udp_443?: Xudp + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type XTLSFlows = (typeof XTLSFlows)[keyof typeof XTLSFlows] +export type GetNodesQueryResult = NonNullable>> +export type GetNodesQueryError = ErrorType + -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const XTLSFlows = { - '': '', - 'xtls-rprx-vision': 'xtls-rprx-vision', - 'xtls-rprx-vision-udp443': 'xtls-rprx-vision-udp443', -} as const +export function useGetNodes>, TError = ErrorType>( + params: undefined | GetNodesParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetNodes>, TError = ErrorType>( + params?: GetNodesParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetNodes>, TError = ErrorType>( + params?: GetNodesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Nodes + */ -export type XMuxSettingsOutputHKeepAlivePeriod = number | null +export function useGetNodes>, TError = ErrorType>( + params?: GetNodesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export type XMuxSettingsOutputHMaxRequestTimes = string | null + const queryOptions = getGetNodesQueryOptions(params,options) -export type XMuxSettingsOutputHMaxReusableSecs = string | null + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export type XMuxSettingsOutputCMaxReuseTimes = string | null + return { ...query, queryKey: queryOptions.queryKey }; +} -export type XMuxSettingsOutputMaxConnections = string | null -export type XMuxSettingsOutputMaxConcurrency = string | null -export interface XMuxSettingsOutput { - maxConcurrency?: XMuxSettingsOutputMaxConcurrency - maxConnections?: XMuxSettingsOutputMaxConnections - cMaxReuseTimes?: XMuxSettingsOutputCMaxReuseTimes - hMaxReusableSecs?: XMuxSettingsOutputHMaxReusableSecs - hMaxRequestTimes?: XMuxSettingsOutputHMaxRequestTimes - hKeepAlivePeriod?: XMuxSettingsOutputHKeepAlivePeriod -} -export type XMuxSettingsInputHKeepAlivePeriod = number | null -export type XMuxSettingsInputHMaxRequestTimes = string | number | null -export type XMuxSettingsInputHMaxReusableSecs = string | number | null -export type XMuxSettingsInputCMaxReuseTimes = string | number | null +export const getGetNodesSimpleUrl = (params?: GetNodesSimpleParams,) => { + const normalizedParams = new URLSearchParams(); -export type XMuxSettingsInputMaxConnections = string | number | null + Object.entries(params || {}).forEach(([key, value]) => { -export type XMuxSettingsInputMaxConcurrency = string | number | null + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -export interface XMuxSettingsInput { - max_concurrency?: XMuxSettingsInputMaxConcurrency - max_connections?: XMuxSettingsInputMaxConnections - c_max_reuse_times?: XMuxSettingsInputCMaxReuseTimes - h_max_reusable_secs?: XMuxSettingsInputHMaxReusableSecs - h_max_request_times?: XMuxSettingsInputHMaxRequestTimes - h_keep_alive_period?: XMuxSettingsInputHKeepAlivePeriod + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/nodes/simple?${stringifiedParams}` : `/api/nodes/simple` } -export type XHttpSettingsOutputDownloadSettings = number | null +/** + * Returns only id and name for nodes. Optimized for dropdowns and autocomplete. + * @summary Get lightweight node list + */ +export const getNodesSimple = async (params?: GetNodesSimpleParams, options?: RequestInit): Promise => { -export type XHttpSettingsOutputXmux = XMuxSettingsOutput | null + return orvalFetcher(getGetNodesSimpleUrl(params), + { + ...options, + method: 'GET' -export type XHttpSettingsOutputScMinPostsIntervalMs = string | null -export type XHttpSettingsOutputScMaxEachPostBytes = string | null + } +);} -export type XHttpSettingsOutputUplinkChunkSize = string | null -export type XHttpSettingsOutputUplinkDataKey = string | null -export type XHttpSettingsOutputUplinkDataPlacement = string | null -export type XHttpSettingsOutputSeqKey = string | null -export type XHttpSettingsOutputSeqPlacement = string | null +export const getGetNodesSimpleQueryKey = (params?: GetNodesSimpleParams,) => { + return [ + `/api/nodes/simple`, ...(params ? [params] : []) + ] as const; + } -export type XHttpSettingsOutputSessionKey = string | null -export type XHttpSettingsOutputSessionPlacement = string | null +export const getGetNodesSimpleQueryOptions = >, TError = ErrorType>(params?: GetNodesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export type XHttpSettingsOutputUplinkHttpMethod = string | null +const {query: queryOptions, request: requestOptions} = options ?? {}; -export type XHttpSettingsOutputXPaddingMethod = string | null + const queryKey = queryOptions?.queryKey ?? getGetNodesSimpleQueryKey(params); -export type XHttpSettingsOutputXPaddingPlacement = string | null -export type XHttpSettingsOutputXPaddingHeader = string | null -export type XHttpSettingsOutputXPaddingKey = string | null + const queryFn: QueryFunction>> = ({ signal }) => getNodesSimple(params, { signal, ...requestOptions }); -export type XHttpSettingsOutputXPaddingObfsMode = boolean | null -export type XHttpSettingsOutputXPaddingBytes = string | null -export type XHttpSettingsOutputNoGrpcHeader = boolean | null -export type XHttpSettingsOutputMode = XHttpModes | null -export interface XHttpSettingsOutput { - mode?: XHttpSettingsOutputMode - no_grpc_header?: XHttpSettingsOutputNoGrpcHeader - x_padding_bytes?: XHttpSettingsOutputXPaddingBytes - x_padding_obfs_mode?: XHttpSettingsOutputXPaddingObfsMode - x_padding_key?: XHttpSettingsOutputXPaddingKey - x_padding_header?: XHttpSettingsOutputXPaddingHeader - x_padding_placement?: XHttpSettingsOutputXPaddingPlacement - x_padding_method?: XHttpSettingsOutputXPaddingMethod - uplink_http_method?: XHttpSettingsOutputUplinkHttpMethod - session_placement?: XHttpSettingsOutputSessionPlacement - session_key?: XHttpSettingsOutputSessionKey - seq_placement?: XHttpSettingsOutputSeqPlacement - seq_key?: XHttpSettingsOutputSeqKey - uplink_data_placement?: XHttpSettingsOutputUplinkDataPlacement - uplink_data_key?: XHttpSettingsOutputUplinkDataKey - uplink_chunk_size?: XHttpSettingsOutputUplinkChunkSize - sc_max_each_post_bytes?: XHttpSettingsOutputScMaxEachPostBytes - sc_min_posts_interval_ms?: XHttpSettingsOutputScMinPostsIntervalMs - xmux?: XHttpSettingsOutputXmux - download_settings?: XHttpSettingsOutputDownloadSettings + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type XHttpSettingsInputDownloadSettings = number | null +export type GetNodesSimpleQueryResult = NonNullable>> +export type GetNodesSimpleQueryError = ErrorType -export type XHttpSettingsInputXmux = XMuxSettingsInput | null -export type XHttpSettingsInputScMinPostsIntervalMs = string | number | null +export function useGetNodesSimple>, TError = ErrorType>( + params: undefined | GetNodesSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetNodesSimple>, TError = ErrorType>( + params?: GetNodesSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetNodesSimple>, TError = ErrorType>( + params?: GetNodesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get lightweight node list + */ -export type XHttpSettingsInputScMaxEachPostBytes = string | number | null +export function useGetNodesSimple>, TError = ErrorType>( + params?: GetNodesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export type XHttpSettingsInputUplinkChunkSize = string | number | null + const queryOptions = getGetNodesSimpleQueryOptions(params,options) -export type XHttpSettingsInputUplinkDataKey = string | null + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export type XHttpSettingsInputUplinkDataPlacement = string | null + return { ...query, queryKey: queryOptions.queryKey }; +} -export type XHttpSettingsInputSeqKey = string | null -export type XHttpSettingsInputSeqPlacement = string | null -export type XHttpSettingsInputSessionKey = string | null -export type XHttpSettingsInputSessionPlacement = string | null -export type XHttpSettingsInputUplinkHttpMethod = string | null -export type XHttpSettingsInputXPaddingMethod = string | null -export type XHttpSettingsInputXPaddingPlacement = string | null +export const getReconnectAllNodeUrl = (params?: ReconnectAllNodeParams,) => { + const normalizedParams = new URLSearchParams(); -export type XHttpSettingsInputXPaddingHeader = string | null + Object.entries(params || {}).forEach(([key, value]) => { -export type XHttpSettingsInputXPaddingKey = string | null + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -export type XHttpSettingsInputXPaddingObfsMode = boolean | null + const stringifiedParams = normalizedParams.toString(); -export type XHttpSettingsInputXPaddingBytes = string | number | null + return stringifiedParams.length > 0 ? `/api/nodes/reconnect?${stringifiedParams}` : `/api/nodes/reconnect` +} -export type XHttpSettingsInputNoGrpcHeader = boolean | null +/** + * Trigger reconnection for all nodes or a specific core. + * @summary Reconnect All Node + */ +export const reconnectAllNode = async (params?: ReconnectAllNodeParams, options?: RequestInit): Promise => { -export type XHttpModes = (typeof XHttpModes)[keyof typeof XHttpModes] + return orvalFetcher(getReconnectAllNodeUrl(params), + { + ...options, + method: 'POST' -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const XHttpModes = { - auto: 'auto', - 'packet-up': 'packet-up', - 'stream-up': 'stream-up', - 'stream-one': 'stream-one', -} as const -export type XHttpSettingsInputMode = XHttpModes | null + } +);} -export interface XHttpSettingsInput { - mode?: XHttpSettingsInputMode - no_grpc_header?: XHttpSettingsInputNoGrpcHeader - x_padding_bytes?: XHttpSettingsInputXPaddingBytes - x_padding_obfs_mode?: XHttpSettingsInputXPaddingObfsMode - x_padding_key?: XHttpSettingsInputXPaddingKey - x_padding_header?: XHttpSettingsInputXPaddingHeader - x_padding_placement?: XHttpSettingsInputXPaddingPlacement - x_padding_method?: XHttpSettingsInputXPaddingMethod - uplink_http_method?: XHttpSettingsInputUplinkHttpMethod - session_placement?: XHttpSettingsInputSessionPlacement - session_key?: XHttpSettingsInputSessionKey - seq_placement?: XHttpSettingsInputSeqPlacement - seq_key?: XHttpSettingsInputSeqKey - uplink_data_placement?: XHttpSettingsInputUplinkDataPlacement - uplink_data_key?: XHttpSettingsInputUplinkDataKey - uplink_chunk_size?: XHttpSettingsInputUplinkChunkSize - sc_max_each_post_bytes?: XHttpSettingsInputScMaxEachPostBytes - sc_min_posts_interval_ms?: XHttpSettingsInputScMinPostsIntervalMs - xmux?: XHttpSettingsInputXmux - download_settings?: XHttpSettingsInputDownloadSettings -} - -export type WorkerHealthError = string | null - -export type WorkerHealthResponseTimeMs = number | null -export interface WorkerHealth { - status: string - response_time_ms?: WorkerHealthResponseTimeMs - error?: WorkerHealthError -} -export interface WorkersHealth { - scheduler: WorkerHealth - node: WorkerHealth -} -export type WireGuardSettingsPublicKey = string | null +export const getReconnectAllNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{params?: ReconnectAllNodeParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{params?: ReconnectAllNodeParams}, TContext> => { -export type WireGuardSettingsPrivateKey = string | null +const mutationKey = ['reconnectAllNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export interface WireGuardSettings { - private_key?: WireGuardSettingsPrivateKey - public_key?: WireGuardSettingsPublicKey - peer_ips?: string[] -} -export interface WireGuardPeerIPsReallocateResponse { - wireguard_inbound_tags: number - candidates: number - updated: number - dry_run: boolean - sample_usernames: string[] - affected_users: number -} -export type WireGuardHostOverridesDns = string[] | null -export type WireGuardHostOverridesKeepaliveSeconds = number | null + const mutationFn: MutationFunction>, {params?: ReconnectAllNodeParams}> = (props) => { + const {params} = props ?? {}; -export type WireGuardHostOverridesReserved = string | null + return reconnectAllNode(params,requestOptions) + } -export type WireGuardHostOverridesMtu = number | null -export type WireGuardHostOverridesAllowedIps = string[] | null -/** - * Optional per-host values merged into WireGuard subscription output. - */ -export interface WireGuardHostOverrides { - allowed_ips?: WireGuardHostOverridesAllowedIps - mtu?: WireGuardHostOverridesMtu - reserved?: WireGuardHostOverridesReserved - keepalive_seconds?: WireGuardHostOverridesKeepaliveSeconds - dns?: WireGuardHostOverridesDns -} -export interface WebhookInfo { - url: string - secret: string -} -export type WebhookProxyUrl = string | null -export interface Webhook { - enable?: boolean - webhooks?: WebhookInfo[] - days_left?: number[] - usage_percent?: number[] - /** */ - timeout: number - /** */ - recurrent: number - proxy_url?: WebhookProxyUrl -} + return { mutationFn, ...mutationOptions }} -export type WebSocketSettingsHeartbeatPeriod = number | null + export type ReconnectAllNodeMutationResult = NonNullable>> -export interface WebSocketSettings { - heartbeatPeriod?: WebSocketSettingsHeartbeatPeriod -} + export type ReconnectAllNodeMutationError = ErrorType -export interface VlessSettings { - id?: string - flow?: XTLSFlows -} + /** + * @summary Reconnect All Node + */ +export const useReconnectAllNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{params?: ReconnectAllNodeParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {params?: ReconnectAllNodeParams}, + TContext + > => { + return useMutation(getReconnectAllNodeMutationOptions(options), queryClient); + } -export type ValidationErrorCtx = { [key: string]: unknown } +export const getCreateNodeUrl = () => { -export type ValidationErrorLocItem = string | number -export interface ValidationError { - loc: ValidationErrorLocItem[] - msg: string - type: string - input?: unknown - ctx?: ValidationErrorCtx -} -export interface VMessSettings { - id?: string + + return `/api/node` } /** - * Response model for lightweight user list. + * Create a new node to the database. + * @summary Create Node */ -export interface UsersSimpleResponse { - users: UserSimple[] - total: number -} +export const createNode = async (nodeCreate: NodeCreate, options?: RequestInit): Promise => { -export interface UsersResponse { - users: UserResponse[] - total: number -} + return orvalFetcher(getCreateNodeUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(nodeCreate) + } +);} -export type UsernameGenerationStrategy = (typeof UsernameGenerationStrategy)[keyof typeof UsernameGenerationStrategy] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const UsernameGenerationStrategy = { - random: 'random', - sequence: 'sequence', -} as const -export type UserUsageStatsListPeriod = Period | null -export interface UserUsageStatsList { - period?: UserUsageStatsListPeriod - start: string - end: string - stats: UserUsageStatsListStats -} +export const getCreateNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export interface UserUsageStat { - total_traffic: number - period_start: string -} +const mutationKey = ['createNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type UserUsageStatsListStats = { [key: string]: UserUsageStat[] } -export type UserTemplateSimpleName = string | null -/** - * Lightweight user template model with only id and name for performance. - */ -export interface UserTemplateSimple { - id: number - name?: UserTemplateSimpleName -} -/** - * Response model for lightweight user template list. - */ -export interface UserTemplatesSimpleResponse { - templates: UserTemplateSimple[] - total: number -} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; -export type UserTemplateResponseIsDisabled = boolean | null + return createNode(data,requestOptions) + } -export type UserTemplateResponseOnHoldTimeout = number | null -export type UserTemplateResponseResetUsages = boolean | null -export type UserTemplateResponseStatus = UserStatusCreate | null -export type UserTemplateResponseExtraSettings = ExtraSettings | null -export type UserTemplateResponseUsernameSuffix = string | null -export type UserTemplateResponseUsernamePrefix = string | null + return { mutationFn, ...mutationOptions }} -/** - * expire_duration can be 0 or greater in seconds + export type CreateNodeMutationResult = NonNullable>> + export type CreateNodeMutationBody = BodyType + export type CreateNodeMutationError = ErrorType + + /** + * @summary Create Node */ -export type UserTemplateResponseExpireDuration = number | null +export const useCreateNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateNodeMutationOptions(options), queryClient); + } + +export const getGetNodeUrl = (nodeId: number,) => { -export type UserTemplateResponseHwidLimit = number | null + + + + return `/api/node/${nodeId}` +} /** - * data_limit can be 0 or greater + * Retrieve details of a specific node by its ID. + * @summary Get Node */ -export type UserTemplateResponseDataLimit = number | null +export const getNode = async (nodeId: number, options?: RequestInit): Promise => { -export type UserTemplateResponseName = string | null + return orvalFetcher(getGetNodeUrl(nodeId), + { + ...options, + method: 'GET' -export interface UserTemplateResponse { - name?: UserTemplateResponseName - /** data_limit can be 0 or greater */ - data_limit?: UserTemplateResponseDataLimit - hwid_limit?: UserTemplateResponseHwidLimit - /** expire_duration can be 0 or greater in seconds */ - expire_duration?: UserTemplateResponseExpireDuration - username_prefix?: UserTemplateResponseUsernamePrefix - username_suffix?: UserTemplateResponseUsernameSuffix - group_ids: number[] - extra_settings?: UserTemplateResponseExtraSettings - status?: UserTemplateResponseStatus - reset_usages?: UserTemplateResponseResetUsages - on_hold_timeout?: UserTemplateResponseOnHoldTimeout - data_limit_reset_strategy?: DataLimitResetStrategy - is_disabled?: UserTemplateResponseIsDisabled - id: number -} -export type UserTemplateModifyIsDisabled = boolean | null + } +);} -export type UserTemplateModifyOnHoldTimeout = number | null -export type UserTemplateModifyResetUsages = boolean | null -export type UserTemplateModifyStatus = UserStatusCreate | null -export type UserTemplateModifyExtraSettings = ExtraSettings | null -export type UserTemplateModifyGroupIds = number[] | null +export const getGetNodeQueryKey = (nodeId: number,) => { + return [ + `/api/node/${nodeId}` + ] as const; + } -export type UserTemplateModifyUsernameSuffix = string | null -export type UserTemplateModifyUsernamePrefix = string | null +export const getGetNodeQueryOptions = >, TError = ErrorType>(nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -/** - * expire_duration can be 0 or greater in seconds - */ -export type UserTemplateModifyExpireDuration = number | null +const {query: queryOptions, request: requestOptions} = options ?? {}; -export type UserTemplateModifyHwidLimit = number | null + const queryKey = queryOptions?.queryKey ?? getGetNodeQueryKey(nodeId); -/** - * data_limit can be 0 or greater - */ -export type UserTemplateModifyDataLimit = number | null -export type UserTemplateModifyName = string | null -export interface UserTemplateModify { - name?: UserTemplateModifyName - /** data_limit can be 0 or greater */ - data_limit?: UserTemplateModifyDataLimit - hwid_limit?: UserTemplateModifyHwidLimit - /** expire_duration can be 0 or greater in seconds */ - expire_duration?: UserTemplateModifyExpireDuration - username_prefix?: UserTemplateModifyUsernamePrefix - username_suffix?: UserTemplateModifyUsernameSuffix - group_ids?: UserTemplateModifyGroupIds - extra_settings?: UserTemplateModifyExtraSettings - status?: UserTemplateModifyStatus - reset_usages?: UserTemplateModifyResetUsages - on_hold_timeout?: UserTemplateModifyOnHoldTimeout - data_limit_reset_strategy?: DataLimitResetStrategy - is_disabled?: UserTemplateModifyIsDisabled -} + const queryFn: QueryFunction>> = ({ signal }) => getNode(nodeId, { signal, ...requestOptions }); -export type UserTemplateCreateIsDisabled = boolean | null -export type UserTemplateCreateOnHoldTimeout = number | null -export type UserTemplateCreateResetUsages = boolean | null -export type UserTemplateCreateStatus = UserStatusCreate | null -export type UserTemplateCreateExtraSettings = ExtraSettings | null + return { queryKey, queryFn, enabled: nodeId !== null && nodeId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} -export type UserTemplateCreateUsernameSuffix = string | null +export type GetNodeQueryResult = NonNullable>> +export type GetNodeQueryError = ErrorType -export type UserTemplateCreateUsernamePrefix = string | null +export function useGetNode>, TError = ErrorType>( + nodeId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetNode>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetNode>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * expire_duration can be 0 or greater in seconds + * @summary Get Node */ -export type UserTemplateCreateExpireDuration = number | null -export type UserTemplateCreateHwidLimit = number | null +export function useGetNode>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -/** - * data_limit can be 0 or greater - */ -export type UserTemplateCreateDataLimit = number | null + const queryOptions = getGetNodeQueryOptions(nodeId,options) -export type UserTemplateCreateName = string | null + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export interface UserTemplateCreate { - name?: UserTemplateCreateName - /** data_limit can be 0 or greater */ - data_limit?: UserTemplateCreateDataLimit - hwid_limit?: UserTemplateCreateHwidLimit - /** expire_duration can be 0 or greater in seconds */ - expire_duration?: UserTemplateCreateExpireDuration - username_prefix?: UserTemplateCreateUsernamePrefix - username_suffix?: UserTemplateCreateUsernameSuffix - group_ids: number[] - extra_settings?: UserTemplateCreateExtraSettings - status?: UserTemplateCreateStatus - reset_usages?: UserTemplateCreateResetUsages - on_hold_timeout?: UserTemplateCreateOnHoldTimeout - data_limit_reset_strategy?: DataLimitResetStrategy - is_disabled?: UserTemplateCreateIsDisabled + return { ...query, queryKey: queryOptions.queryKey }; } -export type UserSubscriptionUpdateSchemaHwid = string | null -export type UserSubscriptionUpdateSchemaIp = string | null -export interface UserSubscriptionUpdateSchema { - created_at: string - user_agent: string - ip?: UserSubscriptionUpdateSchemaIp - hwid?: UserSubscriptionUpdateSchemaHwid -} -export interface UserSubscriptionUpdateList { - updates?: UserSubscriptionUpdateSchema[] - count: number -} -export interface UserSubscriptionUpdateChartSegment { - name: string - count: number - percentage: number -} -export interface UserSubscriptionUpdateChart { - total: number - segments?: UserSubscriptionUpdateChartSegment[] -} -export type UserStatusCreate = (typeof UserStatusCreate)[keyof typeof UserStatusCreate] +export const getModifyNodeUrl = (nodeId: number,) => { -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const UserStatusCreate = { - active: 'active', - on_hold: 'on_hold', -} as const -export type UserStatus = (typeof UserStatus)[keyof typeof UserStatus] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const UserStatus = { - active: 'active', - disabled: 'disabled', - limited: 'limited', - expired: 'expired', - on_hold: 'on_hold', -} as const + + return `/api/node/${nodeId}` +} /** - * Lightweight user model with only id and username for performance. + * Modify a node's details. Only accessible to sudo admins. + * @summary Modify Node */ -export interface UserSimple { - id: number - username: string -} +export const modifyNode = async (nodeId: number, + nodeModify: NodeModify, options?: RequestInit): Promise => { -export type UserResponseAdmin = AdminBase | null + return orvalFetcher(getModifyNodeUrl(nodeId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(nodeModify) + } +);} -export type UserResponseOnlineAt = string | null -export type UserResponseEditAt = string | null -export type UserResponseNextPlan = NextPlanModel | null -export type UserResponseHwidLimit = number | null +export const getModifyNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext> => { -export type UserResponseAutoDeleteInDays = number | null +const mutationKey = ['modifyNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type UserResponseGroupIds = number[] | null -export type UserResponseOnHoldTimeout = string | number | null -export type UserResponseOnHoldExpireDuration = number | null -export type UserResponseNote = string | null + const mutationFn: MutationFunction>, {nodeId: number;data: BodyType}> = (props) => { + const {nodeId,data} = props ?? {}; -export type UserResponseDataLimitResetStrategy = DataLimitResetStrategy | null + return modifyNode(nodeId,data,requestOptions) + } -/** - * data_limit can be 0 or greater - */ -export type UserResponseDataLimit = number | null -export type UserResponseExpire = string | number | null -export interface UserResponse { - proxy_settings?: ProxyTable - expire?: UserResponseExpire - /** data_limit can be 0 or greater */ - data_limit?: UserResponseDataLimit - data_limit_reset_strategy?: UserResponseDataLimitResetStrategy - note?: UserResponseNote - on_hold_expire_duration?: UserResponseOnHoldExpireDuration - on_hold_timeout?: UserResponseOnHoldTimeout - group_ids?: UserResponseGroupIds - auto_delete_in_days?: UserResponseAutoDeleteInDays - hwid_limit?: UserResponseHwidLimit - next_plan?: UserResponseNextPlan - id: number - username: string - status: UserStatus - used_traffic: number - lifetime_used_traffic?: number - created_at: string - edit_at?: UserResponseEditAt - online_at?: UserResponseOnlineAt - subscription_url?: string - admin?: UserResponseAdmin -} -export interface UserNotificationEnable { - create?: boolean - modify?: boolean - delete?: boolean - status_change?: boolean - reset_data_usage?: boolean - data_reset_by_next?: boolean - subscription_revoked?: boolean -} -export type UserModifyStatus = UserStatus | null -export type UserModifyNextPlan = NextPlanModel | null + return { mutationFn, ...mutationOptions }} -export type UserModifyHwidLimit = number | null + export type ModifyNodeMutationResult = NonNullable>> + export type ModifyNodeMutationBody = BodyType + export type ModifyNodeMutationError = ErrorType -export type UserModifyAutoDeleteInDays = number | null + /** + * @summary Modify Node + */ +export const useModifyNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyNodeMutationOptions(options), queryClient); + } -export type UserModifyGroupIds = number[] | null +export const getRemoveNodeUrl = (nodeId: number,) => { -export type UserModifyOnHoldTimeout = string | number | null -export type UserModifyOnHoldExpireDuration = number | null -export type UserModifyNote = string | null -export type UserModifyDataLimitResetStrategy = DataLimitResetStrategy | null + return `/api/node/${nodeId}` +} /** - * data_limit can be 0 or greater + * Remove a node and remove it from xray in the background. + * @summary Remove Node */ -export type UserModifyDataLimit = number | null +export const removeNode = async (nodeId: number, options?: RequestInit): Promise => { -export type UserModifyExpire = string | number | null + return orvalFetcher(getRemoveNodeUrl(nodeId), + { + ...options, + method: 'DELETE' -export type UserModifyProxySettings = ProxyTable | null -export interface UserModify { - proxy_settings?: UserModifyProxySettings - expire?: UserModifyExpire - /** data_limit can be 0 or greater */ - data_limit?: UserModifyDataLimit - data_limit_reset_strategy?: UserModifyDataLimitResetStrategy - note?: UserModifyNote - on_hold_expire_duration?: UserModifyOnHoldExpireDuration - on_hold_timeout?: UserModifyOnHoldTimeout - group_ids?: UserModifyGroupIds - auto_delete_in_days?: UserModifyAutoDeleteInDays - hwid_limit?: UserModifyHwidLimit - next_plan?: UserModifyNextPlan - status?: UserModifyStatus -} + } +);} -export type UserIPListIps = { [key: string]: number } -/** - * User IP list - mapping of IP addresses to connection counts - */ -export interface UserIPList { - ips: UserIPListIps -} -export type UserIPListAllNodes = { [key: string]: UserIPList | null } -/** - * User IP lists for all nodes - */ -export interface UserIPListAll { - nodes: UserIPListAllNodes -} +export const getRemoveNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number}, TContext> => { -export type UserHWIDResponseDeviceModel = string | null +const mutationKey = ['removeNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type UserHWIDResponseOsVersion = string | null -export type UserHWIDResponseDeviceOs = string | null -export interface UserHWIDResponse { - id: number - hwid: string - device_os?: UserHWIDResponseDeviceOs - os_version?: UserHWIDResponseOsVersion - device_model?: UserHWIDResponseDeviceModel - created_at: string - last_used_at: string -} -export interface UserHWIDListResponse { - hwids: UserHWIDResponse[] - count: number -} + const mutationFn: MutationFunction>, {nodeId: number}> = (props) => { + const {nodeId} = props ?? {}; -export type UserCreateStatus = UserStatus | null + return removeNode(nodeId,requestOptions) + } -export type UserCreateNextPlan = NextPlanModel | null -export type UserCreateHwidLimit = number | null -export type UserCreateAutoDeleteInDays = number | null -export type UserCreateGroupIds = number[] | null -export type UserCreateOnHoldTimeout = string | number | null -export type UserCreateOnHoldExpireDuration = number | null + return { mutationFn, ...mutationOptions }} -export type UserCreateNote = string | null + export type RemoveNodeMutationResult = NonNullable>> -export type UserCreateDataLimitResetStrategy = DataLimitResetStrategy | null + export type RemoveNodeMutationError = ErrorType -/** - * data_limit can be 0 or greater + /** + * @summary Remove Node */ -export type UserCreateDataLimit = number | null +export const useRemoveNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number}, + TContext + > => { + return useMutation(getRemoveNodeMutationOptions(options), queryClient); + } -export type UserCreateExpire = string | number | null +export const getUpdateNodeUrl = (nodeId: number,) => { -export interface UserCreate { - proxy_settings?: ProxyTable - expire?: UserCreateExpire - /** data_limit can be 0 or greater */ - data_limit?: UserCreateDataLimit - data_limit_reset_strategy?: UserCreateDataLimitResetStrategy - note?: UserCreateNote - on_hold_expire_duration?: UserCreateOnHoldExpireDuration - on_hold_timeout?: UserCreateOnHoldTimeout - group_ids?: UserCreateGroupIds - auto_delete_in_days?: UserCreateAutoDeleteInDays - hwid_limit?: UserCreateHwidLimit - next_plan?: UserCreateNextPlan - username: string - status?: UserCreateStatus -} -export type UserCountMetricStatsListPeriod = Period | null -export interface UserCountMetricStat { - count: number - period_start: string + + return `/api/node/${nodeId}/update` } -export type UserCountMetricStatsListStats = { [key: string]: UserCountMetricStat[] } +/** + * @summary Update Node + */ +export const updateNode = async (nodeId: number, options?: RequestInit): Promise => { -export type UserCountMetric = (typeof UserCountMetric)[keyof typeof UserCountMetric] + return orvalFetcher(getUpdateNodeUrl(nodeId), + { + ...options, + method: 'POST' -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const UserCountMetric = { - online: 'online', - expired: 'expired', - limited: 'limited', -} as const -export interface UserCountMetricStatsList { - period?: UserCountMetricStatsListPeriod - start: string - end: string - metric: UserCountMetric - stats: UserCountMetricStatsListStats -} + } +);} -export type UsageTable = (typeof UsageTable)[keyof typeof UsageTable] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const UsageTable = { - node_user_usages: 'node_user_usages', - node_usages: 'node_usages', -} as const -export interface Unauthorized { - detail?: string -} -export interface TrojanSettings { - password?: string -} +export const getUpdateNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number}, TContext> => { -export type TransportSettingsOutputWebsocketSettings = WebSocketSettings | null +const mutationKey = ['updateNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type TransportSettingsOutputTcpSettings = TcpSettings | null -export type TransportSettingsOutputKcpSettings = KCPSettings | null -export type TransportSettingsOutputGrpcSettings = GRPCSettings | null -export type TransportSettingsOutputXhttpSettings = XHttpSettingsOutput | null + const mutationFn: MutationFunction>, {nodeId: number}> = (props) => { + const {nodeId} = props ?? {}; -export interface TransportSettingsOutput { - xhttp_settings?: TransportSettingsOutputXhttpSettings - grpc_settings?: TransportSettingsOutputGrpcSettings - kcp_settings?: TransportSettingsOutputKcpSettings - tcp_settings?: TransportSettingsOutputTcpSettings - websocket_settings?: TransportSettingsOutputWebsocketSettings -} + return updateNode(nodeId,requestOptions) + } -export type TransportSettingsInputWebsocketSettings = WebSocketSettings | null -export type TransportSettingsInputTcpSettings = TcpSettings | null -export type TransportSettingsInputKcpSettings = KCPSettings | null -export type TransportSettingsInputGrpcSettings = GRPCSettings | null -export type TransportSettingsInputXhttpSettings = XHttpSettingsInput | null -export interface TransportSettingsInput { - xhttp_settings?: TransportSettingsInputXhttpSettings - grpc_settings?: TransportSettingsInputGrpcSettings - kcp_settings?: TransportSettingsInputKcpSettings - tcp_settings?: TransportSettingsInputTcpSettings - websocket_settings?: TransportSettingsInputWebsocketSettings -} + return { mutationFn, ...mutationOptions }} -export interface Token { - access_token: string - token_type?: string -} + export type UpdateNodeMutationResult = NonNullable>> -export type TelegramMiniAppWebUrl = string | null + export type UpdateNodeMutationError = ErrorType + + /** + * @summary Update Node + */ +export const useUpdateNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number}, + TContext + > => { + return useMutation(getUpdateNodeMutationOptions(options), queryClient); + } -export type TelegramProxyUrl = string | null +export const getUpdateCoreUrl = (nodeId: number,) => { -export type TelegramWebhookSecret = string | null -export type TelegramWebhookUrl = string | null -export type TelegramToken = string | null -export interface Telegram { - enable?: boolean - token?: TelegramToken - webhook_url?: TelegramWebhookUrl - webhook_secret?: TelegramWebhookSecret - proxy_url?: TelegramProxyUrl - method?: RunMethod - mini_app_login?: boolean - mini_app_web_url?: TelegramMiniAppWebUrl - for_admins_only?: boolean + return `/api/node/${nodeId}/core_update` } -export type TcpSettingsResponse = HTTPResponse | null +/** + * @summary Update Core + */ +export const updateCore = async (nodeId: number, + nodeCoreUpdate: NodeCoreUpdate, options?: RequestInit): Promise => { -export type TcpSettingsRequest = HTTPRequest | null + return orvalFetcher(getUpdateCoreUrl(nodeId), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(nodeCoreUpdate) + } +);} -export interface TcpSettings { - /** @pattern ^(?:|none|http)$ */ - header?: string - request?: TcpSettingsRequest - response?: TcpSettingsResponse -} -export type SystemStatsCpuUsage = number | null -export type SystemStatsCpuCores = number | null -export type SystemStatsDiskUsed = number | null +export const getUpdateCoreMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext> => { -export type SystemStatsDiskTotal = number | null +const mutationKey = ['updateCore']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type SystemStatsMemUsed = number | null -export type SystemStatsMemTotal = number | null -export interface SystemStats { - version: string - uptime_seconds: number - mem_total?: SystemStatsMemTotal - mem_used?: SystemStatsMemUsed - disk_total?: SystemStatsDiskTotal - disk_used?: SystemStatsDiskUsed - cpu_cores?: SystemStatsCpuCores - cpu_usage?: SystemStatsCpuUsage - total_user: number - online_users: number - active_users: number - on_hold_users: number - disabled_users: number - expired_users: number - limited_users: number - incoming_bandwidth: number - outgoing_bandwidth: number -} -export type SubscriptionUserResponseIp = string | null + const mutationFn: MutationFunction>, {nodeId: number;data: BodyType}> = (props) => { + const {nodeId,data} = props ?? {}; -export type SubscriptionUserResponseOnlineAt = string | null + return updateCore(nodeId,data,requestOptions) + } -export type SubscriptionUserResponseEditAt = string | null -export type SubscriptionUserResponseNextPlan = NextPlanModel | null -export type SubscriptionUserResponseHwidLimit = number | null -export type SubscriptionUserResponseGroupIds = number[] | null -export type SubscriptionUserResponseOnHoldTimeout = string | number | null -export type SubscriptionUserResponseOnHoldExpireDuration = number | null + return { mutationFn, ...mutationOptions }} -export type SubscriptionUserResponseDataLimitResetStrategy = DataLimitResetStrategy | null + export type UpdateCoreMutationResult = NonNullable>> + export type UpdateCoreMutationBody = BodyType + export type UpdateCoreMutationError = ErrorType -/** - * data_limit can be 0 or greater + /** + * @summary Update Core */ -export type SubscriptionUserResponseDataLimit = number | null +export const useUpdateCore = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number;data: BodyType}, + TContext + > => { + return useMutation(getUpdateCoreMutationOptions(options), queryClient); + } -export type SubscriptionUserResponseExpire = string | number | null +export const getUpdateGeofilesUrl = (nodeId: number,) => { -export interface SubscriptionUserResponse { - proxy_settings?: ProxyTable - expire?: SubscriptionUserResponseExpire - /** data_limit can be 0 or greater */ - data_limit?: SubscriptionUserResponseDataLimit - data_limit_reset_strategy?: SubscriptionUserResponseDataLimitResetStrategy - on_hold_expire_duration?: SubscriptionUserResponseOnHoldExpireDuration - on_hold_timeout?: SubscriptionUserResponseOnHoldTimeout - group_ids?: SubscriptionUserResponseGroupIds - hwid_limit?: SubscriptionUserResponseHwidLimit - next_plan?: SubscriptionUserResponseNextPlan - id: number - username: string - status: UserStatus - used_traffic: number - lifetime_used_traffic?: number - created_at: string - edit_at?: SubscriptionUserResponseEditAt - online_at?: SubscriptionUserResponseOnlineAt - ip?: SubscriptionUserResponseIp -} - -export type SubscriptionTemplatesXray = number | null -export interface SubscriptionTemplates { - xray?: SubscriptionTemplatesXray -} -export type SubRuleResponseHeaders = { [key: string]: unknown } -export interface SubRule { - pattern: string - target: ConfigFormat - response_headers?: SubRuleResponseHeaders + return `/api/node/${nodeId}/geofiles` } -export interface SubFormatEnable { - links?: boolean - links_base64?: boolean - xray?: boolean - wireguard?: boolean - sing_box?: boolean - clash?: boolean - clash_meta?: boolean - outline?: boolean -} +/** + * @summary Update Geofiles + */ +export const updateGeofiles = async (nodeId: number, + nodeGeoFilesUpdate: NodeGeoFilesUpdate, options?: RequestInit): Promise => { -export interface Subscription { - url_prefix?: string - update_interval?: number - support_url?: string - profile_title?: string - /** @maxLength 128 */ - announce?: string - announce_url?: string - response_headers?: Record - rules: SubRule[] - manual_sub_request?: SubFormatEnable - applications?: Application[] - allow_browser_config?: boolean - disable_sub_template?: boolean - randomize_order?: boolean -} + return orvalFetcher(getUpdateGeofilesUrl(nodeId), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(nodeGeoFilesUpdate) + } +);} -export type SingBoxMuxSettingsBrutal = Brutal | null -export type SingBoxMuxSettingsMinStreams = number | null -export type SingBoxMuxSettingsMaxStreams = number | null -export type SingBoxMuxSettingsMaxConnections = number | null +export const getUpdateGeofilesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext> => { -export interface SingBoxMuxSettings { - enable?: boolean - protocol?: MultiplexProtocol - max_connections?: SingBoxMuxSettingsMaxConnections - max_streams?: SingBoxMuxSettingsMaxStreams - min_streams?: SingBoxMuxSettingsMinStreams - padding?: boolean - brutal?: SingBoxMuxSettingsBrutal -} +const mutationKey = ['updateGeofiles']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export interface SingBoxFragmentSettings { - fragment?: boolean - /** @pattern ^$|^\d+ms$ */ - fragment_fallback_delay?: string - record_fragment?: boolean -} -export type ShadowsocksMethods = (typeof ShadowsocksMethods)[keyof typeof ShadowsocksMethods] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ShadowsocksMethods = { - 'aes-128-gcm': 'aes-128-gcm', - 'aes-256-gcm': 'aes-256-gcm', - 'chacha20-ietf-poly1305': 'chacha20-ietf-poly1305', - 'xchacha20-poly1305': 'xchacha20-poly1305', -} as const -export interface ShadowsocksSettings { - /** @minLength 22 */ - password?: string - method?: ShadowsocksMethods -} + const mutationFn: MutationFunction>, {nodeId: number;data: BodyType}> = (props) => { + const {nodeId,data} = props ?? {}; -export type SettingsSchemaGeneral = General | null + return updateGeofiles(nodeId,data,requestOptions) + } -export type SettingsSchemaHwid = HWIDSettings | null -export type SettingsSchemaSubscription = Subscription | null -export type SettingsSchemaNotificationEnable = NotificationEnable | null -export type SettingsSchemaNotificationSettings = NotificationSettings | null -export type SettingsSchemaWebhook = Webhook | null -export type SettingsSchemaDiscord = Discord | null + return { mutationFn, ...mutationOptions }} -export type SettingsSchemaTelegram = Telegram | null + export type UpdateGeofilesMutationResult = NonNullable>> + export type UpdateGeofilesMutationBody = BodyType + export type UpdateGeofilesMutationError = ErrorType -export interface SettingsSchema { - telegram?: SettingsSchemaTelegram - discord?: SettingsSchemaDiscord - webhook?: SettingsSchemaWebhook - notification_settings?: SettingsSchemaNotificationSettings - notification_enable?: SettingsSchemaNotificationEnable - subscription?: SettingsSchemaSubscription - hwid?: SettingsSchemaHwid - general?: SettingsSchemaGeneral -} + /** + * @summary Update Geofiles + */ +export const useUpdateGeofiles = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number;data: BodyType}, + TContext + > => { + return useMutation(getUpdateGeofilesMutationOptions(options), queryClient); + } -export type RunMethod = (typeof RunMethod)[keyof typeof RunMethod] +export const getResetNodeUsageUrl = (nodeId: number,) => { -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const RunMethod = { - webhook: 'webhook', - 'long-polling': 'long-polling', -} as const -export interface RemoveUsersResponse { - users: string[] - count: number -} -/** - * Response model for bulk user template deletion - */ -export interface RemoveUserTemplatesResponse { - templates: string[] - count: number -} -/** - * Response model for bulk node deletion - */ -export interface RemoveNodesResponse { - nodes: string[] - count: number + return `/api/node/${nodeId}/reset` } /** - * Response model for bulk host deletion + * Reset node traffic usage (uplink and downlink). +Creates a log entry in node_usage_reset_logs table. +Only accessible to sudo admins. + * @summary Reset Node Usage */ -export interface RemoveHostsResponse { - hosts: string[] - count: number -} +export const resetNodeUsage = async (nodeId: number, options?: RequestInit): Promise => { -/** - * Response model for bulk group deletion - */ -export interface RemoveGroupsResponse { - groups: string[] - count: number -} + return orvalFetcher(getResetNodeUsageUrl(nodeId), + { + ...options, + method: 'POST' -/** - * Response model for bulk core deletion - */ -export interface RemoveCoresResponse { - cores: string[] - count: number -} -/** - * Response model for bulk client template deletion - */ -export interface RemoveClientTemplatesResponse { - templates: string[] - count: number -} + } +);} -/** - * Response model for bulk admin deletion - */ -export interface RemoveAdminsResponse { - admins: string[] - count: number -} -export interface ProxyTable { - vmess?: VMessSettings - vless?: VlessSettings - trojan?: TrojanSettings - shadowsocks?: ShadowsocksSettings - wireguard?: WireGuardSettings - hysteria?: HysteriaSettings -} -export type ProxyHostSecurity = (typeof ProxyHostSecurity)[keyof typeof ProxyHostSecurity] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ProxyHostSecurity = { - inbound_default: 'inbound_default', - none: 'none', - tls: 'tls', -} as const +export const getResetNodeUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number}, TContext> => { -export type ProxyHostFingerprint = (typeof ProxyHostFingerprint)[keyof typeof ProxyHostFingerprint] +const mutationKey = ['resetNodeUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ProxyHostFingerprint = { - '': '', - chrome: 'chrome', - firefox: 'firefox', - safari: 'safari', - ios: 'ios', - android: 'android', - edge: 'edge', - NUMBER_360: '360', - qq: 'qq', - random: 'random', - randomized: 'randomized', - randomizednoalpn: 'randomizednoalpn', - unsafe: 'unsafe', -} as const -export type ProxyHostALPN = (typeof ProxyHostALPN)[keyof typeof ProxyHostALPN] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ProxyHostALPN = { - 'http/11': 'http/1.1', - h2: 'h2', - h3: 'h3', -} as const -export type Platform = (typeof Platform)[keyof typeof Platform] + const mutationFn: MutationFunction>, {nodeId: number}> = (props) => { + const {nodeId} = props ?? {}; -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const Platform = { - android: 'android', - ios: 'ios', - windows: 'windows', - macos: 'macos', - linux: 'linux', - appletv: 'appletv', - androidtv: 'androidtv', -} as const + return resetNodeUsage(nodeId,requestOptions) + } -export type Period = (typeof Period)[keyof typeof Period] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const Period = { - minute: 'minute', - hour: 'hour', - day: 'day', - month: 'month', -} as const -export type NotificationSettingsProxyUrl = string | null -export type NotificationSettingsDiscordWebhookUrl = string | null -export type NotificationSettingsTelegramTopicId = number | null -export type NotificationSettingsTelegramChatId = number | null + return { mutationFn, ...mutationOptions }} -export type NotificationSettingsTelegramApiToken = string | null + export type ResetNodeUsageMutationResult = NonNullable>> -export interface NotificationSettings { - notify_telegram?: boolean - notify_discord?: boolean - telegram_api_token?: NotificationSettingsTelegramApiToken - telegram_chat_id?: NotificationSettingsTelegramChatId - telegram_topic_id?: NotificationSettingsTelegramTopicId - discord_webhook_url?: NotificationSettingsDiscordWebhookUrl - channels?: NotificationChannels - proxy_url?: NotificationSettingsProxyUrl - /** */ - max_retries: number -} + export type ResetNodeUsageMutationError = ErrorType -export interface NotificationEnable { - admin?: AdminNotificationEnable - core?: BaseNotificationEnable - group?: BaseNotificationEnable - host?: HostNotificationEnable - node?: NodeNotificationEnable - user?: UserNotificationEnable - user_template?: BaseNotificationEnable - days_left?: boolean - percentage_reached?: boolean -} + /** + * @summary Reset Node Usage + */ +export const useResetNodeUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number}, + TContext + > => { + return useMutation(getResetNodeUsageMutationOptions(options), queryClient); + } -export type NotificationChannelDiscordWebhookUrl = string | null +export const getReconnectNodeUrl = (nodeId: number,) => { -export type NotificationChannelTelegramTopicId = number | null -export type NotificationChannelTelegramChatId = number | null -/** - * Channel configuration for sending notifications to a specific entity - */ -export interface NotificationChannel { - telegram_chat_id?: NotificationChannelTelegramChatId - telegram_topic_id?: NotificationChannelTelegramTopicId - discord_webhook_url?: NotificationChannelDiscordWebhookUrl + + return `/api/node/${nodeId}/reconnect` } /** - * Per-object notification channels + * Trigger a reconnection for the specified node. Only accessible to sudo admins. + * @summary Reconnect Node */ -export interface NotificationChannels { - admin?: NotificationChannel - core?: NotificationChannel - group?: NotificationChannel - host?: NotificationChannel - node?: NotificationChannel - user?: NotificationChannel - user_template?: NotificationChannel -} +export const reconnectNode = async (nodeId: number, options?: RequestInit): Promise => { -export interface NotFound { - detail?: string -} + return orvalFetcher(getReconnectNodeUrl(nodeId), + { + ...options, + method: 'POST' -export type NoiseSettingsXray = XrayNoiseSettings[] | null -export interface NoiseSettings { - xray?: NoiseSettingsXray -} + } +);} -/** - * Response model for lightweight node list. - */ -export interface NodesSimpleResponse { - nodes: NodeSimple[] - total: number -} -export interface NodesResponse { - nodes: NodeResponse[] - total: number -} -export type NodeUsageStatsListStats = { [key: string]: NodeUsageStat[] } -export type NodeUsageStatsListPeriod = Period | null +export const getReconnectNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number}, TContext> => { -export interface NodeUsageStatsList { - period?: NodeUsageStatsListPeriod - start: string - end: string - stats: NodeUsageStatsListStats -} +const mutationKey = ['reconnectNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export interface NodeUsageStat { - uplink: number - downlink: number - period_start: string -} -export type NodeStatus = (typeof NodeStatus)[keyof typeof NodeStatus] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const NodeStatus = { - connected: 'connected', - connecting: 'connecting', - error: 'error', - disabled: 'disabled', - limited: 'limited', -} as const -export type NodeStatsListPeriod = Period | null + const mutationFn: MutationFunction>, {nodeId: number}> = (props) => { + const {nodeId} = props ?? {}; -export interface NodeStats { - period_start: string - mem_usage_percentage: number - cpu_usage_percentage: number - incoming_bandwidth_speed: number - outgoing_bandwidth_speed: number -} + return reconnectNode(nodeId,requestOptions) + } -export interface NodeStatsList { - period?: NodeStatsListPeriod - start: string - end: string - stats: NodeStats[] -} -/** - * Lightweight node model with only id and name for performance. - */ -export interface NodeSimple { - id: number - name: string - status: NodeStatus -} -export interface NodeSettings { - min_node_version?: string -} -export type NodeResponseCoreVersion = string | null -export type NodeResponseLifetimeDownlink = number | null -export type NodeResponseLifetimeUplink = number | null + return { mutationFn, ...mutationOptions }} -export type NodeResponseMessage = string | null + export type ReconnectNodeMutationResult = NonNullable>> -export type NodeResponseNodeVersion = string | null + export type ReconnectNodeMutationError = ErrorType -export type NodeResponseXrayVersion = string | null + /** + * @summary Reconnect Node + */ +export const useReconnectNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number}, + TContext + > => { + return useMutation(getReconnectNodeMutationOptions(options), queryClient); + } -export type NodeResponseProxyUrl = string | null +export const getSyncNodeUrl = (nodeId: number, + params?: SyncNodeParams,) => { + const normalizedParams = new URLSearchParams(); -export type NodeResponseApiKey = string | null + Object.entries(params || {}).forEach(([key, value]) => { -export type NodeResponseCoreConfigId = number | null + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -export interface NodeResponse { - name: string - address: string - port?: number - api_port?: number - /** */ - usage_coefficient?: number - connection_type: NodeConnectionType - server_ca: string - keep_alive: number - core_config_id: NodeResponseCoreConfigId - api_key: NodeResponseApiKey - data_limit?: number - data_limit_reset_strategy?: DataLimitResetStrategy - reset_time?: number - /** - * @minimum 3 - * @maximum 60 - */ - default_timeout?: number - /** - * @minimum 3 - * @maximum 60 - */ - internal_timeout?: number - proxy_url?: NodeResponseProxyUrl - id: number - xray_version: NodeResponseXrayVersion - node_version: NodeResponseNodeVersion - status: NodeStatus - message: NodeResponseMessage - uplink?: number - downlink?: number - lifetime_uplink?: NodeResponseLifetimeUplink - lifetime_downlink?: NodeResponseLifetimeDownlink - readonly core_version: NodeResponseCoreVersion -} + const stringifiedParams = normalizedParams.toString(); -export interface NodeRealtimeStats { - mem_total: number - mem_used: number - cpu_cores: number - cpu_usage: number - incoming_bandwidth_speed: number - outgoing_bandwidth_speed: number - uptime: number + return stringifiedParams.length > 0 ? `/api/node/${nodeId}/sync?${stringifiedParams}` : `/api/node/${nodeId}/sync` } -export interface NodeNotificationEnable { - create?: boolean - modify?: boolean - delete?: boolean - connect?: boolean - error?: boolean - limited?: boolean - reset_usage?: boolean -} +/** + * @summary Sync Node + */ +export const syncNode = async (nodeId: number, + params?: SyncNodeParams, options?: RequestInit): Promise => { -export type NodeModifyStatus = NodeStatus | null + return orvalFetcher(getSyncNodeUrl(nodeId,params), + { + ...options, + method: 'PUT' -export type NodeModifyProxyUrl = string | null -export type NodeModifyInternalTimeout = number | null + } +);} -export type NodeModifyDefaultTimeout = number | null -export type NodeModifyResetTime = number | null -export type NodeModifyDataLimitResetStrategy = DataLimitResetStrategy | null -export type NodeModifyDataLimit = number | null +export const getSyncNodeMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;params?: SyncNodeParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{nodeId: number;params?: SyncNodeParams}, TContext> => { -export type NodeModifyApiKey = string | null +const mutationKey = ['syncNode']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type NodeModifyCoreConfigId = number | null -export type NodeModifyKeepAlive = number | null -export type NodeModifyServerCa = string | null -export type NodeModifyConnectionType = NodeConnectionType | null + const mutationFn: MutationFunction>, {nodeId: number;params?: SyncNodeParams}> = (props) => { + const {nodeId,params} = props ?? {}; -export type NodeModifyUsageCoefficient = number | null + return syncNode(nodeId,params,requestOptions) + } -export type NodeModifyPort = number | null -export type NodeModifyAddress = string | null -export type NodeModifyName = string | null -export interface NodeModify { - name?: NodeModifyName - address?: NodeModifyAddress - port?: NodeModifyPort - api_port?: number - usage_coefficient?: NodeModifyUsageCoefficient - connection_type?: NodeModifyConnectionType - server_ca?: NodeModifyServerCa - keep_alive?: NodeModifyKeepAlive - core_config_id?: NodeModifyCoreConfigId - api_key?: NodeModifyApiKey - data_limit?: NodeModifyDataLimit - data_limit_reset_strategy?: NodeModifyDataLimitResetStrategy - reset_time?: NodeModifyResetTime - default_timeout?: NodeModifyDefaultTimeout - internal_timeout?: NodeModifyInternalTimeout - proxy_url?: NodeModifyProxyUrl - status?: NodeModifyStatus -} -export interface NodeGeoFilesUpdate { - region?: GeoFilseRegion -} -export type NodeCreateProxyUrl = string | null + return { mutationFn, ...mutationOptions }} -export interface NodeCreate { - name: string - address: string - port?: number - api_port?: number - /** */ - usage_coefficient?: number - connection_type: NodeConnectionType - server_ca: string - keep_alive: number - core_config_id: number - api_key: string - data_limit?: number - data_limit_reset_strategy?: DataLimitResetStrategy - reset_time?: number - /** - * @minimum 3 - * @maximum 60 - */ - default_timeout?: number - /** - * @minimum 3 - * @maximum 60 - */ - internal_timeout?: number - proxy_url?: NodeCreateProxyUrl -} + export type SyncNodeMutationResult = NonNullable>> -export interface NodeCoreUpdate { - /** @pattern ^(latest|v?\d+\.\d+\.\d+)$ */ - core_version?: string -} + export type SyncNodeMutationError = ErrorType -export type NodeConnectionType = (typeof NodeConnectionType)[keyof typeof NodeConnectionType] + /** + * @summary Sync Node + */ +export const useSyncNode = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{nodeId: number;params?: SyncNodeParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {nodeId: number;params?: SyncNodeParams}, + TContext + > => { + return useMutation(getSyncNodeMutationOptions(options), queryClient); + } -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const NodeConnectionType = { - grpc: 'grpc', - rest: 'rest', -} as const +export const getNodeLogsUrl = (nodeId: number,) => { -export type NextPlanModelExpire = number | null -export type NextPlanModelDataLimit = number | null -export type NextPlanModelUserTemplateId = number | null -export interface NextPlanModel { - user_template_id?: NextPlanModelUserTemplateId - data_limit?: NextPlanModelDataLimit - expire?: NextPlanModelExpire - add_remaining_traffic?: boolean + return `/api/node/${nodeId}/logs` } -export type MuxSettingsOutputXray = XrayMuxSettingsOutput | null - -export type MuxSettingsOutputClash = ClashMuxSettings | null +/** + * Stream logs for a specific node as Server-Sent Events. + * @summary Node Logs + */ +export const nodeLogs = async (nodeId: number, options?: RequestInit): Promise => { -export type MuxSettingsOutputSingBox = SingBoxMuxSettings | null + return orvalFetcher(getNodeLogsUrl(nodeId), + { + ...options, + method: 'GET' -export interface MuxSettingsOutput { - sing_box?: MuxSettingsOutputSingBox - clash?: MuxSettingsOutputClash - xray?: MuxSettingsOutputXray -} -export type MuxSettingsInputXray = XrayMuxSettingsInput | null + } +);} -export type MuxSettingsInputClash = ClashMuxSettings | null -export type MuxSettingsInputSingBox = SingBoxMuxSettings | null -export interface MuxSettingsInput { - sing_box?: MuxSettingsInputSingBox - clash?: MuxSettingsInputClash - xray?: MuxSettingsInputXray -} -export type MultiplexProtocol = (typeof MultiplexProtocol)[keyof typeof MultiplexProtocol] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const MultiplexProtocol = { - smux: 'smux', - yamux: 'yamux', - h2mux: 'h2mux', -} as const +export const getNodeLogsQueryKey = (nodeId: number,) => { + return [ + `/api/node/${nodeId}/logs` + ] as const; + } -export type ModifyUserByTemplateNote = string | null -export interface ModifyUserByTemplate { - user_template_id: number - note?: ModifyUserByTemplateNote -} +export const getNodeLogsQueryOptions = >, TError = ErrorType>(nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export type Language = (typeof Language)[keyof typeof Language] +const {query: queryOptions, request: requestOptions} = options ?? {}; -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const Language = { - fa: 'fa', - en: 'en', - ru: 'ru', - zh: 'zh', -} as const + const queryKey = queryOptions?.queryKey ?? getNodeLogsQueryKey(nodeId); -export type KCPSettingsWriteBufferSize = number | null -export type KCPSettingsReadBufferSize = number | null -export type KCPSettingsCongestion = boolean | null + const queryFn: QueryFunction>> = ({ signal }) => nodeLogs(nodeId, { signal, ...requestOptions }); -export type KCPSettingsDownlinkCapacity = number | null -export type KCPSettingsUplinkCapacity = number | null -export type KCPSettingsTti = number | null -export type KCPSettingsMtu = number | null -export interface KCPSettings { - mtu?: KCPSettingsMtu - tti?: KCPSettingsTti - uplink_capacity?: KCPSettingsUplinkCapacity - downlink_capacity?: KCPSettingsDownlinkCapacity - congestion?: KCPSettingsCongestion - read_buffer_size?: KCPSettingsReadBufferSize - write_buffer_size?: KCPSettingsWriteBufferSize + return { queryKey, queryFn, enabled: nodeId !== null && nodeId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type InboundSummaryNetwork = string | null - -export interface InboundSummary { - tag: string - protocol: string - network?: InboundSummaryNetwork -} +export type NodeLogsQueryResult = NonNullable>> +export type NodeLogsQueryError = ErrorType -export interface HysteriaSettings { - /** @minLength 1 */ - auth?: string -} -export interface HostNotificationEnable { - create?: boolean - modify?: boolean - delete?: boolean - modify_hosts?: boolean -} +export function useNodeLogs>, TError = ErrorType>( + nodeId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useNodeLogs>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useNodeLogs>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Node Logs + */ -export interface HWIDSettings { - enabled?: boolean - forced?: boolean - /** @minimum 0 */ - fallback_limit?: number - /** @minimum 0 */ - min_limit?: number - /** @minimum 0 */ - max_limit?: number -} +export function useNodeLogs>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export interface HTTPValidationError { - detail?: ValidationError[] + const queryOptions = getNodeLogsQueryOptions(nodeId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export type HTTPResponseHeadersAnyOf = { [key: string]: string[] } -export type HTTPResponseHeaders = HTTPResponseHeadersAnyOf | null -export interface HTTPResponse { - /** @pattern ^(1(?:\.0|\.1)|2\.0|3\.0)$ */ - version?: string - headers?: HTTPResponseHeaders - /** @pattern ^[1-5]\d{2}$ */ - status?: string - /** @pattern ^(?i)(?:OK|Created|Accepted|Non-Authoritative Information|No Content|Reset Content|Partial Content|Multiple Choices|Moved Permanently|Found|See Other|Not Modified|Use Proxy|Temporary Redirect|Permanent Redirect|Bad Request|Unauthorized|Payment Required|Forbidden|Not Found|Method Not Allowed|Not Acceptable|Proxy Authentication Required|Request Timeout|Conflict|Gone|Length Required|Precondition Failed|Payload Too Large|URI Too Long|Unsupported Media Type|Range Not Satisfiable|Expectation Failed|I'm a teapot|Misdirected Request|Unprocessable Entity|Locked|Failed Dependency|Too Early|Upgrade Required|Precondition Required|Too Many Requests|Request Header Fields Too Large|Unavailable For Legal Reasons|Internal Server Error|Not Implemented|Bad Gateway|Service Unavailable|Gateway Timeout|HTTP Version Not Supported)$ */ - reason?: string -} -export type HTTPRequestHeadersAnyOf = { [key: string]: string[] } -export type HTTPRequestHeaders = HTTPRequestHeadersAnyOf | null -export interface HTTPRequest { - /** @pattern ^(1(?:\.0|\.1)|2\.0|3\.0)$ */ - version?: string - headers?: HTTPRequestHeaders - /** @pattern ^(GET|POST|PUT|DELETE|HEAD|OPTIONS|PATCH|TRACE|CONNECT)$ */ - method?: string -} -export interface HTTPException { - detail: string -} +export const getGetNodeStatsPeriodicUrl = (nodeId: number, + params?: GetNodeStatsPeriodicParams,) => { + const normalizedParams = new URLSearchParams(); -/** - * Lightweight group model with only id and name for performance. - */ -export interface GroupSimple { - id: number - name: string + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/node/${nodeId}/stats?${stringifiedParams}` : `/api/node/${nodeId}/stats` } /** - * Response model for lightweight group list. + * @summary Get Node Stats Periodic */ -export interface GroupsSimpleResponse { - groups: GroupSimple[] - total: number -} +export const getNodeStatsPeriodic = async (nodeId: number, + params?: GetNodeStatsPeriodicParams, options?: RequestInit): Promise => { -export type GroupResponseInboundTags = string[] | null + return orvalFetcher(getGetNodeStatsPeriodicUrl(nodeId,params), + { + ...options, + method: 'GET' -export interface GroupResponse { - /** - * @minLength 3 - * @maxLength 64 - */ - name: string - inbound_tags?: GroupResponseInboundTags - is_disabled?: boolean - id: number - total_users?: number -} -export interface GroupsResponse { - groups: GroupResponse[] - total: number -} + } +);} -export type GroupModifyInboundTags = string[] | null -export interface GroupModify { - /** - * @minLength 3 - * @maxLength 64 - */ - name: string - inbound_tags?: GroupModifyInboundTags - is_disabled?: boolean -} -export interface GroupCreate { - /** - * @minLength 3 - * @maxLength 64 - */ - name: string - inbound_tags: string[] - is_disabled?: boolean -} -export type GeoFilseRegion = (typeof GeoFilseRegion)[keyof typeof GeoFilseRegion] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const GeoFilseRegion = { - iran: 'iran', - china: 'china', - russia: 'russia', -} as const +export const getGetNodeStatsPeriodicQueryKey = (nodeId: number, + params?: GetNodeStatsPeriodicParams,) => { + return [ + `/api/node/${nodeId}/stats`, ...(params ? [params] : []) + ] as const; + } -export interface General { - default_flow?: XTLSFlows - default_method?: ShadowsocksMethods -} -export type GRPCSettingsInitialWindowsSize = number | null +export const getGetNodeStatsPeriodicQueryOptions = >, TError = ErrorType>(nodeId: number, + params?: GetNodeStatsPeriodicParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export type GRPCSettingsHealthCheckTimeout = number | null +const {query: queryOptions, request: requestOptions} = options ?? {}; -export type GRPCSettingsIdleTimeout = number | null + const queryKey = queryOptions?.queryKey ?? getGetNodeStatsPeriodicQueryKey(nodeId,params); -export interface GRPCSettings { - multi_mode?: boolean - idle_timeout?: GRPCSettingsIdleTimeout - health_check_timeout?: GRPCSettingsHealthCheckTimeout - permit_without_stream?: boolean - initial_windows_size?: GRPCSettingsInitialWindowsSize -} -export type FragmentSettingsSingBox = SingBoxFragmentSettings | null -export type FragmentSettingsXray = XrayFragmentSettings | null + const queryFn: QueryFunction>> = ({ signal }) => getNodeStatsPeriodic(nodeId,params, { signal, ...requestOptions }); -export interface FragmentSettings { - xray?: FragmentSettingsXray - sing_box?: FragmentSettingsSingBox -} -export interface Forbidden { - detail?: string -} -export type ExtraSettingsMethod = ShadowsocksMethods | null -export type ExtraSettingsFlow = XTLSFlows | null -export interface ExtraSettings { - flow?: ExtraSettingsFlow - method?: ExtraSettingsMethod + return { queryKey, queryFn, enabled: nodeId !== null && nodeId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type ECHQueryStrategy = (typeof ECHQueryStrategy)[keyof typeof ECHQueryStrategy] +export type GetNodeStatsPeriodicQueryResult = NonNullable>> +export type GetNodeStatsPeriodicQueryError = ErrorType -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ECHQueryStrategy = { - none: 'none', - half: 'half', - full: 'full', -} as const -export interface DownloadLink { - /** @maxLength 64 */ - name: string - url: string - language: Language -} +export function useGetNodeStatsPeriodic>, TError = ErrorType>( + nodeId: number, + params: undefined | GetNodeStatsPeriodicParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetNodeStatsPeriodic>, TError = ErrorType>( + nodeId: number, + params?: GetNodeStatsPeriodicParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetNodeStatsPeriodic>, TError = ErrorType>( + nodeId: number, + params?: GetNodeStatsPeriodicParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get Node Stats Periodic + */ + +export function useGetNodeStatsPeriodic>, TError = ErrorType>( + nodeId: number, + params?: GetNodeStatsPeriodicParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export type DiscordProxyUrl = string | null + const queryOptions = getGetNodeStatsPeriodicQueryOptions(nodeId,params,options) -export type DiscordToken = string | null + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export interface Discord { - enable?: boolean - token?: DiscordToken - proxy_url?: DiscordProxyUrl + return { ...query, queryKey: queryOptions.queryKey }; } -export type DataLimitResetStrategy = (typeof DataLimitResetStrategy)[keyof typeof DataLimitResetStrategy] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const DataLimitResetStrategy = { - no_reset: 'no_reset', - day: 'day', - week: 'week', - month: 'month', - year: 'year', -} as const -export type CreateUserFromTemplateNote = string | null -export interface CreateUserFromTemplate { - user_template_id: number - note?: CreateUserFromTemplateNote - username: string -} -export type CreateHostSubscriptionTemplates = SubscriptionTemplates | null -export type CreateHostWireguardOverrides = WireGuardHostOverrides | null -export type CreateHostVerifyPeerCertByName = string[] | null +export const getRealtimeNodeStatsUrl = (nodeId: number,) => { + + -export type CreateHostPinnedPeerCertSha256 = string | null -export type CreateHostEchQueryStrategy = ECHQueryStrategy | null + return `/api/node/${nodeId}/realtime_stats` +} -export type CreateHostEchConfigList = string | null +/** + * Retrieve node real-time statistics. + * @summary Realtime Node Stats + */ +export const realtimeNodeStats = async (nodeId: number, options?: RequestInit): Promise => { -export type CreateHostStatus = UserStatus[] | null + return orvalFetcher(getRealtimeNodeStatsUrl(nodeId), + { + ...options, + method: 'GET' -export type CreateHostVlessRoute = string | null -export type CreateHostNoiseSettings = NoiseSettings | null + } +);} -export type CreateHostFragmentSettings = FragmentSettings | null -export type CreateHostMuxSettings = MuxSettingsInput | null -export type CreateHostTransportSettings = TransportSettingsInput | null -export type CreateHostHttpHeadersAnyOf = { [key: string]: string } -export type CreateHostHttpHeaders = CreateHostHttpHeadersAnyOf | null +export const getRealtimeNodeStatsQueryKey = (nodeId: number,) => { + return [ + `/api/node/${nodeId}/realtime_stats` + ] as const; + } -export type CreateHostAllowinsecure = boolean | null -export type CreateHostAlpn = ProxyHostALPN[] | null +export const getRealtimeNodeStatsQueryOptions = >, TError = ErrorType>(nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export type CreateHostPath = string | null +const {query: queryOptions, request: requestOptions} = options ?? {}; -export type CreateHostHost = string[] | null + const queryKey = queryOptions?.queryKey ?? getRealtimeNodeStatsQueryKey(nodeId); -export type CreateHostSni = string[] | null -export type CreateHostPort = number | null -export type CreateHostInboundTag = string | null + const queryFn: QueryFunction>> = ({ signal }) => realtimeNodeStats(nodeId, { signal, ...requestOptions }); -export type CreateHostId = number | null -export interface CreateHost { - id?: CreateHostId - remark: string - address?: string[] - inbound_tag?: CreateHostInboundTag - port?: CreateHostPort - sni?: CreateHostSni - host?: CreateHostHost - path?: CreateHostPath - security?: ProxyHostSecurity - alpn?: CreateHostAlpn - fingerprint?: ProxyHostFingerprint - allowinsecure?: CreateHostAllowinsecure - is_disabled?: boolean - http_headers?: CreateHostHttpHeaders - transport_settings?: CreateHostTransportSettings - mux_settings?: CreateHostMuxSettings - fragment_settings?: CreateHostFragmentSettings - noise_settings?: CreateHostNoiseSettings - random_user_agent?: boolean - use_sni_as_host?: boolean - vless_route?: CreateHostVlessRoute - priority: number - status?: CreateHostStatus - ech_config_list?: CreateHostEchConfigList - ech_query_strategy?: CreateHostEchQueryStrategy - pinned_peer_cert_sha256?: CreateHostPinnedPeerCertSha256 - verify_peer_cert_by_name?: CreateHostVerifyPeerCertByName - wireguard_overrides?: CreateHostWireguardOverrides - subscription_templates?: CreateHostSubscriptionTemplates + + + + return { queryKey, queryFn, enabled: nodeId !== null && nodeId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type RealtimeNodeStatsQueryResult = NonNullable>> +export type RealtimeNodeStatsQueryError = ErrorType + + +export function useRealtimeNodeStats>, TError = ErrorType>( + nodeId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useRealtimeNodeStats>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useRealtimeNodeStats>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Response model for lightweight core list. + * @summary Realtime Node Stats */ -export interface CoresSimpleResponse { - cores: CoreSimple[] - total: number -} -export type CoreType = (typeof CoreType)[keyof typeof CoreType] +export function useRealtimeNodeStats>, TError = ErrorType>( + nodeId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const CoreType = { - xray: 'xray', - wg: 'wg', - mtproto: 'mtproto', - singbox: 'singbox', -} as const + const queryOptions = getRealtimeNodeStatsQueryOptions(nodeId,options) -export type CoreSimpleType = CoreType | null + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -/** - * Lightweight core model with only id, name and type for performance. - */ -export interface CoreSimple { - id: number - name: string - type?: CoreSimpleType + return { ...query, queryKey: queryOptions.queryKey }; } -export type CoreResponseType = CoreType | null -export type CoreResponseConfig = { [key: string]: unknown } -export interface CoreResponse { - name: string - config: CoreResponseConfig - type?: CoreResponseType - exclude_inbound_tags: string[] - fallbacks_inbound_tags: string[] - id: number - created_at: string -} -export interface CoreResponseList { - count: number - cores?: CoreResponse[] -} -export type CoreCreateFallbacksInboundTags = unknown[] | null -export type CoreCreateExcludeInboundTags = unknown[] | null -export type CoreCreateType = CoreType | null +export const getRealtimeNodesStatsUrl = () => { -export type CoreCreateConfig = { [key: string]: unknown } -export type CoreCreateName = string | null -export interface CoreCreate { - name?: CoreCreateName - config: CoreCreateConfig - type?: CoreCreateType - exclude_inbound_tags?: CoreCreateExcludeInboundTags - fallbacks_inbound_tags?: CoreCreateFallbacksInboundTags -} -export interface Conflict { - detail?: string + return `/api/nodes/realtime_stats` } -export type ConfigFormat = (typeof ConfigFormat)[keyof typeof ConfigFormat] +/** + * Retrieve nodes real-time statistics. + * @summary Realtime Nodes Stats + */ +export const realtimeNodesStats = async ( options?: RequestInit): Promise => { -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ConfigFormat = { - links: 'links', - links_base64: 'links_base64', - xray: 'xray', - wireguard: 'wireguard', - sing_box: 'sing_box', - clash: 'clash', - clash_meta: 'clash_meta', - outline: 'outline', - block: 'block', -} as const + return orvalFetcher(getRealtimeNodesStatsUrl(), + { + ...options, + method: 'GET' -export type ClientTemplateType = (typeof ClientTemplateType)[keyof typeof ClientTemplateType] -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const ClientTemplateType = { - clash_subscription: 'clash_subscription', - xray_subscription: 'xray_subscription', - singbox_subscription: 'singbox_subscription', - user_agent: 'user_agent', - grpc_user_agent: 'grpc_user_agent', -} as const + } +);} -export interface ClientTemplateSimple { - id: number - name: string - template_type: ClientTemplateType - is_default: boolean -} -export interface ClientTemplatesSimpleResponse { - templates: ClientTemplateSimple[] - total: number -} -export interface ClientTemplateResponse { - id: number - name: string - template_type: ClientTemplateType - content: string - is_default: boolean - is_system: boolean -} -export interface ClientTemplateResponseList { - count: number - templates?: ClientTemplateResponse[] -} -export type ClientTemplateModifyIsDefault = boolean | null +export const getRealtimeNodesStatsQueryKey = () => { + return [ + `/api/nodes/realtime_stats` + ] as const; + } -export type ClientTemplateModifyContent = string | null -export type ClientTemplateModifyName = string | null +export const getRealtimeNodesStatsQueryOptions = >, TError = ErrorType>( options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export interface ClientTemplateModify { - name?: ClientTemplateModifyName - content?: ClientTemplateModifyContent - is_default?: ClientTemplateModifyIsDefault -} +const {query: queryOptions, request: requestOptions} = options ?? {}; -export interface ClientTemplateCreate { - /** @maxLength 64 */ - name: string - template_type: ClientTemplateType - content: string - is_default?: boolean -} + const queryKey = queryOptions?.queryKey ?? getRealtimeNodesStatsQueryKey(); -export interface Brutal { - enable?: boolean - up_mbps: number - down_mbps: number -} -export type ClashMuxSettingsBrutal = Brutal | null -export type ClashMuxSettingsMinStreams = number | null + const queryFn: QueryFunction>> = ({ signal }) => realtimeNodesStats({ signal, ...requestOptions }); -export type ClashMuxSettingsMaxStreams = number | null -export type ClashMuxSettingsMaxConnections = number | null -export interface ClashMuxSettings { - enable?: boolean - protocol?: MultiplexProtocol - max_connections?: ClashMuxSettingsMaxConnections - max_streams?: ClashMuxSettingsMaxStreams - min_streams?: ClashMuxSettingsMinStreams - padding?: boolean - brutal?: ClashMuxSettingsBrutal - statistic?: boolean - only_tcp?: boolean + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type BulkWireGuardPeerIPsExpireBefore = string | null +export type RealtimeNodesStatsQueryResult = NonNullable>> +export type RealtimeNodesStatsQueryError = ErrorType -export type BulkWireGuardPeerIPsExpireAfter = string | null +export function useRealtimeNodesStats>, TError = ErrorType>( + options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useRealtimeNodesStats>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useRealtimeNodesStats>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Re-seat WireGuard peer IPs (same scoping as BulkUser: users, admins, group_ids, status). + * @summary Realtime Nodes Stats */ -export interface BulkWireGuardPeerIPs { - dry_run?: boolean - group_ids?: number[] - admins?: number[] - users?: number[] - status?: UserStatus[] - expire_after?: BulkWireGuardPeerIPsExpireAfter - expire_before?: BulkWireGuardPeerIPsExpireBefore - confirm?: boolean - replace_all?: boolean -} -export interface BulkUsersSetOwner { - ids?: number[] - admin_username: string -} +export function useRealtimeNodesStats>, TError = ErrorType>( + options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export interface BulkUsersSelection { - ids?: number[] + const queryOptions = getRealtimeNodesStatsQueryOptions(options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export type BulkUsersProxyMethod = ShadowsocksMethods | null -export type BulkUsersProxyFlow = XTLSFlows | null -export type BulkUsersProxyExpireBefore = string | null -export type BulkUsersProxyExpireAfter = string | null -export interface BulkUsersProxy { - dry_run?: boolean - group_ids?: number[] - admins?: number[] - users?: number[] - status?: UserStatus[] - expire_after?: BulkUsersProxyExpireAfter - expire_before?: BulkUsersProxyExpireBefore - flow?: BulkUsersProxyFlow - method?: BulkUsersProxyMethod + + +export const getUserOnlineIpListAllNodesUrl = (username: string,) => { + + + + + return `/api/node/online_stats/${username}/ip` } /** - * Starting suffix for sequence strategy (defaults to 1; base username digits are ignored) + * Retrieve user ips from all nodes. + * @summary User Online Ip List All Nodes */ -export type BulkUsersFromTemplateStartNumber = number | null +export const userOnlineIpListAllNodes = async (username: string, options?: RequestInit): Promise => { -export type BulkUsersFromTemplateUsername = string | null + return orvalFetcher(getUserOnlineIpListAllNodesUrl(username), + { + ...options, + method: 'GET' -export type BulkUsersFromTemplateNote = string | null -export interface BulkUsersFromTemplate { - user_template_id: number - note?: BulkUsersFromTemplateNote - username?: BulkUsersFromTemplateUsername - /** - * @maximum 500 - */ - count: number - strategy?: UsernameGenerationStrategy - /** Starting suffix for sequence strategy (defaults to 1; base username digits are ignored) */ - start_number?: BulkUsersFromTemplateStartNumber -} + } +);} -export interface BulkUsersCreateResponse { - subscription_urls?: string[] - created?: number -} -export type BulkUsersApplyTemplateNote = string | null -/** - * Apply a user template to a selection of existing users (by ID). - */ -export interface BulkUsersApplyTemplate { - user_template_id: number - note?: BulkUsersApplyTemplateNote - ids?: number[] -} -export interface BulkUsersActionResponse { - users: string[] - count: number -} -/** - * Response model for bulk user template actions. - */ -export interface BulkUserTemplatesActionResponse { - templates: string[] - count: number -} +export const getUserOnlineIpListAllNodesQueryKey = (username: string,) => { + return [ + `/api/node/online_stats/${username}/ip` + ] as const; + } -/** - * Model for bulk user template selection by IDs - */ -export interface BulkUserTemplateSelection { - ids?: number[] -} -export type BulkUserExpireBefore = string | null +export const getUserOnlineIpListAllNodesQueryOptions = >, TError = ErrorType>(username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export type BulkUserExpireAfter = string | null +const {query: queryOptions, request: requestOptions} = options ?? {}; -export interface BulkUser { - dry_run?: boolean - group_ids?: number[] - admins?: number[] - users?: number[] - status?: UserStatus[] - expire_after?: BulkUserExpireAfter - expire_before?: BulkUserExpireBefore - amount: number -} + const queryKey = queryOptions?.queryKey ?? getUserOnlineIpListAllNodesQueryKey(username); -/** - * Response model for bulk node actions. - */ -export interface BulkNodesActionResponse { - nodes: string[] - count: number -} -/** - * Model for bulk node selection by IDs - */ -export interface BulkNodeSelection { - ids?: number[] -} -/** - * Response model for bulk host actions. - */ -export interface BulkHostsActionResponse { - hosts: string[] - count: number -} + const queryFn: QueryFunction>> = ({ signal }) => userOnlineIpListAllNodes(username, { signal, ...requestOptions }); -/** - * Model for bulk host selection by IDs - */ -export interface BulkHostSelection { - ids?: number[] -} -/** - * Response model for bulk group actions. - */ -export interface BulkGroupsActionResponse { - groups: string[] - count: number -} -/** - * Model for bulk group selection by IDs - */ -export interface BulkGroupSelection { - ids?: number[] -} -export interface BulkGroup { - group_ids: number[] - has_group_ids?: number[] - admins?: number[] - users?: number[] - dry_run?: boolean -} -/** - * Model for bulk core selection by IDs - */ -export interface BulkCoreSelection { - ids?: number[] + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -/** - * Model for bulk client template selection by IDs - */ -export interface BulkClientTemplateSelection { - ids?: number[] -} +export type UserOnlineIpListAllNodesQueryResult = NonNullable>> +export type UserOnlineIpListAllNodesQueryError = ErrorType -/** - * Response model for bulk admin actions. - */ -export interface BulkAdminsActionResponse { - admins: string[] - count: number -} +export function useUserOnlineIpListAllNodes>, TError = ErrorType>( + username: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useUserOnlineIpListAllNodes>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useUserOnlineIpListAllNodes>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Model for bulk admin selection by usernames + * @summary User Online Ip List All Nodes */ -export interface BulkAdminSelection { - usernames?: string[] -} - -export type BodyAdminTokenApiAdminTokenPostClientSecret = string | null -export type BodyAdminTokenApiAdminTokenPostClientId = string | null +export function useUserOnlineIpListAllNodes>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export type BodyAdminTokenApiAdminTokenPostGrantType = string | null + const queryOptions = getUserOnlineIpListAllNodesQueryOptions(username,options) -export interface BodyAdminTokenApiAdminTokenPost { - grant_type?: BodyAdminTokenApiAdminTokenPostGrantType - username: string - password: string - scope?: string - client_id?: BodyAdminTokenApiAdminTokenPostClientId - client_secret?: BodyAdminTokenApiAdminTokenPostClientSecret -} + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export interface BaseNotificationEnable { - create?: boolean - modify?: boolean - delete?: boolean + return { ...query, queryKey: queryOptions.queryKey }; } -export type BaseHostSubscriptionTemplates = SubscriptionTemplates | null -export type BaseHostWireguardOverrides = WireGuardHostOverrides | null -export type BaseHostVerifyPeerCertByName = string[] | null -export type BaseHostPinnedPeerCertSha256 = string | null -export type BaseHostEchQueryStrategy = ECHQueryStrategy | null -export type BaseHostEchConfigList = string | null -export type BaseHostStatus = UserStatus[] | null +export const getUserOnlineStatsUrl = (nodeId: number, + username: string,) => { -export type BaseHostVlessRoute = string | null -export type BaseHostNoiseSettings = NoiseSettings | null -export type BaseHostFragmentSettings = FragmentSettings | null -export type BaseHostMuxSettings = MuxSettingsOutput | null - -export type BaseHostTransportSettings = TransportSettingsOutput | null + return `/api/node/${nodeId}/online_stats/${username}` +} -export type BaseHostHttpHeadersAnyOf = { [key: string]: string } +/** + * Retrieve user online stats by node. + * @summary User Online Stats + */ +export const userOnlineStats = async (nodeId: number, + username: string, options?: RequestInit): Promise => { -export type BaseHostHttpHeaders = BaseHostHttpHeadersAnyOf | null + return orvalFetcher(getUserOnlineStatsUrl(nodeId,username), + { + ...options, + method: 'GET' -export type BaseHostAllowinsecure = boolean | null -export type BaseHostAlpn = ProxyHostALPN[] | null + } +);} -export type BaseHostPath = string | null -export type BaseHostHost = string[] | null -export type BaseHostSni = string[] | null -export type BaseHostPort = number | null -export type BaseHostInboundTag = string | null +export const getUserOnlineStatsQueryKey = (nodeId: number, + username: string,) => { + return [ + `/api/node/${nodeId}/online_stats/${username}` + ] as const; + } -export type BaseHostId = number | null -export interface BaseHost { - id?: BaseHostId - remark: string - address?: string[] - inbound_tag?: BaseHostInboundTag - port?: BaseHostPort - sni?: BaseHostSni - host?: BaseHostHost - path?: BaseHostPath - security?: ProxyHostSecurity - alpn?: BaseHostAlpn - fingerprint?: ProxyHostFingerprint - allowinsecure?: BaseHostAllowinsecure - is_disabled?: boolean - http_headers?: BaseHostHttpHeaders - transport_settings?: BaseHostTransportSettings - mux_settings?: BaseHostMuxSettings - fragment_settings?: BaseHostFragmentSettings - noise_settings?: BaseHostNoiseSettings - random_user_agent?: boolean - use_sni_as_host?: boolean - vless_route?: BaseHostVlessRoute - priority: number - status?: BaseHostStatus - ech_config_list?: BaseHostEchConfigList - ech_query_strategy?: BaseHostEchQueryStrategy - pinned_peer_cert_sha256?: BaseHostPinnedPeerCertSha256 - verify_peer_cert_by_name?: BaseHostVerifyPeerCertByName - wireguard_overrides?: BaseHostWireguardOverrides - subscription_templates?: BaseHostSubscriptionTemplates -} - -export type ApplicationDescription = { [key: string]: string } +export const getUserOnlineStatsQueryOptions = >, TError = ErrorType>(nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -export interface Application { - /** @maxLength 32 */ - name: string - /** @maxLength 512 */ - icon_url?: string - /** @maxLength 256 */ - import_url?: string - description?: ApplicationDescription - recommended?: boolean - platform: Platform - download_links: DownloadLink[] -} +const {query: queryOptions, request: requestOptions} = options ?? {}; -/** - * Response model for admins list with pagination and statistics. - */ -export interface AdminsResponse { - admins: AdminDetails[] - total: number - active: number - disabled: number -} + const queryKey = queryOptions?.queryKey ?? getUserOnlineStatsQueryKey(nodeId,username); -/** - * Lightweight admin model with only id and username for performance. - */ -export interface AdminSimple { - id: number - username: string -} -/** - * Response model for lightweight admin list. - */ -export interface AdminsSimpleResponse { - admins: AdminSimple[] - total: number -} -export interface AdminNotificationEnable { - create?: boolean - modify?: boolean - delete?: boolean - reset_usage?: boolean - login?: boolean -} + const queryFn: QueryFunction>> = ({ signal }) => userOnlineStats(nodeId,username, { signal, ...requestOptions }); -export type AdminModifyNotificationEnable = UserNotificationEnable | null -export type AdminModifyNote = string | null -export type AdminModifySupportUrl = string | null -export type AdminModifyProfileTitle = string | null -export type AdminModifySubDomain = string | null + return { queryKey, queryFn, enabled: nodeId !== null && nodeId !== undefined && username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } +} -export type AdminModifySubTemplate = string | null +export type UserOnlineStatsQueryResult = NonNullable>> +export type UserOnlineStatsQueryError = ErrorType -export type AdminModifyIsDisabled = boolean | null -export type AdminModifyDiscordId = number | null +export function useUserOnlineStats>, TError = ErrorType>( + nodeId: number, + username: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useUserOnlineStats>, TError = ErrorType>( + nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useUserOnlineStats>, TError = ErrorType>( + nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary User Online Stats + */ -export type AdminModifyDiscordWebhook = string | null +export function useUserOnlineStats>, TError = ErrorType>( + nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -export type AdminModifyTelegramId = number | null + const queryOptions = getUserOnlineStatsQueryOptions(nodeId,username,options) -export type AdminModifyPassword = string | null + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export interface AdminModify { - password?: AdminModifyPassword - is_sudo: boolean - telegram_id?: AdminModifyTelegramId - discord_webhook?: AdminModifyDiscordWebhook - discord_id?: AdminModifyDiscordId - is_disabled?: AdminModifyIsDisabled - sub_template?: AdminModifySubTemplate - sub_domain?: AdminModifySubDomain - profile_title?: AdminModifyProfileTitle - support_url?: AdminModifySupportUrl - note?: AdminModifyNote - notification_enable?: AdminModifyNotificationEnable + return { ...query, queryKey: queryOptions.queryKey }; } -export type AdminDetailsNote = string | null -export type AdminDetailsLifetimeUsedTraffic = number | null -export type AdminDetailsSubTemplate = string | null -export type AdminDetailsDiscordId = number | null -export type AdminDetailsId = number | null -export type AdminDetailsNotificationEnable = UserNotificationEnable | null -export type AdminDetailsSupportUrl = string | null +export const getUserOnlineIpListUrl = (nodeId: number, + username: string,) => { -export type AdminDetailsProfileTitle = string | null -export type AdminDetailsSubDomain = string | null -export type AdminDetailsDiscordWebhook = string | null -export type AdminDetailsTelegramId = number | null + return `/api/node/${nodeId}/online_stats/${username}/ip` +} /** - * Complete admin model with all fields for database representation and API responses. + * Retrieve user ips by node. + * @summary User Online Ip List */ -export interface AdminDetails { - username: string - telegram_id?: AdminDetailsTelegramId - discord_webhook?: AdminDetailsDiscordWebhook - sub_domain?: AdminDetailsSubDomain - profile_title?: AdminDetailsProfileTitle - support_url?: AdminDetailsSupportUrl - notification_enable?: AdminDetailsNotificationEnable - id?: AdminDetailsId - is_sudo: boolean - total_users?: number - used_traffic?: number - is_disabled?: boolean - discord_id?: AdminDetailsDiscordId - sub_template?: AdminDetailsSubTemplate - lifetime_used_traffic?: AdminDetailsLifetimeUsedTraffic - note?: AdminDetailsNote -} +export const userOnlineIpList = async (nodeId: number, + username: string, options?: RequestInit): Promise => { -export type AdminCreateNotificationEnable = UserNotificationEnable | null + return orvalFetcher(getUserOnlineIpListUrl(nodeId,username), + { + ...options, + method: 'GET' -export type AdminCreateNote = string | null -export type AdminCreateSupportUrl = string | null + } +);} -export type AdminCreateProfileTitle = string | null -export type AdminCreateSubDomain = string | null -export type AdminCreateSubTemplate = string | null -export type AdminCreateIsDisabled = boolean | null -export type AdminCreateDiscordId = number | null +export const getUserOnlineIpListQueryKey = (nodeId: number, + username: string,) => { + return [ + `/api/node/${nodeId}/online_stats/${username}/ip` + ] as const; + } -export type AdminCreateDiscordWebhook = string | null -export type AdminCreateTelegramId = number | null +export const getUserOnlineIpListQueryOptions = >, TError = ErrorType>(nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -/** - * Model for creating new admin accounts requiring username and password. - */ -export interface AdminCreate { - password: string - is_sudo: boolean - telegram_id?: AdminCreateTelegramId - discord_webhook?: AdminCreateDiscordWebhook - discord_id?: AdminCreateDiscordId - is_disabled?: AdminCreateIsDisabled - sub_template?: AdminCreateSubTemplate - sub_domain?: AdminCreateSubDomain - profile_title?: AdminCreateProfileTitle - support_url?: AdminCreateSupportUrl - note?: AdminCreateNote - notification_enable?: AdminCreateNotificationEnable - username: string -} +const {query: queryOptions, request: requestOptions} = options ?? {}; -export type AdminContactInfoNotificationEnable = UserNotificationEnable | null + const queryKey = queryOptions?.queryKey ?? getUserOnlineIpListQueryKey(nodeId,username); -export type AdminContactInfoSupportUrl = string | null -export type AdminContactInfoProfileTitle = string | null -export type AdminContactInfoSubDomain = string | null + const queryFn: QueryFunction>> = ({ signal }) => userOnlineIpList(nodeId,username, { signal, ...requestOptions }); -export type AdminContactInfoDiscordWebhook = string | null -export type AdminContactInfoTelegramId = number | null -/** - * Base model containing the core admin identification fields. - */ -export interface AdminContactInfo { - username: string - telegram_id?: AdminContactInfoTelegramId - discord_webhook?: AdminContactInfoDiscordWebhook - sub_domain?: AdminContactInfoSubDomain - profile_title?: AdminContactInfoProfileTitle - support_url?: AdminContactInfoSupportUrl - notification_enable?: AdminContactInfoNotificationEnable -} -/** - * Minimal admin model containing only the username. - */ -export interface AdminBase { - username: string + + return { queryKey, queryFn, enabled: nodeId !== null && nodeId !== undefined && username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type UserOnlineIpListQueryResult = NonNullable>> +export type UserOnlineIpListQueryError = ErrorType + + +export function useUserOnlineIpList>, TError = ErrorType>( + nodeId: number, + username: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useUserOnlineIpList>, TError = ErrorType>( + nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useUserOnlineIpList>, TError = ErrorType>( + nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Base + * @summary User Online Ip List */ -export const base = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/`, method: 'GET', signal }) -} -export const getBaseQueryKey = () => { - return [`/`] as const +export function useUserOnlineIpList>, TError = ErrorType>( + nodeId: number, + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getUserOnlineIpListQueryOptions(nodeId,username,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export const getBaseQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getBaseQueryKey() - const queryFn: QueryFunction>> = ({ signal }) => base(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type BaseQueryResult = NonNullable>> -export type BaseQueryError = ErrorType -export function useBase>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useBase>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useBase>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Base - */ -export function useBase>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getBaseQueryOptions(options) +export const getClearUsageDataUrl = (table: UsageTable, + params?: ClearUsageDataParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); - query.queryKey = queryOptions.queryKey + const stringifiedParams = normalizedParams.toString(); - return query + return stringifiedParams.length > 0 ? `/api/nodes/clear_usage_data/${table}?${stringifiedParams}` : `/api/nodes/clear_usage_data/${table}` } /** - * @summary Health + * Deletes **all rows** from the selected usage data table. Use with caution. + +Allowed tables: + - `node_user_usages`: Deletes user-specific node usage traffic records. + - `node_usages`: Deletes node-level aggregated traffic (uplink/downlink) records. + +**Optional filters:** + - `start`: ISO 8601 timestamp to filter from (inclusive) + - `end`: ISO 8601 timestamp to filter to (exclusive) + +⚠️ This operation is irreversible. Ensure correct usage in production environments. + * @summary Clear usage data from a specified table */ -export const health = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/health`, method: 'GET', signal }) -} +export const clearUsageData = async (table: UsageTable, + params?: ClearUsageDataParams, options?: RequestInit): Promise => { -export const getHealthQueryKey = () => { - return [`/health`] as const -} + return orvalFetcher(getClearUsageDataUrl(table,params), + { + ...options, + method: 'DELETE' -export const getHealthQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getHealthQueryKey() + } +);} - const queryFn: QueryFunction>> = ({ signal }) => health(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type HealthQueryResult = NonNullable>> -export type HealthQueryError = ErrorType -export function useHealth>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useHealth>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useHealth>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Health - */ +export const getClearUsageDataMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{table: UsageTable;params?: ClearUsageDataParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{table: UsageTable;params?: ClearUsageDataParams}, TContext> => { -export function useHealth>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getHealthQueryOptions(options) +const mutationKey = ['clearUsageData']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} -/** - * Authenticate an admin and issue a token. - * @summary Admin Token - */ -export const adminToken = (bodyAdminTokenApiAdminTokenPost: BodyType, signal?: AbortSignal) => { - const formUrlEncoded = new URLSearchParams() - if (bodyAdminTokenApiAdminTokenPost.grant_type !== undefined && bodyAdminTokenApiAdminTokenPost.grant_type !== null) { - formUrlEncoded.append('grant_type', bodyAdminTokenApiAdminTokenPost.grant_type) - } - formUrlEncoded.append('username', bodyAdminTokenApiAdminTokenPost.username) - formUrlEncoded.append('password', bodyAdminTokenApiAdminTokenPost.password) - if (bodyAdminTokenApiAdminTokenPost.scope !== undefined) { - formUrlEncoded.append('scope', bodyAdminTokenApiAdminTokenPost.scope) - } - if (bodyAdminTokenApiAdminTokenPost.client_id !== undefined && bodyAdminTokenApiAdminTokenPost.client_id !== null) { - formUrlEncoded.append('client_id', bodyAdminTokenApiAdminTokenPost.client_id) - } - if (bodyAdminTokenApiAdminTokenPost.client_secret !== undefined && bodyAdminTokenApiAdminTokenPost.client_secret !== null) { - formUrlEncoded.append('client_secret', bodyAdminTokenApiAdminTokenPost.client_secret) - } + const mutationFn: MutationFunction>, {table: UsageTable;params?: ClearUsageDataParams}> = (props) => { + const {table,params} = props ?? {}; - return orvalFetcher({ url: `/api/admin/token`, method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: formUrlEncoded, signal }) -} + return clearUsageData(table,params,requestOptions) + } -export const getAdminTokenMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['adminToken'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return adminToken(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type AdminTokenMutationResult = NonNullable>> -export type AdminTokenMutationBody = BodyType -export type AdminTokenMutationError = ErrorType -/** - * @summary Admin Token + return { mutationFn, ...mutationOptions }} + + export type ClearUsageDataMutationResult = NonNullable>> + + export type ClearUsageDataMutationError = ErrorType + + /** + * @summary Clear usage data from a specified table */ -export const useAdminToken = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getAdminTokenMutationOptions(options) +export const useClearUsageData = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{table: UsageTable;params?: ClearUsageDataParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {table: UsageTable;params?: ClearUsageDataParams}, + TContext + > => { + return useMutation(getClearUsageDataMutationOptions(options), queryClient); + } + +export const getBulkDeleteNodesUrl = () => { + - return useMutation(mutationOptions) + + + return `/api/nodes/bulk/delete` } /** - * Authenticate an admin and issue a token. - * @summary Admin Mini App Token + * Delete selected nodes by ID. + * @summary Bulk Delete Nodes */ -export const adminMiniAppToken = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/miniapp/token`, method: 'POST', signal }) -} - -export const getAdminMiniAppTokenMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['adminMiniAppToken'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const bulkDeleteNodes = async (bulkNodeSelection: BulkNodeSelection, options?: RequestInit): Promise => { - const mutationFn: MutationFunction>, void> = () => { - return adminMiniAppToken() + return orvalFetcher(getBulkDeleteNodesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkNodeSelection) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type AdminMiniAppTokenMutationResult = NonNullable>> -export type AdminMiniAppTokenMutationError = ErrorType -/** - * @summary Admin Mini App Token - */ -export const useAdminMiniAppToken = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getAdminMiniAppTokenMutationOptions(options) +export const getBulkDeleteNodesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { - return useMutation(mutationOptions) -} +const mutationKey = ['bulkDeleteNodes']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * Retrieve the current authenticated admin. - * @summary Get Current Admin - */ -export const getCurrentAdmin = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin`, method: 'GET', signal }) -} -export const getGetCurrentAdminQueryKey = () => { - return [`/api/admin`] as const -} -export const getGetCurrentAdminQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetCurrentAdminQueryKey() + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getCurrentAdmin(signal) + return bulkDeleteNodes(data,requestOptions) + } - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetCurrentAdminQueryResult = NonNullable>> -export type GetCurrentAdminQueryError = ErrorType -export function useGetCurrentAdmin>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetCurrentAdmin>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetCurrentAdmin>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Current Admin - */ -export function useGetCurrentAdmin>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetCurrentAdminQueryOptions(options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + return { mutationFn, ...mutationOptions }} - return query -} + export type BulkDeleteNodesMutationResult = NonNullable>> + export type BulkDeleteNodesMutationBody = BodyType + export type BulkDeleteNodesMutationError = ErrorType -/** - * Create a new admin if the current admin has sudo privileges. - * @summary Create Admin + /** + * @summary Bulk Delete Nodes */ -export const createAdmin = (adminCreate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: adminCreate, signal }) -} +export const useBulkDeleteNodes = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteNodesMutationOptions(options), queryClient); + } -export const getCreateAdminMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createAdmin'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const getBulkDisableNodesUrl = () => { - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createAdmin(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateAdminMutationResult = NonNullable>> -export type CreateAdminMutationBody = BodyType -export type CreateAdminMutationError = ErrorType + return `/api/nodes/bulk/disable` +} /** - * @summary Create Admin + * Disable selected nodes by ID. + * @summary Bulk Disable Nodes */ -export const useCreateAdmin = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateAdminMutationOptions(options) +export const bulkDisableNodes = async (bulkNodeSelection: BulkNodeSelection, options?: RequestInit): Promise => { - return useMutation(mutationOptions) -} + return orvalFetcher(getBulkDisableNodesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkNodeSelection) + } +);} -/** - * Modify an existing admin's details. - * @summary Modify Admin - */ -export const modifyAdmin = (username: string, adminModify: BodyType) => { - return orvalFetcher({ url: `/api/admin/${username}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: adminModify }) -} -export const getModifyAdminMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyAdmin'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string; data: BodyType }> = props => { - const { username, data } = props ?? {} - return modifyAdmin(username, data) - } +export const getBulkDisableNodesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} +const mutationKey = ['bulkDisableNodes']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type ModifyAdminMutationResult = NonNullable>> -export type ModifyAdminMutationBody = BodyType -export type ModifyAdminMutationError = ErrorType -/** - * @summary Modify Admin - */ -export const useModifyAdmin = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyAdminMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Remove an admin from the database. - * @summary Remove Admin - */ -export const removeAdmin = (username: string) => { - return orvalFetcher({ url: `/api/admin/${username}`, method: 'DELETE' }) -} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; -export const getRemoveAdminMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeAdmin'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return bulkDisableNodes(data,requestOptions) + } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return removeAdmin(username) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type RemoveAdminMutationResult = NonNullable>> -export type RemoveAdminMutationError = ErrorType -/** - * @summary Remove Admin - */ -export const useRemoveAdmin = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveAdminMutationOptions(options) + return { mutationFn, ...mutationOptions }} - return useMutation(mutationOptions) -} + export type BulkDisableNodesMutationResult = NonNullable>> + export type BulkDisableNodesMutationBody = BodyType + export type BulkDisableNodesMutationError = ErrorType -/** - * @summary Modify Admin By Username + /** + * @summary Bulk Disable Nodes */ -export const modifyAdminByUsername = (username: string, adminModify: BodyType) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: adminModify }) -} +export const useBulkDisableNodes = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableNodesMutationOptions(options), queryClient); + } -export const getModifyAdminByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyAdminByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const getBulkEnableNodesUrl = () => { - const mutationFn: MutationFunction>, { username: string; data: BodyType }> = props => { - const { username, data } = props ?? {} - return modifyAdminByUsername(username, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifyAdminByUsernameMutationResult = NonNullable>> -export type ModifyAdminByUsernameMutationBody = BodyType -export type ModifyAdminByUsernameMutationError = ErrorType + return `/api/nodes/bulk/enable` +} /** - * @summary Modify Admin By Username + * Enable selected nodes by ID. + * @summary Bulk Enable Nodes */ -export const useModifyAdminByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyAdminByUsernameMutationOptions(options) +export const bulkEnableNodes = async (bulkNodeSelection: BulkNodeSelection, options?: RequestInit): Promise => { - return useMutation(mutationOptions) -} + return orvalFetcher(getBulkEnableNodesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkNodeSelection) + } +);} -/** - * @summary Remove Admin By Username - */ -export const removeAdminByUsername = (username: string) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}`, method: 'DELETE' }) -} -export const getRemoveAdminByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeAdminByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return removeAdminByUsername(username) - } +export const getBulkEnableNodesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { - return { mutationFn, ...mutationOptions } as UseMutationOptions -} +const mutationKey = ['bulkEnableNodes']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type RemoveAdminByUsernameMutationResult = NonNullable>> -export type RemoveAdminByUsernameMutationError = ErrorType -/** - * @summary Remove Admin By Username - */ -export const useRemoveAdminByUsername = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveAdminByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; -/** - * @summary Modify Admin By Id - */ -export const modifyAdminById = (adminId: number, adminModify: BodyType) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: adminModify }) -} + return bulkEnableNodes(data,requestOptions) + } -export const getModifyAdminByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyAdminById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { adminId: number; data: BodyType }> = props => { - const { adminId, data } = props ?? {} - return modifyAdminById(adminId, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifyAdminByIdMutationResult = NonNullable>> -export type ModifyAdminByIdMutationBody = BodyType -export type ModifyAdminByIdMutationError = ErrorType -/** - * @summary Modify Admin By Id + return { mutationFn, ...mutationOptions }} + + export type BulkEnableNodesMutationResult = NonNullable>> + export type BulkEnableNodesMutationBody = BodyType + export type BulkEnableNodesMutationError = ErrorType + + /** + * @summary Bulk Enable Nodes */ -export const useModifyAdminById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyAdminByIdMutationOptions(options) +export const useBulkEnableNodes = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkEnableNodesMutationOptions(options), queryClient); + } + +export const getBulkResetNodesUsageUrl = () => { - return useMutation(mutationOptions) + + + + return `/api/nodes/bulk/reset` } /** - * @summary Remove Admin By Id + * Reset usage for selected nodes by ID. + * @summary Bulk Reset Nodes Usage */ -export const removeAdminById = (adminId: number) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}`, method: 'DELETE' }) -} +export const bulkResetNodesUsage = async (bulkNodeSelection: BulkNodeSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkResetNodesUsageUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkNodeSelection) + } +);} + + -export const getRemoveAdminByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeAdminById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { adminId: number }> = props => { - const { adminId } = props ?? {} +export const getBulkResetNodesUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { - return removeAdminById(adminId) - } +const mutationKey = ['bulkResetNodesUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type RemoveAdminByIdMutationResult = NonNullable>> -export type RemoveAdminByIdMutationError = ErrorType -/** - * @summary Remove Admin By Id - */ -export const useRemoveAdminById = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveAdminByIdMutationOptions(options) + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return useMutation(mutationOptions) -} + return bulkResetNodesUsage(data,requestOptions) + } -/** - * Fetch a list of admins with optional filters for pagination and username. - * @summary Get Admins - */ -export const getAdmins = (params?: GetAdminsParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins`, method: 'GET', params, signal }) -} -export const getGetAdminsQueryKey = (params?: GetAdminsParams) => { - return [`/api/admins`, ...(params ? [params] : [])] as const -} -export const getGetAdminsQueryOptions = >, TError = ErrorType>( - params?: GetAdminsParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetAdminsQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getAdmins(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetAdminsQueryResult = NonNullable>> -export type GetAdminsQueryError = ErrorType + export type BulkResetNodesUsageMutationResult = NonNullable>> + export type BulkResetNodesUsageMutationBody = BodyType + export type BulkResetNodesUsageMutationError = ErrorType -export function useGetAdmins>, TError = ErrorType>( - params: undefined | GetAdminsParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAdmins>, TError = ErrorType>( - params?: GetAdminsParams, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAdmins>, TError = ErrorType>( - params?: GetAdminsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Admins + /** + * @summary Bulk Reset Nodes Usage */ +export const useBulkResetNodesUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkResetNodesUsageMutationOptions(options), queryClient); + } + +export const getBulkReconnectNodesUrl = () => { -export function useGetAdmins>, TError = ErrorType>( - params?: GetAdminsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAdminsQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/nodes/bulk/reconnect` } /** - * Returns only id and username for admins. Optimized for dropdowns and autocomplete. - * @summary Get lightweight admin list + * Reconnect selected nodes by ID. + * @summary Bulk Reconnect Nodes */ -export const getAdminsSimple = (params?: GetAdminsSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/simple`, method: 'GET', params, signal }) -} +export const bulkReconnectNodes = async (bulkNodeSelection: BulkNodeSelection, options?: RequestInit): Promise => { -export const getGetAdminsSimpleQueryKey = (params?: GetAdminsSimpleParams) => { - return [`/api/admins/simple`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getBulkReconnectNodesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkNodeSelection) + } +);} -export const getGetAdminsSimpleQueryOptions = >, TError = ErrorType>( - params?: GetAdminsSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetAdminsSimpleQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getAdminsSimple(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} +export const getBulkReconnectNodesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetAdminsSimpleQueryResult = NonNullable>> -export type GetAdminsSimpleQueryError = ErrorType +const mutationKey = ['bulkReconnectNodes']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetAdminsSimple>, TError = ErrorType>( - params: undefined | GetAdminsSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAdminsSimple>, TError = ErrorType>( - params?: GetAdminsSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAdminsSimple>, TError = ErrorType>( - params?: GetAdminsSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get lightweight admin list - */ -export function useGetAdminsSimple>, TError = ErrorType>( - params?: GetAdminsSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAdminsSimpleQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return bulkReconnectNodes(data,requestOptions) + } -/** - * Get admin usage aggregated from user traffic. - * @summary Get Admin Usage - */ -export const getAdminUsage = (username: string, params?: GetAdminUsageParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/${username}/usage`, method: 'GET', params, signal }) -} -export const getGetAdminUsageQueryKey = (username: string, params?: GetAdminUsageParams) => { - return [`/api/admin/${username}/usage`, ...(params ? [params] : [])] as const -} -export const getGetAdminUsageQueryOptions = >, TError = ErrorType>( - username: string, - params?: GetAdminUsageParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetAdminUsageQueryKey(username, params) - const queryFn: QueryFunction>> = ({ signal }) => getAdminUsage(username, params, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetAdminUsageQueryResult = NonNullable>> -export type GetAdminUsageQueryError = ErrorType + export type BulkReconnectNodesMutationResult = NonNullable>> + export type BulkReconnectNodesMutationBody = BodyType + export type BulkReconnectNodesMutationError = ErrorType -export function useGetAdminUsage>, TError = ErrorType>( - username: string, - params: undefined | GetAdminUsageParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAdminUsage>, TError = ErrorType>( - username: string, - params?: GetAdminUsageParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAdminUsage>, TError = ErrorType>( - username: string, - params?: GetAdminUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Admin Usage + /** + * @summary Bulk Reconnect Nodes */ +export const useBulkReconnectNodes = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkReconnectNodesMutationOptions(options), queryClient); + } + +export const getBulkUpdateNodesUrl = () => { -export function useGetAdminUsage>, TError = ErrorType>( - username: string, - params?: GetAdminUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAdminUsageQueryOptions(username, params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/nodes/bulk/update` } /** - * @summary Get Admin Usage By Username + * Update selected nodes by ID. + * @summary Bulk Update Nodes */ -export const getAdminUsageByUsername = (username: string, params?: GetAdminUsageByUsernameParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}/usage`, method: 'GET', params, signal }) -} +export const bulkUpdateNodes = async (bulkNodeSelection: BulkNodeSelection, options?: RequestInit): Promise => { -export const getGetAdminUsageByUsernameQueryKey = (username: string, params?: GetAdminUsageByUsernameParams) => { - return [`/api/admin/by-username/${username}/usage`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getBulkUpdateNodesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkNodeSelection) + } +);} -export const getGetAdminUsageByUsernameQueryOptions = >, TError = ErrorType>( - username: string, - params?: GetAdminUsageByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetAdminUsageByUsernameQueryKey(username, params) - const queryFn: QueryFunction>> = ({ signal }) => getAdminUsageByUsername(username, params, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} +export const getBulkUpdateNodesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetAdminUsageByUsernameQueryResult = NonNullable>> -export type GetAdminUsageByUsernameQueryError = ErrorType +const mutationKey = ['bulkUpdateNodes']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetAdminUsageByUsername>, TError = ErrorType>( - username: string, - params: undefined | GetAdminUsageByUsernameParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAdminUsageByUsername>, TError = ErrorType>( - username: string, - params?: GetAdminUsageByUsernameParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAdminUsageByUsername>, TError = ErrorType>( - username: string, - params?: GetAdminUsageByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Admin Usage By Username - */ -export function useGetAdminUsageByUsername>, TError = ErrorType>( - username: string, - params?: GetAdminUsageByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAdminUsageByUsernameQueryOptions(username, params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return bulkUpdateNodes(data,requestOptions) + } -/** - * @summary Get Admin Usage By Id - */ -export const getAdminUsageById = (adminId: number, params?: GetAdminUsageByIdParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}/usage`, method: 'GET', params, signal }) -} -export const getGetAdminUsageByIdQueryKey = (adminId: number, params?: GetAdminUsageByIdParams) => { - return [`/api/admin/by-id/${adminId}/usage`, ...(params ? [params] : [])] as const -} -export const getGetAdminUsageByIdQueryOptions = >, TError = ErrorType>( - adminId: number, - params?: GetAdminUsageByIdParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetAdminUsageByIdQueryKey(adminId, params) - const queryFn: QueryFunction>> = ({ signal }) => getAdminUsageById(adminId, params, signal) - return { queryKey, queryFn, enabled: !!adminId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetAdminUsageByIdQueryResult = NonNullable>> -export type GetAdminUsageByIdQueryError = ErrorType + export type BulkUpdateNodesMutationResult = NonNullable>> + export type BulkUpdateNodesMutationBody = BodyType + export type BulkUpdateNodesMutationError = ErrorType -export function useGetAdminUsageById>, TError = ErrorType>( - adminId: number, - params: undefined | GetAdminUsageByIdParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAdminUsageById>, TError = ErrorType>( - adminId: number, - params?: GetAdminUsageByIdParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAdminUsageById>, TError = ErrorType>( - adminId: number, - params?: GetAdminUsageByIdParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Admin Usage By Id + /** + * @summary Bulk Update Nodes */ +export const useBulkUpdateNodes = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkUpdateNodesMutationOptions(options), queryClient); + } -export function useGetAdminUsageById>, TError = ErrorType>( - adminId: number, - params?: GetAdminUsageByIdParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAdminUsageByIdQueryOptions(adminId, params, options) +export const getCreateUserUrl = () => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} -/** - * Disable all active users under a specific admin - * @summary Disable All Active Users - */ -export const disableAllActiveUsers = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/${username}/users/disable`, method: 'POST', signal }) + return `/api/user` } -export const getDisableAllActiveUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['disableAllActiveUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +/** + * Create a new user - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} +- **username**: 3 to 32 characters, can include a-z, 0-9, and underscores. +- **status**: User's status, defaults to `active`. Special rules if `on_hold`. +- **expire**: UTC datetime for account expiration. Use `0` for unlimited. +- **data_limit**: Max data usage in bytes (e.g., `1073741824` for 1GB). `0` means unlimited. +- **data_limit_reset_strategy**: Defines how/if data limit resets. `no_reset` means it never resets. +- **proxy_settings**: Dictionary of protocol settings (e.g., `vmess`, `vless`) will generate data for all protocol by default. +- **group_ids**: List of group IDs to assign to the user. +- **note**: Optional text field for additional user information or notes. +- **on_hold_timeout**: UTC timestamp when `on_hold` status should start or end. +- **on_hold_expire_duration**: Duration (in seconds) for how long the user should stay in `on_hold` status. +- **next_plan**: Next user plan (resets after use). + * @summary Create User + */ +export const createUser = async (userCreate: UserCreate, options?: RequestInit): Promise => { - return disableAllActiveUsers(username) + return orvalFetcher(getCreateUserUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(userCreate) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type DisableAllActiveUsersMutationResult = NonNullable>> -export type DisableAllActiveUsersMutationError = ErrorType -/** - * @summary Disable All Active Users - */ -export const useDisableAllActiveUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getDisableAllActiveUsersMutationOptions(options) +export const getCreateUserMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { - return useMutation(mutationOptions) -} +const mutationKey = ['createUser']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * @summary Disable All Active Users By Username - */ -export const disableAllActiveUsersByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}/users/disable`, method: 'POST', signal }) -} -export const getDisableAllActiveUsersByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['disableAllActiveUsersByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return disableAllActiveUsersByUsername(username) - } + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + return createUser(data,requestOptions) + } -export type DisableAllActiveUsersByUsernameMutationResult = NonNullable>> -export type DisableAllActiveUsersByUsernameMutationError = ErrorType -/** - * @summary Disable All Active Users By Username - */ -export const useDisableAllActiveUsersByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getDisableAllActiveUsersByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Disable All Active Users By Id - */ -export const disableAllActiveUsersById = (adminId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}/users/disable`, method: 'POST', signal }) -} -export const getDisableAllActiveUsersByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['disableAllActiveUsersById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { adminId: number }> = props => { - const { adminId } = props ?? {} + export type CreateUserMutationResult = NonNullable>> + export type CreateUserMutationBody = BodyType + export type CreateUserMutationError = ErrorType - return disableAllActiveUsersById(adminId) - } + /** + * @summary Create User + */ +export const useCreateUser = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateUserMutationOptions(options), queryClient); + } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} +export const getModifyUserUrl = (username: string,) => { -export type DisableAllActiveUsersByIdMutationResult = NonNullable>> -export type DisableAllActiveUsersByIdMutationError = ErrorType -/** - * @summary Disable All Active Users By Id - */ -export const useDisableAllActiveUsersById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getDisableAllActiveUsersByIdMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/${username}` } /** - * Activate all disabled users under a specific admin - * @summary Activate All Disabled Users - */ -export const activateAllDisabledUsers = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/${username}/users/activate`, method: 'POST', signal }) -} + * Modify an existing user -export const getActivateAllDisabledUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['activateAllDisabledUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +- **username**: Cannot be changed. Used to identify the user. +- **status**: User's new status. Can be 'active', 'disabled', 'on_hold', 'limited', or 'expired'. +- **expire**: UTC datetime for new account expiration. Set to `0` for unlimited, `null` for no change. +- **data_limit**: New max data usage in bytes (e.g., `1073741824` for 1GB). Set to `0` for unlimited, `null` for no change. +- **data_limit_reset_strategy**: New strategy for data limit reset. Options include 'daily', 'weekly', 'monthly', or 'no_reset'. +- **proxies**: Dictionary of new protocol settings (e.g., `vmess`, `vless`). Empty dictionary means no change. +- **group_ids**: List of new group IDs to assign to the user. Empty list means no change. +- **note**: New optional text for additional user information or notes. `null` means no change. +- **on_hold_timeout**: New UTC timestamp for when `on_hold` status should start or end. Only applicable if status is changed to 'on_hold'. +- **on_hold_expire_duration**: New duration (in seconds) for how long the user should stay in `on_hold` status. Only applicable if status is changed to 'on_hold'. +- **next_plan**: Next user plan (resets after use). - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} +Note: Fields set to `null` or omitted will not be modified. + * @summary Modify User + */ +export const modifyUser = async (username: string, + userModify: UserModify, options?: RequestInit): Promise => { - return activateAllDisabledUsers(username) + return orvalFetcher(getModifyUserUrl(username), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(userModify) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ActivateAllDisabledUsersMutationResult = NonNullable>> -export type ActivateAllDisabledUsersMutationError = ErrorType -/** - * @summary Activate All Disabled Users - */ -export const useActivateAllDisabledUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getActivateAllDisabledUsersMutationOptions(options) +export const getModifyUserMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;data: BodyType}, TContext> => { - return useMutation(mutationOptions) -} +const mutationKey = ['modifyUser']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * @summary Activate All Disabled Users By Username - */ -export const activateAllDisabledUsersByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}/users/activate`, method: 'POST', signal }) -} -export const getActivateAllDisabledUsersByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['activateAllDisabledUsersByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return activateAllDisabledUsersByUsername(username) - } + const mutationFn: MutationFunction>, {username: string;data: BodyType}> = (props) => { + const {username,data} = props ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + return modifyUser(username,data,requestOptions) + } -export type ActivateAllDisabledUsersByUsernameMutationResult = NonNullable>> -export type ActivateAllDisabledUsersByUsernameMutationError = ErrorType -/** - * @summary Activate All Disabled Users By Username - */ -export const useActivateAllDisabledUsersByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getActivateAllDisabledUsersByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Activate All Disabled Users By Id - */ -export const activateAllDisabledUsersById = (adminId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}/users/activate`, method: 'POST', signal }) -} -export const getActivateAllDisabledUsersByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['activateAllDisabledUsersById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { adminId: number }> = props => { - const { adminId } = props ?? {} + export type ModifyUserMutationResult = NonNullable>> + export type ModifyUserMutationBody = BodyType + export type ModifyUserMutationError = ErrorType - return activateAllDisabledUsersById(adminId) - } + /** + * @summary Modify User + */ +export const useModifyUser = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserMutationOptions(options), queryClient); + } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} +export const getRemoveUserUrl = (username: string,) => { -export type ActivateAllDisabledUsersByIdMutationResult = NonNullable>> -export type ActivateAllDisabledUsersByIdMutationError = ErrorType -/** - * @summary Activate All Disabled Users By Id - */ -export const useActivateAllDisabledUsersById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getActivateAllDisabledUsersByIdMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/${username}` } /** - * Remove all users under a specific admin. - * @summary Remove All Users + * Remove a user + * @summary Remove User */ -export const removeAllUsers = (username: string) => { - return orvalFetcher({ url: `/api/admin/${username}/users`, method: 'DELETE' }) -} +export const removeUser = async (username: string, options?: RequestInit): Promise => { -export const getRemoveAllUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeAllUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getRemoveUserUrl(username), + { + ...options, + method: 'DELETE' - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return removeAllUsers(username) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type RemoveAllUsersMutationResult = NonNullable>> -export type RemoveAllUsersMutationError = ErrorType -/** - * @summary Remove All Users - */ -export const useRemoveAllUsers = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveAllUsersMutationOptions(options) +export const getRemoveUserMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { - return useMutation(mutationOptions) -} +const mutationKey = ['removeUser']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * @summary Remove All Users By Username - */ -export const removeAllUsersByUsername = (username: string) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}/users`, method: 'DELETE' }) -} -export const getRemoveAllUsersByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeAllUsersByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return removeAllUsersByUsername(username) - } + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + return removeUser(username,requestOptions) + } -export type RemoveAllUsersByUsernameMutationResult = NonNullable>> -export type RemoveAllUsersByUsernameMutationError = ErrorType -/** - * @summary Remove All Users By Username - */ -export const useRemoveAllUsersByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveAllUsersByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Remove All Users By Id - */ -export const removeAllUsersById = (adminId: number) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}/users`, method: 'DELETE' }) -} -export const getRemoveAllUsersByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeAllUsersById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { adminId: number }> = props => { - const { adminId } = props ?? {} + export type RemoveUserMutationResult = NonNullable>> - return removeAllUsersById(adminId) - } + export type RemoveUserMutationError = ErrorType - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + /** + * @summary Remove User + */ +export const useRemoveUser = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRemoveUserMutationOptions(options), queryClient); + } + +export const getGetUserUrl = (username: string,) => { -export type RemoveAllUsersByIdMutationResult = NonNullable>> -export type RemoveAllUsersByIdMutationError = ErrorType -/** - * @summary Remove All Users By Id - */ -export const useRemoveAllUsersById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveAllUsersByIdMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/${username}` } /** - * Resets usage of admin. - * @summary Reset Admin Usage + * Get user information + * @summary Get User */ -export const resetAdminUsage = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/${username}/reset`, method: 'POST', signal }) -} +export const getUser = async (username: string, options?: RequestInit): Promise => { -export const getResetAdminUsageMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetAdminUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserUrl(username), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return resetAdminUsage(username) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ResetAdminUsageMutationResult = NonNullable>> -export type ResetAdminUsageMutationError = ErrorType -/** - * @summary Reset Admin Usage - */ -export const useResetAdminUsage = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetAdminUsageMutationOptions(options) - return useMutation(mutationOptions) -} +export const getGetUserQueryKey = (username: string,) => { + return [ + `/api/user/${username}` + ] as const; + } -/** - * @summary Reset Admin Usage By Username - */ -export const resetAdminUsageByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-username/${username}/reset`, method: 'POST', signal }) -} -export const getResetAdminUsageByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetAdminUsageByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const getGetUserQueryOptions = >, TError = ErrorType>(username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUserQueryKey(username); - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return resetAdminUsageByUsername(username) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions + const queryFn: QueryFunction>> = ({ signal }) => getUser(username, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type ResetAdminUsageByUsernameMutationResult = NonNullable>> +export type GetUserQueryResult = NonNullable>> +export type GetUserQueryError = ErrorType -export type ResetAdminUsageByUsernameMutationError = ErrorType +export function useGetUser>, TError = ErrorType>( + username: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUser>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUser>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Reset Admin Usage By Username + * @summary Get User */ -export const useResetAdminUsageByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetAdminUsageByUsernameMutationOptions(options) - return useMutation(mutationOptions) +export function useGetUser>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserQueryOptions(username,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -/** - * @summary Reset Admin Usage By Id - */ -export const resetAdminUsageById = (adminId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admin/by-id/${adminId}/reset`, method: 'POST', signal }) -} -export const getResetAdminUsageByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetAdminUsageById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { adminId: number }> = props => { - const { adminId } = props ?? {} - return resetAdminUsageById(adminId) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ResetAdminUsageByIdMutationResult = NonNullable>> -export type ResetAdminUsageByIdMutationError = ErrorType +export const getModifyUserByUsernameUrl = (username: string,) => { + -/** - * @summary Reset Admin Usage By Id - */ -export const useResetAdminUsageById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetAdminUsageByIdMutationOptions(options) - return useMutation(mutationOptions) + + return `/api/user/by-username/${username}` } /** - * Delete selected admins by username. - * @summary Bulk Delete Admins + * @summary Modify User By Username */ -export const bulkDeleteAdmins = (bulkAdminSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection, signal }) -} +export const modifyUserByUsername = async (username: string, + userModify: UserModify, options?: RequestInit): Promise => { -export const getBulkDeleteAdminsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteAdmins'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getModifyUserByUsernameUrl(username), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(userModify) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteAdmins(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDeleteAdminsMutationResult = NonNullable>> -export type BulkDeleteAdminsMutationBody = BodyType -export type BulkDeleteAdminsMutationError = ErrorType +export const getModifyUserByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;data: BodyType}, TContext> => { -/** - * @summary Bulk Delete Admins - */ -export const useBulkDeleteAdmins = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteAdminsMutationOptions(options) +const mutationKey = ['modifyUserByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return useMutation(mutationOptions) -} -/** - * Reset usage for selected admins by username. - * @summary Bulk Reset Admins Usage - */ -export const bulkResetAdminsUsage = (bulkAdminSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/bulk/reset`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection, signal }) -} -export const getBulkResetAdminsUsageMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkResetAdminsUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + const mutationFn: MutationFunction>, {username: string;data: BodyType}> = (props) => { + const {username,data} = props ?? {}; - return bulkResetAdminsUsage(data) - } + return modifyUserByUsername(username,data,requestOptions) + } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkResetAdminsUsageMutationResult = NonNullable>> -export type BulkResetAdminsUsageMutationBody = BodyType -export type BulkResetAdminsUsageMutationError = ErrorType -/** - * @summary Bulk Reset Admins Usage - */ -export const useBulkResetAdminsUsage = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkResetAdminsUsageMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Disable selected admins by username. - * @summary Bulk Disable Admins - */ -export const bulkDisableAdmins = (bulkAdminSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/bulk/disable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection, signal }) -} -export const getBulkDisableAdminsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableAdmins'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + export type ModifyUserByUsernameMutationResult = NonNullable>> + export type ModifyUserByUsernameMutationBody = BodyType + export type ModifyUserByUsernameMutationError = ErrorType - return bulkDisableAdmins(data) - } + /** + * @summary Modify User By Username + */ +export const useModifyUserByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserByUsernameMutationOptions(options), queryClient); + } + +export const getRemoveUserByUsernameUrl = (username: string,) => { - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDisableAdminsMutationResult = NonNullable>> -export type BulkDisableAdminsMutationBody = BodyType -export type BulkDisableAdminsMutationError = ErrorType -/** - * @summary Bulk Disable Admins - */ -export const useBulkDisableAdmins = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableAdminsMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/by-username/${username}` } /** - * Enable selected admins by username. - * @summary Bulk Enable Admins + * @summary Remove User By Username */ -export const bulkEnableAdmins = (bulkAdminSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/bulk/enable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection, signal }) -} +export const removeUserByUsername = async (username: string, options?: RequestInit): Promise => { -export const getBulkEnableAdminsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkEnableAdmins'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getRemoveUserByUsernameUrl(username), + { + ...options, + method: 'DELETE' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkEnableAdmins(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkEnableAdminsMutationResult = NonNullable>> -export type BulkEnableAdminsMutationBody = BodyType -export type BulkEnableAdminsMutationError = ErrorType -/** - * @summary Bulk Enable Admins - */ -export const useBulkEnableAdmins = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkEnableAdminsMutationOptions(options) - return useMutation(mutationOptions) -} +export const getRemoveUserByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { -/** - * Disable all active users under selected admins. - * @summary Bulk Disable All Active Users - */ -export const bulkDisableAllActiveUsers = (bulkAdminSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/bulk/users/disable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection, signal }) -} +const mutationKey = ['removeUserByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getBulkDisableAllActiveUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableAllActiveUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDisableAllActiveUsers(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; -export type BulkDisableAllActiveUsersMutationResult = NonNullable>> -export type BulkDisableAllActiveUsersMutationBody = BodyType -export type BulkDisableAllActiveUsersMutationError = ErrorType + return removeUserByUsername(username,requestOptions) + } -/** - * @summary Bulk Disable All Active Users - */ -export const useBulkDisableAllActiveUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableAllActiveUsersMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Activate all disabled users under selected admins. - * @summary Bulk Activate All Disabled Users - */ -export const bulkActivateAllDisabledUsers = (bulkAdminSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/admins/bulk/users/activate`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection, signal }) -} -export const getBulkActivateAllDisabledUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkActivateAllDisabledUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkActivateAllDisabledUsers(data) - } + return { mutationFn, ...mutationOptions }} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + export type RemoveUserByUsernameMutationResult = NonNullable>> -export type BulkActivateAllDisabledUsersMutationResult = NonNullable>> -export type BulkActivateAllDisabledUsersMutationBody = BodyType -export type BulkActivateAllDisabledUsersMutationError = ErrorType + export type RemoveUserByUsernameMutationError = ErrorType -/** - * @summary Bulk Activate All Disabled Users + /** + * @summary Remove User By Username */ -export const useBulkActivateAllDisabledUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkActivateAllDisabledUsersMutationOptions(options) +export const useRemoveUserByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRemoveUserByUsernameMutationOptions(options), queryClient); + } + +export const getGetUserByUsernameUrl = (username: string,) => { + + + - return useMutation(mutationOptions) + return `/api/user/by-username/${username}` } /** - * Remove all users under selected admins. - * @summary Bulk Remove All Users + * @summary Get User By Username */ -export const bulkRemoveAllUsers = (bulkAdminSelection: BodyType) => { - return orvalFetcher({ url: `/api/admins/bulk/users`, method: 'DELETE', headers: { 'Content-Type': 'application/json' }, data: bulkAdminSelection }) -} +export const getUserByUsername = async (username: string, options?: RequestInit): Promise => { -export const getBulkRemoveAllUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkRemoveAllUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserByUsernameUrl(username), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkRemoveAllUsers(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkRemoveAllUsersMutationResult = NonNullable>> -export type BulkRemoveAllUsersMutationBody = BodyType -export type BulkRemoveAllUsersMutationError = ErrorType -/** - * @summary Bulk Remove All Users - */ -export const useBulkRemoveAllUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkRemoveAllUsersMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Fetch system stats including memory, CPU, disk, and user metrics. - * @summary Get System Stats - */ -export const getSystemStats = (params?: GetSystemStatsParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/system`, method: 'GET', params, signal }) -} +export const getGetUserByUsernameQueryKey = (username: string,) => { + return [ + `/api/user/by-username/${username}` + ] as const; + } -export const getGetSystemStatsQueryKey = (params?: GetSystemStatsParams) => { - return [`/api/system`, ...(params ? [params] : [])] as const -} -export const getGetSystemStatsQueryOptions = >, TError = ErrorType>( - params?: GetSystemStatsParams, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserByUsernameQueryOptions = >, TError = ErrorType>(username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetSystemStatsQueryKey(params) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getSystemStats(params, signal) + const queryKey = queryOptions?.queryKey ?? getGetUserByUsernameQueryKey(username); - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetSystemStatsQueryResult = NonNullable>> -export type GetSystemStatsQueryError = ErrorType -export function useGetSystemStats>, TError = ErrorType>( - params: undefined | GetSystemStatsParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetSystemStats>, TError = ErrorType>( - params?: GetSystemStatsParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetSystemStats>, TError = ErrorType>( - params?: GetSystemStatsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get System Stats - */ + const queryFn: QueryFunction>> = ({ signal }) => getUserByUsername(username, { signal, ...requestOptions }); + -export function useGetSystemStats>, TError = ErrorType>( - params?: GetSystemStatsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetSystemStatsQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUserByUsernameQueryResult = NonNullable>> +export type GetUserByUsernameQueryError = ErrorType + + +export function useGetUserByUsername>, TError = ErrorType>( + username: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserByUsername>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserByUsername>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Retrieve inbound configurations grouped by protocol. - * @summary Get Inbounds + * @summary Get User By Username */ -export const getInbounds = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/inbounds`, method: 'GET', signal }) -} -export const getGetInboundsQueryKey = () => { - return [`/api/inbounds`] as const +export function useGetUserByUsername>, TError = ErrorType>( + username: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserByUsernameQueryOptions(username,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export const getGetInboundsQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetInboundsQueryKey() - const queryFn: QueryFunction>> = ({ signal }) => getInbounds(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetInboundsQueryResult = NonNullable>> -export type GetInboundsQueryError = ErrorType -export function useGetInbounds>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetInbounds>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetInbounds>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Inbounds - */ -export function useGetInbounds>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetInboundsQueryOptions(options) +export const getModifyUserByIdUrl = (userId: number,) => { + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/user/by-id/${userId}` } /** - * Retrieve lightweight inbound metadata for dashboard forms. - * @summary Get Inbound Details + * @summary Modify User By Id */ -export const getInboundDetails = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/inbounds/details`, method: 'GET', signal }) -} +export const modifyUserById = async (userId: number, + userModify: UserModify, options?: RequestInit): Promise => { -export const getGetInboundDetailsQueryKey = () => { - return [`/api/inbounds/details`] as const -} + return orvalFetcher(getModifyUserByIdUrl(userId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(userModify) + } +);} -export const getGetInboundDetailsQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetInboundDetailsQueryKey() - const queryFn: QueryFunction>> = ({ signal }) => getInboundDetails(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} +export const getModifyUserByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number;data: BodyType}, TContext> => { -export type GetInboundDetailsQueryResult = NonNullable>> -export type GetInboundDetailsQueryError = ErrorType +const mutationKey = ['modifyUserById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetInboundDetails>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetInboundDetails>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetInboundDetails>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Inbound Details - */ -export function useGetInboundDetails>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetInboundDetailsQueryOptions(options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {userId: number;data: BodyType}> = (props) => { + const {userId,data} = props ?? {}; - return query -} + return modifyUserById(userId,data,requestOptions) + } -/** - * @summary Get Workers Health - */ -export const getWorkersHealth = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/workers/health`, method: 'GET', signal }) -} -export const getGetWorkersHealthQueryKey = () => { - return [`/api/workers/health`] as const -} -export const getGetWorkersHealthQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetWorkersHealthQueryKey() - const queryFn: QueryFunction>> = ({ signal }) => getWorkersHealth(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetWorkersHealthQueryResult = NonNullable>> -export type GetWorkersHealthQueryError = ErrorType + export type ModifyUserByIdMutationResult = NonNullable>> + export type ModifyUserByIdMutationBody = BodyType + export type ModifyUserByIdMutationError = ErrorType -export function useGetWorkersHealth>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetWorkersHealth>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetWorkersHealth>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Workers Health + /** + * @summary Modify User By Id */ +export const useModifyUserById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserByIdMutationOptions(options), queryClient); + } -export function useGetWorkersHealth>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetWorkersHealthQueryOptions(options) +export const getRemoveUserByIdUrl = (userId: number,) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return `/api/user/by-id/${userId}` } /** - * @summary Get Settings + * @summary Remove User By Id */ -export const getSettings = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/settings`, method: 'GET', signal }) -} +export const removeUserById = async (userId: number, options?: RequestInit): Promise => { -export const getGetSettingsQueryKey = () => { - return [`/api/settings`] as const -} + return orvalFetcher(getRemoveUserByIdUrl(userId), + { + ...options, + method: 'DELETE' -export const getGetSettingsQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetSettingsQueryKey() + } +);} - const queryFn: QueryFunction>> = ({ signal }) => getSettings(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetSettingsQueryResult = NonNullable>> -export type GetSettingsQueryError = ErrorType -export function useGetSettings>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Settings - */ +export const getRemoveUserByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number}, TContext> => { -export function useGetSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetSettingsQueryOptions(options) +const mutationKey = ['removeUserById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} -/** - * @summary Modify Settings - */ -export const modifySettings = (settingsSchema: BodyType) => { - return orvalFetcher({ url: `/api/settings`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: settingsSchema }) -} + const mutationFn: MutationFunction>, {userId: number}> = (props) => { + const {userId} = props ?? {}; -export const getModifySettingsMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifySettings'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return removeUserById(userId,requestOptions) + } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return modifySettings(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifySettingsMutationResult = NonNullable>> -export type ModifySettingsMutationBody = BodyType -export type ModifySettingsMutationError = ErrorType -/** - * @summary Modify Settings - */ -export const useModifySettings = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifySettingsMutationOptions(options) - return useMutation(mutationOptions) -} + return { mutationFn, ...mutationOptions }} -/** - * @summary Get General Settings + export type RemoveUserByIdMutationResult = NonNullable>> + + export type RemoveUserByIdMutationError = ErrorType + + /** + * @summary Remove User By Id */ -export const getGeneralSettings = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/settings/general`, method: 'GET', signal }) -} +export const useRemoveUserById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number}, + TContext + > => { + return useMutation(getRemoveUserByIdMutationOptions(options), queryClient); + } -export const getGetGeneralSettingsQueryKey = () => { - return [`/api/settings/general`] as const -} +export const getGetUserByIdUrl = (userId: number,) => { -export const getGetGeneralSettingsQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetGeneralSettingsQueryKey() - const queryFn: QueryFunction>> = ({ signal }) => getGeneralSettings(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + return `/api/user/by-id/${userId}` } -export type GetGeneralSettingsQueryResult = NonNullable>> -export type GetGeneralSettingsQueryError = ErrorType - -export function useGetGeneralSettings>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetGeneralSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetGeneralSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } /** - * @summary Get General Settings + * @summary Get User By Id */ +export const getUserById = async (userId: number, options?: RequestInit): Promise => { -export function useGetGeneralSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetGeneralSettingsQueryOptions(options) + return orvalFetcher(getGetUserByIdUrl(userId), + { + ...options, + method: 'GET' - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + } +);} - return query -} -/** - * Creates a new group in the system. Only sudo administrators can create groups. - * @summary Create a new group - */ -export const createGroup = (groupCreate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/group`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: groupCreate, signal }) -} -export const getCreateGroupMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createGroup'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createGroup(data) - } +export const getGetUserByIdQueryKey = (userId: number,) => { + return [ + `/api/user/by-id/${userId}` + ] as const; + } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateGroupMutationResult = NonNullable>> -export type CreateGroupMutationBody = BodyType -export type CreateGroupMutationError = ErrorType +export const getGetUserByIdQueryOptions = >, TError = ErrorType>(userId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { -/** - * @summary Create a new group - */ -export const useCreateGroup = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateGroupMutationOptions(options) +const {query: queryOptions, request: requestOptions} = options ?? {}; - return useMutation(mutationOptions) -} + const queryKey = queryOptions?.queryKey ?? getGetUserByIdQueryKey(userId); -/** - * Retrieves a paginated list of all groups in the system. Requires admin authentication. - * @summary List all groups - */ -export const getAllGroups = (params?: GetAllGroupsParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups`, method: 'GET', params, signal }) -} -export const getGetAllGroupsQueryKey = (params?: GetAllGroupsParams) => { - return [`/api/groups`, ...(params ? [params] : [])] as const -} -export const getGetAllGroupsQueryOptions = >, TError = ErrorType>( - params?: GetAllGroupsParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} + const queryFn: QueryFunction>> = ({ signal }) => getUserById(userId, { signal, ...requestOptions }); + + - const queryKey = queryOptions?.queryKey ?? getGetAllGroupsQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getAllGroups(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type GetAllGroupsQueryResult = NonNullable>> -export type GetAllGroupsQueryError = ErrorType +export type GetUserByIdQueryResult = NonNullable>> +export type GetUserByIdQueryError = ErrorType -export function useGetAllGroups>, TError = ErrorType>( - params: undefined | GetAllGroupsParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAllGroups>, TError = ErrorType>( - params?: GetAllGroupsParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAllGroups>, TError = ErrorType>( - params?: GetAllGroupsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + +export function useGetUserById>, TError = ErrorType>( + userId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserById>, TError = ErrorType>( + userId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserById>, TError = ErrorType>( + userId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary List all groups + * @summary Get User By Id */ -export function useGetAllGroups>, TError = ErrorType>( - params?: GetAllGroupsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAllGroupsQueryOptions(params, options) +export function useGetUserById>, TError = ErrorType>( + userId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + const queryOptions = getGetUserByIdQueryOptions(userId,options) - query.queryKey = queryOptions.queryKey + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return query + return { ...query, queryKey: queryOptions.queryKey }; } -/** - * Returns only id and name for groups. Optimized for dropdowns and autocomplete. - * @summary Get lightweight group list - */ -export const getGroupsSimple = (params?: GetGroupsSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups/simple`, method: 'GET', params, signal }) -} -export const getGetGroupsSimpleQueryKey = (params?: GetGroupsSimpleParams) => { - return [`/api/groups/simple`, ...(params ? [params] : [])] as const -} -export const getGetGroupsSimpleQueryOptions = >, TError = ErrorType>( - params?: GetGroupsSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetGroupsSimpleQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getGroupsSimple(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetGroupsSimpleQueryResult = NonNullable>> -export type GetGroupsSimpleQueryError = ErrorType +export const getResetUserDataUsageUrl = (username: string,) => { + + + + + return `/api/user/${username}/reset` +} -export function useGetGroupsSimple>, TError = ErrorType>( - params: undefined | GetGroupsSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetGroupsSimple>, TError = ErrorType>( - params?: GetGroupsSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetGroupsSimple>, TError = ErrorType>( - params?: GetGroupsSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } /** - * @summary Get lightweight group list + * Reset user data usage + * @summary Reset User Data Usage */ +export const resetUserDataUsage = async (username: string, options?: RequestInit): Promise => { -export function useGetGroupsSimple>, TError = ErrorType>( - params?: GetGroupsSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetGroupsSimpleQueryOptions(params, options) - - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + return orvalFetcher(getResetUserDataUsageUrl(username), + { + ...options, + method: 'POST' - query.queryKey = queryOptions.queryKey - return query -} + } +);} -/** - * Retrieves detailed information about a specific group by its ID. - * @summary Get group details - */ -export const getGroup = (groupId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/group/${groupId}`, method: 'GET', signal }) -} -export const getGetGroupQueryKey = (groupId: number) => { - return [`/api/group/${groupId}`] as const -} -export const getGetGroupQueryOptions = >, TError = ErrorType>( - groupId: number, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetGroupQueryKey(groupId) +export const getResetUserDataUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { - const queryFn: QueryFunction>> = ({ signal }) => getGroup(groupId, signal) +const mutationKey = ['resetUserDataUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return { queryKey, queryFn, enabled: !!groupId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetGroupQueryResult = NonNullable>> -export type GetGroupQueryError = ErrorType -export function useGetGroup>, TError = ErrorType>( - groupId: number, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetGroup>, TError = ErrorType>( - groupId: number, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetGroup>, TError = ErrorType>( - groupId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get group details - */ -export function useGetGroup>, TError = ErrorType>( - groupId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetGroupQueryOptions(groupId, options) + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + return resetUserDataUsage(username,requestOptions) + } - query.queryKey = queryOptions.queryKey - return query -} -/** - * Updates an existing group's information. Only sudo administrators can modify groups. - * @summary Modify group - */ -export const modifyGroup = (groupId: number, groupModify: BodyType) => { - return orvalFetcher({ url: `/api/group/${groupId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: groupModify }) -} -export const getModifyGroupMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyGroup'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { groupId: number; data: BodyType }> = props => { - const { groupId, data } = props ?? {} - return modifyGroup(groupId, data) - } + return { mutationFn, ...mutationOptions }} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + export type ResetUserDataUsageMutationResult = NonNullable>> -export type ModifyGroupMutationResult = NonNullable>> -export type ModifyGroupMutationBody = BodyType -export type ModifyGroupMutationError = ErrorType + export type ResetUserDataUsageMutationError = ErrorType -/** - * @summary Modify group + /** + * @summary Reset User Data Usage */ -export const useModifyGroup = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyGroupMutationOptions(options) +export const useResetUserDataUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getResetUserDataUsageMutationOptions(options), queryClient); + } - return useMutation(mutationOptions) +export const getResetUserDataUsageByUsernameUrl = (username: string,) => { + + + + + return `/api/user/by-username/${username}/reset` } /** - * Deletes a group from the system. Only sudo administrators can delete groups. - * @summary Remove group + * @summary Reset User Data Usage By Username */ -export const removeGroup = (groupId: number) => { - return orvalFetcher({ url: `/api/group/${groupId}`, method: 'DELETE' }) -} +export const resetUserDataUsageByUsername = async (username: string, options?: RequestInit): Promise => { -export const getRemoveGroupMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeGroup'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getResetUserDataUsageByUsernameUrl(username), + { + ...options, + method: 'POST' - const mutationFn: MutationFunction>, { groupId: number }> = props => { - const { groupId } = props ?? {} - return removeGroup(groupId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RemoveGroupMutationResult = NonNullable>> -export type RemoveGroupMutationError = ErrorType -/** - * @summary Remove group - */ -export const useRemoveGroup = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveGroupMutationOptions(options) - return useMutation(mutationOptions) -} +export const getResetUserDataUsageByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { -/** - * Bulk assign groups to multiple users, users under specific admins, or all users. +const mutationKey = ['resetUserDataUsageByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -- **group_ids**: List of group IDs to add (required) -- **users**: Optional list of user IDs to assign the groups to -- **admins**: Optional list of admin IDs — their users will be targeted -Notes: -- If neither 'users' nor 'admins' are provided, groups will be added to *all users* -- Existing user-group associations will be ignored (no duplication) -- Returns list of affected users (those who received new group associations) - * @summary Bulk add groups to users - */ -export const bulkAddGroupsToUsers = (bulkGroup: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups/bulk/add`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkGroup, signal }) -} -export const getBulkAddGroupsToUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkAddGroupsToUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; - return bulkAddGroupsToUsers(data) - } + return resetUserDataUsageByUsername(username,requestOptions) + } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkAddGroupsToUsersMutationResult = NonNullable>> -export type BulkAddGroupsToUsersMutationBody = BodyType -export type BulkAddGroupsToUsersMutationError = ErrorType -/** - * @summary Bulk add groups to users - */ -export const useBulkAddGroupsToUsers = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkAddGroupsToUsersMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Bulk remove groups from multiple users, users under specific admins, or all users. -- **group_ids**: List of group IDs to remove (required) -- **users**: Optional list of user IDs to remove the groups from -- **admins**: Optional list of admin IDs — their users will be targeted + return { mutationFn, ...mutationOptions }} -Notes: -- If neither 'users' nor 'admins' are provided, groups will be removed from *all users* -- Only existing user-group associations will be removed -- Returns list of affected users (those who had groups removed) - * @summary Bulk remove groups from users - */ -export const bulkRemoveUsersFromGroups = (bulkGroup: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups/bulk/remove`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkGroup, signal }) -} + export type ResetUserDataUsageByUsernameMutationResult = NonNullable>> -export const getBulkRemoveUsersFromGroupsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkRemoveUsersFromGroups'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + export type ResetUserDataUsageByUsernameMutationError = ErrorType - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + /** + * @summary Reset User Data Usage By Username + */ +export const useResetUserDataUsageByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getResetUserDataUsageByUsernameMutationOptions(options), queryClient); + } - return bulkRemoveUsersFromGroups(data) - } +export const getResetUserDataUsageByIdUrl = (userId: number,) => { - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkRemoveUsersFromGroupsMutationResult = NonNullable>> -export type BulkRemoveUsersFromGroupsMutationBody = BodyType -export type BulkRemoveUsersFromGroupsMutationError = ErrorType -/** - * @summary Bulk remove groups from users - */ -export const useBulkRemoveUsersFromGroups = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkRemoveUsersFromGroupsMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/by-id/${userId}/reset` } /** - * Delete selected groups by ID. - * @summary Bulk Delete Groups + * @summary Reset User Data Usage By Id */ -export const bulkDeleteGroups = (bulkGroupSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkGroupSelection, signal }) -} +export const resetUserDataUsageById = async (userId: number, options?: RequestInit): Promise => { -export const getBulkDeleteGroupsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteGroups'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getResetUserDataUsageByIdUrl(userId), + { + ...options, + method: 'POST' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteGroups(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDeleteGroupsMutationResult = NonNullable>> -export type BulkDeleteGroupsMutationBody = BodyType -export type BulkDeleteGroupsMutationError = ErrorType -/** - * @summary Bulk Delete Groups - */ -export const useBulkDeleteGroups = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteGroupsMutationOptions(options) - return useMutation(mutationOptions) -} +export const getResetUserDataUsageByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number}, TContext> => { -/** - * Disable selected groups by ID. - * @summary Bulk Disable Groups - */ -export const bulkDisableGroups = (bulkGroupSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups/bulk/disable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkGroupSelection, signal }) -} +const mutationKey = ['resetUserDataUsageById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getBulkDisableGroupsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableGroups'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDisableGroups(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + const mutationFn: MutationFunction>, {userId: number}> = (props) => { + const {userId} = props ?? {}; -export type BulkDisableGroupsMutationResult = NonNullable>> -export type BulkDisableGroupsMutationBody = BodyType -export type BulkDisableGroupsMutationError = ErrorType + return resetUserDataUsageById(userId,requestOptions) + } -/** - * @summary Bulk Disable Groups - */ -export const useBulkDisableGroups = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableGroupsMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Enable selected groups by ID. - * @summary Bulk Enable Groups - */ -export const bulkEnableGroups = (bulkGroupSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/groups/bulk/enable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkGroupSelection, signal }) -} -export const getBulkEnableGroupsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkEnableGroups'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkEnableGroups(data) - } + return { mutationFn, ...mutationOptions }} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + export type ResetUserDataUsageByIdMutationResult = NonNullable>> -export type BulkEnableGroupsMutationResult = NonNullable>> -export type BulkEnableGroupsMutationBody = BodyType -export type BulkEnableGroupsMutationError = ErrorType + export type ResetUserDataUsageByIdMutationError = ErrorType -/** - * @summary Bulk Enable Groups + /** + * @summary Reset User Data Usage By Id */ -export const useBulkEnableGroups = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkEnableGroupsMutationOptions(options) +export const useResetUserDataUsageById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number}, + TContext + > => { + return useMutation(getResetUserDataUsageByIdMutationOptions(options), queryClient); + } + +export const getRevokeUserSubscriptionUrl = (username: string,) => { + + - return useMutation(mutationOptions) + + return `/api/user/${username}/revoke_sub` } /** - * Create a new core configuration. - * @summary Create Core Config + * Revoke users subscription (Subscription link and proxies) + * @summary Revoke User Subscription */ -export const createCoreConfig = (coreCreate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/core`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: coreCreate, signal }) -} +export const revokeUserSubscription = async (username: string, options?: RequestInit): Promise => { -export const getCreateCoreConfigMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createCoreConfig'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getRevokeUserSubscriptionUrl(username), + { + ...options, + method: 'POST' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createCoreConfig(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateCoreConfigMutationResult = NonNullable>> -export type CreateCoreConfigMutationBody = BodyType -export type CreateCoreConfigMutationError = ErrorType -/** - * @summary Create Core Config - */ -export const useCreateCoreConfig = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateCoreConfigMutationOptions(options) - return useMutation(mutationOptions) -} +export const getRevokeUserSubscriptionMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { -/** - * Get a core configuration by its ID. - * @summary Get Core Config - */ -export const getCoreConfig = (coreId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/core/${coreId}`, method: 'GET', signal }) -} +const mutationKey = ['revokeUserSubscription']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getGetCoreConfigQueryKey = (coreId: number) => { - return [`/api/core/${coreId}`] as const -} -export const getGetCoreConfigQueryOptions = >, TError = ErrorType>( - coreId: number, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetCoreConfigQueryKey(coreId) - const queryFn: QueryFunction>> = ({ signal }) => getCoreConfig(coreId, signal) + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; - return { queryKey, queryFn, enabled: !!coreId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return revokeUserSubscription(username,requestOptions) + } -export type GetCoreConfigQueryResult = NonNullable>> -export type GetCoreConfigQueryError = ErrorType -export function useGetCoreConfig>, TError = ErrorType>( - coreId: number, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetCoreConfig>, TError = ErrorType>( - coreId: number, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetCoreConfig>, TError = ErrorType>( - coreId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Core Config - */ -export function useGetCoreConfig>, TError = ErrorType>( - coreId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetCoreConfigQueryOptions(coreId, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} + return { mutationFn, ...mutationOptions }} -/** - * Update an existing core configuration. - * @summary Modify Core Config - */ -export const modifyCoreConfig = (coreId: number, coreCreate: BodyType, params: ModifyCoreConfigParams) => { - return orvalFetcher({ url: `/api/core/${coreId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: coreCreate, params }) -} + export type RevokeUserSubscriptionMutationResult = NonNullable>> -export const getModifyCoreConfigMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions; params: ModifyCoreConfigParams }, TContext> -}) => { - const mutationKey = ['modifyCoreConfig'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + export type RevokeUserSubscriptionMutationError = ErrorType - const mutationFn: MutationFunction>, { coreId: number; data: BodyType; params: ModifyCoreConfigParams }> = props => { - const { coreId, data, params } = props ?? {} + /** + * @summary Revoke User Subscription + */ +export const useRevokeUserSubscription = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRevokeUserSubscriptionMutationOptions(options), queryClient); + } - return modifyCoreConfig(coreId, data, params) - } +export const getRevokeUserSubscriptionByUsernameUrl = (username: string,) => { - return { mutationFn, ...mutationOptions } as UseMutationOptions; params: ModifyCoreConfigParams }, TContext> -} -export type ModifyCoreConfigMutationResult = NonNullable>> -export type ModifyCoreConfigMutationBody = BodyType -export type ModifyCoreConfigMutationError = ErrorType -/** - * @summary Modify Core Config - */ -export const useModifyCoreConfig = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions; params: ModifyCoreConfigParams }, TContext> -}): UseMutationResult; params: ModifyCoreConfigParams }, TContext> => { - const mutationOptions = getModifyCoreConfigMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/by-username/${username}/revoke_sub` } /** - * Delete a core configuration. - * @summary Delete Core Config + * @summary Revoke User Subscription By Username */ -export const deleteCoreConfig = (coreId: number, params?: DeleteCoreConfigParams) => { - return orvalFetcher({ url: `/api/core/${coreId}`, method: 'DELETE', params }) -} +export const revokeUserSubscriptionByUsername = async (username: string, options?: RequestInit): Promise => { -export const getDeleteCoreConfigMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['deleteCoreConfig'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getRevokeUserSubscriptionByUsernameUrl(username), + { + ...options, + method: 'POST' - const mutationFn: MutationFunction>, { coreId: number; params?: DeleteCoreConfigParams }> = props => { - const { coreId, params } = props ?? {} - return deleteCoreConfig(coreId, params) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type DeleteCoreConfigMutationResult = NonNullable>> -export type DeleteCoreConfigMutationError = ErrorType -/** - * @summary Delete Core Config - */ -export const useDeleteCoreConfig = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getDeleteCoreConfigMutationOptions(options) +export const getRevokeUserSubscriptionByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { - return useMutation(mutationOptions) -} +const mutationKey = ['revokeUserSubscriptionByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * Get a list of all core configurations. - * @summary Get All Cores - */ -export const getAllCores = (params?: GetAllCoresParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/cores`, method: 'GET', params, signal }) -} -export const getGetAllCoresQueryKey = (params?: GetAllCoresParams) => { - return [`/api/cores`, ...(params ? [params] : [])] as const -} -export const getGetAllCoresQueryOptions = >, TError = ErrorType>( - params?: GetAllCoresParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetAllCoresQueryKey(params) + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getAllCores(params, signal) + return revokeUserSubscriptionByUsername(username,requestOptions) + } - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetAllCoresQueryResult = NonNullable>> -export type GetAllCoresQueryError = ErrorType -export function useGetAllCores>, TError = ErrorType>( - params: undefined | GetAllCoresParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetAllCores>, TError = ErrorType>( - params?: GetAllCoresParams, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetAllCores>, TError = ErrorType>( - params?: GetAllCoresParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get All Cores - */ -export function useGetAllCores>, TError = ErrorType>( - params?: GetAllCoresParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetAllCoresQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + return { mutationFn, ...mutationOptions }} - return query -} + export type RevokeUserSubscriptionByUsernameMutationResult = NonNullable>> -/** - * Returns only id and name for cores. Optimized for dropdowns and autocomplete. - * @summary Get lightweight core list + export type RevokeUserSubscriptionByUsernameMutationError = ErrorType + + /** + * @summary Revoke User Subscription By Username */ -export const getCoresSimple = (params?: GetCoresSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/cores/simple`, method: 'GET', params, signal }) -} +export const useRevokeUserSubscriptionByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getRevokeUserSubscriptionByUsernameMutationOptions(options), queryClient); + } -export const getGetCoresSimpleQueryKey = (params?: GetCoresSimpleParams) => { - return [`/api/cores/simple`, ...(params ? [params] : [])] as const -} +export const getRevokeUserSubscriptionByIdUrl = (userId: number,) => { -export const getGetCoresSimpleQueryOptions = >, TError = ErrorType>( - params?: GetCoresSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetCoresSimpleQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getCoresSimple(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + return `/api/user/by-id/${userId}/revoke_sub` } -export type GetCoresSimpleQueryResult = NonNullable>> -export type GetCoresSimpleQueryError = ErrorType - -export function useGetCoresSimple>, TError = ErrorType>( - params: undefined | GetCoresSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetCoresSimple>, TError = ErrorType>( - params?: GetCoresSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetCoresSimple>, TError = ErrorType>( - params?: GetCoresSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } /** - * @summary Get lightweight core list + * @summary Revoke User Subscription By Id */ +export const revokeUserSubscriptionById = async (userId: number, options?: RequestInit): Promise => { -export function useGetCoresSimple>, TError = ErrorType>( - params?: GetCoresSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetCoresSimpleQueryOptions(params, options) + return orvalFetcher(getRevokeUserSubscriptionByIdUrl(userId), + { + ...options, + method: 'POST' - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + } +);} - return query -} -/** - * restart nodes related to the core config - * @summary Restart Core - */ -export const restartCore = (coreId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/core/${coreId}/restart`, method: 'POST', signal }) -} -export const getRestartCoreMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['restartCore'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { coreId: number }> = props => { - const { coreId } = props ?? {} +export const getRevokeUserSubscriptionByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number}, TContext> => { - return restartCore(coreId) - } +const mutationKey = ['revokeUserSubscriptionById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type RestartCoreMutationResult = NonNullable>> -export type RestartCoreMutationError = ErrorType -/** - * @summary Restart Core - */ -export const useRestartCore = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRestartCoreMutationOptions(options) + const mutationFn: MutationFunction>, {userId: number}> = (props) => { + const {userId} = props ?? {}; - return useMutation(mutationOptions) -} + return revokeUserSubscriptionById(userId,requestOptions) + } -/** - * Delete selected cores by ID. - * @summary Bulk Delete Cores - */ -export const bulkDeleteCores = (bulkCoreSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/cores/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkCoreSelection, signal }) -} -export const getBulkDeleteCoresMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteCores'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteCores(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDeleteCoresMutationResult = NonNullable>> -export type BulkDeleteCoresMutationBody = BodyType -export type BulkDeleteCoresMutationError = ErrorType + return { mutationFn, ...mutationOptions }} -/** - * @summary Bulk Delete Cores - */ -export const useBulkDeleteCores = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteCoresMutationOptions(options) + export type RevokeUserSubscriptionByIdMutationResult = NonNullable>> - return useMutation(mutationOptions) -} + export type RevokeUserSubscriptionByIdMutationError = ErrorType -/** - * @summary Create Client Template + /** + * @summary Revoke User Subscription By Id */ -export const createClientTemplate = (clientTemplateCreate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/client_template`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: clientTemplateCreate, signal }) -} +export const useRevokeUserSubscriptionById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number}, + TContext + > => { + return useMutation(getRevokeUserSubscriptionByIdMutationOptions(options), queryClient); + } -export const getCreateClientTemplateMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createClientTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const getResetUsersDataUsageUrl = () => { - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createClientTemplate(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateClientTemplateMutationResult = NonNullable>> -export type CreateClientTemplateMutationBody = BodyType -export type CreateClientTemplateMutationError = ErrorType + return `/api/users/reset` +} /** - * @summary Create Client Template + * Reset all users data usage + * @summary Reset Users Data Usage */ -export const useCreateClientTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateClientTemplateMutationOptions(options) +export const resetUsersDataUsage = async ( options?: RequestInit): Promise => { - return useMutation(mutationOptions) -} + return orvalFetcher(getResetUsersDataUsageUrl(), + { + ...options, + method: 'POST' -/** - * @summary Get Client Template - */ -export const getClientTemplate = (templateId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/client_template/${templateId}`, method: 'GET', signal }) -} -export const getGetClientTemplateQueryKey = (templateId: number) => { - return [`/api/client_template/${templateId}`] as const -} + } +);} -export const getGetClientTemplateQueryOptions = >, TError = ErrorType>( - templateId: number, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetClientTemplateQueryKey(templateId) - const queryFn: QueryFunction>> = ({ signal }) => getClientTemplate(templateId, signal) - return { queryKey, queryFn, enabled: !!templateId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} +export const getResetUsersDataUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,void, TContext> => { -export type GetClientTemplateQueryResult = NonNullable>> -export type GetClientTemplateQueryError = ErrorType +const mutationKey = ['resetUsersDataUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetClientTemplate>, TError = ErrorType>( - templateId: number, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetClientTemplate>, TError = ErrorType>( - templateId: number, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetClientTemplate>, TError = ErrorType>( - templateId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Client Template - */ -export function useGetClientTemplate>, TError = ErrorType>( - templateId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetClientTemplateQueryOptions(templateId, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, void> = () => { + + + return resetUsersDataUsage(requestOptions) + } + - return query -} -/** - * @summary Modify Client Template - */ -export const modifyClientTemplate = (templateId: number, clientTemplateModify: BodyType) => { - return orvalFetcher({ url: `/api/client_template/${templateId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: clientTemplateModify }) -} -export const getModifyClientTemplateMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyClientTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { templateId: number; data: BodyType }> = props => { - const { templateId, data } = props ?? {} - return modifyClientTemplate(templateId, data) - } + return { mutationFn, ...mutationOptions }} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + export type ResetUsersDataUsageMutationResult = NonNullable>> -export type ModifyClientTemplateMutationResult = NonNullable>> -export type ModifyClientTemplateMutationBody = BodyType -export type ModifyClientTemplateMutationError = ErrorType + export type ResetUsersDataUsageMutationError = ErrorType -/** - * @summary Modify Client Template + /** + * @summary Reset Users Data Usage */ -export const useModifyClientTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyClientTemplateMutationOptions(options) +export const useResetUsersDataUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,void, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + void, + TContext + > => { + return useMutation(getResetUsersDataUsageMutationOptions(options), queryClient); + } + +export const getGetUsersSubUpdateChartUrl = (params?: GetUsersSubUpdateChartParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { - return useMutation(mutationOptions) + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/users/sub_update/chart?${stringifiedParams}` : `/api/users/sub_update/chart` } /** - * @summary Remove Client Template + * Get subscription agent distribution percentages (optionally filtered by user_id/username). + * @summary Get Users Sub Update Chart */ -export const removeClientTemplate = (templateId: number) => { - return orvalFetcher({ url: `/api/client_template/${templateId}`, method: 'DELETE' }) -} +export const getUsersSubUpdateChart = async (params?: GetUsersSubUpdateChartParams, options?: RequestInit): Promise => { -export const getRemoveClientTemplateMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeClientTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUsersSubUpdateChartUrl(params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { templateId: number }> = props => { - const { templateId } = props ?? {} - return removeClientTemplate(templateId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RemoveClientTemplateMutationResult = NonNullable>> -export type RemoveClientTemplateMutationError = ErrorType -/** - * @summary Remove Client Template - */ -export const useRemoveClientTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveClientTemplateMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Get Client Templates - */ -export const getClientTemplates = (params?: GetClientTemplatesParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/client_templates`, method: 'GET', params, signal }) -} +export const getGetUsersSubUpdateChartQueryKey = (params?: GetUsersSubUpdateChartParams,) => { + return [ + `/api/users/sub_update/chart`, ...(params ? [params] : []) + ] as const; + } -export const getGetClientTemplatesQueryKey = (params?: GetClientTemplatesParams) => { - return [`/api/client_templates`, ...(params ? [params] : [])] as const -} -export const getGetClientTemplatesQueryOptions = >, TError = ErrorType>( - params?: GetClientTemplatesParams, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUsersSubUpdateChartQueryOptions = >, TError = ErrorType>(params?: GetUsersSubUpdateChartParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetClientTemplatesQueryKey(params) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getClientTemplates(params, signal) + const queryKey = queryOptions?.queryKey ?? getGetUsersSubUpdateChartQueryKey(params); - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetClientTemplatesQueryResult = NonNullable>> -export type GetClientTemplatesQueryError = ErrorType -export function useGetClientTemplates>, TError = ErrorType>( - params: undefined | GetClientTemplatesParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetClientTemplates>, TError = ErrorType>( - params?: GetClientTemplatesParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetClientTemplates>, TError = ErrorType>( - params?: GetClientTemplatesParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Client Templates - */ + const queryFn: QueryFunction>> = ({ signal }) => getUsersSubUpdateChart(params, { signal, ...requestOptions }); + -export function useGetClientTemplates>, TError = ErrorType>( - params?: GetClientTemplatesParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetClientTemplatesQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUsersSubUpdateChartQueryResult = NonNullable>> +export type GetUsersSubUpdateChartQueryError = ErrorType + + +export function useGetUsersSubUpdateChart>, TError = ErrorType>( + params: undefined | GetUsersSubUpdateChartParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUsersSubUpdateChart>, TError = ErrorType>( + params?: GetUsersSubUpdateChartParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUsersSubUpdateChart>, TError = ErrorType>( + params?: GetUsersSubUpdateChartParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Get Client Templates Simple + * @summary Get Users Sub Update Chart */ -export const getClientTemplatesSimple = (params?: GetClientTemplatesSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/client_templates/simple`, method: 'GET', params, signal }) -} -export const getGetClientTemplatesSimpleQueryKey = (params?: GetClientTemplatesSimpleParams) => { - return [`/api/client_templates/simple`, ...(params ? [params] : [])] as const +export function useGetUsersSubUpdateChart>, TError = ErrorType>( + params?: GetUsersSubUpdateChartParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUsersSubUpdateChartQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export const getGetClientTemplatesSimpleQueryOptions = >, TError = ErrorType>( - params?: GetClientTemplatesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetClientTemplatesSimpleQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getClientTemplatesSimple(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetClientTemplatesSimpleQueryResult = NonNullable>> -export type GetClientTemplatesSimpleQueryError = ErrorType -export function useGetClientTemplatesSimple>, TError = ErrorType>( - params: undefined | GetClientTemplatesSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetClientTemplatesSimple>, TError = ErrorType>( - params?: GetClientTemplatesSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetClientTemplatesSimple>, TError = ErrorType>( - params?: GetClientTemplatesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Client Templates Simple - */ -export function useGetClientTemplatesSimple>, TError = ErrorType>( - params?: GetClientTemplatesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetClientTemplatesSimpleQueryOptions(params, options) +export const getSetOwnerUrl = (username: string, + params: SetOwnerParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); - query.queryKey = queryOptions.queryKey + const stringifiedParams = normalizedParams.toString(); - return query + return stringifiedParams.length > 0 ? `/api/user/${username}/set_owner?${stringifiedParams}` : `/api/user/${username}/set_owner` } /** - * Delete selected client templates by ID. - * @summary Bulk Delete Client Templates + * Set a new owner (admin) for a user. + * @summary Set Owner */ -export const bulkDeleteClientTemplates = (bulkClientTemplateSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ - url: `/api/client_templates/bulk/delete`, - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - data: bulkClientTemplateSelection, - signal, - }) -} +export const setOwner = async (username: string, + params: SetOwnerParams, options?: RequestInit): Promise => { -export const getBulkDeleteClientTemplatesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteClientTemplates'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getSetOwnerUrl(username,params), + { + ...options, + method: 'PUT' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteClientTemplates(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} - -export type BulkDeleteClientTemplatesMutationResult = NonNullable>> -export type BulkDeleteClientTemplatesMutationBody = BodyType -export type BulkDeleteClientTemplatesMutationError = ErrorType -/** - * @summary Bulk Delete Client Templates - */ -export const useBulkDeleteClientTemplates = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteClientTemplatesMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * get host by **id** - * @summary Get Host - */ -export const getHost = (hostId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/host/${hostId}`, method: 'GET', signal }) -} +export const getSetOwnerMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;params: SetOwnerParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;params: SetOwnerParams}, TContext> => { -export const getGetHostQueryKey = (hostId: number) => { - return [`/api/host/${hostId}`] as const -} +const mutationKey = ['setOwner']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getGetHostQueryOptions = >, TError = ErrorType>( - hostId: number, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetHostQueryKey(hostId) - const queryFn: QueryFunction>> = ({ signal }) => getHost(hostId, signal) - return { queryKey, queryFn, enabled: !!hostId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + const mutationFn: MutationFunction>, {username: string;params: SetOwnerParams}> = (props) => { + const {username,params} = props ?? {}; -export type GetHostQueryResult = NonNullable>> -export type GetHostQueryError = ErrorType + return setOwner(username,params,requestOptions) + } -export function useGetHost>, TError = ErrorType>( - hostId: number, - options: { query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetHost>, TError = ErrorType>( - hostId: number, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetHost>, TError = ErrorType>( - hostId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Host - */ -export function useGetHost>, TError = ErrorType>( - hostId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetHostQueryOptions(hostId, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} -/** - * modify host by **id** + return { mutationFn, ...mutationOptions }} -**inbound_tag** must be available in one of the configured cores - * @summary Modify Host - */ -export const modifyHost = (hostId: number, createHost: BodyType) => { - return orvalFetcher({ url: `/api/host/${hostId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: createHost }) -} + export type SetOwnerMutationResult = NonNullable>> -export const getModifyHostMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyHost'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + export type SetOwnerMutationError = ErrorType - const mutationFn: MutationFunction>, { hostId: number; data: BodyType }> = props => { - const { hostId, data } = props ?? {} + /** + * @summary Set Owner + */ +export const useSetOwner = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;params: SetOwnerParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;params: SetOwnerParams}, + TContext + > => { + return useMutation(getSetOwnerMutationOptions(options), queryClient); + } - return modifyHost(hostId, data) - } +export const getSetOwnerByUsernameUrl = (username: string, + params: SetOwnerByUsernameParams,) => { + const normalizedParams = new URLSearchParams(); - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + Object.entries(params || {}).forEach(([key, value]) => { -export type ModifyHostMutationResult = NonNullable>> -export type ModifyHostMutationBody = BodyType -export type ModifyHostMutationError = ErrorType + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -/** - * @summary Modify Host - */ -export const useModifyHost = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyHostMutationOptions(options) + const stringifiedParams = normalizedParams.toString(); - return useMutation(mutationOptions) + return stringifiedParams.length > 0 ? `/api/user/by-username/${username}/set_owner?${stringifiedParams}` : `/api/user/by-username/${username}/set_owner` } /** - * remove host by **id** - * @summary Remove Host + * @summary Set Owner By Username */ -export const removeHost = (hostId: number) => { - return orvalFetcher({ url: `/api/host/${hostId}`, method: 'DELETE' }) -} +export const setOwnerByUsername = async (username: string, + params: SetOwnerByUsernameParams, options?: RequestInit): Promise => { -export const getRemoveHostMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeHost'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getSetOwnerByUsernameUrl(username,params), + { + ...options, + method: 'PUT' - const mutationFn: MutationFunction>, { hostId: number }> = props => { - const { hostId } = props ?? {} - return removeHost(hostId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RemoveHostMutationResult = NonNullable>> -export type RemoveHostMutationError = ErrorType -/** - * @summary Remove Host - */ -export const useRemoveHost = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveHostMutationOptions(options) - return useMutation(mutationOptions) -} +export const getSetOwnerByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;params: SetOwnerByUsernameParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;params: SetOwnerByUsernameParams}, TContext> => { -/** - * Get proxy hosts. - * @summary Get Hosts - */ -export const getHosts = (params?: GetHostsParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/hosts`, method: 'GET', params, signal }) -} +const mutationKey = ['setOwnerByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getGetHostsQueryKey = (params?: GetHostsParams) => { - return [`/api/hosts`, ...(params ? [params] : [])] as const -} -export const getGetHostsQueryOptions = >, TError = ErrorType>( - params?: GetHostsParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetHostsQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getHosts(params, signal) + const mutationFn: MutationFunction>, {username: string;params: SetOwnerByUsernameParams}> = (props) => { + const {username,params} = props ?? {}; - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return setOwnerByUsername(username,params,requestOptions) + } -export type GetHostsQueryResult = NonNullable>> -export type GetHostsQueryError = ErrorType -export function useGetHosts>, TError = ErrorType>( - params: undefined | GetHostsParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetHosts>, TError = ErrorType>( - params?: GetHostsParams, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetHosts>, TError = ErrorType>( - params?: GetHostsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Hosts - */ -export function useGetHosts>, TError = ErrorType>( - params?: GetHostsParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetHostsQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} + return { mutationFn, ...mutationOptions }} -/** - * Modify proxy hosts and update the configuration. - * @summary Modify Hosts - */ -export const modifyHosts = (createHost: BodyType) => { - return orvalFetcher({ url: `/api/hosts`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: createHost }) -} + export type SetOwnerByUsernameMutationResult = NonNullable>> -export const getModifyHostsMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyHosts'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + export type SetOwnerByUsernameMutationError = ErrorType - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + /** + * @summary Set Owner By Username + */ +export const useSetOwnerByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;params: SetOwnerByUsernameParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;params: SetOwnerByUsernameParams}, + TContext + > => { + return useMutation(getSetOwnerByUsernameMutationOptions(options), queryClient); + } - return modifyHosts(data) - } +export const getSetOwnerByIdUrl = (userId: number, + params: SetOwnerByIdParams,) => { + const normalizedParams = new URLSearchParams(); - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + Object.entries(params || {}).forEach(([key, value]) => { -export type ModifyHostsMutationResult = NonNullable>> -export type ModifyHostsMutationBody = BodyType -export type ModifyHostsMutationError = ErrorType + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -/** - * @summary Modify Hosts - */ -export const useModifyHosts = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyHostsMutationOptions(options) + const stringifiedParams = normalizedParams.toString(); - return useMutation(mutationOptions) + return stringifiedParams.length > 0 ? `/api/user/by-id/${userId}/set_owner?${stringifiedParams}` : `/api/user/by-id/${userId}/set_owner` } /** - * create a new host - -**inbound_tag** must be available in one of the configured cores - * @summary Create Host + * @summary Set Owner By Id */ -export const createHost = (createHost: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/host/`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: createHost, signal }) -} +export const setOwnerById = async (userId: number, + params: SetOwnerByIdParams, options?: RequestInit): Promise => { -export const getCreateHostMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createHost'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getSetOwnerByIdUrl(userId,params), + { + ...options, + method: 'PUT' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createHost(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateHostMutationResult = NonNullable>> -export type CreateHostMutationBody = BodyType -export type CreateHostMutationError = ErrorType -/** - * @summary Create Host - */ -export const useCreateHost = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateHostMutationOptions(options) - return useMutation(mutationOptions) -} +export const getSetOwnerByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;params: SetOwnerByIdParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number;params: SetOwnerByIdParams}, TContext> => { -/** - * Delete selected hosts by ID. - * @summary Bulk Delete Hosts - */ -export const bulkDeleteHosts = (bulkHostSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/hosts/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkHostSelection, signal }) -} +const mutationKey = ['setOwnerById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getBulkDeleteHostsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteHosts'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteHosts(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + const mutationFn: MutationFunction>, {userId: number;params: SetOwnerByIdParams}> = (props) => { + const {userId,params} = props ?? {}; -export type BulkDeleteHostsMutationResult = NonNullable>> -export type BulkDeleteHostsMutationBody = BodyType -export type BulkDeleteHostsMutationError = ErrorType + return setOwnerById(userId,params,requestOptions) + } -/** - * @summary Bulk Delete Hosts - */ -export const useBulkDeleteHosts = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteHostsMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Disable selected hosts by ID. - * @summary Bulk Disable Hosts - */ -export const bulkDisableHosts = (bulkHostSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/hosts/bulk/disable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkHostSelection, signal }) -} -export const getBulkDisableHostsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableHosts'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDisableHosts(data) - } + return { mutationFn, ...mutationOptions }} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + export type SetOwnerByIdMutationResult = NonNullable>> -export type BulkDisableHostsMutationResult = NonNullable>> -export type BulkDisableHostsMutationBody = BodyType -export type BulkDisableHostsMutationError = ErrorType + export type SetOwnerByIdMutationError = ErrorType -/** - * @summary Bulk Disable Hosts + /** + * @summary Set Owner By Id */ -export const useBulkDisableHosts = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableHostsMutationOptions(options) - - return useMutation(mutationOptions) -} +export const useSetOwnerById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;params: SetOwnerByIdParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number;params: SetOwnerByIdParams}, + TContext + > => { + return useMutation(getSetOwnerByIdMutationOptions(options), queryClient); + } -/** - * Enable selected hosts by ID. - * @summary Bulk Enable Hosts - */ -export const bulkEnableHosts = (bulkHostSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/hosts/bulk/enable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkHostSelection, signal }) -} +export const getActiveNextPlanUrl = (username: string,) => { -export const getBulkEnableHostsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkEnableHosts'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkEnableHosts(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return `/api/user/${username}/active_next` } -export type BulkEnableHostsMutationResult = NonNullable>> -export type BulkEnableHostsMutationBody = BodyType -export type BulkEnableHostsMutationError = ErrorType - /** - * @summary Bulk Enable Hosts + * Reset user by next plan + * @summary Active Next Plan */ -export const useBulkEnableHosts = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkEnableHostsMutationOptions(options) +export const activeNextPlan = async (username: string, options?: RequestInit): Promise => { - return useMutation(mutationOptions) -} + return orvalFetcher(getActiveNextPlanUrl(username), + { + ...options, + method: 'POST' -/** - * Retrieve the current node settings. - * @summary Get Node Settings - */ -export const getNodeSettings = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/settings`, method: 'GET', signal }) -} -export const getGetNodeSettingsQueryKey = () => { - return [`/api/node/settings`] as const -} + } +);} -export const getGetNodeSettingsQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetNodeSettingsQueryKey() - const queryFn: QueryFunction>> = ({ signal }) => getNodeSettings(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} +export const getActiveNextPlanMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { -export type GetNodeSettingsQueryResult = NonNullable>> -export type GetNodeSettingsQueryError = ErrorType +const mutationKey = ['activeNextPlan']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetNodeSettings>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetNodeSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useGetNodeSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Node Settings - */ -export function useGetNodeSettings>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetNodeSettingsQueryOptions(options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; - return query -} + return activeNextPlan(username,requestOptions) + } -/** - * Retrieve usage statistics for nodes within a specified date range. - * @summary Get Usage - */ -export const getUsage = (params?: GetUsageParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/usage`, method: 'GET', params, signal }) -} -export const getGetUsageQueryKey = (params?: GetUsageParams) => { - return [`/api/node/usage`, ...(params ? [params] : [])] as const -} -export const getGetUsageQueryOptions = >, TError = ErrorType>( - params?: GetUsageParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUsageQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getUsage(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetUsageQueryResult = NonNullable>> -export type GetUsageQueryError = ErrorType + export type ActiveNextPlanMutationResult = NonNullable>> -export function useGetUsage>, TError = ErrorType>( - params: undefined | GetUsageParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUsage>, TError = ErrorType>( - params?: GetUsageParams, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUsage>, TError = ErrorType>( - params?: GetUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Usage + export type ActiveNextPlanMutationError = ErrorType + + /** + * @summary Active Next Plan */ +export const useActiveNextPlan = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getActiveNextPlanMutationOptions(options), queryClient); + } -export function useGetUsage>, TError = ErrorType>( - params?: GetUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUsageQueryOptions(params, options) +export const getActiveNextPlanByUsernameUrl = (username: string,) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return `/api/user/by-username/${username}/active_next` } /** - * Retrieve one user activity/status count metric from node user usage rows. - * @summary Get User Count Metric + * @summary Active Next Plan By Username */ -export const getUserCountMetric = (metric: UserCountMetric, params?: GetUserCountMetricParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/user_counts/${metric}`, method: 'GET', params, signal }) -} +export const activeNextPlanByUsername = async (username: string, options?: RequestInit): Promise => { -export const getGetUserCountMetricQueryKey = (metric: UserCountMetric, params?: GetUserCountMetricParams) => { - return [`/api/node/user_counts/${metric}`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getActiveNextPlanByUsernameUrl(username), + { + ...options, + method: 'POST' -export const getGetUserCountMetricQueryOptions = >, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUserCountMetricParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserCountMetricQueryKey(metric, params) + } +);} - const queryFn: QueryFunction>> = ({ signal }) => getUserCountMetric(metric, params, signal) - return { queryKey, queryFn, enabled: !!metric, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetUserCountMetricQueryResult = NonNullable>> -export type GetUserCountMetricQueryError = ErrorType -export function useGetUserCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params: undefined | GetUserCountMetricParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUserCountMetricParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUserCountMetricParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Count Metric - */ +export const getActiveNextPlanByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string}, TContext> => { -export function useGetUserCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUserCountMetricParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserCountMetricQueryOptions(metric, params, options) +const mutationKey = ['activeNextPlanByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} -/** - * Retrieve a list of all nodes. Accessible only to sudo admins. - * @summary Get Nodes - */ -export const getNodes = (params?: GetNodesParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes`, method: 'GET', params, signal }) -} + const mutationFn: MutationFunction>, {username: string}> = (props) => { + const {username} = props ?? {}; + + return activeNextPlanByUsername(username,requestOptions) + } + + -export const getGetNodesQueryKey = (params?: GetNodesParams) => { - return [`/api/nodes`, ...(params ? [params] : [])] as const -} -export const getGetNodesQueryOptions = >, TError = ErrorType>( - params?: GetNodesParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetNodesQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getNodes(params, signal) + return { mutationFn, ...mutationOptions }} - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + export type ActiveNextPlanByUsernameMutationResult = NonNullable>> -export type GetNodesQueryResult = NonNullable>> -export type GetNodesQueryError = ErrorType + export type ActiveNextPlanByUsernameMutationError = ErrorType -export function useGetNodes>, TError = ErrorType>( - params: undefined | GetNodesParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetNodes>, TError = ErrorType>( - params?: GetNodesParams, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetNodes>, TError = ErrorType>( - params?: GetNodesParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Nodes + /** + * @summary Active Next Plan By Username */ +export const useActiveNextPlanByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string}, + TContext + > => { + return useMutation(getActiveNextPlanByUsernameMutationOptions(options), queryClient); + } + +export const getActiveNextPlanByIdUrl = (userId: number,) => { -export function useGetNodes>, TError = ErrorType>( - params?: GetNodesParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetNodesQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/user/by-id/${userId}/active_next` } /** - * Returns only id and name for nodes. Optimized for dropdowns and autocomplete. - * @summary Get lightweight node list + * @summary Active Next Plan By Id */ -export const getNodesSimple = (params?: GetNodesSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/simple`, method: 'GET', params, signal }) -} +export const activeNextPlanById = async (userId: number, options?: RequestInit): Promise => { -export const getGetNodesSimpleQueryKey = (params?: GetNodesSimpleParams) => { - return [`/api/nodes/simple`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getActiveNextPlanByIdUrl(userId), + { + ...options, + method: 'POST' -export const getGetNodesSimpleQueryOptions = >, TError = ErrorType>( - params?: GetNodesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetNodesSimpleQueryKey(params) + } +);} - const queryFn: QueryFunction>> = ({ signal }) => getNodesSimple(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetNodesSimpleQueryResult = NonNullable>> -export type GetNodesSimpleQueryError = ErrorType -export function useGetNodesSimple>, TError = ErrorType>( - params: undefined | GetNodesSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetNodesSimple>, TError = ErrorType>( - params?: GetNodesSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetNodesSimple>, TError = ErrorType>( - params?: GetNodesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get lightweight node list - */ +export const getActiveNextPlanByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number}, TContext> => { -export function useGetNodesSimple>, TError = ErrorType>( - params?: GetNodesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetNodesSimpleQueryOptions(params, options) +const mutationKey = ['activeNextPlanById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} -/** - * Trigger reconnection for all nodes or a specific core. - * @summary Reconnect All Node - */ -export const reconnectAllNode = (params?: ReconnectAllNodeParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/reconnect`, method: 'POST', params, signal }) -} + const mutationFn: MutationFunction>, {userId: number}> = (props) => { + const {userId} = props ?? {}; -export const getReconnectAllNodeMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['reconnectAllNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return activeNextPlanById(userId,requestOptions) + } - const mutationFn: MutationFunction>, { params?: ReconnectAllNodeParams }> = props => { - const { params } = props ?? {} - return reconnectAllNode(params) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ReconnectAllNodeMutationResult = NonNullable>> -export type ReconnectAllNodeMutationError = ErrorType -/** - * @summary Reconnect All Node + return { mutationFn, ...mutationOptions }} + + export type ActiveNextPlanByIdMutationResult = NonNullable>> + + export type ActiveNextPlanByIdMutationError = ErrorType + + /** + * @summary Active Next Plan By Id */ -export const useReconnectAllNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getReconnectAllNodeMutationOptions(options) +export const useActiveNextPlanById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number}, + TContext + > => { + return useMutation(getActiveNextPlanByIdMutationOptions(options), queryClient); + } + +export const getGetUserSubscriptionByIdUrl = (userId: number, + clientType: ConfigFormat,) => { - return useMutation(mutationOptions) + + + + return `/api/user/${userId}/subscription/${clientType}` } /** - * Create a new node to the database. - * @summary Create Node + * Get a user's subscription content in the requested format. + * @summary Get User Subscription By Id */ -export const createNode = (nodeCreate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: nodeCreate, signal }) -} +export const getUserSubscriptionById = async (userId: number, + clientType: ConfigFormat, options?: RequestInit): Promise => { -export const getCreateNodeMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserSubscriptionByIdUrl(userId,clientType), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createNode(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateNodeMutationResult = NonNullable>> -export type CreateNodeMutationBody = BodyType -export type CreateNodeMutationError = ErrorType -/** - * @summary Create Node - */ -export const useCreateNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateNodeMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Retrieve details of a specific node by its ID. - * @summary Get Node - */ -export const getNode = (nodeId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}`, method: 'GET', signal }) -} +export const getGetUserSubscriptionByIdQueryKey = (userId: number, + clientType: ConfigFormat,) => { + return [ + `/api/user/${userId}/subscription/${clientType}` + ] as const; + } -export const getGetNodeQueryKey = (nodeId: number) => { - return [`/api/node/${nodeId}`] as const -} -export const getGetNodeQueryOptions = >, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserSubscriptionByIdQueryOptions = >, TError = ErrorType>(userId: number, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetNodeQueryKey(nodeId) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getNode(nodeId, signal) + const queryKey = queryOptions?.queryKey ?? getGetUserSubscriptionByIdQueryKey(userId,clientType); - return { queryKey, queryFn, enabled: !!nodeId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetNodeQueryResult = NonNullable>> -export type GetNodeQueryError = ErrorType -export function useGetNode>, TError = ErrorType>( - nodeId: number, - options: { query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetNode>, TError = ErrorType>( - nodeId: number, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetNode>, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Node - */ + const queryFn: QueryFunction>> = ({ signal }) => getUserSubscriptionById(userId,clientType, { signal, ...requestOptions }); + -export function useGetNode>, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetNodeQueryOptions(nodeId, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return { queryKey, queryFn, enabled: userId !== null && userId !== undefined && clientType !== null && clientType !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUserSubscriptionByIdQueryResult = NonNullable>> +export type GetUserSubscriptionByIdQueryError = ErrorType + + +export function useGetUserSubscriptionById>, TError = ErrorType>( + userId: number, + clientType: ConfigFormat, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserSubscriptionById>, TError = ErrorType>( + userId: number, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserSubscriptionById>, TError = ErrorType>( + userId: number, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Modify a node's details. Only accessible to sudo admins. - * @summary Modify Node + * @summary Get User Subscription By Id */ -export const modifyNode = (nodeId: number, nodeModify: BodyType) => { - return orvalFetcher({ url: `/api/node/${nodeId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: nodeModify }) -} -export const getModifyNodeMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export function useGetUserSubscriptionById>, TError = ErrorType>( + userId: number, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const mutationFn: MutationFunction>, { nodeId: number; data: BodyType }> = props => { - const { nodeId, data } = props ?? {} + const queryOptions = getGetUserSubscriptionByIdQueryOptions(userId,clientType,options) - return modifyNode(nodeId, data) - } + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return { ...query, queryKey: queryOptions.queryKey }; } -export type ModifyNodeMutationResult = NonNullable>> -export type ModifyNodeMutationBody = BodyType -export type ModifyNodeMutationError = ErrorType - -/** - * @summary Modify Node - */ -export const useModifyNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyNodeMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Remove a node and remove it from xray in the background. - * @summary Remove Node - */ -export const removeNode = (nodeId: number) => { - return orvalFetcher({ url: `/api/node/${nodeId}`, method: 'DELETE' }) -} -export const getRemoveNodeMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { nodeId: number }> = props => { - const { nodeId } = props ?? {} - return removeNode(nodeId) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} +export const getGetUserSubUpdateListUrl = (username: string, + params?: GetUserSubUpdateListParams,) => { + const normalizedParams = new URLSearchParams(); -export type RemoveNodeMutationResult = NonNullable>> + Object.entries(params || {}).forEach(([key, value]) => { -export type RemoveNodeMutationError = ErrorType + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -/** - * @summary Remove Node - */ -export const useRemoveNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveNodeMutationOptions(options) + const stringifiedParams = normalizedParams.toString(); - return useMutation(mutationOptions) + return stringifiedParams.length > 0 ? `/api/user/${username}/sub_update?${stringifiedParams}` : `/api/user/${username}/sub_update` } /** - * @summary Update Node + * Get user subscription agent list + * @summary Get User Sub Update List */ -export const updateNode = (nodeId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/update`, method: 'POST', signal }) -} +export const getUserSubUpdateList = async (username: string, + params?: GetUserSubUpdateListParams, options?: RequestInit): Promise => { -export const getUpdateNodeMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['updateNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserSubUpdateListUrl(username,params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { nodeId: number }> = props => { - const { nodeId } = props ?? {} - return updateNode(nodeId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type UpdateNodeMutationResult = NonNullable>> -export type UpdateNodeMutationError = ErrorType -/** - * @summary Update Node - */ -export const useUpdateNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getUpdateNodeMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Update Core - */ -export const updateCore = (nodeId: number, nodeCoreUpdate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/core_update`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: nodeCoreUpdate, signal }) -} +export const getGetUserSubUpdateListQueryKey = (username: string, + params?: GetUserSubUpdateListParams,) => { + return [ + `/api/user/${username}/sub_update`, ...(params ? [params] : []) + ] as const; + } -export const getUpdateCoreMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['updateCore'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { nodeId: number; data: BodyType }> = props => { - const { nodeId, data } = props ?? {} +export const getGetUserSubUpdateListQueryOptions = >, TError = ErrorType>(username: string, + params?: GetUserSubUpdateListParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { - return updateCore(nodeId, data) - } +const {query: queryOptions, request: requestOptions} = options ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + const queryKey = queryOptions?.queryKey ?? getGetUserSubUpdateListQueryKey(username,params); -export type UpdateCoreMutationResult = NonNullable>> -export type UpdateCoreMutationBody = BodyType -export type UpdateCoreMutationError = ErrorType -/** - * @summary Update Core - */ -export const useUpdateCore = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getUpdateCoreMutationOptions(options) - return useMutation(mutationOptions) -} + const queryFn: QueryFunction>> = ({ signal }) => getUserSubUpdateList(username,params, { signal, ...requestOptions }); -/** - * @summary Update Geofiles - */ -export const updateGeofiles = (nodeId: number, nodeGeoFilesUpdate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/geofiles`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: nodeGeoFilesUpdate, signal }) -} -export const getUpdateGeofilesMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['updateGeofiles'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { nodeId: number; data: BodyType }> = props => { - const { nodeId, data } = props ?? {} - return updateGeofiles(nodeId, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type UpdateGeofilesMutationResult = NonNullable>> -export type UpdateGeofilesMutationBody = BodyType -export type UpdateGeofilesMutationError = ErrorType - -/** - * @summary Update Geofiles - */ -export const useUpdateGeofiles = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getUpdateGeofilesMutationOptions(options) +export type GetUserSubUpdateListQueryResult = NonNullable>> +export type GetUserSubUpdateListQueryError = ErrorType - return useMutation(mutationOptions) -} +export function useGetUserSubUpdateList>, TError = ErrorType>( + username: string, + params: undefined | GetUserSubUpdateListParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateList>, TError = ErrorType>( + username: string, + params?: GetUserSubUpdateListParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateList>, TError = ErrorType>( + username: string, + params?: GetUserSubUpdateListParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Reset node traffic usage (uplink and downlink). -Creates a log entry in node_usage_reset_logs table. -Only accessible to sudo admins. - * @summary Reset Node Usage + * @summary Get User Sub Update List */ -export const resetNodeUsage = (nodeId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/reset`, method: 'POST', signal }) -} -export const getResetNodeUsageMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetNodeUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export function useGetUserSubUpdateList>, TError = ErrorType>( + username: string, + params?: GetUserSubUpdateListParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const mutationFn: MutationFunction>, { nodeId: number }> = props => { - const { nodeId } = props ?? {} + const queryOptions = getGetUserSubUpdateListQueryOptions(username,params,options) - return resetNodeUsage(nodeId) - } + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return { mutationFn, ...mutationOptions } as UseMutationOptions + return { ...query, queryKey: queryOptions.queryKey }; } -export type ResetNodeUsageMutationResult = NonNullable>> - -export type ResetNodeUsageMutationError = ErrorType - -/** - * @summary Reset Node Usage - */ -export const useResetNodeUsage = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetNodeUsageMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Trigger a reconnection for the specified node. Only accessible to sudo admins. - * @summary Reconnect Node - */ -export const reconnectNode = (nodeId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/reconnect`, method: 'POST', signal }) -} -export const getReconnectNodeMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['reconnectNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { nodeId: number }> = props => { - const { nodeId } = props ?? {} - return reconnectNode(nodeId) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} +export const getGetUserSubUpdateListByUsernameUrl = (username: string, + params?: GetUserSubUpdateListByUsernameParams,) => { + const normalizedParams = new URLSearchParams(); -export type ReconnectNodeMutationResult = NonNullable>> + Object.entries(params || {}).forEach(([key, value]) => { -export type ReconnectNodeMutationError = ErrorType + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -/** - * @summary Reconnect Node - */ -export const useReconnectNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getReconnectNodeMutationOptions(options) + const stringifiedParams = normalizedParams.toString(); - return useMutation(mutationOptions) + return stringifiedParams.length > 0 ? `/api/user/by-username/${username}/sub_update?${stringifiedParams}` : `/api/user/by-username/${username}/sub_update` } /** - * @summary Sync Node + * @summary Get User Sub Update List By Username */ -export const syncNode = (nodeId: number, params?: SyncNodeParams) => { - return orvalFetcher({ url: `/api/node/${nodeId}/sync`, method: 'PUT', params }) -} +export const getUserSubUpdateListByUsername = async (username: string, + params?: GetUserSubUpdateListByUsernameParams, options?: RequestInit): Promise => { -export const getSyncNodeMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['syncNode'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserSubUpdateListByUsernameUrl(username,params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { nodeId: number; params?: SyncNodeParams }> = props => { - const { nodeId, params } = props ?? {} - return syncNode(nodeId, params) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type SyncNodeMutationResult = NonNullable>> -export type SyncNodeMutationError = ErrorType -/** - * @summary Sync Node - */ -export const useSyncNode = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getSyncNodeMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Stream logs for a specific node as Server-Sent Events. - * @summary Node Logs - */ -export const nodeLogs = (nodeId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/logs`, method: 'GET', signal }) -} +export const getGetUserSubUpdateListByUsernameQueryKey = (username: string, + params?: GetUserSubUpdateListByUsernameParams,) => { + return [ + `/api/user/by-username/${username}/sub_update`, ...(params ? [params] : []) + ] as const; + } -export const getNodeLogsQueryKey = (nodeId: number) => { - return [`/api/node/${nodeId}/logs`] as const -} -export const getNodeLogsQueryOptions = >, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserSubUpdateListByUsernameQueryOptions = >, TError = ErrorType>(username: string, + params?: GetUserSubUpdateListByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getNodeLogsQueryKey(nodeId) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => nodeLogs(nodeId, signal) + const queryKey = queryOptions?.queryKey ?? getGetUserSubUpdateListByUsernameQueryKey(username,params); - return { queryKey, queryFn, enabled: !!nodeId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type NodeLogsQueryResult = NonNullable>> -export type NodeLogsQueryError = ErrorType -export function useNodeLogs>, TError = ErrorType>( - nodeId: number, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useNodeLogs>, TError = ErrorType>( - nodeId: number, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useNodeLogs>, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Node Logs - */ + const queryFn: QueryFunction>> = ({ signal }) => getUserSubUpdateListByUsername(username,params, { signal, ...requestOptions }); + -export function useNodeLogs>, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getNodeLogsQueryOptions(nodeId, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUserSubUpdateListByUsernameQueryResult = NonNullable>> +export type GetUserSubUpdateListByUsernameQueryError = ErrorType + + +export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( + username: string, + params: undefined | GetUserSubUpdateListByUsernameParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( + username: string, + params?: GetUserSubUpdateListByUsernameParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( + username: string, + params?: GetUserSubUpdateListByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Get Node Stats Periodic + * @summary Get User Sub Update List By Username */ -export const getNodeStatsPeriodic = (nodeId: number, params?: GetNodeStatsPeriodicParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/stats`, method: 'GET', params, signal }) -} -export const getGetNodeStatsPeriodicQueryKey = (nodeId: number, params?: GetNodeStatsPeriodicParams) => { - return [`/api/node/${nodeId}/stats`, ...(params ? [params] : [])] as const +export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( + username: string, + params?: GetUserSubUpdateListByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserSubUpdateListByUsernameQueryOptions(username,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export const getGetNodeStatsPeriodicQueryOptions = >, TError = ErrorType>( - nodeId: number, - params?: GetNodeStatsPeriodicParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetNodeStatsPeriodicQueryKey(nodeId, params) - const queryFn: QueryFunction>> = ({ signal }) => getNodeStatsPeriodic(nodeId, params, signal) - return { queryKey, queryFn, enabled: !!nodeId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetNodeStatsPeriodicQueryResult = NonNullable>> -export type GetNodeStatsPeriodicQueryError = ErrorType -export function useGetNodeStatsPeriodic>, TError = ErrorType>( - nodeId: number, - params: undefined | GetNodeStatsPeriodicParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetNodeStatsPeriodic>, TError = ErrorType>( - nodeId: number, - params?: GetNodeStatsPeriodicParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetNodeStatsPeriodic>, TError = ErrorType>( - nodeId: number, - params?: GetNodeStatsPeriodicParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Node Stats Periodic - */ -export function useGetNodeStatsPeriodic>, TError = ErrorType>( - nodeId: number, - params?: GetNodeStatsPeriodicParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetNodeStatsPeriodicQueryOptions(nodeId, params, options) +export const getGetUserSubUpdateListByIdUrl = (userId: number, + params?: GetUserSubUpdateListByIdParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); - query.queryKey = queryOptions.queryKey + const stringifiedParams = normalizedParams.toString(); - return query + return stringifiedParams.length > 0 ? `/api/user/by-id/${userId}/sub_update?${stringifiedParams}` : `/api/user/by-id/${userId}/sub_update` } /** - * Retrieve node real-time statistics. - * @summary Realtime Node Stats + * @summary Get User Sub Update List By Id */ -export const realtimeNodeStats = (nodeId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/realtime_stats`, method: 'GET', signal }) -} +export const getUserSubUpdateListById = async (userId: number, + params?: GetUserSubUpdateListByIdParams, options?: RequestInit): Promise => { -export const getRealtimeNodeStatsQueryKey = (nodeId: number) => { - return [`/api/node/${nodeId}/realtime_stats`] as const -} + return orvalFetcher(getGetUserSubUpdateListByIdUrl(userId,params), + { + ...options, + method: 'GET' -export const getRealtimeNodeStatsQueryOptions = >, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getRealtimeNodeStatsQueryKey(nodeId) + } +);} - const queryFn: QueryFunction>> = ({ signal }) => realtimeNodeStats(nodeId, signal) - return { queryKey, queryFn, enabled: !!nodeId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type RealtimeNodeStatsQueryResult = NonNullable>> -export type RealtimeNodeStatsQueryError = ErrorType -export function useRealtimeNodeStats>, TError = ErrorType>( - nodeId: number, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useRealtimeNodeStats>, TError = ErrorType>( - nodeId: number, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useRealtimeNodeStats>, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Realtime Node Stats - */ -export function useRealtimeNodeStats>, TError = ErrorType>( - nodeId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getRealtimeNodeStatsQueryOptions(nodeId, options) +export const getGetUserSubUpdateListByIdQueryKey = (userId: number, + params?: GetUserSubUpdateListByIdParams,) => { + return [ + `/api/user/by-id/${userId}/sub_update`, ...(params ? [params] : []) + ] as const; + } - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey +export const getGetUserSubUpdateListByIdQueryOptions = >, TError = ErrorType>(userId: number, + params?: GetUserSubUpdateListByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { - return query -} +const {query: queryOptions, request: requestOptions} = options ?? {}; -/** - * Retrieve nodes real-time statistics. - * @summary Realtime Nodes Stats - */ -export const realtimeNodesStats = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/realtime_stats`, method: 'GET', signal }) -} + const queryKey = queryOptions?.queryKey ?? getGetUserSubUpdateListByIdQueryKey(userId,params); -export const getRealtimeNodesStatsQueryKey = () => { - return [`/api/nodes/realtime_stats`] as const -} -export const getRealtimeNodesStatsQueryOptions = >, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getRealtimeNodesStatsQueryKey() + const queryFn: QueryFunction>> = ({ signal }) => getUserSubUpdateListById(userId,params, { signal, ...requestOptions }); - const queryFn: QueryFunction>> = ({ signal }) => realtimeNodesStats(signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + + + + return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type RealtimeNodesStatsQueryResult = NonNullable>> -export type RealtimeNodesStatsQueryError = ErrorType +export type GetUserSubUpdateListByIdQueryResult = NonNullable>> +export type GetUserSubUpdateListByIdQueryError = ErrorType + -export function useRealtimeNodesStats>, TError = ErrorType>(options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): DefinedUseQueryResult & { queryKey: DataTag } -export function useRealtimeNodesStats>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> -}): UseQueryResult & { queryKey: DataTag } -export function useRealtimeNodesStats>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateListById>, TError = ErrorType>( + userId: number, + params: undefined | GetUserSubUpdateListByIdParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateListById>, TError = ErrorType>( + userId: number, + params?: GetUserSubUpdateListByIdParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateListById>, TError = ErrorType>( + userId: number, + params?: GetUserSubUpdateListByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Realtime Nodes Stats + * @summary Get User Sub Update List By Id */ -export function useRealtimeNodesStats>, TError = ErrorType>(options?: { - query?: Partial>, TError, TData>> -}): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getRealtimeNodesStatsQueryOptions(options) - - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } +export function useGetUserSubUpdateListById>, TError = ErrorType>( + userId: number, + params?: GetUserSubUpdateListByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - query.queryKey = queryOptions.queryKey + const queryOptions = getGetUserSubUpdateListByIdQueryOptions(userId,params,options) - return query -} + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -/** - * Retrieve user ips from all nodes. - * @summary User Online Ip List All Nodes - */ -export const userOnlineIpListAllNodes = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/online_stats/${username}/ip`, method: 'GET', signal }) + return { ...query, queryKey: queryOptions.queryKey }; } -export const getUserOnlineIpListAllNodesQueryKey = (username: string) => { - return [`/api/node/online_stats/${username}/ip`] as const -} -export const getUserOnlineIpListAllNodesQueryOptions = >, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserOnlineIpListAllNodesQueryKey(username) - const queryFn: QueryFunction>> = ({ signal }) => userOnlineIpListAllNodes(username, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} -export type UserOnlineIpListAllNodesQueryResult = NonNullable>> -export type UserOnlineIpListAllNodesQueryError = ErrorType -export function useUserOnlineIpListAllNodes>, TError = ErrorType>( - username: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useUserOnlineIpListAllNodes>, TError = ErrorType>( - username: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useUserOnlineIpListAllNodes>, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary User Online Ip List All Nodes - */ +export const getGetUsersUrl = (params?: GetUsersParams,) => { + const normalizedParams = new URLSearchParams(); -export function useUserOnlineIpListAllNodes>, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserOnlineIpListAllNodesQueryOptions(username, options) + Object.entries(params || {}).forEach(([key, value]) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); - query.queryKey = queryOptions.queryKey + const stringifiedParams = normalizedParams.toString(); - return query + return stringifiedParams.length > 0 ? `/api/users?${stringifiedParams}` : `/api/users` } /** - * Retrieve user online stats by node. - * @summary User Online Stats + * Get all users + * @summary Get Users */ -export const userOnlineStats = (nodeId: number, username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/online_stats/${username}`, method: 'GET', signal }) -} +export const getUsers = async (params?: GetUsersParams, options?: RequestInit): Promise => { -export const getUserOnlineStatsQueryKey = (nodeId: number, username: string) => { - return [`/api/node/${nodeId}/online_stats/${username}`] as const -} + return orvalFetcher(getGetUsersUrl(params), + { + ...options, + method: 'GET' -export const getUserOnlineStatsQueryOptions = >, TError = ErrorType>( - nodeId: number, - username: string, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserOnlineStatsQueryKey(nodeId, username) + } +);} - const queryFn: QueryFunction>> = ({ signal }) => userOnlineStats(nodeId, username, signal) - return { queryKey, queryFn, enabled: !!(nodeId && username), ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} -export type UserOnlineStatsQueryResult = NonNullable>> -export type UserOnlineStatsQueryError = ErrorType -export function useUserOnlineStats>, TError = ErrorType>( - nodeId: number, - username: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useUserOnlineStats>, TError = ErrorType>( - nodeId: number, - username: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useUserOnlineStats>, TError = ErrorType>( - nodeId: number, - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary User Online Stats - */ -export function useUserOnlineStats>, TError = ErrorType>( - nodeId: number, - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserOnlineStatsQueryOptions(nodeId, username, options) +export const getGetUsersQueryKey = (params?: GetUsersParams,) => { + return [ + `/api/users`, ...(params ? [params] : []) + ] as const; + } - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey +export const getGetUsersQueryOptions = >, TError = ErrorType>(params?: GetUsersParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { - return query -} +const {query: queryOptions, request: requestOptions} = options ?? {}; -/** - * Retrieve user ips by node. - * @summary User Online Ip List - */ -export const userOnlineIpList = (nodeId: number, username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/node/${nodeId}/online_stats/${username}/ip`, method: 'GET', signal }) -} + const queryKey = queryOptions?.queryKey ?? getGetUsersQueryKey(params); -export const getUserOnlineIpListQueryKey = (nodeId: number, username: string) => { - return [`/api/node/${nodeId}/online_stats/${username}/ip`] as const -} -export const getUserOnlineIpListQueryOptions = >, TError = ErrorType>( - nodeId: number, - username: string, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserOnlineIpListQueryKey(nodeId, username) + const queryFn: QueryFunction>> = ({ signal }) => getUsers(params, { signal, ...requestOptions }); - const queryFn: QueryFunction>> = ({ signal }) => userOnlineIpList(nodeId, username, signal) - return { queryKey, queryFn, enabled: !!(nodeId && username), ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type UserOnlineIpListQueryResult = NonNullable>> -export type UserOnlineIpListQueryError = ErrorType +export type GetUsersQueryResult = NonNullable>> +export type GetUsersQueryError = ErrorType -export function useUserOnlineIpList>, TError = ErrorType>( - nodeId: number, - username: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useUserOnlineIpList>, TError = ErrorType>( - nodeId: number, - username: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useUserOnlineIpList>, TError = ErrorType>( - nodeId: number, - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + +export function useGetUsers>, TError = ErrorType>( + params: undefined | GetUsersParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUsers>, TError = ErrorType>( + params?: GetUsersParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUsers>, TError = ErrorType>( + params?: GetUsersParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary User Online Ip List + * @summary Get Users */ -export function useUserOnlineIpList>, TError = ErrorType>( - nodeId: number, - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserOnlineIpListQueryOptions(nodeId, username, options) +export function useGetUsers>, TError = ErrorType>( + params?: GetUsersParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + const queryOptions = getGetUsersQueryOptions(params,options) - query.queryKey = queryOptions.queryKey + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return query + return { ...query, queryKey: queryOptions.queryKey }; } -/** - * Deletes **all rows** from the selected usage data table. Use with caution. - -Allowed tables: - - `node_user_usages`: Deletes user-specific node usage traffic records. - - `node_usages`: Deletes node-level aggregated traffic (uplink/downlink) records. -**Optional filters:** - - `start`: ISO 8601 timestamp to filter from (inclusive) - - `end`: ISO 8601 timestamp to filter to (exclusive) -⚠️ This operation is irreversible. Ensure correct usage in production environments. - * @summary Clear usage data from a specified table - */ -export const clearUsageData = (table: UsageTable, params?: ClearUsageDataParams) => { - return orvalFetcher({ url: `/api/nodes/clear_usage_data/${table}`, method: 'DELETE', params }) -} -export const getClearUsageDataMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['clearUsageData'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { table: UsageTable; params?: ClearUsageDataParams }> = props => { - const { table, params } = props ?? {} - return clearUsageData(table, params) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} +export const getGetUsersSimpleUrl = (params?: GetUsersSimpleParams,) => { + const normalizedParams = new URLSearchParams(); -export type ClearUsageDataMutationResult = NonNullable>> + Object.entries(params || {}).forEach(([key, value]) => { -export type ClearUsageDataMutationError = ErrorType + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -/** - * @summary Clear usage data from a specified table - */ -export const useClearUsageData = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getClearUsageDataMutationOptions(options) + const stringifiedParams = normalizedParams.toString(); - return useMutation(mutationOptions) + return stringifiedParams.length > 0 ? `/api/users/simple?${stringifiedParams}` : `/api/users/simple` } /** - * Delete selected nodes by ID. - * @summary Bulk Delete Nodes + * Returns only id and username for users. Optimized for dropdowns and autocomplete. + * @summary Get lightweight user list */ -export const bulkDeleteNodes = (bulkNodeSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkNodeSelection, signal }) -} +export const getUsersSimple = async (params?: GetUsersSimpleParams, options?: RequestInit): Promise => { -export const getBulkDeleteNodesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteNodes'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUsersSimpleUrl(params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteNodes(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDeleteNodesMutationResult = NonNullable>> -export type BulkDeleteNodesMutationBody = BodyType -export type BulkDeleteNodesMutationError = ErrorType -/** - * @summary Bulk Delete Nodes - */ -export const useBulkDeleteNodes = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteNodesMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Disable selected nodes by ID. - * @summary Bulk Disable Nodes - */ -export const bulkDisableNodes = (bulkNodeSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/bulk/disable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkNodeSelection, signal }) -} +export const getGetUsersSimpleQueryKey = (params?: GetUsersSimpleParams,) => { + return [ + `/api/users/simple`, ...(params ? [params] : []) + ] as const; + } -export const getBulkDisableNodesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableNodes'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} +export const getGetUsersSimpleQueryOptions = >, TError = ErrorType>(params?: GetUsersSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { - return bulkDisableNodes(data) - } +const {query: queryOptions, request: requestOptions} = options ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + const queryKey = queryOptions?.queryKey ?? getGetUsersSimpleQueryKey(params); -export type BulkDisableNodesMutationResult = NonNullable>> -export type BulkDisableNodesMutationBody = BodyType -export type BulkDisableNodesMutationError = ErrorType -/** - * @summary Bulk Disable Nodes - */ -export const useBulkDisableNodes = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableNodesMutationOptions(options) - return useMutation(mutationOptions) -} + const queryFn: QueryFunction>> = ({ signal }) => getUsersSimple(params, { signal, ...requestOptions }); -/** - * Enable selected nodes by ID. - * @summary Bulk Enable Nodes - */ -export const bulkEnableNodes = (bulkNodeSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/bulk/enable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkNodeSelection, signal }) -} -export const getBulkEnableNodesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkEnableNodes'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkEnableNodes(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type BulkEnableNodesMutationResult = NonNullable>> -export type BulkEnableNodesMutationBody = BodyType -export type BulkEnableNodesMutationError = ErrorType - -/** - * @summary Bulk Enable Nodes - */ -export const useBulkEnableNodes = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkEnableNodesMutationOptions(options) +export type GetUsersSimpleQueryResult = NonNullable>> +export type GetUsersSimpleQueryError = ErrorType - return useMutation(mutationOptions) -} +export function useGetUsersSimple>, TError = ErrorType>( + params: undefined | GetUsersSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUsersSimple>, TError = ErrorType>( + params?: GetUsersSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUsersSimple>, TError = ErrorType>( + params?: GetUsersSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Reset usage for selected nodes by ID. - * @summary Bulk Reset Nodes Usage + * @summary Get lightweight user list */ -export const bulkResetNodesUsage = (bulkNodeSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/bulk/reset`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkNodeSelection, signal }) -} -export const getBulkResetNodesUsageMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkResetNodesUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export function useGetUsersSimple>, TError = ErrorType>( + params?: GetUsersSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + const queryOptions = getGetUsersSimpleQueryOptions(params,options) - return bulkResetNodesUsage(data) - } + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return { ...query, queryKey: queryOptions.queryKey }; } -export type BulkResetNodesUsageMutationResult = NonNullable>> -export type BulkResetNodesUsageMutationBody = BodyType -export type BulkResetNodesUsageMutationError = ErrorType -/** - * @summary Bulk Reset Nodes Usage - */ -export const useBulkResetNodesUsage = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkResetNodesUsageMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Reconnect selected nodes by ID. - * @summary Bulk Reconnect Nodes - */ -export const bulkReconnectNodes = (bulkNodeSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/bulk/reconnect`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkNodeSelection, signal }) -} -export const getBulkReconnectNodesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkReconnectNodes'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkReconnectNodes(data) - } +export const getGetUserUsageUrl = (username: string, + params?: GetUserUsageParams,) => { + const normalizedParams = new URLSearchParams(); - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + Object.entries(params || {}).forEach(([key, value]) => { -export type BulkReconnectNodesMutationResult = NonNullable>> -export type BulkReconnectNodesMutationBody = BodyType -export type BulkReconnectNodesMutationError = ErrorType + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); -/** - * @summary Bulk Reconnect Nodes - */ -export const useBulkReconnectNodes = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkReconnectNodesMutationOptions(options) + const stringifiedParams = normalizedParams.toString(); - return useMutation(mutationOptions) + return stringifiedParams.length > 0 ? `/api/user/${username}/usage?${stringifiedParams}` : `/api/user/${username}/usage` } /** - * Update selected nodes by ID. - * @summary Bulk Update Nodes + * Get users usage + * @summary Get User Usage */ -export const bulkUpdateNodes = (bulkNodeSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/nodes/bulk/update`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkNodeSelection, signal }) -} +export const getUserUsage = async (username: string, + params?: GetUserUsageParams, options?: RequestInit): Promise => { -export const getBulkUpdateNodesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkUpdateNodes'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserUsageUrl(username,params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkUpdateNodes(data) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkUpdateNodesMutationResult = NonNullable>> -export type BulkUpdateNodesMutationBody = BodyType -export type BulkUpdateNodesMutationError = ErrorType -/** - * @summary Bulk Update Nodes - */ -export const useBulkUpdateNodes = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkUpdateNodesMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Create a new user +export const getGetUserUsageQueryKey = (username: string, + params?: GetUserUsageParams,) => { + return [ + `/api/user/${username}/usage`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetUserUsageQueryOptions = >, TError = ErrorType>(username: string, + params?: GetUserUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUserUsageQueryKey(username,params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUserUsage(username,params, { signal, ...requestOptions }); -- **username**: 3 to 32 characters, can include a-z, 0-9, and underscores. -- **status**: User's status, defaults to `active`. Special rules if `on_hold`. -- **expire**: UTC datetime for account expiration. Use `0` for unlimited. -- **data_limit**: Max data usage in bytes (e.g., `1073741824` for 1GB). `0` means unlimited. -- **data_limit_reset_strategy**: Defines how/if data limit resets. `no_reset` means it never resets. -- **proxy_settings**: Dictionary of protocol settings (e.g., `vmess`, `vless`) will generate data for all protocol by default. -- **group_ids**: List of group IDs to assign to the user. -- **note**: Optional text field for additional user information or notes. -- **on_hold_timeout**: UTC timestamp when `on_hold` status should start or end. -- **on_hold_expire_duration**: Duration (in seconds) for how long the user should stay in `on_hold` status. -- **next_plan**: Next user plan (resets after use). - * @summary Create User - */ -export const createUser = (userCreate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: userCreate, signal }) -} -export const getCreateUserMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createUser'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createUser(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type CreateUserMutationResult = NonNullable>> -export type CreateUserMutationBody = BodyType -export type CreateUserMutationError = ErrorType +export type GetUserUsageQueryResult = NonNullable>> +export type GetUserUsageQueryError = ErrorType + +export function useGetUserUsage>, TError = ErrorType>( + username: string, + params: undefined | GetUserUsageParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserUsage>, TError = ErrorType>( + username: string, + params?: GetUserUsageParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserUsage>, TError = ErrorType>( + username: string, + params?: GetUserUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Create User + * @summary Get User Usage */ -export const useCreateUser = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateUserMutationOptions(options) - return useMutation(mutationOptions) -} +export function useGetUserUsage>, TError = ErrorType>( + username: string, + params?: GetUserUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -/** - * Modify an existing user + const queryOptions = getGetUserUsageQueryOptions(username,params,options) -- **username**: Cannot be changed. Used to identify the user. -- **status**: User's new status. Can be 'active', 'disabled', 'on_hold', 'limited', or 'expired'. -- **expire**: UTC datetime for new account expiration. Set to `0` for unlimited, `null` for no change. -- **data_limit**: New max data usage in bytes (e.g., `1073741824` for 1GB). Set to `0` for unlimited, `null` for no change. -- **data_limit_reset_strategy**: New strategy for data limit reset. Options include 'daily', 'weekly', 'monthly', or 'no_reset'. -- **proxies**: Dictionary of new protocol settings (e.g., `vmess`, `vless`). Empty dictionary means no change. -- **group_ids**: List of new group IDs to assign to the user. Empty list means no change. -- **note**: New optional text for additional user information or notes. `null` means no change. -- **on_hold_timeout**: New UTC timestamp for when `on_hold` status should start or end. Only applicable if status is changed to 'on_hold'. -- **on_hold_expire_duration**: New duration (in seconds) for how long the user should stay in `on_hold` status. Only applicable if status is changed to 'on_hold'. -- **next_plan**: Next user plan (resets after use). + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -Note: Fields set to `null` or omitted will not be modified. - * @summary Modify User - */ -export const modifyUser = (username: string, userModify: BodyType) => { - return orvalFetcher({ url: `/api/user/${username}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: userModify }) + return { ...query, queryKey: queryOptions.queryKey }; } -export const getModifyUserMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUser'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string; data: BodyType }> = props => { - const { username, data } = props ?? {} - return modifyUser(username, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifyUserMutationResult = NonNullable>> -export type ModifyUserMutationBody = BodyType -export type ModifyUserMutationError = ErrorType -/** - * @summary Modify User - */ -export const useModifyUser = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserMutationOptions(options) - return useMutation(mutationOptions) +export const getGetUserUsageByUsernameUrl = (username: string, + params?: GetUserUsageByUsernameParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/user/by-username/${username}/usage?${stringifiedParams}` : `/api/user/by-username/${username}/usage` } /** - * Remove a user - * @summary Remove User + * @summary Get User Usage By Username */ -export const removeUser = (username: string) => { - return orvalFetcher({ url: `/api/user/${username}`, method: 'DELETE' }) -} +export const getUserUsageByUsername = async (username: string, + params?: GetUserUsageByUsernameParams, options?: RequestInit): Promise => { -export const getRemoveUserMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeUser'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserUsageByUsernameUrl(username,params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return removeUser(username) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RemoveUserMutationResult = NonNullable>> -export type RemoveUserMutationError = ErrorType -/** - * @summary Remove User - */ -export const useRemoveUser = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveUserMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Get user information - * @summary Get User - */ -export const getUser = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${username}`, method: 'GET', signal }) -} +export const getGetUserUsageByUsernameQueryKey = (username: string, + params?: GetUserUsageByUsernameParams,) => { + return [ + `/api/user/by-username/${username}/usage`, ...(params ? [params] : []) + ] as const; + } -export const getGetUserQueryKey = (username: string) => { - return [`/api/user/${username}`] as const -} -export const getGetUserQueryOptions = >, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserUsageByUsernameQueryOptions = >, TError = ErrorType>(username: string, + params?: GetUserUsageByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserQueryKey(username) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getUser(username, signal) + const queryKey = queryOptions?.queryKey ?? getGetUserUsageByUsernameQueryKey(username,params); - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetUserQueryResult = NonNullable>> -export type GetUserQueryError = ErrorType -export function useGetUser>, TError = ErrorType>( - username: string, - options: { query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUser>, TError = ErrorType>( - username: string, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUser>, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User - */ + const queryFn: QueryFunction>> = ({ signal }) => getUserUsageByUsername(username,params, { signal, ...requestOptions }); + -export function useGetUser>, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserQueryOptions(username, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return { queryKey, queryFn, enabled: username !== null && username !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUserUsageByUsernameQueryResult = NonNullable>> +export type GetUserUsageByUsernameQueryError = ErrorType + + +export function useGetUserUsageByUsername>, TError = ErrorType>( + username: string, + params: undefined | GetUserUsageByUsernameParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserUsageByUsername>, TError = ErrorType>( + username: string, + params?: GetUserUsageByUsernameParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserUsageByUsername>, TError = ErrorType>( + username: string, + params?: GetUserUsageByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Modify User By Username + * @summary Get User Usage By Username */ -export const modifyUserByUsername = (username: string, userModify: BodyType) => { - return orvalFetcher({ url: `/api/user/by-username/${username}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: userModify }) + +export function useGetUserUsageByUsername>, TError = ErrorType>( + username: string, + params?: GetUserUsageByUsernameParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserUsageByUsernameQueryOptions(username,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export const getModifyUserByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUserByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string; data: BodyType }> = props => { - const { username, data } = props ?? {} - return modifyUserByUsername(username, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifyUserByUsernameMutationResult = NonNullable>> -export type ModifyUserByUsernameMutationBody = BodyType -export type ModifyUserByUsernameMutationError = ErrorType -/** - * @summary Modify User By Username - */ -export const useModifyUserByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserByUsernameMutationOptions(options) - return useMutation(mutationOptions) +export const getGetUserUsageByIdUrl = (userId: number, + params?: GetUserUsageByIdParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/user/by-id/${userId}/usage?${stringifiedParams}` : `/api/user/by-id/${userId}/usage` } /** - * @summary Remove User By Username + * @summary Get User Usage By Id */ -export const removeUserByUsername = (username: string) => { - return orvalFetcher({ url: `/api/user/by-username/${username}`, method: 'DELETE' }) -} +export const getUserUsageById = async (userId: number, + params?: GetUserUsageByIdParams, options?: RequestInit): Promise => { -export const getRemoveUserByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeUserByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUserUsageByIdUrl(userId,params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return removeUserByUsername(username) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RemoveUserByUsernameMutationResult = NonNullable>> -export type RemoveUserByUsernameMutationError = ErrorType -/** - * @summary Remove User By Username - */ -export const useRemoveUserByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveUserByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Get User By Username - */ -export const getUserByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-username/${username}`, method: 'GET', signal }) -} +export const getGetUserUsageByIdQueryKey = (userId: number, + params?: GetUserUsageByIdParams,) => { + return [ + `/api/user/by-id/${userId}/usage`, ...(params ? [params] : []) + ] as const; + } -export const getGetUserByUsernameQueryKey = (username: string) => { - return [`/api/user/by-username/${username}`] as const -} -export const getGetUserByUsernameQueryOptions = >, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserUsageByIdQueryOptions = >, TError = ErrorType>(userId: number, + params?: GetUserUsageByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserByUsernameQueryKey(username) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getUserByUsername(username, signal) + const queryKey = queryOptions?.queryKey ?? getGetUserUsageByIdQueryKey(userId,params); - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetUserByUsernameQueryResult = NonNullable>> -export type GetUserByUsernameQueryError = ErrorType -export function useGetUserByUsername>, TError = ErrorType>( - username: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserByUsername>, TError = ErrorType>( - username: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserByUsername>, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User By Username - */ + const queryFn: QueryFunction>> = ({ signal }) => getUserUsageById(userId,params, { signal, ...requestOptions }); + -export function useGetUserByUsername>, TError = ErrorType>( - username: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserByUsernameQueryOptions(username, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUserUsageByIdQueryResult = NonNullable>> +export type GetUserUsageByIdQueryError = ErrorType + + +export function useGetUserUsageById>, TError = ErrorType>( + userId: number, + params: undefined | GetUserUsageByIdParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserUsageById>, TError = ErrorType>( + userId: number, + params?: GetUserUsageByIdParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserUsageById>, TError = ErrorType>( + userId: number, + params?: GetUserUsageByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Modify User By Id + * @summary Get User Usage By Id */ -export const modifyUserById = (userId: number, userModify: BodyType) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: userModify }) -} -export const getModifyUserByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUserById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export function useGetUserUsageById>, TError = ErrorType>( + userId: number, + params?: GetUserUsageByIdParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const mutationFn: MutationFunction>, { userId: number; data: BodyType }> = props => { - const { userId, data } = props ?? {} + const queryOptions = getGetUserUsageByIdQueryOptions(userId,params,options) - return modifyUserById(userId, data) - } + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> + return { ...query, queryKey: queryOptions.queryKey }; } -export type ModifyUserByIdMutationResult = NonNullable>> -export type ModifyUserByIdMutationBody = BodyType -export type ModifyUserByIdMutationError = ErrorType -/** - * @summary Modify User By Id - */ -export const useModifyUserById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserByIdMutationOptions(options) - return useMutation(mutationOptions) + + + + +export const getGetUsersUsageUrl = (params?: GetUsersUsageParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/users/usage?${stringifiedParams}` : `/api/users/usage` } /** - * @summary Remove User By Id + * Get all users usage + * @summary Get Users Usage */ -export const removeUserById = (userId: number) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}`, method: 'DELETE' }) -} +export const getUsersUsage = async (params?: GetUsersUsageParams, options?: RequestInit): Promise => { -export const getRemoveUserByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeUserById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUsersUsageUrl(params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { userId: number }> = props => { - const { userId } = props ?? {} - return removeUserById(userId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RemoveUserByIdMutationResult = NonNullable>> -export type RemoveUserByIdMutationError = ErrorType -/** - * @summary Remove User By Id - */ -export const useRemoveUserById = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveUserByIdMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Get User By Id - */ -export const getUserById = (userId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}`, method: 'GET', signal }) -} +export const getGetUsersUsageQueryKey = (params?: GetUsersUsageParams,) => { + return [ + `/api/users/usage`, ...(params ? [params] : []) + ] as const; + } -export const getGetUserByIdQueryKey = (userId: number) => { - return [`/api/user/by-id/${userId}`] as const -} -export const getGetUserByIdQueryOptions = >, TError = ErrorType>( - userId: number, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUsersUsageQueryOptions = >, TError = ErrorType>(params?: GetUsersUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserByIdQueryKey(userId) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getUserById(userId, signal) + const queryKey = queryOptions?.queryKey ?? getGetUsersUsageQueryKey(params); - return { queryKey, queryFn, enabled: !!userId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetUserByIdQueryResult = NonNullable>> -export type GetUserByIdQueryError = ErrorType -export function useGetUserById>, TError = ErrorType>( - userId: number, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserById>, TError = ErrorType>( - userId: number, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserById>, TError = ErrorType>( - userId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User By Id - */ + const queryFn: QueryFunction>> = ({ signal }) => getUsersUsage(params, { signal, ...requestOptions }); -export function useGetUserById>, TError = ErrorType>( - userId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserByIdQueryOptions(userId, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUsersUsageQueryResult = NonNullable>> +export type GetUsersUsageQueryError = ErrorType + + +export function useGetUsersUsage>, TError = ErrorType>( + params: undefined | GetUsersUsageParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUsersUsage>, TError = ErrorType>( + params?: GetUsersUsageParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUsersUsage>, TError = ErrorType>( + params?: GetUsersUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Reset user data usage - * @summary Reset User Data Usage + * @summary Get Users Usage */ -export const resetUserDataUsage = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${username}/reset`, method: 'POST', signal }) -} -export const getResetUserDataUsageMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetUserDataUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export function useGetUsersUsage>, TError = ErrorType>( + params?: GetUsersUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} + const queryOptions = getGetUsersUsageQueryOptions(params,options) - return resetUserDataUsage(username) - } + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return { mutationFn, ...mutationOptions } as UseMutationOptions + return { ...query, queryKey: queryOptions.queryKey }; } -export type ResetUserDataUsageMutationResult = NonNullable>> -export type ResetUserDataUsageMutationError = ErrorType -/** - * @summary Reset User Data Usage - */ -export const useResetUserDataUsage = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetUserDataUsageMutationOptions(options) - return useMutation(mutationOptions) + + + +export const getGetUsersCountMetricUrl = (metric: UserCountMetric, + params?: GetUsersCountMetricParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/users/counts/${metric}?${stringifiedParams}` : `/api/users/counts/${metric}` } /** - * @summary Reset User Data Usage By Username + * Get one users activity/status count metric from usage rows. + * @summary Get Users Count Metric */ -export const resetUserDataUsageByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-username/${username}/reset`, method: 'POST', signal }) -} +export const getUsersCountMetric = async (metric: UserCountMetric, + params?: GetUsersCountMetricParams, options?: RequestInit): Promise => { -export const getResetUserDataUsageByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetUserDataUsageByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetUsersCountMetricUrl(metric,params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return resetUserDataUsageByUsername(username) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ResetUserDataUsageByUsernameMutationResult = NonNullable>> -export type ResetUserDataUsageByUsernameMutationError = ErrorType -/** - * @summary Reset User Data Usage By Username - */ -export const useResetUserDataUsageByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetUserDataUsageByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} +export const getGetUsersCountMetricQueryKey = (metric: UserCountMetric, + params?: GetUsersCountMetricParams,) => { + return [ + `/api/users/counts/${metric}`, ...(params ? [params] : []) + ] as const; + } -/** - * @summary Reset User Data Usage By Id - */ -export const resetUserDataUsageById = (userId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}/reset`, method: 'POST', signal }) -} -export const getResetUserDataUsageByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetUserDataUsageById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const getGetUsersCountMetricQueryOptions = >, TError = ErrorType>(metric: UserCountMetric, + params?: GetUsersCountMetricParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { - const mutationFn: MutationFunction>, { userId: number }> = props => { - const { userId } = props ?? {} +const {query: queryOptions, request: requestOptions} = options ?? {}; - return resetUserDataUsageById(userId) - } + const queryKey = queryOptions?.queryKey ?? getGetUsersCountMetricQueryKey(metric,params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUsersCountMetric(metric,params, { signal, ...requestOptions }); - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ResetUserDataUsageByIdMutationResult = NonNullable>> -export type ResetUserDataUsageByIdMutationError = ErrorType -/** - * @summary Reset User Data Usage By Id - */ -export const useResetUserDataUsageById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetUserDataUsageByIdMutationOptions(options) - return useMutation(mutationOptions) + return { queryKey, queryFn, enabled: metric !== null && metric !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } +export type GetUsersCountMetricQueryResult = NonNullable>> +export type GetUsersCountMetricQueryError = ErrorType + + +export function useGetUsersCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params: undefined | GetUsersCountMetricParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUsersCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params?: GetUsersCountMetricParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUsersCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params?: GetUsersCountMetricParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * Revoke users subscription (Subscription link and proxies) - * @summary Revoke User Subscription + * @summary Get Users Count Metric */ -export const revokeUserSubscription = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${username}/revoke_sub`, method: 'POST', signal }) -} -export const getRevokeUserSubscriptionMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['revokeUserSubscription'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export function useGetUsersCountMetric>, TError = ErrorType>( + metric: UserCountMetric, + params?: GetUsersCountMetricParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} + const queryOptions = getGetUsersCountMetricQueryOptions(metric,params,options) - return revokeUserSubscription(username) - } + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; - return { mutationFn, ...mutationOptions } as UseMutationOptions + return { ...query, queryKey: queryOptions.queryKey }; } -export type RevokeUserSubscriptionMutationResult = NonNullable>> -export type RevokeUserSubscriptionMutationError = ErrorType -/** - * @summary Revoke User Subscription - */ -export const useRevokeUserSubscription = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRevokeUserSubscriptionMutationOptions(options) - return useMutation(mutationOptions) + + + +export const getGetExpiredUsersUrl = (params?: GetExpiredUsersParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/users/expired?${stringifiedParams}` : `/api/users/expired` } /** - * @summary Revoke User Subscription By Username + * Get cleanup-target users in the specified scope. + +- **target**: `expired` (time-based) or `limited` (usage-based) +- **expired_after** UTC datetime (optional) +- **expired_before** UTC datetime (optional) +- Date range filters are applied only when target is `expired` + * @summary Get Expired Users */ -export const revokeUserSubscriptionByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-username/${username}/revoke_sub`, method: 'POST', signal }) -} +export const getExpiredUsers = async (params?: GetExpiredUsersParams, options?: RequestInit): Promise => { -export const getRevokeUserSubscriptionByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['revokeUserSubscriptionByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getGetExpiredUsersUrl(params), + { + ...options, + method: 'GET' - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return revokeUserSubscriptionByUsername(username) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} - -export type RevokeUserSubscriptionByUsernameMutationResult = NonNullable>> -export type RevokeUserSubscriptionByUsernameMutationError = ErrorType -/** - * @summary Revoke User Subscription By Username - */ -export const useRevokeUserSubscriptionByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRevokeUserSubscriptionByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Revoke User Subscription By Id - */ -export const revokeUserSubscriptionById = (userId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}/revoke_sub`, method: 'POST', signal }) -} +export const getGetExpiredUsersQueryKey = (params?: GetExpiredUsersParams,) => { + return [ + `/api/users/expired`, ...(params ? [params] : []) + ] as const; + } -export const getRevokeUserSubscriptionByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['revokeUserSubscriptionById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { userId: number }> = props => { - const { userId } = props ?? {} +export const getGetExpiredUsersQueryOptions = >, TError = ErrorType>(params?: GetExpiredUsersParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { - return revokeUserSubscriptionById(userId) - } +const {query: queryOptions, request: requestOptions} = options ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + const queryKey = queryOptions?.queryKey ?? getGetExpiredUsersQueryKey(params); -export type RevokeUserSubscriptionByIdMutationResult = NonNullable>> -export type RevokeUserSubscriptionByIdMutationError = ErrorType -/** - * @summary Revoke User Subscription By Id - */ -export const useRevokeUserSubscriptionById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRevokeUserSubscriptionByIdMutationOptions(options) + const queryFn: QueryFunction>> = ({ signal }) => getExpiredUsers(params, { signal, ...requestOptions }); - return useMutation(mutationOptions) -} -/** - * Reset all users data usage - * @summary Reset Users Data Usage - */ -export const resetUsersDataUsage = (signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/reset`, method: 'POST', signal }) -} -export const getResetUsersDataUsageMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetUsersDataUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, void> = () => { - return resetUsersDataUsage() - } - return { mutationFn, ...mutationOptions } as UseMutationOptions + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export type ResetUsersDataUsageMutationResult = NonNullable>> +export type GetExpiredUsersQueryResult = NonNullable>> +export type GetExpiredUsersQueryError = ErrorType -export type ResetUsersDataUsageMutationError = ErrorType +export function useGetExpiredUsers>, TError = ErrorType>( + params: undefined | GetExpiredUsersParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetExpiredUsers>, TError = ErrorType>( + params?: GetExpiredUsersParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetExpiredUsers>, TError = ErrorType>( + params?: GetExpiredUsersParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** - * @summary Reset Users Data Usage + * @summary Get Expired Users */ -export const useResetUsersDataUsage = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetUsersDataUsageMutationOptions(options) - return useMutation(mutationOptions) -} +export function useGetExpiredUsers>, TError = ErrorType>( + params?: GetExpiredUsersParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { -/** - * Get subscription agent distribution percentages (optionally filtered by user_id/username). - * @summary Get Users Sub Update Chart - */ -export const getUsersSubUpdateChart = (params?: GetUsersSubUpdateChartParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/sub_update/chart`, method: 'GET', params, signal }) -} + const queryOptions = getGetExpiredUsersQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; -export const getGetUsersSubUpdateChartQueryKey = (params?: GetUsersSubUpdateChartParams) => { - return [`/api/users/sub_update/chart`, ...(params ? [params] : [])] as const + return { ...query, queryKey: queryOptions.queryKey }; } -export const getGetUsersSubUpdateChartQueryOptions = >, TError = ErrorType>( - params?: GetUsersSubUpdateChartParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUsersSubUpdateChartQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getUsersSubUpdateChart(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetUsersSubUpdateChartQueryResult = NonNullable>> -export type GetUsersSubUpdateChartQueryError = ErrorType -export function useGetUsersSubUpdateChart>, TError = ErrorType>( - params: undefined | GetUsersSubUpdateChartParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUsersSubUpdateChart>, TError = ErrorType>( - params?: GetUsersSubUpdateChartParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUsersSubUpdateChart>, TError = ErrorType>( - params?: GetUsersSubUpdateChartParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Users Sub Update Chart - */ -export function useGetUsersSubUpdateChart>, TError = ErrorType>( - params?: GetUsersSubUpdateChartParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUsersSubUpdateChartQueryOptions(params, options) +export const getDeleteExpiredUsersUrl = (params?: DeleteExpiredUsersParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); - query.queryKey = queryOptions.queryKey + const stringifiedParams = normalizedParams.toString(); - return query + return stringifiedParams.length > 0 ? `/api/users/expired?${stringifiedParams}` : `/api/users/expired` } /** - * Set a new owner (admin) for a user. - * @summary Set Owner + * Delete cleanup-target users in the specified scope. + +- **target**: `expired` (time-based) or `limited` (usage-based) +- **expired_after** UTC datetime (optional) +- **expired_before** UTC datetime (optional) +- Date range filters are applied only when target is `expired` + * @summary Delete Expired Users */ -export const setOwner = (username: string, params: SetOwnerParams) => { - return orvalFetcher({ url: `/api/user/${username}/set_owner`, method: 'PUT', params }) -} +export const deleteExpiredUsers = async (params?: DeleteExpiredUsersParams, options?: RequestInit): Promise => { -export const getSetOwnerMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['setOwner'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getDeleteExpiredUsersUrl(params), + { + ...options, + method: 'DELETE' - const mutationFn: MutationFunction>, { username: string; params: SetOwnerParams }> = props => { - const { username, params } = props ?? {} - return setOwner(username, params) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type SetOwnerMutationResult = NonNullable>> -export type SetOwnerMutationError = ErrorType -/** - * @summary Set Owner - */ -export const useSetOwner = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getSetOwnerMutationOptions(options) +export const getDeleteExpiredUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{params?: DeleteExpiredUsersParams}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{params?: DeleteExpiredUsersParams}, TContext> => { - return useMutation(mutationOptions) -} +const mutationKey = ['deleteExpiredUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * @summary Set Owner By Username - */ -export const setOwnerByUsername = (username: string, params: SetOwnerByUsernameParams) => { - return orvalFetcher({ url: `/api/user/by-username/${username}/set_owner`, method: 'PUT', params }) -} -export const getSetOwnerByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['setOwnerByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string; params: SetOwnerByUsernameParams }> = props => { - const { username, params } = props ?? {} - return setOwnerByUsername(username, params) - } + const mutationFn: MutationFunction>, {params?: DeleteExpiredUsersParams}> = (props) => { + const {params} = props ?? {}; - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + return deleteExpiredUsers(params,requestOptions) + } -export type SetOwnerByUsernameMutationResult = NonNullable>> -export type SetOwnerByUsernameMutationError = ErrorType -/** - * @summary Set Owner By Username - */ -export const useSetOwnerByUsername = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getSetOwnerByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Set Owner By Id - */ -export const setOwnerById = (userId: number, params: SetOwnerByIdParams) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}/set_owner`, method: 'PUT', params }) -} -export const getSetOwnerByIdMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['setOwnerById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { userId: number; params: SetOwnerByIdParams }> = props => { - const { userId, params } = props ?? {} + export type DeleteExpiredUsersMutationResult = NonNullable>> - return setOwnerById(userId, params) - } + export type DeleteExpiredUsersMutationError = ErrorType - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + /** + * @summary Delete Expired Users + */ +export const useDeleteExpiredUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{params?: DeleteExpiredUsersParams}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {params?: DeleteExpiredUsersParams}, + TContext + > => { + return useMutation(getDeleteExpiredUsersMutationOptions(options), queryClient); + } -export type SetOwnerByIdMutationResult = NonNullable>> +export const getBulkDeleteUsersUrl = () => { -export type SetOwnerByIdMutationError = ErrorType -/** - * @summary Set Owner By Id - */ -export const useSetOwnerById = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getSetOwnerByIdMutationOptions(options) - return useMutation(mutationOptions) + + return `/api/users/bulk/delete` } /** - * Reset user by next plan - * @summary Active Next Plan + * Delete selected users by ID. + * @summary Bulk Delete Users */ -export const activeNextPlan = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${username}/active_next`, method: 'POST', signal }) -} +export const bulkDeleteUsers = async (bulkUsersSelection: BulkUsersSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDeleteUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersSelection) + } +);} + + + + +export const getBulkDeleteUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkDeleteUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export const getActiveNextPlanMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['activeNextPlan'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} - return activeNextPlan(username) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; -export type ActiveNextPlanMutationResult = NonNullable>> + return bulkDeleteUsers(data,requestOptions) + } -export type ActiveNextPlanMutationError = ErrorType -/** - * @summary Active Next Plan - */ -export const useActiveNextPlan = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getActiveNextPlanMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Active Next Plan By Username - */ -export const activeNextPlanByUsername = (username: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-username/${username}/active_next`, method: 'POST', signal }) -} -export const getActiveNextPlanByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['activeNextPlanByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string }> = props => { - const { username } = props ?? {} + return { mutationFn, ...mutationOptions }} - return activeNextPlanByUsername(username) - } + export type BulkDeleteUsersMutationResult = NonNullable>> + export type BulkDeleteUsersMutationBody = BodyType + export type BulkDeleteUsersMutationError = ErrorType - return { mutationFn, ...mutationOptions } as UseMutationOptions -} + /** + * @summary Bulk Delete Users + */ +export const useBulkDeleteUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteUsersMutationOptions(options), queryClient); + } + +export const getBulkResetUsersDataUsageUrl = () => { -export type ActiveNextPlanByUsernameMutationResult = NonNullable>> -export type ActiveNextPlanByUsernameMutationError = ErrorType -/** - * @summary Active Next Plan By Username - */ -export const useActiveNextPlanByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getActiveNextPlanByUsernameMutationOptions(options) - return useMutation(mutationOptions) + return `/api/users/bulk/reset` } /** - * @summary Active Next Plan By Id + * Reset usage for selected users by ID. + * @summary Bulk Reset Users Data Usage */ -export const activeNextPlanById = (userId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}/active_next`, method: 'POST', signal }) -} +export const bulkResetUsersDataUsage = async (bulkUsersSelection: BulkUsersSelection, options?: RequestInit): Promise => { -export const getActiveNextPlanByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['activeNextPlanById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getBulkResetUsersDataUsageUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersSelection) + } +);} - const mutationFn: MutationFunction>, { userId: number }> = props => { - const { userId } = props ?? {} - return activeNextPlanById(userId) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ActiveNextPlanByIdMutationResult = NonNullable>> +export const getBulkResetUsersDataUsageMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type ActiveNextPlanByIdMutationError = ErrorType +const mutationKey = ['bulkResetUsersDataUsage']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** - * @summary Active Next Plan By Id - */ -export const useActiveNextPlanById = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getActiveNextPlanByIdMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Get a user's subscription content in the requested format. - * @summary Get User Subscription By Id - */ -export const getUserSubscriptionById = (userId: number, clientType: ConfigFormat, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${userId}/subscription/${clientType}`, method: 'GET', signal }) -} -export const getGetUserSubscriptionByIdQueryKey = (userId: number, clientType: ConfigFormat) => { - return [`/api/user/${userId}/subscription/${clientType}`] as const -} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; -export const getGetUserSubscriptionByIdQueryOptions = >, TError = ErrorType>( - userId: number, - clientType: ConfigFormat, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} + return bulkResetUsersDataUsage(data,requestOptions) + } - const queryKey = queryOptions?.queryKey ?? getGetUserSubscriptionByIdQueryKey(userId, clientType) - const queryFn: QueryFunction>> = ({ signal }) => getUserSubscriptionById(userId, clientType, signal) - return { queryKey, queryFn, enabled: !!(userId && clientType), ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} -export type GetUserSubscriptionByIdQueryResult = NonNullable>> -export type GetUserSubscriptionByIdQueryError = ErrorType -export function useGetUserSubscriptionById>, TError = ErrorType>( - userId: number, - clientType: ConfigFormat, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserSubscriptionById>, TError = ErrorType>( - userId: number, - clientType: ConfigFormat, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserSubscriptionById>, TError = ErrorType>( - userId: number, - clientType: ConfigFormat, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Subscription By Id + + return { mutationFn, ...mutationOptions }} + + export type BulkResetUsersDataUsageMutationResult = NonNullable>> + export type BulkResetUsersDataUsageMutationBody = BodyType + export type BulkResetUsersDataUsageMutationError = ErrorType + + /** + * @summary Bulk Reset Users Data Usage */ +export const useBulkResetUsersDataUsage = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkResetUsersDataUsageMutationOptions(options), queryClient); + } + +export const getBulkDisableUsersUrl = () => { -export function useGetUserSubscriptionById>, TError = ErrorType>( - userId: number, - clientType: ConfigFormat, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserSubscriptionByIdQueryOptions(userId, clientType, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/users/bulk/disable` } /** - * Get user subscription agent list - * @summary Get User Sub Update List + * Disable selected users by ID. + * @summary Bulk Disable Users */ -export const getUserSubUpdateList = (username: string, params?: GetUserSubUpdateListParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${username}/sub_update`, method: 'GET', params, signal }) -} +export const bulkDisableUsers = async (bulkUsersSelection: BulkUsersSelection, options?: RequestInit): Promise => { -export const getGetUserSubUpdateListQueryKey = (username: string, params?: GetUserSubUpdateListParams) => { - return [`/api/user/${username}/sub_update`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getBulkDisableUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersSelection) + } +);} -export const getGetUserSubUpdateListQueryOptions = >, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserSubUpdateListQueryKey(username, params) - const queryFn: QueryFunction>> = ({ signal }) => getUserSubUpdateList(username, params, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} +export const getBulkDisableUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetUserSubUpdateListQueryResult = NonNullable>> -export type GetUserSubUpdateListQueryError = ErrorType +const mutationKey = ['bulkDisableUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetUserSubUpdateList>, TError = ErrorType>( - username: string, - params: undefined | GetUserSubUpdateListParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserSubUpdateList>, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserSubUpdateList>, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Sub Update List - */ -export function useGetUserSubUpdateList>, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserSubUpdateListQueryOptions(username, params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return bulkDisableUsers(data,requestOptions) + } -/** - * @summary Get User Sub Update List By Username - */ -export const getUserSubUpdateListByUsername = (username: string, params?: GetUserSubUpdateListByUsernameParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-username/${username}/sub_update`, method: 'GET', params, signal }) -} -export const getGetUserSubUpdateListByUsernameQueryKey = (username: string, params?: GetUserSubUpdateListByUsernameParams) => { - return [`/api/user/by-username/${username}/sub_update`, ...(params ? [params] : [])] as const -} -export const getGetUserSubUpdateListByUsernameQueryOptions = < - TData = Awaited>, - TError = ErrorType, ->( - username: string, - params?: GetUserSubUpdateListByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserSubUpdateListByUsernameQueryKey(username, params) - const queryFn: QueryFunction>> = ({ signal }) => getUserSubUpdateListByUsername(username, params, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} + return { mutationFn, ...mutationOptions }} -export type GetUserSubUpdateListByUsernameQueryResult = NonNullable>> -export type GetUserSubUpdateListByUsernameQueryError = ErrorType + export type BulkDisableUsersMutationResult = NonNullable>> + export type BulkDisableUsersMutationBody = BodyType + export type BulkDisableUsersMutationError = ErrorType -export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( - username: string, - params: undefined | GetUserSubUpdateListByUsernameParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListByUsernameParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Sub Update List By Username + /** + * @summary Bulk Disable Users */ +export const useBulkDisableUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableUsersMutationOptions(options), queryClient); + } -export function useGetUserSubUpdateListByUsername>, TError = ErrorType>( - username: string, - params?: GetUserSubUpdateListByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserSubUpdateListByUsernameQueryOptions(username, params, options) +export const getBulkEnableUsersUrl = () => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return `/api/users/bulk/enable` } /** - * @summary Get User Sub Update List By Id + * Enable selected users by ID. + * @summary Bulk Enable Users */ -export const getUserSubUpdateListById = (userId: number, params?: GetUserSubUpdateListByIdParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}/sub_update`, method: 'GET', params, signal }) -} +export const bulkEnableUsers = async (bulkUsersSelection: BulkUsersSelection, options?: RequestInit): Promise => { -export const getGetUserSubUpdateListByIdQueryKey = (userId: number, params?: GetUserSubUpdateListByIdParams) => { - return [`/api/user/by-id/${userId}/sub_update`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getBulkEnableUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersSelection) + } +);} -export const getGetUserSubUpdateListByIdQueryOptions = >, TError = ErrorType>( - userId: number, - params?: GetUserSubUpdateListByIdParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserSubUpdateListByIdQueryKey(userId, params) - const queryFn: QueryFunction>> = ({ signal }) => getUserSubUpdateListById(userId, params, signal) - return { queryKey, queryFn, enabled: !!userId, ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} +export const getBulkEnableUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetUserSubUpdateListByIdQueryResult = NonNullable>> -export type GetUserSubUpdateListByIdQueryError = ErrorType +const mutationKey = ['bulkEnableUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetUserSubUpdateListById>, TError = ErrorType>( - userId: number, - params: undefined | GetUserSubUpdateListByIdParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserSubUpdateListById>, TError = ErrorType>( - userId: number, - params?: GetUserSubUpdateListByIdParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserSubUpdateListById>, TError = ErrorType>( - userId: number, - params?: GetUserSubUpdateListByIdParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Sub Update List By Id - */ -export function useGetUserSubUpdateListById>, TError = ErrorType>( - userId: number, - params?: GetUserSubUpdateListByIdParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserSubUpdateListByIdQueryOptions(userId, params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return bulkEnableUsers(data,requestOptions) + } -/** - * Get all users - * @summary Get Users - */ -export const getUsers = (params?: GetUsersParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users`, method: 'GET', params, signal }) -} -export const getGetUsersQueryKey = (params?: GetUsersParams) => { - return [`/api/users`, ...(params ? [params] : [])] as const -} -export const getGetUsersQueryOptions = >, TError = ErrorType>( - params?: GetUsersParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUsersQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getUsers(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetUsersQueryResult = NonNullable>> -export type GetUsersQueryError = ErrorType + export type BulkEnableUsersMutationResult = NonNullable>> + export type BulkEnableUsersMutationBody = BodyType + export type BulkEnableUsersMutationError = ErrorType -export function useGetUsers>, TError = ErrorType>( - params: undefined | GetUsersParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUsers>, TError = ErrorType>( - params?: GetUsersParams, - options?: { - query?: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUsers>, TError = ErrorType>( - params?: GetUsersParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Users + /** + * @summary Bulk Enable Users */ +export const useBulkEnableUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkEnableUsersMutationOptions(options), queryClient); + } -export function useGetUsers>, TError = ErrorType>( - params?: GetUsersParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUsersQueryOptions(params, options) +export const getBulkRevokeUsersSubscriptionUrl = () => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return `/api/users/bulk/revoke_sub` } /** - * Returns only id and username for users. Optimized for dropdowns and autocomplete. - * @summary Get lightweight user list + * Revoke subscriptions for selected users by ID. + * @summary Bulk Revoke Users Subscription */ -export const getUsersSimple = (params?: GetUsersSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/simple`, method: 'GET', params, signal }) -} +export const bulkRevokeUsersSubscription = async (bulkUsersSelection: BulkUsersSelection, options?: RequestInit): Promise => { -export const getGetUsersSimpleQueryKey = (params?: GetUsersSimpleParams) => { - return [`/api/users/simple`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getBulkRevokeUsersSubscriptionUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersSelection) + } +);} -export const getGetUsersSimpleQueryOptions = >, TError = ErrorType>( - params?: GetUsersSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUsersSimpleQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getUsersSimple(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} +export const getBulkRevokeUsersSubscriptionMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetUsersSimpleQueryResult = NonNullable>> -export type GetUsersSimpleQueryError = ErrorType +const mutationKey = ['bulkRevokeUsersSubscription']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetUsersSimple>, TError = ErrorType>( - params: undefined | GetUsersSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUsersSimple>, TError = ErrorType>( - params?: GetUsersSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUsersSimple>, TError = ErrorType>( - params?: GetUsersSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get lightweight user list - */ -export function useGetUsersSimple>, TError = ErrorType>( - params?: GetUsersSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUsersSimpleQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return bulkRevokeUsersSubscription(data,requestOptions) + } -/** - * Get users usage - * @summary Get User Usage - */ -export const getUserUsage = (username: string, params?: GetUserUsageParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${username}/usage`, method: 'GET', params, signal }) -} -export const getGetUserUsageQueryKey = (username: string, params?: GetUserUsageParams) => { - return [`/api/user/${username}/usage`, ...(params ? [params] : [])] as const -} -export const getGetUserUsageQueryOptions = >, TError = ErrorType>( - username: string, - params?: GetUserUsageParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserUsageQueryKey(username, params) - const queryFn: QueryFunction>> = ({ signal }) => getUserUsage(username, params, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetUserUsageQueryResult = NonNullable>> -export type GetUserUsageQueryError = ErrorType + export type BulkRevokeUsersSubscriptionMutationResult = NonNullable>> + export type BulkRevokeUsersSubscriptionMutationBody = BodyType + export type BulkRevokeUsersSubscriptionMutationError = ErrorType -export function useGetUserUsage>, TError = ErrorType>( - username: string, - params: undefined | GetUserUsageParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserUsage>, TError = ErrorType>( - username: string, - params?: GetUserUsageParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserUsage>, TError = ErrorType>( - username: string, - params?: GetUserUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Usage + /** + * @summary Bulk Revoke Users Subscription */ +export const useBulkRevokeUsersSubscription = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkRevokeUsersSubscriptionMutationOptions(options), queryClient); + } -export function useGetUserUsage>, TError = ErrorType>( - username: string, - params?: GetUserUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserUsageQueryOptions(username, params, options) +export const getBulkSetOwnerUrl = () => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return `/api/users/bulk/set_owner` } /** - * @summary Get User Usage By Username + * Set a new owner for selected users by ID. + * @summary Bulk Set Owner */ -export const getUserUsageByUsername = (username: string, params?: GetUserUsageByUsernameParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-username/${username}/usage`, method: 'GET', params, signal }) -} +export const bulkSetOwner = async (bulkUsersSetOwner: BulkUsersSetOwner, options?: RequestInit): Promise => { -export const getGetUserUsageByUsernameQueryKey = (username: string, params?: GetUserUsageByUsernameParams) => { - return [`/api/user/by-username/${username}/usage`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getBulkSetOwnerUrl(), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersSetOwner) + } +);} -export const getGetUserUsageByUsernameQueryOptions = >, TError = ErrorType>( - username: string, - params?: GetUserUsageByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserUsageByUsernameQueryKey(username, params) - const queryFn: QueryFunction>> = ({ signal }) => getUserUsageByUsername(username, params, signal) - return { queryKey, queryFn, enabled: !!username, ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } -} +export const getBulkSetOwnerMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetUserUsageByUsernameQueryResult = NonNullable>> -export type GetUserUsageByUsernameQueryError = ErrorType +const mutationKey = ['bulkSetOwner']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetUserUsageByUsername>, TError = ErrorType>( - username: string, - params: undefined | GetUserUsageByUsernameParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserUsageByUsername>, TError = ErrorType>( - username: string, - params?: GetUserUsageByUsernameParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserUsageByUsername>, TError = ErrorType>( - username: string, - params?: GetUserUsageByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Usage By Username - */ -export function useGetUserUsageByUsername>, TError = ErrorType>( - username: string, - params?: GetUserUsageByUsernameParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserUsageByUsernameQueryOptions(username, params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return bulkSetOwner(data,requestOptions) + } -/** - * @summary Get User Usage By Id - */ -export const getUserUsageById = (userId: number, params?: GetUserUsageByIdParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/by-id/${userId}/usage`, method: 'GET', params, signal }) -} -export const getGetUserUsageByIdQueryKey = (userId: number, params?: GetUserUsageByIdParams) => { - return [`/api/user/by-id/${userId}/usage`, ...(params ? [params] : [])] as const -} -export const getGetUserUsageByIdQueryOptions = >, TError = ErrorType>( - userId: number, - params?: GetUserUsageByIdParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserUsageByIdQueryKey(userId, params) - const queryFn: QueryFunction>> = ({ signal }) => getUserUsageById(userId, params, signal) - return { queryKey, queryFn, enabled: !!userId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetUserUsageByIdQueryResult = NonNullable>> -export type GetUserUsageByIdQueryError = ErrorType + export type BulkSetOwnerMutationResult = NonNullable>> + export type BulkSetOwnerMutationBody = BodyType + export type BulkSetOwnerMutationError = ErrorType -export function useGetUserUsageById>, TError = ErrorType>( - userId: number, - params: undefined | GetUserUsageByIdParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserUsageById>, TError = ErrorType>( - userId: number, - params?: GetUserUsageByIdParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserUsageById>, TError = ErrorType>( - userId: number, - params?: GetUserUsageByIdParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Usage By Id + /** + * @summary Bulk Set Owner */ +export const useBulkSetOwner = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkSetOwnerMutationOptions(options), queryClient); + } -export function useGetUserUsageById>, TError = ErrorType>( - userId: number, - params?: GetUserUsageByIdParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserUsageByIdQueryOptions(userId, params, options) +export const getCreateUserFromTemplateUrl = () => { - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + return `/api/user/from_template` } /** - * Get all users usage - * @summary Get Users Usage + * @summary Create User From Template */ -export const getUsersUsage = (params?: GetUsersUsageParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/usage`, method: 'GET', params, signal }) -} +export const createUserFromTemplate = async (createUserFromTemplate: CreateUserFromTemplate, options?: RequestInit): Promise => { -export const getGetUsersUsageQueryKey = (params?: GetUsersUsageParams) => { - return [`/api/users/usage`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getCreateUserFromTemplateUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(createUserFromTemplate) + } +);} -export const getGetUsersUsageQueryOptions = >, TError = ErrorType>( - params?: GetUsersUsageParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUsersUsageQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getUsersUsage(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} +export const getCreateUserFromTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type GetUsersUsageQueryResult = NonNullable>> -export type GetUsersUsageQueryError = ErrorType +const mutationKey = ['createUserFromTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetUsersUsage>, TError = ErrorType>( - params: undefined | GetUsersUsageParams, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUsersUsage>, TError = ErrorType>( - params?: GetUsersUsageParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUsersUsage>, TError = ErrorType>( - params?: GetUsersUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Users Usage - */ -export function useGetUsersUsage>, TError = ErrorType>( - params?: GetUsersUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUsersUsageQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return query -} + return createUserFromTemplate(data,requestOptions) + } -/** - * Get one users activity/status count metric from usage rows. - * @summary Get Users Count Metric - */ -export const getUsersCountMetric = (metric: UserCountMetric, params?: GetUsersCountMetricParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/counts/${metric}`, method: 'GET', params, signal }) -} -export const getGetUsersCountMetricQueryKey = (metric: UserCountMetric, params?: GetUsersCountMetricParams) => { - return [`/api/users/counts/${metric}`, ...(params ? [params] : [])] as const -} -export const getGetUsersCountMetricQueryOptions = >, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUsersCountMetricParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUsersCountMetricQueryKey(metric, params) - const queryFn: QueryFunction>> = ({ signal }) => getUsersCountMetric(metric, params, signal) - return { queryKey, queryFn, enabled: !!metric, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} + return { mutationFn, ...mutationOptions }} -export type GetUsersCountMetricQueryResult = NonNullable>> -export type GetUsersCountMetricQueryError = ErrorType + export type CreateUserFromTemplateMutationResult = NonNullable>> + export type CreateUserFromTemplateMutationBody = BodyType + export type CreateUserFromTemplateMutationError = ErrorType -export function useGetUsersCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params: undefined | GetUsersCountMetricParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUsersCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUsersCountMetricParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUsersCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUsersCountMetricParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Users Count Metric + /** + * @summary Create User From Template */ +export const useCreateUserFromTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateUserFromTemplateMutationOptions(options), queryClient); + } + +export const getBulkCreateUsersFromTemplateUrl = () => { -export function useGetUsersCountMetric>, TError = ErrorType>( - metric: UserCountMetric, - params?: GetUsersCountMetricParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUsersCountMetricQueryOptions(metric, params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/users/bulk/from_template` } /** - * Get cleanup-target users in the specified scope. + * Bulk create users from a template using configurable username strategies. -- **target**: `expired` (time-based) or `limited` (usage-based) -- **expired_after** UTC datetime (optional) -- **expired_before** UTC datetime (optional) -- Date range filters are applied only when target is `expired` - * @summary Get Expired Users - */ -export const getExpiredUsers = (params?: GetExpiredUsersParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/expired`, method: 'GET', params, signal }) -} +- Includes the template creation fields plus `count`, `strategy`, and `start_number` (for sequences). +- **strategy**: Username generation strategy — `sequence` or `random`. +- **start_number**: Optional starting suffix for `sequence` strategy. Defaults to `1` and does not parse numbers from the base username. -export const getGetExpiredUsersQueryKey = (params?: GetExpiredUsersParams) => { - return [`/api/users/expired`, ...(params ? [params] : [])] as const -} +Returns subscription URLs for created users. + * @summary Bulk Create Users From Template + */ +export const bulkCreateUsersFromTemplate = async (bulkUsersFromTemplate: BulkUsersFromTemplate, options?: RequestInit): Promise => { -export const getGetExpiredUsersQueryOptions = >, TError = ErrorType>( - params?: GetExpiredUsersParams, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} + return orvalFetcher(getBulkCreateUsersFromTemplateUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersFromTemplate) + } +);} - const queryKey = queryOptions?.queryKey ?? getGetExpiredUsersQueryKey(params) - const queryFn: QueryFunction>> = ({ signal }) => getExpiredUsers(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetExpiredUsersQueryResult = NonNullable>> -export type GetExpiredUsersQueryError = ErrorType +export const getBulkCreateUsersFromTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export function useGetExpiredUsers>, TError = ErrorType>( - params: undefined | GetExpiredUsersParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetExpiredUsers>, TError = ErrorType>( - params?: GetExpiredUsersParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetExpiredUsers>, TError = ErrorType>( - params?: GetExpiredUsersParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get Expired Users - */ +const mutationKey = ['bulkCreateUsersFromTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export function useGetExpiredUsers>, TError = ErrorType>( - params?: GetExpiredUsersParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetExpiredUsersQueryOptions(params, options) - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query -} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; -/** - * Delete cleanup-target users in the specified scope. + return bulkCreateUsersFromTemplate(data,requestOptions) + } -- **target**: `expired` (time-based) or `limited` (usage-based) -- **expired_after** UTC datetime (optional) -- **expired_before** UTC datetime (optional) -- Date range filters are applied only when target is `expired` - * @summary Delete Expired Users - */ -export const deleteExpiredUsers = (params?: DeleteExpiredUsersParams) => { - return orvalFetcher({ url: `/api/users/expired`, method: 'DELETE', params }) -} -export const getDeleteExpiredUsersMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['deleteExpiredUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { params?: DeleteExpiredUsersParams }> = props => { - const { params } = props ?? {} - return deleteExpiredUsers(params) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type DeleteExpiredUsersMutationResult = NonNullable>> + return { mutationFn, ...mutationOptions }} -export type DeleteExpiredUsersMutationError = ErrorType + export type BulkCreateUsersFromTemplateMutationResult = NonNullable>> + export type BulkCreateUsersFromTemplateMutationBody = BodyType + export type BulkCreateUsersFromTemplateMutationError = ErrorType -/** - * @summary Delete Expired Users + /** + * @summary Bulk Create Users From Template */ -export const useDeleteExpiredUsers = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getDeleteExpiredUsersMutationOptions(options) +export const useBulkCreateUsersFromTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkCreateUsersFromTemplateMutationOptions(options), queryClient); + } + +export const getBulkApplyTemplateToUsersUrl = () => { + + + - return useMutation(mutationOptions) + return `/api/users/bulk/apply_template` } /** - * Delete selected users by ID. - * @summary Bulk Delete Users + * Apply a user template to selected existing users by ID. + * @summary Bulk Apply Template To Users */ -export const bulkDeleteUsers = (bulkUsersSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersSelection, signal }) -} +export const bulkApplyTemplateToUsers = async (bulkUsersApplyTemplate: BulkUsersApplyTemplate, options?: RequestInit): Promise => { -export const getBulkDeleteUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getBulkApplyTemplateToUsersUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersApplyTemplate) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteUsers(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDeleteUsersMutationResult = NonNullable>> -export type BulkDeleteUsersMutationBody = BodyType -export type BulkDeleteUsersMutationError = ErrorType +export const getBulkApplyTemplateToUsersMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -/** - * @summary Bulk Delete Users - */ -export const useBulkDeleteUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteUsersMutationOptions(options) +const mutationKey = ['bulkApplyTemplateToUsers']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return useMutation(mutationOptions) -} -/** - * Reset usage for selected users by ID. - * @summary Bulk Reset Users Data Usage - */ -export const bulkResetUsersDataUsage = (bulkUsersSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/reset`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersSelection, signal }) -} -export const getBulkResetUsersDataUsageMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkResetUsersDataUsage'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; - return bulkResetUsersDataUsage(data) - } + return bulkApplyTemplateToUsers(data,requestOptions) + } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkResetUsersDataUsageMutationResult = NonNullable>> -export type BulkResetUsersDataUsageMutationBody = BodyType -export type BulkResetUsersDataUsageMutationError = ErrorType -/** - * @summary Bulk Reset Users Data Usage - */ -export const useBulkResetUsersDataUsage = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkResetUsersDataUsageMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Disable selected users by ID. - * @summary Bulk Disable Users - */ -export const bulkDisableUsers = (bulkUsersSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/disable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersSelection, signal }) -} -export const getBulkDisableUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + export type BulkApplyTemplateToUsersMutationResult = NonNullable>> + export type BulkApplyTemplateToUsersMutationBody = BodyType + export type BulkApplyTemplateToUsersMutationError = ErrorType - return bulkDisableUsers(data) - } + /** + * @summary Bulk Apply Template To Users + */ +export const useBulkApplyTemplateToUsers = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkApplyTemplateToUsersMutationOptions(options), queryClient); + } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} +export const getModifyUserWithTemplateUrl = (username: string,) => { -export type BulkDisableUsersMutationResult = NonNullable>> -export type BulkDisableUsersMutationBody = BodyType -export type BulkDisableUsersMutationError = ErrorType -/** - * @summary Bulk Disable Users - */ -export const useBulkDisableUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableUsersMutationOptions(options) - return useMutation(mutationOptions) + + return `/api/user/from_template/${username}` } /** - * Enable selected users by ID. - * @summary Bulk Enable Users + * @summary Modify User With Template */ -export const bulkEnableUsers = (bulkUsersSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/enable`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersSelection, signal }) -} +export const modifyUserWithTemplate = async (username: string, + modifyUserByTemplate: ModifyUserByTemplate, options?: RequestInit): Promise => { -export const getBulkEnableUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkEnableUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getModifyUserWithTemplateUrl(username), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(modifyUserByTemplate) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkEnableUsers(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkEnableUsersMutationResult = NonNullable>> -export type BulkEnableUsersMutationBody = BodyType -export type BulkEnableUsersMutationError = ErrorType +export const getModifyUserWithTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;data: BodyType}, TContext> => { -/** - * @summary Bulk Enable Users - */ -export const useBulkEnableUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkEnableUsersMutationOptions(options) +const mutationKey = ['modifyUserWithTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return useMutation(mutationOptions) -} -/** - * Revoke subscriptions for selected users by ID. - * @summary Bulk Revoke Users Subscription - */ -export const bulkRevokeUsersSubscription = (bulkUsersSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/revoke_sub`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersSelection, signal }) -} -export const getBulkRevokeUsersSubscriptionMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkRevokeUsersSubscription'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + const mutationFn: MutationFunction>, {username: string;data: BodyType}> = (props) => { + const {username,data} = props ?? {}; - return bulkRevokeUsersSubscription(data) - } + return modifyUserWithTemplate(username,data,requestOptions) + } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkRevokeUsersSubscriptionMutationResult = NonNullable>> -export type BulkRevokeUsersSubscriptionMutationBody = BodyType -export type BulkRevokeUsersSubscriptionMutationError = ErrorType -/** - * @summary Bulk Revoke Users Subscription - */ -export const useBulkRevokeUsersSubscription = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkRevokeUsersSubscriptionMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * Set a new owner for selected users by ID. - * @summary Bulk Set Owner - */ -export const bulkSetOwner = (bulkUsersSetOwner: BodyType) => { - return orvalFetcher({ url: `/api/users/bulk/set_owner`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: bulkUsersSetOwner }) -} -export const getBulkSetOwnerMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkSetOwner'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return { mutationFn, ...mutationOptions }} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} + export type ModifyUserWithTemplateMutationResult = NonNullable>> + export type ModifyUserWithTemplateMutationBody = BodyType + export type ModifyUserWithTemplateMutationError = ErrorType - return bulkSetOwner(data) - } + /** + * @summary Modify User With Template + */ +export const useModifyUserWithTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserWithTemplateMutationOptions(options), queryClient); + } + +export const getModifyUserWithTemplateByUsernameUrl = (username: string,) => { - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkSetOwnerMutationResult = NonNullable>> -export type BulkSetOwnerMutationBody = BodyType -export type BulkSetOwnerMutationError = ErrorType -/** - * @summary Bulk Set Owner - */ -export const useBulkSetOwner = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkSetOwnerMutationOptions(options) - return useMutation(mutationOptions) + return `/api/user/from_template/by-username/${username}` } /** - * @summary Create User From Template + * @summary Modify User With Template By Username */ -export const createUserFromTemplate = (createUserFromTemplate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/from_template`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: createUserFromTemplate, signal }) -} +export const modifyUserWithTemplateByUsername = async (username: string, + modifyUserByTemplate: ModifyUserByTemplate, options?: RequestInit): Promise => { -export const getCreateUserFromTemplateMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createUserFromTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getModifyUserWithTemplateByUsernameUrl(username), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(modifyUserByTemplate) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createUserFromTemplate(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateUserFromTemplateMutationResult = NonNullable>> -export type CreateUserFromTemplateMutationBody = BodyType -export type CreateUserFromTemplateMutationError = ErrorType +export const getModifyUserWithTemplateByUsernameMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{username: string;data: BodyType}, TContext> => { -/** - * @summary Create User From Template - */ -export const useCreateUserFromTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateUserFromTemplateMutationOptions(options) +const mutationKey = ['modifyUserWithTemplateByUsername']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; - return useMutation(mutationOptions) -} -/** - * Bulk create users from a template using configurable username strategies. -- Includes the template creation fields plus `count`, `strategy`, and `start_number` (for sequences). -- **strategy**: Username generation strategy — `sequence` or `random`. -- **start_number**: Optional starting suffix for `sequence` strategy. Defaults to `1` and does not parse numbers from the base username. -Returns subscription URLs for created users. - * @summary Bulk Create Users From Template - */ -export const bulkCreateUsersFromTemplate = (bulkUsersFromTemplate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/from_template`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersFromTemplate, signal }) -} + const mutationFn: MutationFunction>, {username: string;data: BodyType}> = (props) => { + const {username,data} = props ?? {}; -export const getBulkCreateUsersFromTemplateMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkCreateUsersFromTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return modifyUserWithTemplateByUsername(username,data,requestOptions) + } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkCreateUsersFromTemplate(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkCreateUsersFromTemplateMutationResult = NonNullable>> -export type BulkCreateUsersFromTemplateMutationBody = BodyType -export type BulkCreateUsersFromTemplateMutationError = ErrorType -/** - * @summary Bulk Create Users From Template - */ -export const useBulkCreateUsersFromTemplate = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkCreateUsersFromTemplateMutationOptions(options) - return useMutation(mutationOptions) -} + return { mutationFn, ...mutationOptions }} -/** - * Apply a user template to selected existing users by ID. - * @summary Bulk Apply Template To Users + export type ModifyUserWithTemplateByUsernameMutationResult = NonNullable>> + export type ModifyUserWithTemplateByUsernameMutationBody = BodyType + export type ModifyUserWithTemplateByUsernameMutationError = ErrorType + + /** + * @summary Modify User With Template By Username */ -export const bulkApplyTemplateToUsers = (bulkUsersApplyTemplate: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/apply_template`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersApplyTemplate, signal }) -} +export const useModifyUserWithTemplateByUsername = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{username: string;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {username: string;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserWithTemplateByUsernameMutationOptions(options), queryClient); + } -export const getBulkApplyTemplateToUsersMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkApplyTemplateToUsers'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const getModifyUserWithTemplateByIdUrl = (userId: number,) => { - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkApplyTemplateToUsers(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkApplyTemplateToUsersMutationResult = NonNullable>> -export type BulkApplyTemplateToUsersMutationBody = BodyType -export type BulkApplyTemplateToUsersMutationError = ErrorType + return `/api/user/from_template/by-id/${userId}` +} /** - * @summary Bulk Apply Template To Users + * @summary Modify User With Template By Id */ -export const useBulkApplyTemplateToUsers = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkApplyTemplateToUsersMutationOptions(options) +export const modifyUserWithTemplateById = async (userId: number, + modifyUserByTemplate: ModifyUserByTemplate, options?: RequestInit): Promise => { - return useMutation(mutationOptions) -} + return orvalFetcher(getModifyUserWithTemplateByIdUrl(userId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(modifyUserByTemplate) + } +);} -/** - * @summary Modify User With Template - */ -export const modifyUserWithTemplate = (username: string, modifyUserByTemplate: BodyType) => { - return orvalFetcher({ url: `/api/user/from_template/${username}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: modifyUserByTemplate }) -} -export const getModifyUserWithTemplateMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUserWithTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { username: string; data: BodyType }> = props => { - const { username, data } = props ?? {} - return modifyUserWithTemplate(username, data) - } +export const getModifyUserWithTemplateByIdMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number;data: BodyType}, TContext> => { - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} +const mutationKey = ['modifyUserWithTemplateById']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -export type ModifyUserWithTemplateMutationResult = NonNullable>> -export type ModifyUserWithTemplateMutationBody = BodyType -export type ModifyUserWithTemplateMutationError = ErrorType -/** - * @summary Modify User With Template - */ -export const useModifyUserWithTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserWithTemplateMutationOptions(options) - return useMutation(mutationOptions) -} -/** - * @summary Modify User With Template By Username - */ -export const modifyUserWithTemplateByUsername = (username: string, modifyUserByTemplate: BodyType) => { - return orvalFetcher({ url: `/api/user/from_template/by-username/${username}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: modifyUserByTemplate }) -} + const mutationFn: MutationFunction>, {userId: number;data: BodyType}> = (props) => { + const {userId,data} = props ?? {}; -export const getModifyUserWithTemplateByUsernameMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUserWithTemplateByUsername'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return modifyUserWithTemplateById(userId,data,requestOptions) + } - const mutationFn: MutationFunction>, { username: string; data: BodyType }> = props => { - const { username, data } = props ?? {} - return modifyUserWithTemplateByUsername(username, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifyUserWithTemplateByUsernameMutationResult = NonNullable>> -export type ModifyUserWithTemplateByUsernameMutationBody = BodyType -export type ModifyUserWithTemplateByUsernameMutationError = ErrorType -/** - * @summary Modify User With Template By Username - */ -export const useModifyUserWithTemplateByUsername = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserWithTemplateByUsernameMutationOptions(options) - return useMutation(mutationOptions) -} + return { mutationFn, ...mutationOptions }} -/** + export type ModifyUserWithTemplateByIdMutationResult = NonNullable>> + export type ModifyUserWithTemplateByIdMutationBody = BodyType + export type ModifyUserWithTemplateByIdMutationError = ErrorType + + /** * @summary Modify User With Template By Id */ -export const modifyUserWithTemplateById = (userId: number, modifyUserByTemplate: BodyType) => { - return orvalFetcher({ url: `/api/user/from_template/by-id/${userId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: modifyUserByTemplate }) -} - -export const getModifyUserWithTemplateByIdMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUserWithTemplateById'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } +export const useModifyUserWithTemplateById = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserWithTemplateByIdMutationOptions(options), queryClient); + } - const mutationFn: MutationFunction>, { userId: number; data: BodyType }> = props => { - const { userId, data } = props ?? {} - - return modifyUserWithTemplateById(userId, data) - } +export const getBulkModifyUsersExpireUrl = () => { - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type ModifyUserWithTemplateByIdMutationResult = NonNullable>> -export type ModifyUserWithTemplateByIdMutationBody = BodyType -export type ModifyUserWithTemplateByIdMutationError = ErrorType -/** - * @summary Modify User With Template By Id - */ -export const useModifyUserWithTemplateById = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserWithTemplateByIdMutationOptions(options) - return useMutation(mutationOptions) + return `/api/users/bulk/expire` } /** @@ -11245,46 +15465,71 @@ export const useModifyUserWithTemplateById = , signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/expire`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUser, signal }) -} +export const bulkModifyUsersExpire = async (bulkUser: BulkUser, options?: RequestInit): Promise => { -export const getBulkModifyUsersExpireMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkModifyUsersExpire'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getBulkModifyUsersExpireUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUser) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkModifyUsersExpire(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkModifyUsersExpireMutationResult = NonNullable>> -export type BulkModifyUsersExpireMutationBody = BodyType -export type BulkModifyUsersExpireMutationError = ErrorType +export const getBulkModifyUsersExpireMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -/** +const mutationKey = ['bulkModifyUsersExpire']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkModifyUsersExpire(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkModifyUsersExpireMutationResult = NonNullable>> + export type BulkModifyUsersExpireMutationBody = BodyType + export type BulkModifyUsersExpireMutationError = ErrorType + + /** * @summary Bulk sum/sub to expire of users */ -export const useBulkModifyUsersExpire = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkModifyUsersExpireMutationOptions(options) +export const useBulkModifyUsersExpire = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkModifyUsersExpireMutationOptions(options), queryClient); + } + +export const getBulkModifyUsersDatalimitUrl = () => { - return useMutation(mutationOptions) + + + + return `/api/users/bulk/data_limit` } /** @@ -11299,540 +15544,846 @@ export const useBulkModifyUsersExpire = , signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/data_limit`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUser, signal }) -} +export const bulkModifyUsersDatalimit = async (bulkUser: BulkUser, options?: RequestInit): Promise => { -export const getBulkModifyUsersDatalimitMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkModifyUsersDatalimit'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getBulkModifyUsersDatalimitUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUser) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkModifyUsersDatalimit(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkModifyUsersDatalimitMutationResult = NonNullable>> -export type BulkModifyUsersDatalimitMutationBody = BodyType -export type BulkModifyUsersDatalimitMutationError = ErrorType +export const getBulkModifyUsersDatalimitMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -/** +const mutationKey = ['bulkModifyUsersDatalimit']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkModifyUsersDatalimit(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkModifyUsersDatalimitMutationResult = NonNullable>> + export type BulkModifyUsersDatalimitMutationBody = BodyType + export type BulkModifyUsersDatalimitMutationError = ErrorType + + /** * @summary Bulk sum/sub to data limit of users */ -export const useBulkModifyUsersDatalimit = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkModifyUsersDatalimitMutationOptions(options) +export const useBulkModifyUsersDatalimit = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkModifyUsersDatalimitMutationOptions(options), queryClient); + } + +export const getBulkModifyUsersProxySettingsUrl = () => { + - return useMutation(mutationOptions) + + + return `/api/users/bulk/proxy_settings` } /** * @summary Bulk modify users proxy settings */ -export const bulkModifyUsersProxySettings = (bulkUsersProxy: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/users/bulk/proxy_settings`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUsersProxy, signal }) -} +export const bulkModifyUsersProxySettings = async (bulkUsersProxy: BulkUsersProxy, options?: RequestInit): Promise => { -export const getBulkModifyUsersProxySettingsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkModifyUsersProxySettings'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getBulkModifyUsersProxySettingsUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUsersProxy) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkModifyUsersProxySettings(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkModifyUsersProxySettingsMutationResult = NonNullable>> -export type BulkModifyUsersProxySettingsMutationBody = BodyType -export type BulkModifyUsersProxySettingsMutationError = ErrorType +export const getBulkModifyUsersProxySettingsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -/** +const mutationKey = ['bulkModifyUsersProxySettings']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkModifyUsersProxySettings(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkModifyUsersProxySettingsMutationResult = NonNullable>> + export type BulkModifyUsersProxySettingsMutationBody = BodyType + export type BulkModifyUsersProxySettingsMutationError = ErrorType + + /** * @summary Bulk modify users proxy settings */ -export const useBulkModifyUsersProxySettings = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkModifyUsersProxySettingsMutationOptions(options) +export const useBulkModifyUsersProxySettings = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkModifyUsersProxySettingsMutationOptions(options), queryClient); + } + +export const getBulkReallocateWireguardPeerIpsUrl = () => { + + - return useMutation(mutationOptions) + + return `/api/users/bulk/wireguard/reallocate-peer-ips` } /** * Same scoping as other bulk user actions (users, admins, group_ids, optional status filter). Non-sudo admins only affect their own users. * @summary Bulk reallocate WireGuard peer IPs */ -export const bulkReallocateWireguardPeerIps = (bulkWireGuardPeerIPs: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ - url: `/api/users/bulk/wireguard/reallocate-peer-ips`, +export const bulkReallocateWireguardPeerIps = async (bulkWireGuardPeerIPs: BulkWireGuardPeerIPs, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkReallocateWireguardPeerIpsUrl(), + { + ...options, method: 'POST', - headers: { 'Content-Type': 'application/json' }, - data: bulkWireGuardPeerIPs, - signal, - }) -} + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkWireGuardPeerIPs) + } +);} + + + + +export const getBulkReallocateWireguardPeerIpsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { + +const mutationKey = ['bulkReallocateWireguardPeerIps']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkReallocateWireguardPeerIps(data,requestOptions) + } + + -export const getBulkReallocateWireguardPeerIpsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkReallocateWireguardPeerIps'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkReallocateWireguardPeerIps(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} + return { mutationFn, ...mutationOptions }} -export type BulkReallocateWireguardPeerIpsMutationResult = NonNullable>> -export type BulkReallocateWireguardPeerIpsMutationBody = BodyType -export type BulkReallocateWireguardPeerIpsMutationError = ErrorType + export type BulkReallocateWireguardPeerIpsMutationResult = NonNullable>> + export type BulkReallocateWireguardPeerIpsMutationBody = BodyType + export type BulkReallocateWireguardPeerIpsMutationError = ErrorType -/** + /** * @summary Bulk reallocate WireGuard peer IPs */ -export const useBulkReallocateWireguardPeerIps = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkReallocateWireguardPeerIpsMutationOptions(options) +export const useBulkReallocateWireguardPeerIps = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkReallocateWireguardPeerIpsMutationOptions(options), queryClient); + } + +export const getUserSubscriptionUrl = (token: string,) => { - return useMutation(mutationOptions) + + + + return `/sub/${token}/` } /** * Provides a subscription link based on the user agent (Clash, V2Ray, etc.). * @summary User Subscription */ -export const userSubscription = (token: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/sub/${token}/`, method: 'GET', signal }) -} +export const userSubscription = async (token: string, options?: RequestInit): Promise => { + + return orvalFetcher(getUserSubscriptionUrl(token), + { + ...options, + method: 'GET' + + + } +);} + + + -export const getUserSubscriptionQueryKey = (token: string) => { - return [`/sub/${token}/`] as const -} -export const getUserSubscriptionQueryOptions = >, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, +export const getUserSubscriptionQueryKey = (token: string,) => { + return [ + `/sub/${token}/` + ] as const; + } + + +export const getUserSubscriptionQueryOptions = >, TError = ErrorType>(token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserSubscriptionQueryKey(token) +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getUserSubscriptionQueryKey(token); + + + + const queryFn: QueryFunction>> = ({ signal }) => userSubscription(token, { signal, ...requestOptions }); + + - const queryFn: QueryFunction>> = ({ signal }) => userSubscription(token, signal) - return { queryKey, queryFn, enabled: !!token, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + + return { queryKey, queryFn, enabled: token !== null && token !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type UserSubscriptionQueryResult = NonNullable>> export type UserSubscriptionQueryError = ErrorType + export function useUserSubscription>, TError = ErrorType>( - token: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + token: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useUserSubscription>, TError = ErrorType>( - token: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useUserSubscription>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary User Subscription */ export function useUserSubscription>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserSubscriptionQueryOptions(token, options) + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getUserSubscriptionQueryOptions(token,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + +export const getUserSubscriptionInfoUrl = (token: string,) => { + + + + + return `/sub/${token}/info` } /** * Retrieves detailed information about the user's subscription. * @summary User Subscription Info */ -export const userSubscriptionInfo = (token: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/sub/${token}/info`, method: 'GET', signal }) -} +export const userSubscriptionInfo = async (token: string, options?: RequestInit): Promise => { -export const getUserSubscriptionInfoQueryKey = (token: string) => { - return [`/sub/${token}/info`] as const -} + return orvalFetcher(getUserSubscriptionInfoUrl(token), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getUserSubscriptionInfoQueryKey = (token: string,) => { + return [ + `/sub/${token}/info` + ] as const; + } -export const getUserSubscriptionInfoQueryOptions = >, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, + +export const getUserSubscriptionInfoQueryOptions = >, TError = ErrorType>(token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserSubscriptionInfoQueryKey(token) +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getUserSubscriptionInfoQueryKey(token); + + + + const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionInfo(token, { signal, ...requestOptions }); + + + - const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionInfo(token, signal) - return { queryKey, queryFn, enabled: !!token, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + return { queryKey, queryFn, enabled: token !== null && token !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type UserSubscriptionInfoQueryResult = NonNullable>> export type UserSubscriptionInfoQueryError = ErrorType + export function useUserSubscriptionInfo>, TError = ErrorType>( - token: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + token: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useUserSubscriptionInfo>, TError = ErrorType>( - token: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useUserSubscriptionInfo>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary User Subscription Info */ export function useUserSubscriptionInfo>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserSubscriptionInfoQueryOptions(token, options) + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getUserSubscriptionInfoQueryOptions(token,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + +export const getUserSubscriptionRawUrl = (token: string,) => { + + + + + return `/sub/${token}/raw` } /** * @summary User Subscription Raw */ -export const userSubscriptionRaw = (token: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/sub/${token}/raw`, method: 'GET', signal }) -} +export const userSubscriptionRaw = async (token: string, options?: RequestInit): Promise => { + + return orvalFetcher(getUserSubscriptionRawUrl(token), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getUserSubscriptionRawQueryKey = (token: string,) => { + return [ + `/sub/${token}/raw` + ] as const; + } -export const getUserSubscriptionRawQueryKey = (token: string) => { - return [`/sub/${token}/raw`] as const -} -export const getUserSubscriptionRawQueryOptions = >, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, +export const getUserSubscriptionRawQueryOptions = >, TError = ErrorType>(token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserSubscriptionRawQueryKey(token) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionRaw(token, signal) + const queryKey = queryOptions?.queryKey ?? getUserSubscriptionRawQueryKey(token); - return { queryKey, queryFn, enabled: !!token, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + + + const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionRaw(token, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: token !== null && token !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type UserSubscriptionRawQueryResult = NonNullable>> export type UserSubscriptionRawQueryError = ErrorType + export function useUserSubscriptionRaw>, TError = ErrorType>( - token: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + token: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useUserSubscriptionRaw>, TError = ErrorType>( - token: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useUserSubscriptionRaw>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary User Subscription Raw */ export function useUserSubscriptionRaw>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserSubscriptionRawQueryOptions(token, options) + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getUserSubscriptionRawQueryOptions(token,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query +export const getUserSubscriptionAppsUrl = (token: string,) => { + + + + + return `/sub/${token}/apps` } /** * Get applications available for user's subscription. * @summary User Subscription Apps */ -export const userSubscriptionApps = (token: string, signal?: AbortSignal) => { - return orvalFetcher({ url: `/sub/${token}/apps`, method: 'GET', signal }) -} +export const userSubscriptionApps = async (token: string, options?: RequestInit): Promise => { + + return orvalFetcher(getUserSubscriptionAppsUrl(token), + { + ...options, + method: 'GET' + + + } +);} + + -export const getUserSubscriptionAppsQueryKey = (token: string) => { - return [`/sub/${token}/apps`] as const -} -export const getUserSubscriptionAppsQueryOptions = >, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, + +export const getUserSubscriptionAppsQueryKey = (token: string,) => { + return [ + `/sub/${token}/apps` + ] as const; + } + + +export const getUserSubscriptionAppsQueryOptions = >, TError = ErrorType>(token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserSubscriptionAppsQueryKey(token) +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getUserSubscriptionAppsQueryKey(token); - const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionApps(token, signal) - return { queryKey, queryFn, enabled: !!token, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + + const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionApps(token, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: token !== null && token !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type UserSubscriptionAppsQueryResult = NonNullable>> export type UserSubscriptionAppsQueryError = ErrorType + export function useUserSubscriptionApps>, TError = ErrorType>( - token: string, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + token: string, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useUserSubscriptionApps>, TError = ErrorType>( - token: string, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useUserSubscriptionApps>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary User Subscription Apps */ export function useUserSubscriptionApps>, TError = ErrorType>( - token: string, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserSubscriptionAppsQueryOptions(token, options) + token: string, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getUserSubscriptionAppsQueryOptions(token,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey +export const getGetSubUserUsageUrl = (token: string, + params?: GetSubUserUsageParams,) => { + const normalizedParams = new URLSearchParams(); - return query + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/sub/${token}/usage?${stringifiedParams}` : `/sub/${token}/usage` } /** * Fetches the usage statistics for the user within a specified date range. * @summary Get Sub User Usage */ -export const getSubUserUsage = (token: string, params?: GetSubUserUsageParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/sub/${token}/usage`, method: 'GET', params, signal }) -} +export const getSubUserUsage = async (token: string, + params?: GetSubUserUsageParams, options?: RequestInit): Promise => { -export const getGetSubUserUsageQueryKey = (token: string, params?: GetSubUserUsageParams) => { - return [`/sub/${token}/usage`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getGetSubUserUsageUrl(token,params), + { + ...options, + method: 'GET' + + + } +);} -export const getGetSubUserUsageQueryOptions = >, TError = ErrorType>( - token: string, - params?: GetSubUserUsageParams, - options?: { query?: Partial>, TError, TData>> }, + + + + +export const getGetSubUserUsageQueryKey = (token: string, + params?: GetSubUserUsageParams,) => { + return [ + `/sub/${token}/usage`, ...(params ? [params] : []) + ] as const; + } + + +export const getGetSubUserUsageQueryOptions = >, TError = ErrorType>(token: string, + params?: GetSubUserUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetSubUserUsageQueryKey(token, params) +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetSubUserUsageQueryKey(token,params); + - const queryFn: QueryFunction>> = ({ signal }) => getSubUserUsage(token, params, signal) - return { queryKey, queryFn, enabled: !!token, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + const queryFn: QueryFunction>> = ({ signal }) => getSubUserUsage(token,params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: token !== null && token !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type GetSubUserUsageQueryResult = NonNullable>> export type GetSubUserUsageQueryError = ErrorType + export function useGetSubUserUsage>, TError = ErrorType>( - token: string, - params: undefined | GetSubUserUsageParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + token: string, + params: undefined | GetSubUserUsageParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useGetSubUserUsage>, TError = ErrorType>( - token: string, - params?: GetSubUserUsageParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + token: string, + params?: GetSubUserUsageParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useGetSubUserUsage>, TError = ErrorType>( - token: string, - params?: GetSubUserUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + token: string, + params?: GetSubUserUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary Get Sub User Usage */ export function useGetSubUserUsage>, TError = ErrorType>( - token: string, - params?: GetSubUserUsageParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetSubUserUsageQueryOptions(token, params, options) + token: string, + params?: GetSubUserUsageParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetSubUserUsageQueryOptions(token,params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } +export const getUserSubscriptionWithClientTypeUrl = (token: string, + clientType: ConfigFormat,) => { - query.queryKey = queryOptions.queryKey - return query + + + return `/sub/${token}/${clientType}` } /** * Provides a subscription link based on the specified client type (e.g., Clash, V2Ray). * @summary User Subscription With Client Type */ -export const userSubscriptionWithClientType = (token: string, clientType: ConfigFormat, signal?: AbortSignal) => { - return orvalFetcher({ url: `/sub/${token}/${clientType}`, method: 'GET', signal }) -} +export const userSubscriptionWithClientType = async (token: string, + clientType: ConfigFormat, options?: RequestInit): Promise => { + + return orvalFetcher(getUserSubscriptionWithClientTypeUrl(token,clientType), + { + ...options, + method: 'GET' + + + } +);} -export const getUserSubscriptionWithClientTypeQueryKey = (token: string, clientType: ConfigFormat) => { - return [`/sub/${token}/${clientType}`] as const -} -export const getUserSubscriptionWithClientTypeQueryOptions = >, TError = ErrorType>( - token: string, - clientType: ConfigFormat, - options?: { query?: Partial>, TError, TData>> }, + + + +export const getUserSubscriptionWithClientTypeQueryKey = (token: string, + clientType: ConfigFormat,) => { + return [ + `/sub/${token}/${clientType}` + ] as const; + } + + +export const getUserSubscriptionWithClientTypeQueryOptions = >, TError = ErrorType>(token: string, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getUserSubscriptionWithClientTypeQueryKey(token, clientType) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionWithClientType(token, clientType, signal) + const queryKey = queryOptions?.queryKey ?? getUserSubscriptionWithClientTypeQueryKey(token,clientType); - return { queryKey, queryFn, enabled: !!(token && clientType), ...queryOptions } as UseQueryOptions>, TError, TData> & { - queryKey: DataTag - } + + + const queryFn: QueryFunction>> = ({ signal }) => userSubscriptionWithClientType(token,clientType, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: token !== null && token !== undefined && clientType !== null && clientType !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type UserSubscriptionWithClientTypeQueryResult = NonNullable>> export type UserSubscriptionWithClientTypeQueryError = ErrorType + export function useUserSubscriptionWithClientType>, TError = ErrorType>( - token: string, - clientType: ConfigFormat, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + token: string, + clientType: ConfigFormat, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useUserSubscriptionWithClientType>, TError = ErrorType>( - token: string, - clientType: ConfigFormat, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + token: string, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useUserSubscriptionWithClientType>, TError = ErrorType>( - token: string, - clientType: ConfigFormat, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + token: string, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary User Subscription With Client Type */ export function useUserSubscriptionWithClientType>, TError = ErrorType>( - token: string, - clientType: ConfigFormat, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getUserSubscriptionWithClientTypeQueryOptions(token, clientType, options) + token: string, + clientType: ConfigFormat, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getUserSubscriptionWithClientTypeQueryOptions(token,clientType,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } +export const getCreateUserTemplateUrl = () => { - query.queryKey = queryOptions.queryKey - return query + + + return `/api/user_template` } /** @@ -11844,105 +16395,173 @@ export function useUserSubscriptionWithClientType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user_template`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: userTemplateCreate, signal }) -} +export const createUserTemplate = async (userTemplateCreate: UserTemplateCreate, options?: RequestInit): Promise => { -export const getCreateUserTemplateMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['createUserTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getCreateUserTemplateUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(userTemplateCreate) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return createUserTemplate(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type CreateUserTemplateMutationResult = NonNullable>> -export type CreateUserTemplateMutationBody = BodyType -export type CreateUserTemplateMutationError = ErrorType +export const getCreateUserTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -/** +const mutationKey = ['createUserTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return createUserTemplate(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type CreateUserTemplateMutationResult = NonNullable>> + export type CreateUserTemplateMutationBody = BodyType + export type CreateUserTemplateMutationError = ErrorType + + /** * @summary Create User Template */ -export const useCreateUserTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getCreateUserTemplateMutationOptions(options) +export const useCreateUserTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getCreateUserTemplateMutationOptions(options), queryClient); + } + +export const getGetUserTemplateUrl = (templateId: number,) => { + + - return useMutation(mutationOptions) + + return `/api/user_template/${templateId}` } /** * Get User Template information with id * @summary Get User Template */ -export const getUserTemplate = (templateId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user_template/${templateId}`, method: 'GET', signal }) +export const getUserTemplate = async (templateId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getGetUserTemplateUrl(templateId), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetUserTemplateQueryKey = (templateId: number,) => { + return [ + `/api/user_template/${templateId}` + ] as const; + } + + +export const getGetUserTemplateQueryOptions = >, TError = ErrorType>(templateId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} +) => { + +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUserTemplateQueryKey(templateId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUserTemplate(templateId, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, enabled: templateId !== null && templateId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } -export const getGetUserTemplateQueryKey = (templateId: number) => { - return [`/api/user_template/${templateId}`] as const +export type GetUserTemplateQueryResult = NonNullable>> +export type GetUserTemplateQueryError = ErrorType + + +export function useGetUserTemplate>, TError = ErrorType>( + templateId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } +export function useGetUserTemplate>, TError = ErrorType>( + templateId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +export function useGetUserTemplate>, TError = ErrorType>( + templateId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } +/** + * @summary Get User Template + */ + +export function useGetUserTemplate>, TError = ErrorType>( + templateId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserTemplateQueryOptions(templateId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } -export const getGetUserTemplateQueryOptions = >, TError = ErrorType>( - templateId: number, - options?: { query?: Partial>, TError, TData>> }, -) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserTemplateQueryKey(templateId) - const queryFn: QueryFunction>> = ({ signal }) => getUserTemplate(templateId, signal) - return { queryKey, queryFn, enabled: !!templateId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } -} -export type GetUserTemplateQueryResult = NonNullable>> -export type GetUserTemplateQueryError = ErrorType -export function useGetUserTemplate>, TError = ErrorType>( - templateId: number, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } -export function useGetUserTemplate>, TError = ErrorType>( - templateId: number, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } -export function useGetUserTemplate>, TError = ErrorType>( - templateId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } -/** - * @summary Get User Template - */ -export function useGetUserTemplate>, TError = ErrorType>( - templateId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserTemplateQueryOptions(templateId, options) +export const getModifyUserTemplateUrl = (templateId: number,) => { + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + return `/api/user_template/${templateId}` } /** @@ -11954,524 +16573,810 @@ export function useGetUserTemplate) => { - return orvalFetcher({ url: `/api/user_template/${templateId}`, method: 'PUT', headers: { 'Content-Type': 'application/json' }, data: userTemplateModify }) -} +export const modifyUserTemplate = async (templateId: number, + userTemplateModify: UserTemplateModify, options?: RequestInit): Promise => { + + return orvalFetcher(getModifyUserTemplateUrl(templateId), + { + ...options, + method: 'PUT', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(userTemplateModify) + } +);} -export const getModifyUserTemplateMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['modifyUserTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { templateId: number; data: BodyType }> = props => { - const { templateId, data } = props ?? {} - return modifyUserTemplate(templateId, data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} +export const getModifyUserTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number;data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{templateId: number;data: BodyType}, TContext> => { -export type ModifyUserTemplateMutationResult = NonNullable>> -export type ModifyUserTemplateMutationBody = BodyType -export type ModifyUserTemplateMutationError = ErrorType +const mutationKey = ['modifyUserTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** + + + + const mutationFn: MutationFunction>, {templateId: number;data: BodyType}> = (props) => { + const {templateId,data} = props ?? {}; + + return modifyUserTemplate(templateId,data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ModifyUserTemplateMutationResult = NonNullable>> + export type ModifyUserTemplateMutationBody = BodyType + export type ModifyUserTemplateMutationError = ErrorType + + /** * @summary Modify User Template */ -export const useModifyUserTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getModifyUserTemplateMutationOptions(options) +export const useModifyUserTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number;data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {templateId: number;data: BodyType}, + TContext + > => { + return useMutation(getModifyUserTemplateMutationOptions(options), queryClient); + } + +export const getRemoveUserTemplateUrl = (templateId: number,) => { + + + - return useMutation(mutationOptions) + return `/api/user_template/${templateId}` } /** * Remove a User Template by its ID * @summary Remove User Template */ -export const removeUserTemplate = (templateId: number) => { - return orvalFetcher({ url: `/api/user_template/${templateId}`, method: 'DELETE' }) -} +export const removeUserTemplate = async (templateId: number, options?: RequestInit): Promise => { -export const getRemoveUserTemplateMutationOptions = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['removeUserTemplate'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getRemoveUserTemplateUrl(templateId), + { + ...options, + method: 'DELETE' - const mutationFn: MutationFunction>, { templateId: number }> = props => { - const { templateId } = props ?? {} - return removeUserTemplate(templateId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type RemoveUserTemplateMutationResult = NonNullable>> -export type RemoveUserTemplateMutationError = ErrorType -/** +export const getRemoveUserTemplateMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{templateId: number}, TContext> => { + +const mutationKey = ['removeUserTemplate']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {templateId: number}> = (props) => { + const {templateId} = props ?? {}; + + return removeUserTemplate(templateId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type RemoveUserTemplateMutationResult = NonNullable>> + + export type RemoveUserTemplateMutationError = ErrorType + + /** * @summary Remove User Template */ -export const useRemoveUserTemplate = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getRemoveUserTemplateMutationOptions(options) +export const useRemoveUserTemplate = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{templateId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {templateId: number}, + TContext + > => { + return useMutation(getRemoveUserTemplateMutationOptions(options), queryClient); + } + +export const getGetUserTemplatesUrl = (params?: GetUserTemplatesParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { - return useMutation(mutationOptions) + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/user_templates?${stringifiedParams}` : `/api/user_templates` } /** * Get a list of User Templates with optional pagination * @summary Get User Templates */ -export const getUserTemplates = (params?: GetUserTemplatesParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user_templates`, method: 'GET', params, signal }) -} +export const getUserTemplates = async (params?: GetUserTemplatesParams, options?: RequestInit): Promise => { -export const getGetUserTemplatesQueryKey = (params?: GetUserTemplatesParams) => { - return [`/api/user_templates`, ...(params ? [params] : [])] as const -} + return orvalFetcher(getGetUserTemplatesUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetUserTemplatesQueryKey = (params?: GetUserTemplatesParams,) => { + return [ + `/api/user_templates`, ...(params ? [params] : []) + ] as const; + } -export const getGetUserTemplatesQueryOptions = >, TError = ErrorType>( - params?: GetUserTemplatesParams, - options?: { query?: Partial>, TError, TData>> }, + +export const getGetUserTemplatesQueryOptions = >, TError = ErrorType>(params?: GetUserTemplatesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserTemplatesQueryKey(params) +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUserTemplatesQueryKey(params); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUserTemplates(params, { signal, ...requestOptions }); + + + - const queryFn: QueryFunction>> = ({ signal }) => getUserTemplates(params, signal) - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type GetUserTemplatesQueryResult = NonNullable>> export type GetUserTemplatesQueryError = ErrorType + export function useGetUserTemplates>, TError = ErrorType>( - params: undefined | GetUserTemplatesParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + params: undefined | GetUserTemplatesParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useGetUserTemplates>, TError = ErrorType>( - params?: GetUserTemplatesParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + params?: GetUserTemplatesParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useGetUserTemplates>, TError = ErrorType>( - params?: GetUserTemplatesParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + params?: GetUserTemplatesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary Get User Templates */ export function useGetUserTemplates>, TError = ErrorType>( - params?: GetUserTemplatesParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserTemplatesQueryOptions(params, options) + params?: GetUserTemplatesParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserTemplatesQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + +export const getGetUserTemplatesSimpleUrl = (params?: GetUserTemplatesSimpleParams,) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 ? `/api/user_templates/simple?${stringifiedParams}` : `/api/user_templates/simple` } /** * Returns only id and name for user templates. Optimized for dropdowns and autocomplete. * @summary Get lightweight user template list */ -export const getUserTemplatesSimple = (params?: GetUserTemplatesSimpleParams, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user_templates/simple`, method: 'GET', params, signal }) -} +export const getUserTemplatesSimple = async (params?: GetUserTemplatesSimpleParams, options?: RequestInit): Promise => { + + return orvalFetcher(getGetUserTemplatesSimpleUrl(params), + { + ...options, + method: 'GET' + + + } +);} + + + + + +export const getGetUserTemplatesSimpleQueryKey = (params?: GetUserTemplatesSimpleParams,) => { + return [ + `/api/user_templates/simple`, ...(params ? [params] : []) + ] as const; + } -export const getGetUserTemplatesSimpleQueryKey = (params?: GetUserTemplatesSimpleParams) => { - return [`/api/user_templates/simple`, ...(params ? [params] : [])] as const -} -export const getGetUserTemplatesSimpleQueryOptions = >, TError = ErrorType>( - params?: GetUserTemplatesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserTemplatesSimpleQueryOptions = >, TError = ErrorType>(params?: GetUserTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserTemplatesSimpleQueryKey(params) +const {query: queryOptions, request: requestOptions} = options ?? {}; - const queryFn: QueryFunction>> = ({ signal }) => getUserTemplatesSimple(params, signal) + const queryKey = queryOptions?.queryKey ?? getGetUserTemplatesSimpleQueryKey(params); - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + + + const queryFn: QueryFunction>> = ({ signal }) => getUserTemplatesSimple(params, { signal, ...requestOptions }); + + + + + + return { queryKey, queryFn, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type GetUserTemplatesSimpleQueryResult = NonNullable>> export type GetUserTemplatesSimpleQueryError = ErrorType + export function useGetUserTemplatesSimple>, TError = ErrorType>( - params: undefined | GetUserTemplatesSimpleParams, - options: { - query: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + params: undefined | GetUserTemplatesSimpleParams, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useGetUserTemplatesSimple>, TError = ErrorType>( - params?: GetUserTemplatesSimpleParams, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + params?: GetUserTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useGetUserTemplatesSimple>, TError = ErrorType>( - params?: GetUserTemplatesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + params?: GetUserTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary Get lightweight user template list */ export function useGetUserTemplatesSimple>, TError = ErrorType>( - params?: GetUserTemplatesSimpleParams, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserTemplatesSimpleQueryOptions(params, options) + params?: GetUserTemplatesSimpleParams, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserTemplatesSimpleQueryOptions(params,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query +export const getBulkDeleteUserTemplatesUrl = () => { + + + + + return `/api/user_templates/bulk/delete` } /** * Delete selected user templates by ID. * @summary Bulk Delete User Templates */ -export const bulkDeleteUserTemplates = (bulkUserTemplateSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user_templates/bulk/delete`, method: 'POST', headers: { 'Content-Type': 'application/json' }, data: bulkUserTemplateSelection, signal }) -} +export const bulkDeleteUserTemplates = async (bulkUserTemplateSelection: BulkUserTemplateSelection, options?: RequestInit): Promise => { -export const getBulkDeleteUserTemplatesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDeleteUserTemplates'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getBulkDeleteUserTemplatesUrl(), + { + ...options, + method: 'POST', + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUserTemplateSelection) + } +);} - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDeleteUserTemplates(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} -export type BulkDeleteUserTemplatesMutationResult = NonNullable>> -export type BulkDeleteUserTemplatesMutationBody = BodyType -export type BulkDeleteUserTemplatesMutationError = ErrorType +export const getBulkDeleteUserTemplatesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -/** +const mutationKey = ['bulkDeleteUserTemplates']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDeleteUserTemplates(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDeleteUserTemplatesMutationResult = NonNullable>> + export type BulkDeleteUserTemplatesMutationBody = BodyType + export type BulkDeleteUserTemplatesMutationError = ErrorType + + /** * @summary Bulk Delete User Templates */ -export const useBulkDeleteUserTemplates = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDeleteUserTemplatesMutationOptions(options) +export const useBulkDeleteUserTemplates = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDeleteUserTemplatesMutationOptions(options), queryClient); + } + +export const getBulkDisableUserTemplatesUrl = () => { - return useMutation(mutationOptions) + + + + return `/api/user_templates/bulk/disable` } /** * Disable selected user templates by ID. * @summary Bulk Disable User Templates */ -export const bulkDisableUserTemplates = (bulkUserTemplateSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ - url: `/api/user_templates/bulk/disable`, +export const bulkDisableUserTemplates = async (bulkUserTemplateSelection: BulkUserTemplateSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkDisableUserTemplatesUrl(), + { + ...options, method: 'POST', - headers: { 'Content-Type': 'application/json' }, - data: bulkUserTemplateSelection, - signal, - }) -} + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUserTemplateSelection) + } +);} -export const getBulkDisableUserTemplatesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkDisableUserTemplates'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkDisableUserTemplates(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} +export const getBulkDisableUserTemplatesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type BulkDisableUserTemplatesMutationResult = NonNullable>> -export type BulkDisableUserTemplatesMutationBody = BodyType -export type BulkDisableUserTemplatesMutationError = ErrorType +const mutationKey = ['bulkDisableUserTemplates']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkDisableUserTemplates(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkDisableUserTemplatesMutationResult = NonNullable>> + export type BulkDisableUserTemplatesMutationBody = BodyType + export type BulkDisableUserTemplatesMutationError = ErrorType + + /** * @summary Bulk Disable User Templates */ -export const useBulkDisableUserTemplates = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkDisableUserTemplatesMutationOptions(options) +export const useBulkDisableUserTemplates = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkDisableUserTemplatesMutationOptions(options), queryClient); + } + +export const getBulkEnableUserTemplatesUrl = () => { + + - return useMutation(mutationOptions) + + return `/api/user_templates/bulk/enable` } /** * Enable selected user templates by ID. * @summary Bulk Enable User Templates */ -export const bulkEnableUserTemplates = (bulkUserTemplateSelection: BodyType, signal?: AbortSignal) => { - return orvalFetcher({ - url: `/api/user_templates/bulk/enable`, +export const bulkEnableUserTemplates = async (bulkUserTemplateSelection: BulkUserTemplateSelection, options?: RequestInit): Promise => { + + return orvalFetcher(getBulkEnableUserTemplatesUrl(), + { + ...options, method: 'POST', - headers: { 'Content-Type': 'application/json' }, - data: bulkUserTemplateSelection, - signal, - }) -} + headers: { 'Content-Type': 'application/json', ...options?.headers }, + body: JSON.stringify(bulkUserTemplateSelection) + } +);} -export const getBulkEnableUserTemplatesMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}) => { - const mutationKey = ['bulkEnableUserTemplates'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } - const mutationFn: MutationFunction>, { data: BodyType }> = props => { - const { data } = props ?? {} - return bulkEnableUserTemplates(data) - } - return { mutationFn, ...mutationOptions } as UseMutationOptions }, TContext> -} +export const getBulkEnableUserTemplatesMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{data: BodyType}, TContext> => { -export type BulkEnableUserTemplatesMutationResult = NonNullable>> -export type BulkEnableUserTemplatesMutationBody = BodyType -export type BulkEnableUserTemplatesMutationError = ErrorType +const mutationKey = ['bulkEnableUserTemplates']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; -/** + + + + const mutationFn: MutationFunction>, {data: BodyType}> = (props) => { + const {data} = props ?? {}; + + return bulkEnableUserTemplates(data,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type BulkEnableUserTemplatesMutationResult = NonNullable>> + export type BulkEnableUserTemplatesMutationBody = BodyType + export type BulkEnableUserTemplatesMutationError = ErrorType + + /** * @summary Bulk Enable User Templates */ -export const useBulkEnableUserTemplates = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions }, TContext> -}): UseMutationResult }, TContext> => { - const mutationOptions = getBulkEnableUserTemplatesMutationOptions(options) +export const useBulkEnableUserTemplates = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{data: BodyType}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {data: BodyType}, + TContext + > => { + return useMutation(getBulkEnableUserTemplatesMutationOptions(options), queryClient); + } + +export const getGetUserHwidsUrl = (userId: number,) => { - return useMutation(mutationOptions) + + + + return `/api/user/${userId}/hwids` } /** * Get user's registered hardware IDs * @summary Get User Hwids */ -export const getUserHwids = (userId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${userId}/hwids`, method: 'GET', signal }) -} +export const getUserHwids = async (userId: number, options?: RequestInit): Promise => { + + return orvalFetcher(getGetUserHwidsUrl(userId), + { + ...options, + method: 'GET' + + + } +);} + + + -export const getGetUserHwidsQueryKey = (userId: number) => { - return [`/api/user/${userId}/hwids`] as const -} -export const getGetUserHwidsQueryOptions = >, TError = ErrorType>( - userId: number, - options?: { query?: Partial>, TError, TData>> }, +export const getGetUserHwidsQueryKey = (userId: number,) => { + return [ + `/api/user/${userId}/hwids` + ] as const; + } + + +export const getGetUserHwidsQueryOptions = >, TError = ErrorType>(userId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} ) => { - const { query: queryOptions } = options ?? {} - const queryKey = queryOptions?.queryKey ?? getGetUserHwidsQueryKey(userId) +const {query: queryOptions, request: requestOptions} = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetUserHwidsQueryKey(userId); + + + + const queryFn: QueryFunction>> = ({ signal }) => getUserHwids(userId, { signal, ...requestOptions }); + + - const queryFn: QueryFunction>> = ({ signal }) => getUserHwids(userId, signal) - return { queryKey, queryFn, enabled: !!userId, ...queryOptions } as UseQueryOptions>, TError, TData> & { queryKey: DataTag } + + return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions>, TError, TData> & { queryKey: DataTag } } export type GetUserHwidsQueryResult = NonNullable>> export type GetUserHwidsQueryError = ErrorType + export function useGetUserHwids>, TError = ErrorType>( - userId: number, - options: { - query: Partial>, TError, TData>> & Pick>, TError, TData>, 'initialData'> - }, -): DefinedUseQueryResult & { queryKey: DataTag } + userId: number, options: { query:Partial>, TError, TData>> & Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): DefinedUseQueryResult & { queryKey: DataTag } export function useGetUserHwids>, TError = ErrorType>( - userId: number, - options?: { - query?: Partial>, TError, TData>> & - Pick>, TError, TData>, 'initialData'> - }, -): UseQueryResult & { queryKey: DataTag } + userId: number, options?: { query?:Partial>, TError, TData>> & Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + > , 'initialData' + >, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } export function useGetUserHwids>, TError = ErrorType>( - userId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } + userId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } /** * @summary Get User Hwids */ export function useGetUserHwids>, TError = ErrorType>( - userId: number, - options?: { query?: Partial>, TError, TData>> }, -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getGetUserHwidsQueryOptions(userId, options) + userId: number, options?: { query?:Partial>, TError, TData>>, request?: SecondParameter} + , queryClient?: QueryClient + ): UseQueryResult & { queryKey: DataTag } { + + const queryOptions = getGetUserHwidsQueryOptions(userId,options) + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + + - const query = useQuery(queryOptions) as UseQueryResult & { queryKey: DataTag } - query.queryKey = queryOptions.queryKey - return query + + +export const getDeleteUserHwidUrl = (userId: number, + hwid: string,) => { + + + + + return `/api/user/${userId}/hwids/${hwid}` } /** * Delete a specific hardware ID from user * @summary Delete User Hwid */ -export const deleteUserHwid = (userId: number, hwid: string) => { - return orvalFetcher({ url: `/api/user/${userId}/hwids/${hwid}`, method: 'DELETE' }) -} +export const deleteUserHwid = async (userId: number, + hwid: string, options?: RequestInit): Promise => { -export const getDeleteUserHwidMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['deleteUserHwid'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getDeleteUserHwidUrl(userId,hwid), + { + ...options, + method: 'DELETE' - const mutationFn: MutationFunction>, { userId: number; hwid: string }> = props => { - const { userId, hwid } = props ?? {} - return deleteUserHwid(userId, hwid) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type DeleteUserHwidMutationResult = NonNullable>> -export type DeleteUserHwidMutationError = ErrorType -/** +export const getDeleteUserHwidMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;hwid: string}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number;hwid: string}, TContext> => { + +const mutationKey = ['deleteUserHwid']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {userId: number;hwid: string}> = (props) => { + const {userId,hwid} = props ?? {}; + + return deleteUserHwid(userId,hwid,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type DeleteUserHwidMutationResult = NonNullable>> + + export type DeleteUserHwidMutationError = ErrorType + + /** * @summary Delete User Hwid */ -export const useDeleteUserHwid = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getDeleteUserHwidMutationOptions(options) +export const useDeleteUserHwid = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number;hwid: string}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number;hwid: string}, + TContext + > => { + return useMutation(getDeleteUserHwidMutationOptions(options), queryClient); + } - return useMutation(mutationOptions) +export const getResetUserHwidsUrl = (userId: number,) => { + + + + + return `/api/user/${userId}/hwids/reset` } /** * Delete all hardware IDs for user * @summary Reset User Hwids */ -export const resetUserHwids = (userId: number, signal?: AbortSignal) => { - return orvalFetcher({ url: `/api/user/${userId}/hwids/reset`, method: 'POST', signal }) -} +export const resetUserHwids = async (userId: number, options?: RequestInit): Promise => { -export const getResetUserHwidsMutationOptions = < - TData = Awaited>, - TError = ErrorType, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions -}) => { - const mutationKey = ['resetUserHwids'] - const { mutation: mutationOptions } = options - ? options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } } + return orvalFetcher(getResetUserHwidsUrl(userId), + { + ...options, + method: 'POST' - const mutationFn: MutationFunction>, { userId: number }> = props => { - const { userId } = props ?? {} - return resetUserHwids(userId) } +);} - return { mutationFn, ...mutationOptions } as UseMutationOptions -} -export type ResetUserHwidsMutationResult = NonNullable>> -export type ResetUserHwidsMutationError = ErrorType -/** +export const getResetUserHwidsMutationOptions = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} +): UseMutationOptions>, TError,{userId: number}, TContext> => { + +const mutationKey = ['resetUserHwids']; +const {mutation: mutationOptions, request: requestOptions} = options ? + options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ? + options + : {...options, mutation: {...options.mutation, mutationKey}} + : {mutation: { mutationKey, }, request: undefined}; + + + + + const mutationFn: MutationFunction>, {userId: number}> = (props) => { + const {userId} = props ?? {}; + + return resetUserHwids(userId,requestOptions) + } + + + + + + + return { mutationFn, ...mutationOptions }} + + export type ResetUserHwidsMutationResult = NonNullable>> + + export type ResetUserHwidsMutationError = ErrorType + + /** * @summary Reset User Hwids */ -export const useResetUserHwids = >, TError = ErrorType, TContext = unknown>(options?: { - mutation?: UseMutationOptions -}): UseMutationResult => { - const mutationOptions = getResetUserHwidsMutationOptions(options) - - return useMutation(mutationOptions) -} +export const useResetUserHwids = , + TContext = unknown>(options?: { mutation?:UseMutationOptions>, TError,{userId: number}, TContext>, request?: SecondParameter} + , queryClient?: QueryClient): UseMutationResult< + Awaited>, + TError, + {userId: number}, + TContext + > => { + return useMutation(getResetUserHwidsMutationOptions(options), queryClient); + } diff --git a/dashboard/src/service/http.ts b/dashboard/src/service/http.ts index 6fb50cd0..f37ba3c6 100644 --- a/dashboard/src/service/http.ts +++ b/dashboard/src/service/http.ts @@ -1,3 +1,4 @@ +import { handleUnauthorized } from '@/utils/authSession' import { getAuthToken } from '@/utils/authStorage' import { dateUtils } from '@/utils/dateFormatter' import { FetchError, FetchOptions, $fetch as ofetch } from 'ofetch' @@ -9,19 +10,15 @@ export const $fetch = ofetch.create({ options.headers.set('X-Client-Timezone', dateUtils.getSystemTimeZone()) options.headers.set('X-Client-Timezone-Offset-Minutes', String(-new Date().getTimezoneOffset())) if (token) { - options.headers.set('Authorization', `Bearer ${getAuthToken()}`) + options.headers.set('Authorization', `Bearer ${token}`) } }, }) export const fetcher = (url: string, ops: FetchOptions<'json'> = {}) => { - return $fetch(url, ops).catch(e => { + return $fetch(url, ops).catch(async e => { if (e.status === 401) { - const url = new URL(window.location.href) - if (url.hash !== '#/login') { - url.hash = '#/login' - window.location.href = url.href - } + await handleUnauthorized() } throw e }) @@ -32,39 +29,64 @@ export const fetch = fetcher export type ErrorType = FetchError<{ detail: Error }> export type BodyType = BodyData -type OvalFetcherParams = FetchOptions<'json'> & { - url: string - method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' +type OrvalFetchMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' +type OrvalRequestBody = RequestInit['body'] + +type OrvalFetchOptions = Omit, 'body' | 'headers' | 'method' | 'params'> & { + method: OrvalFetchMethod + body?: OrvalRequestBody + headers?: HeadersInit params?: Record - data?: FetchOptions<'json'>['body'] + data?: OrvalRequestBody +} + +const isPlainObject = (value: unknown): value is Record => { + return Object.prototype.toString.call(value) === '[object Object]' } -export const orvalFetcher = async ({ url, method, params, data: body }: OvalFetcherParams): Promise => { + +const hasReactQueryOptions = (value: unknown): value is { staleTime?: unknown; gcTime?: unknown; retry?: unknown } => { + if (!value || typeof value !== 'object') { + return false + } + + return 'staleTime' in value || 'gcTime' in value || 'retry' in value +} + +export async function orvalFetcher(url: string, options: OrvalFetchOptions): Promise { + const { method, params, data, body: requestBody, ...fetchOptions } = options + + let requestParams = params + let body = data ?? requestBody + if (method === 'GET') { // 1. If we have data in a GET request, it means arguments were shifted or // we manually passed data to rescue dropped parameters. if (body) { - if (typeof body === 'object' && !Array.isArray(body)) { - params = { ...params, ...(body as Record) } + if (isPlainObject(body)) { + const bodyParams: Record = body + requestParams = { ...(requestParams ?? {}), ...bodyParams } } else if (Array.isArray(body)) { // Specifically for cases like Admin list where the 'body' is actually a sort array - params = { ...params, sort: body.join(',') } + requestParams = { ...requestParams, sort: body.join(',') } } body = undefined } // 2. If 'query' is present in params, check if it looks like React Query options. - if (params && 'query' in params) { - const queryVal = (params as any).query - if (queryVal && typeof queryVal === 'object' && ('staleTime' in queryVal || 'gcTime' in queryVal || 'retry' in queryVal)) { - const { query: _query, ...rest } = params as any - params = rest + if (requestParams && 'query' in requestParams) { + const queryVal = requestParams.query + if (hasReactQueryOptions(queryVal)) { + const nextParams: Record = { ...requestParams } + delete nextParams.query + requestParams = nextParams } } } return fetcher(url, { + ...fetchOptions, method, - params, + params: requestParams, body, }) } diff --git a/dashboard/src/utils/authSession.ts b/dashboard/src/utils/authSession.ts new file mode 100644 index 00000000..9bd44678 --- /dev/null +++ b/dashboard/src/utils/authSession.ts @@ -0,0 +1,33 @@ +import { removeAuthToken } from '@/utils/authStorage' +import { queryClient } from '@/utils/query-client' + +let clearAuthSessionPromise: Promise | null = null + +export const clearAuthSession = () => { + if (!clearAuthSessionPromise) { + clearAuthSessionPromise = (async () => { + await queryClient.cancelQueries() + removeAuthToken() + queryClient.clear() + })().finally(() => { + clearAuthSessionPromise = null + }) + } + + return clearAuthSessionPromise +} + +export const redirectToLogin = () => { + if (typeof window === 'undefined') { + return + } + + if (window.location.hash !== '#/login') { + window.location.hash = '#/login' + } +} + +export const handleUnauthorized = async () => { + await clearAuthSession() + redirectToLogin() +}