@cartanova/qgrid-cli 2.9.7 → 2.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +3 -2
- package/bundle/dist/application/qgrid/qgrid.types.js +2 -2
- package/bundle/dist/application/request-log/request-log.model.js +2 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +4 -2
- package/bundle/dist/utils/providers/common/model-cost.js +3 -2
- package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +3 -2
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +86 -5
- package/bundle/src/application/qgrid/qgrid-image-generation.test.ts +7 -1
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +13 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +2 -1
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +2 -2
- package/bundle/src/application/qgrid/qgrid.types.ts +2 -2
- package/bundle/src/application/request-log/request-log.model.ts +2 -0
- package/bundle/src/application/sonamu.generated.http +4 -2
- package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +5 -1
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +4 -2
- package/bundle/src/utils/providers/common/model-cost.test.ts +1 -0
- package/bundle/src/utils/providers/common/model-cost.ts +3 -0
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +1 -1
- package/bundle/src/utils/providers/openai/openai-backend-protocol.test.ts +5 -0
- package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +2 -2
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +114 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +136 -1
- package/bundle/web-dist/client/assets/index-D8VwLsuq.js +106 -0
- package/bundle/web-dist/client/assets/index-D_sagzsR.css +1 -0
- package/bundle/web-dist/client/assets/logs-_T8KV5ne.js +1 -0
- package/bundle/web-dist/client/assets/{monit-7tcWgB20.js → monit-DRCrtO2j.js} +1 -1
- package/bundle/web-dist/client/assets/request-model-eygfdRv7.js +1 -0
- package/bundle/web-dist/client/assets/{routes-CSVp9aNn.js → routes-5A6mia6C.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-C6jfEwfK.js → services.generated-Bg2XkD-D.js} +1 -1
- package/bundle/web-dist/client/assets/settings-BpP9WVFI.js +1 -0
- package/bundle/web-dist/client/assets/show-D5ifZXdy.js +2 -0
- package/bundle/web-dist/client/assets/tokens-Cfe6WvLK.js +1 -0
- package/bundle/web-dist/client/assets/{use-oauth-login-flow-DTrmdduV.js → use-oauth-login-flow-BTLUGhwh.js} +1 -1
- package/bundle/web-dist/client/assets/{use-update-token-mutation-BIvO70-M.js → use-update-token-mutation-Dkv_HG-C.js} +1 -1
- package/bundle/web-dist/client/index.html +3 -3
- package/bundle/web-dist/server/assets/{lazyRouteComponent-C_k4R5n6.js → lazyRouteComponent-DyizoQKi.js} +2 -2
- package/bundle/web-dist/server/assets/{logs-lBOU5eUP.js → logs-DO8zBdBR.js} +12 -5
- package/bundle/web-dist/server/assets/{monit-BW2X1D23.js → monit-COH4MckI.js} +2 -2
- package/bundle/web-dist/server/assets/{plus-DilmHifT.js → plus-C1D8z9o0.js} +1 -1
- package/bundle/web-dist/server/assets/{react-dom-CHRRsKwb.js → react-dom-PfWvArTX.js} +1 -1
- package/bundle/web-dist/server/assets/request-model-DXclJfdP.js +13 -0
- package/bundle/web-dist/server/assets/{routes-B408iqh1.js → routes-Btja-741.js} +4 -4
- package/bundle/web-dist/server/assets/{services.generated-buX3cJzR.js → services.generated-BsKOUSXl.js} +1 -1
- package/bundle/web-dist/server/assets/{settings-CFoXQaAg.js → settings-DPcWGvy-.js} +3 -3
- package/bundle/web-dist/server/assets/{show-CcZJO6WF.js → show-CMXbb3TJ.js} +10 -4
- package/bundle/web-dist/server/assets/{tokens-C32lycTe.js → tokens-DAUmTrgO.js} +15 -11
- package/bundle/web-dist/server/assets/{use-oauth-login-flow-DCjxIa80.js → use-oauth-login-flow-GsGwqefs.js} +1 -1
- package/bundle/web-dist/server/assets/{use-update-token-mutation-CqK8i8Fa.js → use-update-token-mutation-RujWERvj.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +272 -51
- package/package.json +1 -1
- package/skills/qgrid/SKILL.md +10 -1
- package/skills/qgrid/references/anthropic-claude-code-runtime.md +3 -2
- package/skills/qgrid/references/decision-rationale.md +11 -2
- package/skills/qgrid/references/openai-codex-runtime.md +11 -1
- package/skills/qgrid/references/request-log-run-lifecycle.md +3 -1
- package/skills/qgrid/references/sonamu-api-web-flow.md +9 -1
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +2 -0
- package/skills/qgrid/references/verification-and-debugging.md +4 -1
- package/bundle/web-dist/client/assets/index-BshX4Gd8.css +0 -1
- package/bundle/web-dist/client/assets/index-D4MEKFjK.js +0 -106
- package/bundle/web-dist/client/assets/logs-BWhH8t7Y.js +0 -1
- package/bundle/web-dist/client/assets/settings-CYgR0YTh.js +0 -1
- package/bundle/web-dist/client/assets/show-Cg8n_Mxg.js +0 -2
- package/bundle/web-dist/client/assets/tokens-B5yg6bP1.js +0 -1
- /package/bundle/web-dist/client/assets/{plus-p4vtg6LN.js → plus-CknMNCP5.js} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as Link, o as useNavigate } from "./lazyRouteComponent-
|
|
1
|
+
import { S as require_react, h as string, m as object, n as QgridService, o as TokenService, p as number, r as RequestLogService, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
|
+
import { a as Link, o as useNavigate } from "./lazyRouteComponent-DyizoQKi.js";
|
|
3
3
|
import { n as Route } from "../entry-server.generated.js";
|
|
4
4
|
import { n as formatMicroUsd, r as formatUsd, t as cacheHitRate } from "./cost-CSH_t17I.js";
|
|
5
|
+
import { t as requestModelDisplay } from "./request-model-DXclJfdP.js";
|
|
5
6
|
require_react();
|
|
6
7
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
8
|
var lucideChevronLeft = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
@@ -51,17 +52,22 @@ function formatDuration(ms) {
|
|
|
51
52
|
const s = total % 60;
|
|
52
53
|
return m > 0 ? `${m}m ${s}s` : `${s}s`;
|
|
53
54
|
}
|
|
54
|
-
function RequestModel({ status, requestedModel, servedModel, fallbackCount }) {
|
|
55
|
+
function RequestModel({ status, requestedModel, servedModel, imageCostMethod, fallbackCount }) {
|
|
55
56
|
if (status === "running") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
56
57
|
className: "text-[9px] px-1.5 py-0.5 rounded-full bg-blue-100 text-blue-600 font-medium whitespace-nowrap",
|
|
57
58
|
children: "실행 중"
|
|
58
59
|
});
|
|
59
|
-
const
|
|
60
|
+
const modelDisplay = requestModelDisplay({
|
|
61
|
+
status,
|
|
62
|
+
requestedModel,
|
|
63
|
+
servedModel,
|
|
64
|
+
imageCostMethod
|
|
65
|
+
});
|
|
60
66
|
const hasRequestedOnly = requestedModel !== null && servedModel === null;
|
|
61
67
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
62
68
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
63
69
|
className: "text-xs text-sand-500",
|
|
64
|
-
children:
|
|
70
|
+
children: modelDisplay.label
|
|
65
71
|
}),
|
|
66
72
|
hasRequestedOnly && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
67
73
|
className: "ml-1 text-[9px] text-sand-400",
|
|
@@ -350,6 +356,7 @@ function RequestLogTable({ search, onSearchChange }) {
|
|
|
350
356
|
status: row.status,
|
|
351
357
|
requestedModel: row.requested_model_name,
|
|
352
358
|
servedModel: row.model_name,
|
|
359
|
+
imageCostMethod: row.image_cost_method,
|
|
353
360
|
fallbackCount: row.fallback_count
|
|
354
361
|
}), row.response_json_ok === false && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
355
362
|
title: "structured 요청의 응답이 JSON 파싱에 실패했습니다",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as require_react_dom } from "./react-dom-
|
|
1
|
+
import { H as __toESM, S as require_react, f as _enum, m as object, t as MonitService, v as useQuery, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
|
+
import { t as require_react_dom } from "./react-dom-PfWvArTX.js";
|
|
3
3
|
import { a as clsx, r as Route } from "../entry-server.generated.js";
|
|
4
4
|
import { t as cacheHitRate } from "./cost-CSH_t17I.js";
|
|
5
5
|
//#region ../../node_modules/.pnpm/@tanstack+virtual-core@3.17.4/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as require_react, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
2
|
require_react();
|
|
3
3
|
var import_jsx_runtime = require_jsx_runtime();
|
|
4
4
|
var lucidePlus = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as require_react, z as __commonJSMin } from "./services.generated-BsKOUSXl.js";
|
|
2
2
|
//#region ../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js
|
|
3
3
|
/**
|
|
4
4
|
* @license React
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/lib/request-model.ts
|
|
2
|
+
function requestModelDisplay({ status, requestedModel, servedModel, imageCostMethod }) {
|
|
3
|
+
if (status === "running") return { label: "실행 중" };
|
|
4
|
+
const loggedImageModel = /^(?:assumed|estimated):(gpt-image-[^:]+):/.exec(imageCostMethod ?? "")?.[1];
|
|
5
|
+
const imageModel = servedModel?.startsWith("openai/gpt-image-") ? servedModel : loggedImageModel ? `openai/${loggedImageModel}` : null;
|
|
6
|
+
if (imageModel) {
|
|
7
|
+
const sourceModel = requestedModel ?? servedModel;
|
|
8
|
+
return { label: sourceModel && sourceModel !== imageModel ? `${sourceModel} → ${imageModel}` : imageModel };
|
|
9
|
+
}
|
|
10
|
+
return { label: requestedModel && servedModel && requestedModel !== servedModel ? `${requestedModel} → ${servedModel}` : servedModel ?? requestedModel ?? "—" };
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { requestModelDisplay as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as require_react_dom } from "./react-dom-
|
|
1
|
+
import { H as __toESM, S as require_react, b as useQueryClient, n as QgridService, o as TokenService, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
|
+
import { t as require_react_dom } from "./react-dom-PfWvArTX.js";
|
|
3
3
|
import { i as Q } from "../entry-server.generated.js";
|
|
4
4
|
import { r as formatUsd } from "./cost-CSH_t17I.js";
|
|
5
|
-
import { t as useUpdateTokenMutation } from "./use-update-token-mutation-
|
|
6
|
-
import { n as OAuthCodeEntry, t as useOAuthLoginFlow } from "./use-oauth-login-flow-
|
|
5
|
+
import { t as useUpdateTokenMutation } from "./use-update-token-mutation-RujWERvj.js";
|
|
6
|
+
import { n as OAuthCodeEntry, t as useOAuthLoginFlow } from "./use-oauth-login-flow-GsGwqefs.js";
|
|
7
7
|
//#region ../../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.4/node_modules/@dnd-kit/utilities/dist/utilities.esm.js
|
|
8
8
|
var import_react_dom = /* @__PURE__ */ __toESM(require_react_dom());
|
|
9
9
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
@@ -23617,4 +23617,4 @@ RequestLogStepService.useRequestLogSteps, RequestLogStepService.useRequestLogSte
|
|
|
23617
23617
|
SettingService.useSettings, SettingService.useSettingsInfinite;
|
|
23618
23618
|
TokenService.useTokens, TokenService.useTokensInfinite;
|
|
23619
23619
|
//#endregion
|
|
23620
|
-
export {
|
|
23620
|
+
export { hashQueryKeyByOptions as A, __exportAll as B, Mutation as C, notifyManager as D, onlineManager as E, resolveStaleTime as F, __toESM as H, skipToken as I, focusManager as L, matchQuery as M, noop$2 as N, functionalUpdate as O, partialMatchKey as P, Subscribable as R, require_react as S, Query as T, __require as V, useMutation as _, SettingService as a, useQueryClient as b, isSonamuError as c, setLocale as d, _enum as f, isAxiosError as g, string as h, RequestLogStepService as i, matchMutation as j, hashKey as k, SD as l, object as m, QgridService as n, TokenService as o, number as p, RequestLogService as r, fetch$1 as s, MonitService as t, SUPPORTED_LOCALES as u, useQuery as v, infiniteQueryBehavior as w, require_jsx_runtime as x, QueryClientProvider as y, __commonJSMin as z };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as __toESM, S as require_react, a as SettingService, b as useQueryClient, c as isSonamuError, g as isAxiosError, n as QgridService, o as TokenService, v as useQuery, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
2
|
import { s as lucideRotateCcw } from "../entry-server.generated.js";
|
|
3
|
-
import { t as useUpdateTokenMutation } from "./use-update-token-mutation-
|
|
4
|
-
import { t as lucidePlus } from "./plus-
|
|
3
|
+
import { t as useUpdateTokenMutation } from "./use-update-token-mutation-RujWERvj.js";
|
|
4
|
+
import { t as lucidePlus } from "./plus-C1D8z9o0.js";
|
|
5
5
|
//#region ~icons/lucide/eye.jsx
|
|
6
6
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
7
7
|
var import_jsx_runtime = require_jsx_runtime();
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as Link } from "./lazyRouteComponent-
|
|
1
|
+
import { H as __toESM, S as require_react, i as RequestLogStepService, r as RequestLogService, v as useQuery, x as require_jsx_runtime, z as __commonJSMin } from "./services.generated-BsKOUSXl.js";
|
|
2
|
+
import { a as Link } from "./lazyRouteComponent-DyizoQKi.js";
|
|
3
3
|
import { c as remarkGfm, l as Markdown, o as lucideX, t as Route } from "../entry-server.generated.js";
|
|
4
4
|
import { n as formatMicroUsd, t as cacheHitRate } from "./cost-CSH_t17I.js";
|
|
5
|
+
import { t as requestModelDisplay } from "./request-model-DXclJfdP.js";
|
|
5
6
|
//#region ../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/extends.js
|
|
6
7
|
var require_extends = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
7
8
|
function _extends() {
|
|
@@ -2127,14 +2128,19 @@ function ErrorPanel({ message }) {
|
|
|
2127
2128
|
}
|
|
2128
2129
|
function HeaderBar({ data }) {
|
|
2129
2130
|
const isRunning = data.status === "running";
|
|
2130
|
-
const
|
|
2131
|
+
const modelDisplay = requestModelDisplay({
|
|
2132
|
+
status: data.status,
|
|
2133
|
+
requestedModel: data.requested_model_name,
|
|
2134
|
+
servedModel: data.model_name,
|
|
2135
|
+
imageCostMethod: data.image_cost_method
|
|
2136
|
+
});
|
|
2131
2137
|
const hasRequestedOnly = !isRunning && data.requested_model_name !== null && data.model_name === null;
|
|
2132
2138
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
2133
2139
|
className: "panel overflow-hidden px-4 py-3 flex flex-wrap items-center gap-x-2 gap-y-1.5 sm:px-5",
|
|
2134
2140
|
children: [
|
|
2135
2141
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
2136
2142
|
className: "text-[15px] font-semibold text-sand-900 break-all",
|
|
2137
|
-
children:
|
|
2143
|
+
children: modelDisplay.label === "—" ? "Unknown model" : modelDisplay.label
|
|
2138
2144
|
}),
|
|
2139
2145
|
hasRequestedOnly && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
2140
2146
|
className: "text-[10px] text-sand-400",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as __toESM, S as require_react, b as useQueryClient, n as QgridService, o as TokenService, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
2
|
import { i as Q, u as lucideKeyRound } from "../entry-server.generated.js";
|
|
3
|
-
import { t as useUpdateTokenMutation } from "./use-update-token-mutation-
|
|
4
|
-
import { n as OAuthCodeEntry, t as useOAuthLoginFlow } from "./use-oauth-login-flow-
|
|
5
|
-
import { t as lucidePlus } from "./plus-
|
|
3
|
+
import { t as useUpdateTokenMutation } from "./use-update-token-mutation-RujWERvj.js";
|
|
4
|
+
import { n as OAuthCodeEntry, t as useOAuthLoginFlow } from "./use-oauth-login-flow-GsGwqefs.js";
|
|
5
|
+
import { t as lucidePlus } from "./plus-C1D8z9o0.js";
|
|
6
6
|
//#region src/components/qgrid/AddTokenModal.tsx
|
|
7
7
|
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
|
|
8
8
|
var import_jsx_runtime = require_jsx_runtime();
|
|
@@ -139,6 +139,15 @@ var lucideTrash2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg",
|
|
|
139
139
|
})
|
|
140
140
|
});
|
|
141
141
|
//#endregion
|
|
142
|
+
//#region src/lib/token-label.ts
|
|
143
|
+
function maskAccessToken(credentials) {
|
|
144
|
+
if (!credentials || typeof credentials !== "object") return "—";
|
|
145
|
+
if ("authSource" in credentials && credentials.authSource === "system-keychain") return "System Keychain";
|
|
146
|
+
const token = "accessToken" in credentials ? credentials.accessToken : void 0;
|
|
147
|
+
if (typeof token !== "string" || !token) return "—";
|
|
148
|
+
return token.length <= 12 ? token : `${token.slice(0, 8)}...${token.slice(-4)}`;
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
142
151
|
//#region src/components/qgrid/TokenTable.tsx
|
|
143
152
|
function getExpiresAt(token) {
|
|
144
153
|
const c = token.credentials;
|
|
@@ -168,11 +177,6 @@ function formatExpiry(expiresAt) {
|
|
|
168
177
|
color: "text-sand-400"
|
|
169
178
|
};
|
|
170
179
|
}
|
|
171
|
-
function maskAccessToken(token) {
|
|
172
|
-
const at = token.credentials.accessToken;
|
|
173
|
-
if (at.length <= 12) return at;
|
|
174
|
-
return `${at.slice(0, 8)}...${at.slice(-4)}`;
|
|
175
|
-
}
|
|
176
180
|
function TokenTable({ data, isLoading }) {
|
|
177
181
|
const [deleteTarget, setDeleteTarget] = (0, import_react.useState)(null);
|
|
178
182
|
const [editTarget, setEditTarget] = (0, import_react.useState)(null);
|
|
@@ -281,7 +285,7 @@ function TokenTable({ data, isLoading }) {
|
|
|
281
285
|
className: "px-5 py-3",
|
|
282
286
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
283
287
|
className: "text-[13px] font-mono text-sand-800",
|
|
284
|
-
children: maskAccessToken(token)
|
|
288
|
+
children: maskAccessToken(token.credentials)
|
|
285
289
|
})
|
|
286
290
|
}),
|
|
287
291
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
|
|
@@ -393,7 +397,7 @@ function TokenTable({ data, isLoading }) {
|
|
|
393
397
|
" ",
|
|
394
398
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
395
399
|
className: "text-[13px] font-mono text-sand-800",
|
|
396
|
-
children: maskAccessToken(deleteTarget)
|
|
400
|
+
children: maskAccessToken(deleteTarget.credentials)
|
|
397
401
|
}),
|
|
398
402
|
deleteTarget.name && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
399
403
|
className: "text-sand-500",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as __toESM, S as require_react, b as useQueryClient, n as QgridService, x as require_jsx_runtime } from "./services.generated-BsKOUSXl.js";
|
|
2
2
|
import { i as Q } from "../entry-server.generated.js";
|
|
3
3
|
//#region src/components/qgrid/OAuthCodeEntry.tsx
|
|
4
4
|
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as useMutation, n as QgridService } from "./services.generated-BsKOUSXl.js";
|
|
2
2
|
//#region src/services/token/use-update-token-mutation.ts
|
|
3
3
|
function useUpdateTokenMutation() {
|
|
4
4
|
return useMutation({ mutationFn: ({ id, name, quotaThreshold, weight, keepaliveEnabled }) => QgridService.updateToken(id, name, quotaThreshold, weight, keepaliveEnabled) });
|