@cartanova/qgrid-cli 1.0.4 → 1.1.0
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/pool.js +15 -6
- package/bundle/dist/application/qgrid/qgrid.frame.js +17 -22
- package/bundle/dist/application/qgrid/qgrid.types.js +5 -2
- package/bundle/dist/application/request-log/request-log.model.js +2 -2
- package/bundle/dist/sonamu.config.js +5 -2
- package/bundle/src/application/qgrid/pool.ts +17 -7
- package/bundle/src/application/qgrid/qgrid.frame.ts +18 -25
- package/bundle/src/application/qgrid/qgrid.types.ts +1 -1
- package/bundle/src/application/request-log/request-log.model.ts +2 -2
- package/bundle/src/sonamu.config.ts +1 -1
- package/bundle/web-dist/{web-dist/client/assets/index-DlPchHBY.js → client/assets/index-C0m8rRjO.js} +2 -2
- package/bundle/web-dist/client/assets/{routes-CagDz23B.js → routes-B1eOXnpo.js} +1 -1
- package/bundle/web-dist/client/assets/{show-aXUGa0gm.js → show-BztN6MXO.js} +1 -1
- package/bundle/web-dist/client/assets/tokens-rR2_-Pte.js +1 -0
- package/bundle/web-dist/client/index.html +1 -1
- package/bundle/web-dist/server/assets/{tokens-JH6FsnWZ.js → tokens-ARL5AOAh.js} +4 -1
- package/bundle/web-dist/server/entry-server.generated.js +1 -1
- package/dist/cli.js +34 -25
- package/package.json +10 -10
- package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +0 -9
- package/bundle/dist/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +0 -6
- package/bundle/dist/dist/_virtual/_rolldown/runtime.js +0 -15
- package/bundle/dist/dist/application/qgrid/oauth.js +0 -140
- package/bundle/dist/dist/application/qgrid/pool.js +0 -100
- package/bundle/dist/dist/application/qgrid/qgrid.frame.js +0 -280
- package/bundle/dist/dist/application/qgrid/qgrid.types.js +0 -79
- package/bundle/dist/dist/application/qgrid/worker.js +0 -183
- package/bundle/dist/dist/application/queries.generated.js +0 -31
- package/bundle/dist/dist/application/request-log/request-log.model.js +0 -113
- package/bundle/dist/dist/application/request-log/request-log.types.js +0 -13
- package/bundle/dist/dist/application/sonamu.generated.js +0 -99
- package/bundle/dist/dist/application/sonamu.generated.sso.js +0 -34
- package/bundle/dist/dist/application/token/token.model.js +0 -157
- package/bundle/dist/dist/application/token/token.types.js +0 -22
- package/bundle/dist/dist/i18n/en.js +0 -63
- package/bundle/dist/dist/i18n/ko.js +0 -62
- package/bundle/dist/dist/i18n/sd.generated.js +0 -272
- package/bundle/dist/dist/index.js +0 -11
- package/bundle/dist/dist/migrations/20260410171405_create__request_logs.js +0 -26
- package/bundle/dist/dist/migrations/20260410171406_create__tokens.js +0 -24
- package/bundle/dist/dist/migrations/20260411120624_alter_tokens_alter2.js +0 -16
- package/bundle/dist/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -155
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_expect@4.1.2/node_modules/@vitest/expect/dist/index.js +0 -1484
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.2/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2746
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_runner@4.1.2/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_snapshot@4.1.2/node_modules/@vitest/snapshot/dist/index.js +0 -662
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_spy@4.1.2/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -82
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/constants.js +0 -48
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/diff.js +0 -1307
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/display.js +0 -558
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/error.js +0 -33
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/helpers.js +0 -226
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/source-map.js +0 -374
- package/bundle/dist/dist/node_modules/.pnpm/@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js +0 -37
- package/bundle/dist/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2886
- package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
- package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
- package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
- package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
- package/bundle/dist/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
- package/bundle/dist/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1127
- package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
- package/bundle/dist/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
- package/bundle/dist/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -506
- package/bundle/dist/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -86
- package/bundle/dist/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.9.2_@emnapi_runtime@1.9.2_@types_node@25.0.7_esbuild@0.27.4_jiti@2.6.1_sass@1.98.0_tsx@4.21.0/node_modules/vite/dist/node/module-runner.js +0 -426
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -6
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +0 -16
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -59
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +0 -2910
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -44
- package/bundle/dist/dist/node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/index.js +0 -28
- package/bundle/dist/dist/sonamu.config.js +0 -196
- package/bundle/dist/dist/testing/fixture.js +0 -8
- package/bundle/dist/dist/testing/global.js +0 -9
- package/bundle/dist/dist/testing/setup-mocks.js +0 -17
- package/bundle/dist/dist/utils/subset-loaders.js +0 -12
- package/bundle/src/src/application/qgrid/oauth.ts +0 -181
- package/bundle/src/src/application/qgrid/pool.ts +0 -132
- package/bundle/src/src/application/qgrid/qgrid.frame.ts +0 -275
- package/bundle/src/src/application/qgrid/qgrid.types.ts +0 -117
- package/bundle/src/src/application/qgrid/worker.ts +0 -234
- package/bundle/src/src/application/queries.generated.ts +0 -59
- package/bundle/src/src/application/request-log/request-log.entity.json +0 -75
- package/bundle/src/src/application/request-log/request-log.model.ts +0 -155
- package/bundle/src/src/application/request-log/request-log.types.ts +0 -15
- package/bundle/src/src/application/sonamu.generated.http +0 -187
- package/bundle/src/src/application/sonamu.generated.sso.ts +0 -66
- package/bundle/src/src/application/sonamu.generated.ts +0 -135
- package/bundle/src/src/application/token/token.entity.json +0 -37
- package/bundle/src/src/application/token/token.model.ts +0 -160
- package/bundle/src/src/application/token/token.types.ts +0 -26
- package/bundle/src/src/i18n/en.ts +0 -59
- package/bundle/src/src/i18n/ko.ts +0 -59
- package/bundle/src/src/i18n/sd.generated.ts +0 -384
- package/bundle/src/src/index.ts +0 -6
- package/bundle/src/src/migrations/20260410171405_create__request_logs.ts +0 -23
- package/bundle/src/src/migrations/20260410171406_create__tokens.ts +0 -21
- package/bundle/src/src/migrations/20260411120624_alter_tokens_alter2.ts +0 -15
- package/bundle/src/src/sonamu.config.ts +0 -248
- package/bundle/src/src/testing/fixture.ts +0 -6
- package/bundle/src/src/testing/global.ts +0 -6
- package/bundle/src/src/testing/setup-mocks.ts +0 -44
- package/bundle/src/src/typings/fastify.d.ts +0 -8
- package/bundle/src/src/typings/sonamu.d.ts +0 -17
- package/bundle/src/src/utils/subset-loaders.ts +0 -11
- package/bundle/web-dist/client/assets/index-DlPchHBY.js +0 -116
- package/bundle/web-dist/client/assets/tokens-DRkXtZ3Q.js +0 -1
- package/bundle/web-dist/web-dist/client/assets/index-vZsvyuFn.css +0 -1
- package/bundle/web-dist/web-dist/client/assets/rolldown-runtime-Dw2cE7zH.js +0 -1
- package/bundle/web-dist/web-dist/client/assets/routes-CagDz23B.js +0 -1
- package/bundle/web-dist/web-dist/client/assets/sd.generated-BrQoQXvv.js +0 -47
- package/bundle/web-dist/web-dist/client/assets/services.generated-BspO2L0j.js +0 -1
- package/bundle/web-dist/web-dist/client/assets/show-aXUGa0gm.js +0 -29
- package/bundle/web-dist/web-dist/client/assets/tokens-DRkXtZ3Q.js +0 -1
- package/bundle/web-dist/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
- package/bundle/web-dist/web-dist/client/assets/vendor-tanstack-CUxlo6YN.js +0 -1
- package/bundle/web-dist/web-dist/client/index.html +0 -18
- package/bundle/web-dist/web-dist/server/assets/react-dom-CGIzOSuj.js +0 -335
- package/bundle/web-dist/web-dist/server/assets/routes-ClzReRep.js +0 -490
- package/bundle/web-dist/web-dist/server/assets/sd.generated-BnonqqKr.js +0 -21694
- package/bundle/web-dist/web-dist/server/assets/services.generated-D5ABD5fr.js +0 -836
- package/bundle/web-dist/web-dist/server/assets/show-C9pcdSxc.js +0 -23364
- package/bundle/web-dist/web-dist/server/assets/tokens-JH6FsnWZ.js +0 -860
- package/bundle/web-dist/web-dist/server/entry-server.generated.js +0 -44646
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
//#region src/application/qgrid/qgrid.types.ts
|
|
4
|
-
const QueryInput = z.object({
|
|
5
|
-
system: z.string().optional(),
|
|
6
|
-
prompt: z.string(),
|
|
7
|
-
timeout: z.number().optional()
|
|
8
|
-
});
|
|
9
|
-
const CliResult = z.object({
|
|
10
|
-
text: z.string(),
|
|
11
|
-
usage: z.object({
|
|
12
|
-
input_tokens: z.number(),
|
|
13
|
-
output_tokens: z.number(),
|
|
14
|
-
cache_creation_input_tokens: z.number(),
|
|
15
|
-
cache_read_input_tokens: z.number()
|
|
16
|
-
}),
|
|
17
|
-
durationMs: z.number(),
|
|
18
|
-
costUsd: z.number()
|
|
19
|
-
});
|
|
20
|
-
const PoolConfig = z.object({
|
|
21
|
-
tokens: z.array(z.string()),
|
|
22
|
-
size: z.number().optional(),
|
|
23
|
-
model: z.string().optional(),
|
|
24
|
-
timeout: z.number().optional(),
|
|
25
|
-
cwd: z.string().optional(),
|
|
26
|
-
maxCalls: z.number().optional()
|
|
27
|
-
});
|
|
28
|
-
const AddTokenInput = z.object({
|
|
29
|
-
token: z.string(),
|
|
30
|
-
name: z.string()
|
|
31
|
-
});
|
|
32
|
-
const RemoveTokenInput = z.object({ token: z.string() });
|
|
33
|
-
const TokenStats = z.object({
|
|
34
|
-
token: z.string(),
|
|
35
|
-
name: z.string(),
|
|
36
|
-
requests: z.number(),
|
|
37
|
-
active: z.boolean()
|
|
38
|
-
});
|
|
39
|
-
const OAuthStartResult = z.object({ authUrl: z.string() });
|
|
40
|
-
const RateLimit = z.object({
|
|
41
|
-
utilization: z.number().nullable(),
|
|
42
|
-
resets_at: z.string().nullable()
|
|
43
|
-
}).nullable();
|
|
44
|
-
const UsageResponse = z.object({
|
|
45
|
-
error: z.string().optional(),
|
|
46
|
-
five_hour: RateLimit.optional(),
|
|
47
|
-
seven_day: RateLimit.optional(),
|
|
48
|
-
seven_day_opus: RateLimit.optional(),
|
|
49
|
-
seven_day_sonnet: RateLimit.optional(),
|
|
50
|
-
seven_day_oauth_apps: RateLimit.optional(),
|
|
51
|
-
seven_day_cowork: RateLimit.optional(),
|
|
52
|
-
extra_usage: z.object({
|
|
53
|
-
is_enabled: z.boolean(),
|
|
54
|
-
monthly_limit: z.number().nullable(),
|
|
55
|
-
used_credits: z.number().nullable(),
|
|
56
|
-
utilization: z.number().nullable()
|
|
57
|
-
}).nullable().optional()
|
|
58
|
-
});
|
|
59
|
-
const HealthResponse = z.object({
|
|
60
|
-
status: z.string(),
|
|
61
|
-
workers: z.number(),
|
|
62
|
-
activeTokens: z.number()
|
|
63
|
-
});
|
|
64
|
-
var QuotaError = class extends Error {
|
|
65
|
-
code = "QUOTA_EXHAUSTED";
|
|
66
|
-
};
|
|
67
|
-
var TimeoutError = class extends Error {
|
|
68
|
-
code = "TIMEOUT";
|
|
69
|
-
};
|
|
70
|
-
var ProcessError = class extends Error {
|
|
71
|
-
code = "PROCESS_ERROR";
|
|
72
|
-
};
|
|
73
|
-
function maskToken(token) {
|
|
74
|
-
return token.length > 4 ? `...${token.slice(-4)}` : token;
|
|
75
|
-
}
|
|
76
|
-
//#endregion
|
|
77
|
-
export { AddTokenInput, CliResult, HealthResponse, OAuthStartResult, PoolConfig, ProcessError, QueryInput, QuotaError, RemoveTokenInput, TimeoutError, TokenStats, UsageResponse, maskToken };
|
|
78
|
-
|
|
79
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFF1ZXJ5SW5wdXQgPSB6Lm9iamVjdCh7XG4gIHN5c3RlbTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcm9tcHQ6IHouc3RyaW5nKCksXG4gIHRpbWVvdXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlcnlJbnB1dCA9IHouaW5mZXI8dHlwZW9mIFF1ZXJ5SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgQ2xpUmVzdWx0ID0gei5vYmplY3Qoe1xuICB0ZXh0OiB6LnN0cmluZygpLFxuICB1c2FnZTogei5vYmplY3Qoe1xuICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBvdXRwdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBjYWNoZV9yZWFkX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgfSksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIENsaVJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIENsaVJlc3VsdD47XG5cbi8vIOKUgOKUgOKUgCBQb29sIENvbmZpZyDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFBvb2xDb25maWcgPSB6Lm9iamVjdCh7XG4gIHRva2Vuczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgc2l6ZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aW1lb3V0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGN3ZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtYXhDYWxsczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBQb29sQ29uZmlnID0gei5pbmZlcjx0eXBlb2YgUG9vbENvbmZpZz47XG5cbi8vIOKUgOKUgOKUgCBUb2tlbiBNYW5hZ2VtZW50IOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgQWRkVG9rZW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgdG9rZW46IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIEFkZFRva2VuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBBZGRUb2tlbklucHV0PjtcblxuZXhwb3J0IGNvbnN0IFJlbW92ZVRva2VuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHRva2VuOiB6LnN0cmluZygpLFxufSk7XG5leHBvcnQgdHlwZSBSZW1vdmVUb2tlbklucHV0ID0gei5pbmZlcjx0eXBlb2YgUmVtb3ZlVG9rZW5JbnB1dD47XG5cbmV4cG9ydCBjb25zdCBUb2tlblN0YXRzID0gei5vYmplY3Qoe1xuICB0b2tlbjogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcmVxdWVzdHM6IHoubnVtYmVyKCksXG4gIGFjdGl2ZTogei5ib29sZWFuKCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuU3RhdHMgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN0YXRzPjtcblxuLy8g4pSA4pSA4pSAIE9BdXRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgT0F1dGhTdGFydFJlc3VsdCA9IHoub2JqZWN0KHtcbiAgYXV0aFVybDogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgT0F1dGhTdGFydFJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIE9BdXRoU3RhcnRSZXN1bHQ+O1xuXG5jb25zdCBSYXRlTGltaXQgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHV0aWxpemF0aW9uOiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgcmVzZXRzX2F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIH0pXG4gIC5udWxsYWJsZSgpO1xuXG5leHBvcnQgY29uc3QgVXNhZ2VSZXNwb25zZSA9IHoub2JqZWN0KHtcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZml2ZV9ob3VyOiBSYXRlTGltaXQub3B0aW9uYWwoKSxcbiAgc2V2ZW5fZGF5OiBSYXRlTGltaXQub3B0aW9uYWwoKSxcbiAgc2V2ZW5fZGF5X29wdXM6IFJhdGVMaW1pdC5vcHRpb25hbCgpLFxuICBzZXZlbl9kYXlfc29ubmV0OiBSYXRlTGltaXQub3B0aW9uYWwoKSxcbiAgc2V2ZW5fZGF5X29hdXRoX2FwcHM6IFJhdGVMaW1pdC5vcHRpb25hbCgpLFxuICBzZXZlbl9kYXlfY293b3JrOiBSYXRlTGltaXQub3B0aW9uYWwoKSxcbiAgZXh0cmFfdXNhZ2U6IHpcbiAgICAub2JqZWN0KHtcbiAgICAgIGlzX2VuYWJsZWQ6IHouYm9vbGVhbigpLFxuICAgICAgbW9udGhseV9saW1pdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgICAgdXNlZF9jcmVkaXRzOiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgICB1dGlsaXphdGlvbjogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgIH0pXG4gICAgLm51bGxhYmxlKClcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVXNhZ2VSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIFVzYWdlUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgSGVhbHRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgSGVhbHRoUmVzcG9uc2UgPSB6Lm9iamVjdCh7XG4gIHN0YXR1czogei5zdHJpbmcoKSxcbiAgd29ya2Vyczogei5udW1iZXIoKSxcbiAgYWN0aXZlVG9rZW5zOiB6Lm51bWJlcigpLFxufSk7XG5leHBvcnQgdHlwZSBIZWFsdGhSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEhlYWx0aFJlc3BvbnNlPjtcblxuLy8g4pSA4pSA4pSAIEVycm9ycyDilIDilIDilIBcblxuZXhwb3J0IGNsYXNzIFF1b3RhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlFVT1RBX0VYSEFVU1RFRFwiIGFzIGNvbnN0O1xufVxuZXhwb3J0IGNsYXNzIFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiVElNRU9VVFwiIGFzIGNvbnN0O1xufVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUFJPQ0VTU19FUlJPUlwiIGFzIGNvbnN0O1xufVxuXG4vLyDilIDilIDilIAgVXRpbHMg4pSA4pSA4pSAXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXNrVG9rZW4odG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0b2tlbi5sZW5ndGggPiA0ID8gYC4uLiR7dG9rZW4uc2xpY2UoLTQpfWAgOiB0b2tlbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxhQUFhLEVBQUUsT0FBTztDQUNqQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQVU7Q0FDN0IsUUFBUSxFQUFFLFFBQVE7Q0FDbEIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxVQUFVO0NBQy9CLENBQUM7QUFHRixNQUFhLFlBQVksRUFBRSxPQUFPO0NBQ2hDLE1BQU0sRUFBRSxRQUFRO0NBQ2hCLE9BQU8sRUFBRSxPQUFPO0VBQ2QsY0FBYyxFQUFFLFFBQVE7RUFDeEIsZUFBZSxFQUFFLFFBQVE7RUFDekIsNkJBQTZCLEVBQUUsUUFBUTtFQUN2Qyx5QkFBeUIsRUFBRSxRQUFRO0VBQ3BDLENBQUM7Q0FDRixZQUFZLEVBQUUsUUFBUTtDQUN0QixTQUFTLEVBQUUsUUFBUTtDQUNwQixDQUFDO0FBS0YsTUFBYSxhQUFhLEVBQUUsT0FBTztDQUNqQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztDQUMzQixNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVU7Q0FDM0IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxVQUFVO0NBQzVCLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVTtDQUM5QixLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVU7Q0FDMUIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0NBQ2hDLENBQUM7QUFLRixNQUFhLGdCQUFnQixFQUFFLE9BQU87Q0FDcEMsT0FBTyxFQUFFLFFBQVE7Q0FDakIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUdGLE1BQWEsbUJBQW1CLEVBQUUsT0FBTyxFQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUNsQixDQUFDO0FBR0YsTUFBYSxhQUFhLEVBQUUsT0FBTztDQUNqQyxPQUFPLEVBQUUsUUFBUTtDQUNqQixNQUFNLEVBQUUsUUFBUTtDQUNoQixVQUFVLEVBQUUsUUFBUTtDQUNwQixRQUFRLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBS0YsTUFBYSxtQkFBbUIsRUFBRSxPQUFPLEVBQ3ZDLFNBQVMsRUFBRSxRQUFRLEVBQ3BCLENBQUM7QUFHRixNQUFNLFlBQVksRUFDZixPQUFPO0NBQ04sYUFBYSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0NBQ2xDLFdBQVcsRUFBRSxRQUFRLENBQUMsVUFBVTtDQUNqQyxDQUFDLENBQ0QsVUFBVTtBQUViLE1BQWEsZ0JBQWdCLEVBQUUsT0FBTztDQUNwQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVU7Q0FDNUIsV0FBVyxVQUFVLFVBQVU7Q0FDL0IsV0FBVyxVQUFVLFVBQVU7Q0FDL0IsZ0JBQWdCLFVBQVUsVUFBVTtDQUNwQyxrQkFBa0IsVUFBVSxVQUFVO0NBQ3RDLHNCQUFzQixVQUFVLFVBQVU7Q0FDMUMsa0JBQWtCLFVBQVUsVUFBVTtDQUN0QyxhQUFhLEVBQ1YsT0FBTztFQUNOLFlBQVksRUFBRSxTQUFTO0VBQ3ZCLGVBQWUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUNwQyxjQUFjLEVBQUUsUUFBUSxDQUFDLFVBQVU7RUFDbkMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQ25DLENBQUMsQ0FDRCxVQUFVLENBQ1YsVUFBVTtDQUNkLENBQUM7QUFLRixNQUFhLGlCQUFpQixFQUFFLE9BQU87Q0FDckMsUUFBUSxFQUFFLFFBQVE7Q0FDbEIsU0FBUyxFQUFFLFFBQVE7Q0FDbkIsY0FBYyxFQUFFLFFBQVE7Q0FDekIsQ0FBQztBQUtGLElBQWEsYUFBYixjQUFnQyxNQUFNO0NBQ3BDLE9BQWdCOztBQUVsQixJQUFhLGVBQWIsY0FBa0MsTUFBTTtDQUN0QyxPQUFnQjs7QUFFbEIsSUFBYSxlQUFiLGNBQWtDLE1BQU07Q0FDdEMsT0FBZ0I7O0FBS2xCLFNBQWdCLFVBQVUsT0FBdUI7QUFDL0MsUUFBTyxNQUFNLFNBQVMsSUFBSSxNQUFNLE1BQU0sTUFBTSxHQUFHLEtBQUsifQ==
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { ProcessError, QuotaError, TimeoutError, maskToken } from "./qgrid.types.js";
|
|
3
|
-
import { spawn } from "node:child_process";
|
|
4
|
-
import { mkdirSync } from "node:fs";
|
|
5
|
-
//#region src/application/qgrid/worker.ts
|
|
6
|
-
/**
|
|
7
|
-
* Worker — Claude CLI stream-json 프로세스 하나를 관리.
|
|
8
|
-
*
|
|
9
|
-
* 기존 SocratsAI ClaudeCliService에서 추출 + 리팩터:
|
|
10
|
-
* - 토큰/모델을 생성자에서 주입
|
|
11
|
-
* - env allowlist (PATH, HOME, TMPDIR, CLAUDE_CODE_OAUTH_TOKEN만)
|
|
12
|
-
* - callCount 추적 + maxCalls 도달 시 프로세스 재활용
|
|
13
|
-
* - QuotaError/TimeoutError/ProcessError 구분
|
|
14
|
-
*/
|
|
15
|
-
var Worker = class {
|
|
16
|
-
tokenId;
|
|
17
|
-
config;
|
|
18
|
-
process = null;
|
|
19
|
-
buffer = "";
|
|
20
|
-
pending = null;
|
|
21
|
-
sessionId = null;
|
|
22
|
-
queue = [];
|
|
23
|
-
cwdCreated = false;
|
|
24
|
-
callCount = 0;
|
|
25
|
-
needsRecycle = false;
|
|
26
|
-
constructor(config) {
|
|
27
|
-
this.config = config;
|
|
28
|
-
this.tokenId = config.token;
|
|
29
|
-
}
|
|
30
|
-
getQueueDepth() {
|
|
31
|
-
return this.queue.length + (this.pending ? 1 : 0);
|
|
32
|
-
}
|
|
33
|
-
rejectPending(err) {
|
|
34
|
-
if (!this.pending) return;
|
|
35
|
-
this.pending.reject(err);
|
|
36
|
-
clearTimeout(this.pending.timer);
|
|
37
|
-
this.pending = null;
|
|
38
|
-
}
|
|
39
|
-
ensureProcess() {
|
|
40
|
-
if (this.process && this.process.exitCode === null && !this.needsRecycle) return this.process;
|
|
41
|
-
if (this.process && this.process.exitCode === null) {
|
|
42
|
-
this.process.kill();
|
|
43
|
-
this.process = null;
|
|
44
|
-
}
|
|
45
|
-
const env = {
|
|
46
|
-
PATH: process.env.PATH,
|
|
47
|
-
HOME: process.env.HOME,
|
|
48
|
-
TMPDIR: process.env.TMPDIR,
|
|
49
|
-
CLAUDE_CODE_OAUTH_TOKEN: this.config.token
|
|
50
|
-
};
|
|
51
|
-
const { cwd } = this.config;
|
|
52
|
-
if (!this.cwdCreated) {
|
|
53
|
-
mkdirSync(cwd, { recursive: true });
|
|
54
|
-
this.cwdCreated = true;
|
|
55
|
-
}
|
|
56
|
-
const child = spawn("claude", [
|
|
57
|
-
"-p",
|
|
58
|
-
"--input-format",
|
|
59
|
-
"stream-json",
|
|
60
|
-
"--output-format",
|
|
61
|
-
"stream-json",
|
|
62
|
-
"--verbose",
|
|
63
|
-
"--max-turns",
|
|
64
|
-
"1",
|
|
65
|
-
"--model",
|
|
66
|
-
this.config.model
|
|
67
|
-
], {
|
|
68
|
-
stdio: [
|
|
69
|
-
"pipe",
|
|
70
|
-
"pipe",
|
|
71
|
-
"ignore"
|
|
72
|
-
],
|
|
73
|
-
env,
|
|
74
|
-
cwd
|
|
75
|
-
});
|
|
76
|
-
child.stdout?.on("data", (d) => {
|
|
77
|
-
this.buffer += d.toString();
|
|
78
|
-
this.processBuffer();
|
|
79
|
-
});
|
|
80
|
-
child.on("close", () => {
|
|
81
|
-
this.process = null;
|
|
82
|
-
this.rejectPending(new ProcessError(`CLI process closed (token: ${maskToken(this.tokenId)})`));
|
|
83
|
-
this.drainQueue();
|
|
84
|
-
});
|
|
85
|
-
child.on("error", (err) => {
|
|
86
|
-
this.process = null;
|
|
87
|
-
this.rejectPending(new ProcessError(`CLI process error: ${err.message} (token: ${maskToken(this.tokenId)})`));
|
|
88
|
-
this.drainQueue();
|
|
89
|
-
});
|
|
90
|
-
this.process = child;
|
|
91
|
-
this.buffer = "";
|
|
92
|
-
this.sessionId = null;
|
|
93
|
-
this.callCount = 0;
|
|
94
|
-
this.needsRecycle = false;
|
|
95
|
-
return child;
|
|
96
|
-
}
|
|
97
|
-
processBuffer() {
|
|
98
|
-
const lines = this.buffer.split("\n");
|
|
99
|
-
this.buffer = lines.pop() ?? "";
|
|
100
|
-
lines.filter((line) => line.trim() !== "").forEach((line) => {
|
|
101
|
-
try {
|
|
102
|
-
const j = JSON.parse(line);
|
|
103
|
-
if (j.type === "system" && j.subtype === "init" && j.session_id) this.sessionId = j.session_id;
|
|
104
|
-
if (j.type === "result" && this.pending) {
|
|
105
|
-
let text = j.result ?? "";
|
|
106
|
-
text = text.replace(/^```(?:json)?\s*\n?/i, "").replace(/\n?```\s*$/i, "");
|
|
107
|
-
if (text.startsWith("You've hit")) {
|
|
108
|
-
this.pending.reject(new QuotaError(`Quota exhausted (token: ${maskToken(this.tokenId)})`));
|
|
109
|
-
clearTimeout(this.pending.timer);
|
|
110
|
-
this.pending = null;
|
|
111
|
-
this.drainQueue();
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const u = j.usage ?? {};
|
|
115
|
-
this.pending.resolve({
|
|
116
|
-
text,
|
|
117
|
-
usage: {
|
|
118
|
-
input_tokens: u.input_tokens ?? 0,
|
|
119
|
-
output_tokens: u.output_tokens ?? 0,
|
|
120
|
-
cache_creation_input_tokens: u.cache_creation_input_tokens ?? 0,
|
|
121
|
-
cache_read_input_tokens: u.cache_read_input_tokens ?? 0
|
|
122
|
-
},
|
|
123
|
-
durationMs: j.duration_ms ?? 0,
|
|
124
|
-
costUsd: j.total_cost_usd ?? 0
|
|
125
|
-
});
|
|
126
|
-
clearTimeout(this.pending.timer);
|
|
127
|
-
this.pending = null;
|
|
128
|
-
this.drainQueue();
|
|
129
|
-
}
|
|
130
|
-
} catch {}
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
drainQueue() {
|
|
134
|
-
if (this.pending) return;
|
|
135
|
-
const next = this.queue.shift();
|
|
136
|
-
if (next) next();
|
|
137
|
-
}
|
|
138
|
-
async query(input, timeoutMs) {
|
|
139
|
-
if (this.pending) await new Promise((resolve) => {
|
|
140
|
-
this.queue.push(resolve);
|
|
141
|
-
});
|
|
142
|
-
const child = this.ensureProcess();
|
|
143
|
-
const timeout = timeoutMs ?? this.config.timeout;
|
|
144
|
-
this.callCount++;
|
|
145
|
-
if (this.callCount >= this.config.maxCalls) this.needsRecycle = true;
|
|
146
|
-
const prompt = input.system ? `${input.system}\n\n${input.prompt}` : input.prompt;
|
|
147
|
-
return new Promise((resolve, reject) => {
|
|
148
|
-
this.pending = {
|
|
149
|
-
resolve,
|
|
150
|
-
reject,
|
|
151
|
-
timer: setTimeout(() => {
|
|
152
|
-
this.pending = null;
|
|
153
|
-
reject(new TimeoutError(`Timeout after ${timeout / 1e3}s (token: ${maskToken(this.tokenId)})`));
|
|
154
|
-
this.kill();
|
|
155
|
-
}, timeout)
|
|
156
|
-
};
|
|
157
|
-
const msg = JSON.stringify({
|
|
158
|
-
type: "user",
|
|
159
|
-
message: {
|
|
160
|
-
role: "user",
|
|
161
|
-
content: prompt
|
|
162
|
-
},
|
|
163
|
-
session_id: this.sessionId ?? "default",
|
|
164
|
-
parent_tool_use_id: null
|
|
165
|
-
});
|
|
166
|
-
child.stdin?.write(`${msg}\n`);
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
kill() {
|
|
170
|
-
if (this.process && this.process.exitCode === null) this.process.kill();
|
|
171
|
-
this.process = null;
|
|
172
|
-
this.buffer = "";
|
|
173
|
-
this.sessionId = null;
|
|
174
|
-
this.callCount = 0;
|
|
175
|
-
this.needsRecycle = false;
|
|
176
|
-
this.rejectPending(new ProcessError(`Worker killed (token: ${maskToken(this.tokenId)})`));
|
|
177
|
-
this.drainQueue();
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
//#endregion
|
|
181
|
-
export { Worker };
|
|
182
|
-
|
|
183
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC93b3JrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXb3JrZXIg4oCUIENsYXVkZSBDTEkgc3RyZWFtLWpzb24g7ZSE66Gc7IS47IqkIO2VmOuCmOulvCDqtIDrpqwuXG4gKlxuICog6riw7KG0IFNvY3JhdHNBSSBDbGF1ZGVDbGlTZXJ2aWNl7JeQ7IScIOy2lOy2nCArIOumrO2Mqe2EsDpcbiAqIC0g7Yag7YGwL+uqqOuNuOydhCDsg53shLHsnpDsl5DshJwg7KO87J6FXG4gKiAtIGVudiBhbGxvd2xpc3QgKFBBVEgsIEhPTUUsIFRNUERJUiwgQ0xBVURFX0NPREVfT0FVVEhfVE9LRU7rp4wpXG4gKiAtIGNhbGxDb3VudCDstpTsoIEgKyBtYXhDYWxscyDrj4Tri6wg7IucIO2UhOuhnOyEuOyKpCDsnqztmZzsmqlcbiAqIC0gUXVvdGFFcnJvci9UaW1lb3V0RXJyb3IvUHJvY2Vzc0Vycm9yIOq1rOu2hFxuICovXG5pbXBvcnQgeyB0eXBlIENoaWxkUHJvY2Vzcywgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBta2RpclN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuXG5pbXBvcnQgdHlwZSB7IENsaVJlc3VsdCwgUXVlcnlJbnB1dCB9IGZyb20gXCIuL3FncmlkLnR5cGVzXCI7XG5pbXBvcnQgeyBtYXNrVG9rZW4sIFByb2Nlc3NFcnJvciwgUXVvdGFFcnJvciwgVGltZW91dEVycm9yIH0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxudHlwZSBQZW5kaW5nUmVxdWVzdCA9IHtcbiAgcmVzb2x2ZTogKHZhbHVlOiBDbGlSZXN1bHQpID0+IHZvaWQ7XG4gIHJlamVjdDogKHJlYXNvbjogRXJyb3IpID0+IHZvaWQ7XG4gIHRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFdvcmtlckNvbmZpZyA9IHtcbiAgdG9rZW46IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZztcbiAgdGltZW91dDogbnVtYmVyO1xuICBjd2Q6IHN0cmluZztcbiAgbWF4Q2FsbHM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZXIge1xuICB0b2tlbklkOiBzdHJpbmc7XG4gIGNvbmZpZzogV29ya2VyQ29uZmlnO1xuICBwcm9jZXNzOiBDaGlsZFByb2Nlc3MgfCBudWxsID0gbnVsbDtcbiAgYnVmZmVyID0gXCJcIjtcbiAgcGVuZGluZzogUGVuZGluZ1JlcXVlc3QgfCBudWxsID0gbnVsbDtcbiAgc2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcXVldWU6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gIGN3ZENyZWF0ZWQgPSBmYWxzZTtcbiAgY2FsbENvdW50ID0gMDtcbiAgbmVlZHNSZWN5Y2xlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBXb3JrZXJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnRva2VuSWQgPSBjb25maWcudG9rZW47XG4gIH1cblxuICBnZXRRdWV1ZURlcHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUubGVuZ3RoICsgKHRoaXMucGVuZGluZyA/IDEgOiAwKTtcbiAgfVxuXG4gIHJlamVjdFBlbmRpbmcoZXJyOiBFcnJvcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5wZW5kaW5nKSByZXR1cm47XG4gICAgdGhpcy5wZW5kaW5nLnJlamVjdChlcnIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnBlbmRpbmcudGltZXIpO1xuICAgIHRoaXMucGVuZGluZyA9IG51bGw7XG4gIH1cblxuICBlbnN1cmVQcm9jZXNzKCk6IENoaWxkUHJvY2VzcyB7XG4gICAgaWYgKHRoaXMucHJvY2VzcyAmJiB0aGlzLnByb2Nlc3MuZXhpdENvZGUgPT09IG51bGwgJiYgIXRoaXMubmVlZHNSZWN5Y2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb2Nlc3MgJiYgdGhpcy5wcm9jZXNzLmV4aXRDb2RlID09PSBudWxsKSB7XG4gICAgICB0aGlzLnByb2Nlc3Mua2lsbCgpO1xuICAgICAgdGhpcy5wcm9jZXNzID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnY6IE5vZGVKUy5Qcm9jZXNzRW52ID0ge1xuICAgICAgUEFUSDogcHJvY2Vzcy5lbnYuUEFUSCxcbiAgICAgIEhPTUU6IHByb2Nlc3MuZW52LkhPTUUsXG4gICAgICBUTVBESVI6IHByb2Nlc3MuZW52LlRNUERJUixcbiAgICAgIENMQVVERV9DT0RFX09BVVRIX1RPS0VOOiB0aGlzLmNvbmZpZy50b2tlbixcbiAgICB9O1xuXG4gICAgY29uc3QgeyBjd2QgfSA9IHRoaXMuY29uZmlnO1xuICAgIGlmICghdGhpcy5jd2RDcmVhdGVkKSB7XG4gICAgICBta2RpclN5bmMoY3dkLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuY3dkQ3JlYXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihcbiAgICAgIFwiY2xhdWRlXCIsXG4gICAgICBbXG4gICAgICAgIFwiLXBcIixcbiAgICAgICAgXCItLWlucHV0LWZvcm1hdFwiLFxuICAgICAgICBcInN0cmVhbS1qc29uXCIsXG4gICAgICAgIFwiLS1vdXRwdXQtZm9ybWF0XCIsXG4gICAgICAgIFwic3RyZWFtLWpzb25cIixcbiAgICAgICAgXCItLXZlcmJvc2VcIixcbiAgICAgICAgXCItLW1heC10dXJuc1wiLFxuICAgICAgICBcIjFcIixcbiAgICAgICAgXCItLW1vZGVsXCIsXG4gICAgICAgIHRoaXMuY29uZmlnLm1vZGVsLFxuICAgICAgXSxcbiAgICAgIHsgc3RkaW86IFtcInBpcGVcIiwgXCJwaXBlXCIsIFwiaWdub3JlXCJdLCBlbnYsIGN3ZCB9LFxuICAgICk7XG5cbiAgICBjaGlsZC5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoZDogQnVmZmVyKSA9PiB7XG4gICAgICB0aGlzLmJ1ZmZlciArPSBkLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnByb2Nlc3NCdWZmZXIoKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzID0gbnVsbDtcbiAgICAgIHRoaXMucmVqZWN0UGVuZGluZyhcbiAgICAgICAgbmV3IFByb2Nlc3NFcnJvcihgQ0xJIHByb2Nlc3MgY2xvc2VkICh0b2tlbjogJHttYXNrVG9rZW4odGhpcy50b2tlbklkKX0pYCksXG4gICAgICApO1xuICAgICAgdGhpcy5kcmFpblF1ZXVlKCk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgIHRoaXMucHJvY2VzcyA9IG51bGw7XG4gICAgICB0aGlzLnJlamVjdFBlbmRpbmcoXG4gICAgICAgIG5ldyBQcm9jZXNzRXJyb3IoYENMSSBwcm9jZXNzIGVycm9yOiAke2Vyci5tZXNzYWdlfSAodG9rZW46ICR7bWFza1Rva2VuKHRoaXMudG9rZW5JZCl9KWApLFxuICAgICAgKTtcbiAgICAgIHRoaXMuZHJhaW5RdWV1ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9jZXNzID0gY2hpbGQ7XG4gICAgdGhpcy5idWZmZXIgPSBcIlwiO1xuICAgIHRoaXMuc2Vzc2lvbklkID0gbnVsbDtcbiAgICB0aGlzLmNhbGxDb3VudCA9IDA7XG4gICAgdGhpcy5uZWVkc1JlY3ljbGUgPSBmYWxzZTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwcm9jZXNzQnVmZmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpbmVzID0gdGhpcy5idWZmZXIuc3BsaXQoXCJcXG5cIik7XG4gICAgdGhpcy5idWZmZXIgPSBsaW5lcy5wb3AoKSA/PyBcIlwiO1xuXG4gICAgbGluZXNcbiAgICAgIC5maWx0ZXIoKGxpbmUpID0+IGxpbmUudHJpbSgpICE9PSBcIlwiKVxuICAgICAgLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBqID0gSlNPTi5wYXJzZShsaW5lKTtcblxuICAgICAgICAgIGlmIChqLnR5cGUgPT09IFwic3lzdGVtXCIgJiYgai5zdWJ0eXBlID09PSBcImluaXRcIiAmJiBqLnNlc3Npb25faWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbklkID0gai5zZXNzaW9uX2lkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChqLnR5cGUgPT09IFwicmVzdWx0XCIgJiYgdGhpcy5wZW5kaW5nKSB7XG4gICAgICAgICAgICBsZXQgdGV4dDogc3RyaW5nID0gai5yZXN1bHQgPz8gXCJcIjtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL15gYGAoPzpqc29uKT9cXHMqXFxuPy9pLCBcIlwiKS5yZXBsYWNlKC9cXG4/YGBgXFxzKiQvaSwgXCJcIik7XG5cbiAgICAgICAgICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoXCJZb3UndmUgaGl0XCIpKSB7XG4gICAgICAgICAgICAgIHRoaXMucGVuZGluZy5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFF1b3RhRXJyb3IoYFF1b3RhIGV4aGF1c3RlZCAodG9rZW46ICR7bWFza1Rva2VuKHRoaXMudG9rZW5JZCl9KWApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wZW5kaW5nLnRpbWVyKTtcbiAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgdGhpcy5kcmFpblF1ZXVlKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdSA9IGoudXNhZ2UgPz8ge307XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcucmVzb2x2ZSh7XG4gICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgIHVzYWdlOiB7XG4gICAgICAgICAgICAgICAgaW5wdXRfdG9rZW5zOiB1LmlucHV0X3Rva2VucyA/PyAwLFxuICAgICAgICAgICAgICAgIG91dHB1dF90b2tlbnM6IHUub3V0cHV0X3Rva2VucyA/PyAwLFxuICAgICAgICAgICAgICAgIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VuczogdS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMgPz8gMCxcbiAgICAgICAgICAgICAgICBjYWNoZV9yZWFkX2lucHV0X3Rva2VuczogdS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyA/PyAwLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkdXJhdGlvbk1zOiBqLmR1cmF0aW9uX21zID8/IDAsXG4gICAgICAgICAgICAgIGNvc3RVc2Q6IGoudG90YWxfY29zdF91c2QgPz8gMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucGVuZGluZy50aW1lcik7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5kcmFpblF1ZXVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBza2lwIG5vbi1qc29uIGxpbmVzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZHJhaW5RdWV1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nKSByZXR1cm47XG4gICAgY29uc3QgbmV4dCA9IHRoaXMucXVldWUuc2hpZnQoKTtcbiAgICBpZiAobmV4dCkgbmV4dCgpO1xuICB9XG5cbiAgYXN5bmMgcXVlcnkoaW5wdXQ6IFF1ZXJ5SW5wdXQsIHRpbWVvdXRNcz86IG51bWJlcik6IFByb21pc2U8Q2xpUmVzdWx0PiB7XG4gICAgaWYgKHRoaXMucGVuZGluZykge1xuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKHJlc29sdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGQgPSB0aGlzLmVuc3VyZVByb2Nlc3MoKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gdGltZW91dE1zID8/IHRoaXMuY29uZmlnLnRpbWVvdXQ7XG5cbiAgICB0aGlzLmNhbGxDb3VudCsrO1xuICAgIGlmICh0aGlzLmNhbGxDb3VudCA+PSB0aGlzLmNvbmZpZy5tYXhDYWxscykge1xuICAgICAgdGhpcy5uZWVkc1JlY3ljbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb21wdCA9IGlucHV0LnN5c3RlbSA/IGAke2lucHV0LnN5c3RlbX1cXG5cXG4ke2lucHV0LnByb21wdH1gIDogaW5wdXQucHJvbXB0O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPENsaVJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIG5ldyBUaW1lb3V0RXJyb3IoYFRpbWVvdXQgYWZ0ZXIgJHt0aW1lb3V0IC8gMTAwMH1zICh0b2tlbjogJHttYXNrVG9rZW4odGhpcy50b2tlbklkKX0pYCksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMua2lsbCgpO1xuICAgICAgfSwgdGltZW91dCk7XG5cbiAgICAgIHRoaXMucGVuZGluZyA9IHsgcmVzb2x2ZSwgcmVqZWN0LCB0aW1lciB9O1xuXG4gICAgICBjb25zdCBtc2cgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHR5cGU6IFwidXNlclwiLFxuICAgICAgICBtZXNzYWdlOiB7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiBwcm9tcHQgfSxcbiAgICAgICAgc2Vzc2lvbl9pZDogdGhpcy5zZXNzaW9uSWQgPz8gXCJkZWZhdWx0XCIsXG4gICAgICAgIHBhcmVudF90b29sX3VzZV9pZDogbnVsbCxcbiAgICAgIH0pO1xuXG4gICAgICBjaGlsZC5zdGRpbj8ud3JpdGUoYCR7bXNnfVxcbmApO1xuICAgIH0pO1xuICB9XG5cbiAga2lsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzICYmIHRoaXMucHJvY2Vzcy5leGl0Q29kZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5wcm9jZXNzLmtpbGwoKTtcbiAgICB9XG4gICAgdGhpcy5wcm9jZXNzID0gbnVsbDtcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XG4gICAgdGhpcy5zZXNzaW9uSWQgPSBudWxsO1xuICAgIHRoaXMuY2FsbENvdW50ID0gMDtcbiAgICB0aGlzLm5lZWRzUmVjeWNsZSA9IGZhbHNlO1xuICAgIHRoaXMucmVqZWN0UGVuZGluZyhuZXcgUHJvY2Vzc0Vycm9yKGBXb3JrZXIga2lsbGVkICh0b2tlbjogJHttYXNrVG9rZW4odGhpcy50b2tlbklkKX0pYCkpO1xuICAgIHRoaXMuZHJhaW5RdWV1ZSgpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLElBQWEsU0FBYixNQUFvQjtDQUNsQjtDQUNBO0NBQ0EsVUFBK0I7Q0FDL0IsU0FBUztDQUNULFVBQWlDO0NBQ2pDLFlBQTJCO0NBQzNCLFFBQTJCLEVBQUU7Q0FDN0IsYUFBYTtDQUNiLFlBQVk7Q0FDWixlQUFlO0NBRWYsWUFBWSxRQUFzQjtBQUNoQyxPQUFLLFNBQVM7QUFDZCxPQUFLLFVBQVUsT0FBTzs7Q0FHeEIsZ0JBQXdCO0FBQ3RCLFNBQU8sS0FBSyxNQUFNLFVBQVUsS0FBSyxVQUFVLElBQUk7O0NBR2pELGNBQWMsS0FBa0I7QUFDOUIsTUFBSSxDQUFDLEtBQUssUUFBUztBQUNuQixPQUFLLFFBQVEsT0FBTyxJQUFJO0FBQ3hCLGVBQWEsS0FBSyxRQUFRLE1BQU07QUFDaEMsT0FBSyxVQUFVOztDQUdqQixnQkFBOEI7QUFDNUIsTUFBSSxLQUFLLFdBQVcsS0FBSyxRQUFRLGFBQWEsUUFBUSxDQUFDLEtB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
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
//#region src/application/queries.generated.ts
|
|
3
|
-
function createSSRQuery(modelName, methodName, params, serviceKey) {
|
|
4
|
-
return {
|
|
5
|
-
modelName,
|
|
6
|
-
methodName,
|
|
7
|
-
params,
|
|
8
|
-
serviceKey,
|
|
9
|
-
__brand: "SSRQuery"
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
let TokenService;
|
|
13
|
-
(function(_TokenService) {
|
|
14
|
-
_TokenService.getToken = (subset, id) => createSSRQuery("TokenModel", "findById", [subset, id], ["Token", "getToken"]);
|
|
15
|
-
_TokenService.getTokens = (subset, rawParams) => createSSRQuery("TokenModel", "findMany", [subset, rawParams], ["Token", "getTokens"]);
|
|
16
|
-
})(TokenService || (TokenService = {}));
|
|
17
|
-
let RequestLogService;
|
|
18
|
-
(function(_RequestLogService) {
|
|
19
|
-
_RequestLogService.getRequestLog = (subset, id) => createSSRQuery("RequestLogModel", "findById", [subset, id], ["RequestLog", "getRequestLog"]);
|
|
20
|
-
_RequestLogService.getRequestLogs = (subset, rawParams) => createSSRQuery("RequestLogModel", "findMany", [subset, rawParams], ["RequestLog", "getRequestLogs"]);
|
|
21
|
-
})(RequestLogService || (RequestLogService = {}));
|
|
22
|
-
let QgridService;
|
|
23
|
-
(function(_QgridService) {
|
|
24
|
-
_QgridService.stats = () => createSSRQuery("QgridFrame", "stats", [], ["Qgrid", "stats"]);
|
|
25
|
-
_QgridService.usage = (tokenName) => createSSRQuery("QgridFrame", "usage", [tokenName], ["Qgrid", "usage"]);
|
|
26
|
-
_QgridService.health = () => createSSRQuery("QgridFrame", "health", [], ["Qgrid", "health"]);
|
|
27
|
-
})(QgridService || (QgridService = {}));
|
|
28
|
-
//#endregion
|
|
29
|
-
export { QgridService, RequestLogService, TokenService };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5nZW5lcmF0ZWQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3F1ZXJpZXMuZ2VuZXJhdGVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cbi8qIG94bGludC1kaXNhYmxlICovXG5cbmltcG9ydCB0eXBlIHsgU1NSUXVlcnkgfSBmcm9tIFwic29uYW11L3NzclwiO1xuXG4vLyBTU1JRdWVyeSDtl6ztjbwg7ZWo7IiYXG5mdW5jdGlvbiBjcmVhdGVTU1JRdWVyeShcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgcGFyYW1zOiBhbnlbXSxcbiAgc2VydmljZUtleTogW3N0cmluZywgc3RyaW5nXSxcbik6IFNTUlF1ZXJ5IHtcbiAgcmV0dXJuIHsgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBwYXJhbXMsIHNlcnZpY2VLZXksIF9fYnJhbmQ6IFwiU1NSUXVlcnlcIiB9IGFzIFNTUlF1ZXJ5O1xufVxuXG5pbXBvcnQgeyBSZXF1ZXN0TG9nTGlzdFBhcmFtcyB9IGZyb20gXCIuL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLnR5cGVzXCI7XG5pbXBvcnQgeyBUb2tlblN1YnNldEtleSwgUmVxdWVzdExvZ1N1YnNldEtleSB9IGZyb20gXCIuL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFRva2VuTGlzdFBhcmFtcyB9IGZyb20gXCIuL3Rva2VuL3Rva2VuLnR5cGVzXCI7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVG9rZW5TZXJ2aWNlIHtcbiAgZXhwb3J0IGNvbnN0IGdldFRva2VuID0gPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBULCBpZDogbnVtYmVyKTogU1NSUXVlcnkgPT5cbiAgICBjcmVhdGVTU1JRdWVyeShcIlRva2VuTW9kZWxcIiwgXCJmaW5kQnlJZFwiLCBbc3Vic2V0LCBpZF0sIFtcIlRva2VuXCIsIFwiZ2V0VG9rZW5cIl0pO1xuXG4gIGV4cG9ydCBjb25zdCBnZXRUb2tlbnMgPSA8VCBleHRlbmRzIFRva2VuU3Vic2V0S2V5LCBMUCBleHRlbmRzIFRva2VuTGlzdFBhcmFtcz4oXG4gICAgc3Vic2V0OiBULFxuICAgIHJhd1BhcmFtcz86IExQLFxuICApOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiVG9rZW5Nb2RlbFwiLCBcImZpbmRNYW55XCIsIFtzdWJzZXQsIHJhd1BhcmFtc10sIFtcIlRva2VuXCIsIFwiZ2V0VG9rZW5zXCJdKTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBSZXF1ZXN0TG9nU2VydmljZSB7XG4gIGV4cG9ydCBjb25zdCBnZXRSZXF1ZXN0TG9nID0gPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5PihzdWJzZXQ6IFQsIGlkOiBudW1iZXIpOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiUmVxdWVzdExvZ01vZGVsXCIsIFwiZmluZEJ5SWRcIiwgW3N1YnNldCwgaWRdLCBbXCJSZXF1ZXN0TG9nXCIsIFwiZ2V0UmVxdWVzdExvZ1wiXSk7XG5cbiAgZXhwb3J0IGNvbnN0IGdldFJlcXVlc3RMb2dzID0gPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5LCBMUCBleHRlbmRzIFJlcXVlc3RMb2dMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoXG4gICAgICBcIlJlcXVlc3RMb2dNb2RlbFwiLFxuICAgICAgXCJmaW5kTWFueVwiLFxuICAgICAgW3N1YnNldCwgcmF3UGFyYW1zXSxcbiAgICAgIFtcIlJlcXVlc3RMb2dcIiwgXCJnZXRSZXF1ZXN0TG9nc1wiXSxcbiAgICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFFncmlkU2VydmljZSB7XG4gIGV4cG9ydCBjb25zdCBzdGF0cyA9ICgpOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiUWdyaWRGcmFtZVwiLCBcInN0YXRzXCIsIFtdLCBbXCJRZ3JpZFwiLCBcInN0YXRzXCJdKTtcblxuICBleHBvcnQgY29uc3QgdXNhZ2UgPSAodG9rZW5OYW1lPzogc3RyaW5nKTogU1NSUXVlcnkgPT5cbiAgICBjcmVhdGVTU1JRdWVyeShcIlFncmlkRnJhbWVcIiwgXCJ1c2FnZVwiLCBbdG9rZW5OYW1lXSwgW1wiUWdyaWRcIiwgXCJ1c2FnZVwiXSk7XG5cbiAgZXhwb3J0IGNvbnN0IGhlYWx0aCA9ICgpOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiUWdyaWRGcmFtZVwiLCBcImhlYWx0aFwiLCBbXSwgW1wiUWdyaWRcIiwgXCJoZWFsdGhcIl0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQVNBLFNBQVMsZUFDUCxXQUNBLFlBQ0EsUUFDQSxZQUNVO0FBQ1YsUUFBTztFQUFFO0VBQVc7RUFBWTtFQUFRO0VBQVksU0FBUztFQUFZOztBQU9wRSxJQUFBOztBQUNRLGVBQUEsWUFBc0MsUUFBVyxPQUM1RCxlQUFlLGNBQWMsWUFBWSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsU0FBUyxXQUFXLENBQUM7QUFFbEUsZUFBQSxhQUNYLFFBQ0EsY0FFQSxlQUFlLGNBQWMsWUFBWSxDQUFDLFFBQVEsVUFBVSxFQUFFLENBQUMsU0FBUyxZQUFZLENBQUM7dUNBQ3hGO0FBRU0sSUFBQTs7QUFDUSxvQkFBQSxpQkFBZ0QsUUFBVyxPQUN0RSxlQUFlLG1CQUFtQixZQUFZLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxjQUFjLGdCQUFnQixDQUFDO0FBRWpGLG9CQUFBLGtCQUNYLFFBQ0EsY0FFQSxlQUNFLG1CQUNBLFlBQ0EsQ0FBQyxRQUFRLFVBQVUsRUFDbkIsQ0FBQyxjQUFjLGlCQUFpQixDQUNqQztpREFDSjtBQUVNLElBQUE7O0FBQ1EsZUFBQSxjQUNYLGVBQWUsY0FBYyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsUUFBUSxDQUFDO0FBRWxELGVBQUEsU0FBUyxjQUNwQixlQUFlLGNBQWMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsUUFBUSxDQUFDO0FBRTNELGVBQUEsZUFDWCxlQUFlLGNBQWMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLFNBQVMsQ0FBQzt1Q0FDbEUifQ==
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { SD } from "../../i18n/sd.generated.js";
|
|
3
|
-
import { requestLogLoaderQueries, requestLogSubsetQueries } from "../sonamu.generated.sso.js";
|
|
4
|
-
import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js";
|
|
5
|
-
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
6
|
-
import { BadRequestException, BaseModelClass, NotFoundException, api, asArray, exhaustive } from "sonamu";
|
|
7
|
-
//#region src/application/request-log/request-log.model.ts
|
|
8
|
-
var RequestLogModelClass = class extends BaseModelClass {
|
|
9
|
-
constructor() {
|
|
10
|
-
super("RequestLog", requestLogSubsetQueries, requestLogLoaderQueries);
|
|
11
|
-
}
|
|
12
|
-
async findById(subset, id) {
|
|
13
|
-
const { rows } = await this.findMany(subset, {
|
|
14
|
-
id,
|
|
15
|
-
num: 1,
|
|
16
|
-
page: 1
|
|
17
|
-
});
|
|
18
|
-
if (!rows[0]) throw new NotFoundException(SD("error.entityNotFound")("RequestLog", id));
|
|
19
|
-
return rows[0];
|
|
20
|
-
}
|
|
21
|
-
async findOne(subset, listParams) {
|
|
22
|
-
const { rows } = await this.findMany(subset, {
|
|
23
|
-
...listParams,
|
|
24
|
-
num: 1,
|
|
25
|
-
page: 1
|
|
26
|
-
});
|
|
27
|
-
return rows[0] ?? null;
|
|
28
|
-
}
|
|
29
|
-
async findMany(subset, rawParams) {
|
|
30
|
-
const params = {
|
|
31
|
-
num: 24,
|
|
32
|
-
page: 1,
|
|
33
|
-
search: "id",
|
|
34
|
-
orderBy: "id-desc",
|
|
35
|
-
...rawParams
|
|
36
|
-
};
|
|
37
|
-
const { qb, onSubset: _ } = this.getSubsetQueries(subset);
|
|
38
|
-
if (params.id) qb.whereIn("request_logs.id", asArray(params.id));
|
|
39
|
-
if (params.token_name) qb.where("request_logs.token_name", params.token_name);
|
|
40
|
-
if (params.search && params.keyword && params.keyword.length > 0) if (params.search === "id") qb.where("request_logs.id", Number(params.keyword));
|
|
41
|
-
else if (params.search === "token_name") qb.where("request_logs.token_name", "like", `%${params.keyword}%`);
|
|
42
|
-
else if (params.search === "query") qb.where("request_logs.query", "like", `%${params.keyword}%`);
|
|
43
|
-
else throw new BadRequestException(SD("error.unknownSearchField")(params.search));
|
|
44
|
-
if (params.orderBy) if (params.orderBy === "id-desc") qb.orderBy("request_logs.id", "desc");
|
|
45
|
-
else exhaustive(params.orderBy);
|
|
46
|
-
const enhancers = this.createEnhancers({ A: (row) => ({ ...row }) });
|
|
47
|
-
return this.executeSubsetQuery({
|
|
48
|
-
subset,
|
|
49
|
-
qb,
|
|
50
|
-
params,
|
|
51
|
-
enhancers,
|
|
52
|
-
debug: false
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
async save(spa) {
|
|
56
|
-
const wdb = this.getPuri("w");
|
|
57
|
-
spa.forEach((sp) => {
|
|
58
|
-
wdb.ubRegister("request_logs", sp);
|
|
59
|
-
});
|
|
60
|
-
return wdb.transaction(async (trx) => {
|
|
61
|
-
return await trx.ubUpsert("request_logs");
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
async del(ids) {
|
|
65
|
-
await this.getPuri("w").transaction(async (trx) => {
|
|
66
|
-
return trx.table("request_logs").whereIn("request_logs.id", ids).delete();
|
|
67
|
-
});
|
|
68
|
-
return ids.length;
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
__decorate([
|
|
72
|
-
api({
|
|
73
|
-
httpMethod: "GET",
|
|
74
|
-
clients: ["axios", "tanstack-query"],
|
|
75
|
-
resourceName: "RequestLog"
|
|
76
|
-
}),
|
|
77
|
-
__decorateMetadata("design:type", Function),
|
|
78
|
-
__decorateMetadata("design:paramtypes", [Object, Number]),
|
|
79
|
-
__decorateMetadata("design:returntype", Promise)
|
|
80
|
-
], RequestLogModelClass.prototype, "findById", null);
|
|
81
|
-
__decorate([
|
|
82
|
-
api({
|
|
83
|
-
httpMethod: "GET",
|
|
84
|
-
clients: ["axios", "tanstack-query"],
|
|
85
|
-
resourceName: "RequestLogs"
|
|
86
|
-
}),
|
|
87
|
-
__decorateMetadata("design:type", Function),
|
|
88
|
-
__decorateMetadata("design:paramtypes", [Object, Object]),
|
|
89
|
-
__decorateMetadata("design:returntype", Promise)
|
|
90
|
-
], RequestLogModelClass.prototype, "findMany", null);
|
|
91
|
-
__decorate([
|
|
92
|
-
api({
|
|
93
|
-
httpMethod: "POST",
|
|
94
|
-
clients: ["axios", "tanstack-mutation"]
|
|
95
|
-
}),
|
|
96
|
-
__decorateMetadata("design:type", Function),
|
|
97
|
-
__decorateMetadata("design:paramtypes", [Array]),
|
|
98
|
-
__decorateMetadata("design:returntype", Promise)
|
|
99
|
-
], RequestLogModelClass.prototype, "save", null);
|
|
100
|
-
__decorate([
|
|
101
|
-
api({
|
|
102
|
-
httpMethod: "POST",
|
|
103
|
-
clients: ["axios", "tanstack-mutation"]
|
|
104
|
-
}),
|
|
105
|
-
__decorateMetadata("design:type", Function),
|
|
106
|
-
__decorateMetadata("design:paramtypes", [Array]),
|
|
107
|
-
__decorateMetadata("design:returntype", Promise)
|
|
108
|
-
], RequestLogModelClass.prototype, "del", null);
|
|
109
|
-
const RequestLogModel = new RequestLogModelClass();
|
|
110
|
-
//#endregion
|
|
111
|
-
export { RequestLogModel };
|
|
112
|
-
|
|
113
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cubW9kZWwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwaSxcbiAgYXNBcnJheSxcbiAgQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgQmFzZU1vZGVsQ2xhc3MsXG4gIGV4aGF1c3RpdmUsXG4gIHR5cGUgTGlzdFJlc3VsdCxcbiAgTm90Rm91bmRFeGNlcHRpb24sXG59IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vLi4vaTE4bi9zZC5nZW5lcmF0ZWRcIjtcbmltcG9ydCB0eXBlIHsgUmVxdWVzdExvZ1N1YnNldEtleSwgUmVxdWVzdExvZ1N1YnNldE1hcHBpbmcgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMsIHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvXCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RMb2dMaXN0UGFyYW1zLCBSZXF1ZXN0TG9nU2F2ZVBhcmFtcyB9IGZyb20gXCIuL3JlcXVlc3QtbG9nLnR5cGVzXCI7XG5cbi8qXG4gIFJlcXVlc3RMb2cgTW9kZWxcbiovXG5jbGFzcyBSZXF1ZXN0TG9nTW9kZWxDbGFzcyBleHRlbmRzIEJhc2VNb2RlbENsYXNzPFxuICBSZXF1ZXN0TG9nU3Vic2V0S2V5LFxuICBSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZyxcbiAgdHlwZW9mIHJlcXVlc3RMb2dTdWJzZXRRdWVyaWVzLFxuICB0eXBlb2YgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXNcbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlJlcXVlc3RMb2dcIiwgcmVxdWVzdExvZ1N1YnNldFF1ZXJpZXMsIHJlcXVlc3RMb2dMb2FkZXJRdWVyaWVzKTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiUmVxdWVzdExvZ1wiIH0pXG4gIGFzeW5jIGZpbmRCeUlkPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTxSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZ1tUXT4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShzdWJzZXQsIHtcbiAgICAgIGlkLFxuICAgICAgbnVtOiAxLFxuICAgICAgcGFnZTogMSxcbiAgICB9KTtcbiAgICBpZiAoIXJvd3NbMF0pIHtcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEV4Y2VwdGlvbihTRChcImVycm9yLmVudGl0eU5vdEZvdW5kXCIpKFwiUmVxdWVzdExvZ1wiLCBpZCkpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxUIGV4dGVuZHMgUmVxdWVzdExvZ1N1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGxpc3RQYXJhbXM6IFJlcXVlc3RMb2dMaXN0UGFyYW1zLFxuICApOiBQcm9taXNlPFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nW1RdIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgcm93cyB9ID0gYXdhaXQgdGhpcy5maW5kTWFueShzdWJzZXQsIHtcbiAgICAgIC4uLmxpc3RQYXJhbXMsXG4gICAgICBudW06IDEsXG4gICAgICBwYWdlOiAxLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvd3NbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdLCByZXNvdXJjZU5hbWU6IFwiUmVxdWVzdExvZ3NcIiB9KVxuICBhc3luYyBmaW5kTWFueTxUIGV4dGVuZHMgUmVxdWVzdExvZ1N1YnNldEtleSwgTFAgZXh0ZW5kcyBSZXF1ZXN0TG9nTGlzdFBhcmFtcz4oXG4gICAgc3Vic2V0OiBULFxuICAgIHJhd1BhcmFtcz86IExQLFxuICApOiBQcm9taXNlPExpc3RSZXN1bHQ8TFAsIFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nW1RdPj4ge1xuICAgIC8vIHBhcmFtcyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiaWRcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwiaWQtZGVzY1wiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzIFJlcXVlc3RMb2dMaXN0UGFyYW1zO1xuXG4gICAgLy8gYnVpbGQgcXVlcmllc1xuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcblxuICAgIC8vIGlkXG4gICAgaWYgKHBhcmFtcy5pZCkge1xuICAgICAgcWIud2hlcmVJbihcInJlcXVlc3RfbG9ncy5pZFwiLCBhc0FycmF5KHBhcmFtcy5pZCkpO1xuICAgIH1cblxuICAgIC8vIHRva2VuX25hbWUgZmlsdGVyICh0b0ZpbHRlcilcbiAgICBpZiAocGFyYW1zLnRva2VuX25hbWUpIHtcbiAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnRva2VuX25hbWVcIiwgcGFyYW1zLnRva2VuX25hbWUpO1xuICAgIH1cblxuICAgIC8vIHNlYXJjaC1rZXl3b3JkXG4gICAgaWYgKHBhcmFtcy5zZWFyY2ggJiYgcGFyYW1zLmtleXdvcmQgJiYgcGFyYW1zLmtleXdvcmQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwiaWRcIikge1xuICAgICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy5pZFwiLCBOdW1iZXIocGFyYW1zLmtleXdvcmQpKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJ0b2tlbl9uYW1lXCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLCBcImxpa2VcIiwgYCUke3BhcmFtcy5rZXl3b3JkfSVgKTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJxdWVyeVwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLnF1ZXJ5XCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJlcnJvci51bmtub3duU2VhcmNoRmllbGRcIikocGFyYW1zLnNlYXJjaCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9yZGVyQnlcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgIC8vIGRlZmF1bHQgb3JkZXJCeVxuICAgICAgaWYgKHBhcmFtcy5vcmRlckJ5ID09PSBcImlkLWRlc2NcIikge1xuICAgICAgICBxYi5vcmRlckJ5KFwicmVxdWVzdF9sb2dzLmlkXCIsIFwiZGVzY1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aGF1c3RpdmUocGFyYW1zLm9yZGVyQnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVuaGFuY2VycyA9IHRoaXMuY3JlYXRlRW5oYW5jZXJzKHtcbiAgICAgIEE6IChyb3cpID0+ICh7XG4gICAgICAgIC4uLnJvdyxcbiAgICAgICAgLy8g7ISc67iM7IWL67OE66GcIHZpcnR1YWwg7ZWE65OcIOqzhOyCsOuhnOyngSDstpTqsIBcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHFiLFxuICAgICAgcGFyYW1zLFxuICAgICAgZW5oYW5jZXJzLFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHNhdmUoc3BhOiBSZXF1ZXN0TG9nU2F2ZVBhcmFtc1tdKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHdkYiA9IHRoaXMuZ2V0UHVyaShcIndcIik7XG5cbiAgICAvLyByZWdpc3RlclxuICAgIHNwYS5mb3JFYWNoKChzcCkgPT4ge1xuICAgICAgd2RiLnViUmVnaXN0ZXIoXCJyZXF1ZXN0X2xvZ3NcIiwgc3ApO1xuICAgIH0pO1xuXG4gICAgLy8gdHJhbnNhY3Rpb25cbiAgICByZXR1cm4gd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRyeC51YlVwc2VydChcInJlcXVlc3RfbG9nc1wiKTtcblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9KTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBkZWwoaWRzOiBudW1iZXJbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCJyZXF1ZXN0X2xvZ3NcIikud2hlcmVJbihcInJlcXVlc3RfbG9ncy5pZFwiLCBpZHMpLmRlbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkcy5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFJlcXVlc3RM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
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { RequestLogBaseListParams, RequestLogBaseSchema } from "../sonamu.generated.js";
|
|
3
|
-
//#region src/application/request-log/request-log.types.ts
|
|
4
|
-
const RequestLogListParams = RequestLogBaseListParams;
|
|
5
|
-
const RequestLogSaveParams = RequestLogBaseSchema.partial({
|
|
6
|
-
id: true,
|
|
7
|
-
created_at: true,
|
|
8
|
-
token_name: true
|
|
9
|
-
});
|
|
10
|
-
//#endregion
|
|
11
|
-
export { RequestLogListParams, RequestLogSaveParams };
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zLCBSZXF1ZXN0TG9nQmFzZVNjaGVtYSB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5cbi8vIFJlcXVlc3RMb2cgLSBMaXN0UGFyYW1zXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ0xpc3RQYXJhbXMgPSBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXM7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nTGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dMaXN0UGFyYW1zPjtcblxuLy8gUmVxdWVzdExvZyAtIFNhdmVQYXJhbXNcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU2F2ZVBhcmFtcyA9IFJlcXVlc3RMb2dCYXNlU2NoZW1hLnBhcnRpYWwoe1xuICBpZDogdHJ1ZSxcbiAgY3JlYXRlZF9hdDogdHJ1ZSxcbiAgdG9rZW5fbmFtZTogdHJ1ZSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1NhdmVQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU2F2ZVBhcmFtcz47XG4iXSwibWFwcGluZ3MiOiI7OztBQUtBLE1BQWEsdUJBQXVCO0FBSXBDLE1BQWEsdUJBQXVCLHFCQUFxQixRQUFRO0NBQy9ELElBQUk7Q0FDSixZQUFZO0NBQ1osWUFBWTtDQUNiLENBQUMifQ==
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { SonamuQueryMode, zArrayable } from "sonamu";
|
|
4
|
-
//#region src/application/sonamu.generated.ts
|
|
5
|
-
/**
|
|
6
|
-
* @generated
|
|
7
|
-
* 직접 수정하지 마세요.
|
|
8
|
-
*/
|
|
9
|
-
const RequestLogOrderBy = z.enum(["id-desc"]).describe("RequestLogOrderBy");
|
|
10
|
-
const RequestLogOrderByLabel = { "id-desc": "ID최신순" };
|
|
11
|
-
const RequestLogSearchField = z.enum([
|
|
12
|
-
"id",
|
|
13
|
-
"token_name",
|
|
14
|
-
"query"
|
|
15
|
-
]).describe("RequestLogSearchField");
|
|
16
|
-
const RequestLogSearchFieldLabel = {
|
|
17
|
-
id: "ID",
|
|
18
|
-
token_name: "토큰이름",
|
|
19
|
-
query: "쿼리"
|
|
20
|
-
};
|
|
21
|
-
const TokenOrderBy = z.enum(["id-desc"]).describe("TokenOrderBy");
|
|
22
|
-
const TokenOrderByLabel = { "id-desc": "ID최신순" };
|
|
23
|
-
const TokenSearchField = z.enum(["id", "name"]).describe("TokenSearchField");
|
|
24
|
-
const TokenSearchFieldLabel = {
|
|
25
|
-
id: "ID",
|
|
26
|
-
name: "이름"
|
|
27
|
-
};
|
|
28
|
-
const RequestLogBaseSchema = z.object({
|
|
29
|
-
id: z.int(),
|
|
30
|
-
created_at: z.date(),
|
|
31
|
-
token_name: z.string().max(100),
|
|
32
|
-
query: z.string(),
|
|
33
|
-
response: z.string(),
|
|
34
|
-
input_tokens: z.int(),
|
|
35
|
-
output_tokens: z.int(),
|
|
36
|
-
cache_read_tokens: z.int(),
|
|
37
|
-
cache_creation_tokens: z.int(),
|
|
38
|
-
duration_ms: z.int()
|
|
39
|
-
});
|
|
40
|
-
const TokenBaseSchema = z.object({
|
|
41
|
-
id: z.int(),
|
|
42
|
-
created_at: z.date(),
|
|
43
|
-
token: z.string(),
|
|
44
|
-
name: z.string(),
|
|
45
|
-
refresh_token: z.string().nullable(),
|
|
46
|
-
expires_at: z.bigint().nullable(),
|
|
47
|
-
account_uuid: z.string().nullable(),
|
|
48
|
-
active: z.boolean()
|
|
49
|
-
});
|
|
50
|
-
const RequestLogBaseListParams = z.object({
|
|
51
|
-
num: z.number().int().nonnegative(),
|
|
52
|
-
page: z.number().int().min(1),
|
|
53
|
-
search: RequestLogSearchField,
|
|
54
|
-
keyword: z.string(),
|
|
55
|
-
orderBy: RequestLogOrderBy,
|
|
56
|
-
queryMode: SonamuQueryMode,
|
|
57
|
-
id: zArrayable(z.number().int().positive()),
|
|
58
|
-
sonamuFilter: z.custom(),
|
|
59
|
-
token_name: z.string().max(100)
|
|
60
|
-
}).partial();
|
|
61
|
-
const TokenBaseListParams = z.object({
|
|
62
|
-
num: z.number().int().nonnegative(),
|
|
63
|
-
page: z.number().int().min(1),
|
|
64
|
-
search: TokenSearchField,
|
|
65
|
-
keyword: z.string(),
|
|
66
|
-
orderBy: TokenOrderBy,
|
|
67
|
-
queryMode: SonamuQueryMode,
|
|
68
|
-
id: zArrayable(z.number().int().positive()),
|
|
69
|
-
sonamuFilter: z.custom(),
|
|
70
|
-
token: z.string()
|
|
71
|
-
}).partial();
|
|
72
|
-
const RequestLogSubsetA = z.object({
|
|
73
|
-
id: z.int(),
|
|
74
|
-
created_at: z.date(),
|
|
75
|
-
token_name: z.string().max(100),
|
|
76
|
-
query: z.string(),
|
|
77
|
-
response: z.string(),
|
|
78
|
-
input_tokens: z.int(),
|
|
79
|
-
output_tokens: z.int(),
|
|
80
|
-
cache_read_tokens: z.int(),
|
|
81
|
-
cache_creation_tokens: z.int(),
|
|
82
|
-
duration_ms: z.int()
|
|
83
|
-
});
|
|
84
|
-
const RequestLogSubsetKey = z.enum(["A"]);
|
|
85
|
-
const TokenSubsetA = z.object({
|
|
86
|
-
id: z.int(),
|
|
87
|
-
created_at: z.date(),
|
|
88
|
-
token: z.string(),
|
|
89
|
-
name: z.string(),
|
|
90
|
-
refresh_token: z.string().nullable(),
|
|
91
|
-
expires_at: z.bigint().nullable(),
|
|
92
|
-
account_uuid: z.string().nullable(),
|
|
93
|
-
active: z.boolean()
|
|
94
|
-
});
|
|
95
|
-
const TokenSubsetKey = z.enum(["A"]);
|
|
96
|
-
//#endregion
|
|
97
|
-
export { RequestLogBaseListParams, RequestLogBaseSchema, RequestLogOrderBy, RequestLogOrderByLabel, RequestLogSearchField, RequestLogSearchFieldLabel, RequestLogSubsetA, RequestLogSubsetKey, TokenBaseListParams, TokenBaseSchema, TokenOrderBy, TokenOrderByLabel, TokenSearchField, TokenSearchFieldLabel, TokenSubsetA, TokenSubsetKey };
|
|
98
|
-
|
|
99
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vc29uYW11LmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG4vKiBveGxpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyB6QXJyYXlhYmxlLCBTb25hbXVRdWVyeU1vZGUsIEFwcGx5U29uYW11RmlsdGVyIH0gZnJvbSBcInNvbmFtdVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8gRW51bXM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nT3JkZXJCeSA9IHouZW51bShbXCJpZC1kZXNjXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnlMYWJlbCA9IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiB9O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHpcbiAgLmVudW0oW1wiaWRcIiwgXCJ0b2tlbl9uYW1lXCIsIFwicXVlcnlcIl0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1NlYXJjaEZpZWxkTGFiZWwgPSB7IGlkOiBcIklEXCIsIHRva2VuX25hbWU6IFwi7Yag7YGw7J2066aEXCIsIHF1ZXJ5OiBcIuy/vOumrFwiIH07XG5cbi8vIEVudW1zOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuT3JkZXJCeSA9IHouZW51bShbXCJpZC1kZXNjXCJdKS5kZXNjcmliZShcIlRva2VuT3JkZXJCeVwiKTtcbmV4cG9ydCB0eXBlIFRva2VuT3JkZXJCeSA9IHouaW5mZXI8dHlwZW9mIFRva2VuT3JkZXJCeT47XG5leHBvcnQgY29uc3QgVG9rZW5PcmRlckJ5TGFiZWwgPSB7IFwiaWQtZGVzY1wiOiBcIklE7LWc7Iug7IicXCIgfTtcbmV4cG9ydCBjb25zdCBUb2tlblNlYXJjaEZpZWxkID0gei5lbnVtKFtcImlkXCIsIFwibmFtZVwiXSkuZGVzY3JpYmUoXCJUb2tlblNlYXJjaEZpZWxkXCIpO1xuZXhwb3J0IHR5cGUgVG9rZW5TZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFRva2VuU2VhcmNoRmllbGQ+O1xuZXhwb3J0IGNvbnN0IFRva2VuU2VhcmNoRmllbGRMYWJlbCA9IHsgaWQ6IFwiSURcIiwgbmFtZTogXCLsnbTrpoRcIiB9O1xuXG4vLyBCYXNlU2NoZW1hOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ0Jhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LmludCgpLFxuICBjcmVhdGVkX2F0OiB6LmRhdGUoKSxcbiAgdG9rZW5fbmFtZTogei5zdHJpbmcoKS5tYXgoMTAwKSxcbiAgcXVlcnk6IHouc3RyaW5nKCksXG4gIHJlc3BvbnNlOiB6LnN0cmluZygpLFxuICBpbnB1dF90b2tlbnM6IHouaW50KCksXG4gIG91dHB1dF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX3JlYWRfdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHouaW50KCksXG4gIGR1cmF0aW9uX21zOiB6LmludCgpLFxufSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nQmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dCYXNlU2NoZW1hPiAmIHtcbiAgcmVhZG9ubHkgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IFtcImNyZWF0ZWRfYXRcIiwgXCJpZFwiXTtcbn07XG5cbi8vIEJhc2VTY2hlbWE6IFRva2VuXG5leHBvcnQgY29uc3QgVG9rZW5CYXNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIHRva2VuOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICByZWZyZXNoX3Rva2VuOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGV4cGlyZXNfYXQ6IHouYmlnaW50KCkubnVsbGFibGUoKSxcbiAgYWNjb3VudF91dWlkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFjdGl2ZTogei5ib29sZWFuKCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuQmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIFRva2VuQmFzZVNjaGVtYT4gJiB7XG4gIHJlYWRvbmx5IF9faGFzRGVmYXVsdF9fOiByZWFkb25seSBbXG4gICAgXCJjcmVhdGVkX2F0XCIsXG4gICAgXCJyZWZyZXNoX3Rva2VuXCIsXG4gICAgXCJleHBpcmVzX2F0XCIsXG4gICAgXCJhY2NvdW50X3V1aWRcIixcbiAgICBcImFjdGl2ZVwiLFxuICAgIFwiaWRcIixcbiAgXTtcbn07XG5cbi8vIEJhc2VMaXN0UGFyYW1zOiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zID0gelxuICAub2JqZWN0KHtcbiAgICBudW06IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKSxcbiAgICBwYWdlOiB6Lm51bWJlcigpLmludCgpLm1pbigxKSxcbiAgICBzZWFyY2g6IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCxcbiAgICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICAgIG9yZGVyQnk6IFJlcXVlc3RMb2dPcmRlckJ5LFxuICAgIHF1ZXJ5TW9kZTogU29uYW11UXVlcnlNb2RlLFxuICAgIGlkOiB6QXJyYXlhYmxlKHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKSksXG4gICAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjxSZXF1ZXN0TG9nQmFzZVNjaGVtYSwgbmV2ZXIsIG5ldmVyPj4oKSxcbiAgICB0b2tlbl9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLFxuICB9KVxuICAucGFydGlhbCgpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ0Jhc2VMaXN0UGFyYW1zPjtcblxuLy8gQmFzZUxpc3RQYXJhbXM6IFRva2VuXG5leHBvcnQgY29uc3QgVG9rZW5CYXNlTGlzdFBhcmFtcyA9IHpcbiAgLm9iamVjdCh7XG4gICAgbnVtOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gICAgcGFnZTogei5udW1iZXIoKS5pbnQoKS5taW4oMSksXG4gICAgc2VhcmNoOiBUb2tlblNlYXJjaEZpZWxkLFxuICAgIGtleXdvcmQ6IHouc3RyaW5nKCksXG4gICAgb3JkZXJCeTogVG9rZW5PcmRlckJ5LFxuICAgIHF1ZXJ5TW9kZTogU29uYW11UXVlcnlNb2RlLFxuICAgIGlkOiB6QXJyYXlhYmxlKHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKSksXG4gICAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjxUb2tlbkJhc2VTY2hlbWEsIG5ldmVyLCBuZXZlcj4+KCksXG4gICAgdG9rZW46IHouc3RyaW5nKCksXG4gIH0pXG4gIC5wYXJ0aWFsKCk7XG5leHBvcnQgdHlwZSBUb2tlbkJhc2VMaXN0UGFyYW1zID0gei5pbmZlcjx0eXBlb2YgVG9rZW5CYXNlTGlzdFBhcmFtcz47XG5cbi8vIFN1YnNldHM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3Vic2V0QSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICB0b2tlbl9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLFxuICBxdWVyeTogei5zdHJpbmcoKSxcbiAgcmVzcG9uc2U6IHouc3RyaW5nKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKSxcbiAgZHVyYXRpb25fbXM6IHouaW50KCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTdWJzZXRBID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1N1YnNldEE+O1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldE1hcHBpbmcgPSB7XG4gIEE6IFJlcXVlc3RMb2dTdWJzZXRBO1xufTtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nU3Vic2V0S2V5ID0gei5lbnVtKFtcIkFcIl0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTdWJzZXRLZXk+O1xuXG4vLyBTdWJzZXRzOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuU3Vic2V0QSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICB0b2tlbjogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcmVmcmVzaF90b2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBleHBpcmVzX2F0OiB6LmJpZ2ludCgpLm51bGxhYmxlKCksXG4gIGFjY291bnRfdXVpZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhY3RpdmU6IHouYm9vbGVhbigpLFxufSk7XG5leHBvcnQgdHlwZSBUb2tlblN1YnNldEEgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN1YnNldEE+O1xuZXhwb3J0IHR5cGUgVG9rZW5TdWJzZXRNYXBwaW5nID0ge1xuICBBOiBUb2tlblN1YnNldEE7XG59O1xuZXhwb3J0IGNvbnN0IFRva2VuU3Vic2V0S2V5ID0gei5lbnVtKFtcIkFcIl0pO1xuZXhwb3J0IHR5cGUgVG9rZW5TdWJzZXRLZXkgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN1YnNldEtleT47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBVUEsTUFBYSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxvQkFBb0I7QUFFbEYsTUFBYSx5QkFBeUIsRUFBRSxXQUFXLFNBQVM7QUFDNUQsTUFBYSx3QkFBd0IsRUFDbEMsS0FBSztDQUFDO0NBQU07Q0FBYztDQUFRLENBQUMsQ0FDbkMsU0FBUyx3QkFBd0I7QUFFcEMsTUFBYSw2QkFBNkI7Q0FBRSxJQUFJO0NBQU0sWUFBWTtDQUFRLE9BQU87Q0FBTTtBQUd2RixNQUFhLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxlQUFlO0FBRXhFLE1BQWEsb0JBQW9CLEVBQUUsV0FBVyxTQUFTO0FBQ3ZELE1BQWEsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsU0FBUyxtQkFBbUI7QUFFbkYsTUFBYSx3QkFBd0I7Q0FBRSxJQUFJO0NBQU0sTUFBTTtDQUFNO0FBRzdELE1BQWEsdUJBQXVCLEVBQUUsT0FBTztDQUMzQyxJQUFJLEVBQUUsS0FBSztDQUNYLFlBQVksRUFBRSxNQUFNO0NBQ3BCLFlBQVksRUFBRSxRQUFRLENBQUMsSUFBSSxJQUFJO0NBQy9CLE9BQU8sRUFBRSxRQUFRO0NBQ2pCLFVBQVUsRUFBRSxRQUFRO0NBQ3BCLGNBQWMsRUFBRSxLQUFLO0NBQ3JCLGVBQWUsRUFBRSxLQUFLO0NBQ3RCLG1CQUFtQixFQUFFLEtBQUs7Q0FDMUIsdUJBQXVCLEVBQUUsS0FBSztDQUM5QixhQUFhLEVBQUUsS0FBSztDQUNyQixDQUFDO0FBTUYsTUFBYSxrQkFBa0IsRUFBRSxPQUFPO0NBQ3RDLElBQUksRUFBRSxLQUFLO0NBQ1gsWUFBWSxFQUFFLE1BQU07Q0FDcEIsT0FBTyxFQUFFLFFBQVE7Q0FDakIsTUFBTSxFQUFFLFFBQVE7Q0FDaEIsZUFBZSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0NBQ3BDLFlBQVksRUFBRSxRQUFRLENBQUMsVUFBVTtDQUNqQyxjQUFjLEVBQUUsUUFBUSxDQUFDLFVBQVU7Q0FDbkMsUUFBUSxFQUFFLFNBQVM7Q0FDcEIsQ0FBQztBQWFGLE1BQWEsMkJBQTJCLEVBQ3JDLE9BQU87Q0FDTixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhO0NBQ25DLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtDQUM3QixRQUFRO0NBQ1IsU0FBUyxFQUFFLFFBQVE7Q0FDbkIsU0FBUztDQUNULFdBQVc7Q0FDWCxJQUFJLFdBQVcsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztDQUMzQyxjQUFjLEVBQUUsUUFBK0Q7Q0FDL0UsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUk7Q0FDaEMsQ0FBQyxDQUNELFNBQVM7QUFJWixNQUFhLHNCQUFzQixFQUNoQyxPQUFPO0NBQ04sS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYTtDQUNuQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7Q0FDN0IsUUFBUTtDQUNSLFNBQVMsRUFBRSxRQUFRO0NBQ25CLFNBQVM7Q0FDVCxXQUFXO0NBQ1gsSUFBSSxXQUFXLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Q0FDM0MsY0FBYyxFQUFFLFFBQTBEO0NBQzFFLE9BQU8sRUFBRSxRQUFRO0NBQ2xCLENBQUMsQ0FDRCxTQUFTO0FBSVosTUFBYSxvQkFBb0IsRUFBRSxPQUFPO0NBQ3hDLElBQUksRUFBRSxLQUFLO0NBQ1gsWUFBWSxFQUFFLE1BQU07Q0FDcEIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUk7Q0FDL0IsT0FBTyxFQUFFLFFBQVE7Q0FDakIsVUFBVSxFQUFFLFFBQVE7Q0FDcEIsY0FBYyxFQUFFLEtBQUs7Q0FDckIsZUFBZSxFQUFFLEtBQUs7Q0FDdEIsbUJBQW1CLEVBQUUsS0FBSztDQUMxQix1QkFBdUIsRUFBRSxLQUFLO0NBQzlCLGFBQWEsRUFBRSxLQUFLO0NBQ3JCLENBQUM7QUFLRixNQUFhLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFJaEQsTUFBYSxlQUFlLEVBQUUsT0FBTztDQUNuQyxJQUFJLEVBQUUsS0FBSztDQUNYLFlBQVksRUFBRSxNQUFNO0NBQ3BCLE9BQU8sRUFBRSxRQUFRO0NBQ2pCLE1BQU0sRUFBRSxRQUFRO0NBQ2hCLGVBQWUsRUFBRSxRQUFRLENBQUMsVUFBVTtDQUNwQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFVBQVU7Q0FDakMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxVQUFVO0NBQ25DLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUM7QUFLRixNQUFhLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMifQ==
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
//#region src/application/sonamu.generated.sso.ts
|
|
3
|
-
const requestLogSubsetQueries = { A: (qbWrapper) => {
|
|
4
|
-
return qbWrapper.from("request_logs").select({
|
|
5
|
-
id: "request_logs.id",
|
|
6
|
-
created_at: "request_logs.created_at",
|
|
7
|
-
token_name: "request_logs.token_name",
|
|
8
|
-
query: "request_logs.query",
|
|
9
|
-
response: "request_logs.response",
|
|
10
|
-
input_tokens: "request_logs.input_tokens",
|
|
11
|
-
output_tokens: "request_logs.output_tokens",
|
|
12
|
-
cache_read_tokens: "request_logs.cache_read_tokens",
|
|
13
|
-
cache_creation_tokens: "request_logs.cache_creation_tokens",
|
|
14
|
-
duration_ms: "request_logs.duration_ms"
|
|
15
|
-
});
|
|
16
|
-
} };
|
|
17
|
-
const requestLogLoaderQueries = { A: [] };
|
|
18
|
-
const tokenSubsetQueries = { A: (qbWrapper) => {
|
|
19
|
-
return qbWrapper.from("tokens").select({
|
|
20
|
-
id: "tokens.id",
|
|
21
|
-
created_at: "tokens.created_at",
|
|
22
|
-
token: "tokens.token",
|
|
23
|
-
name: "tokens.name",
|
|
24
|
-
refresh_token: "tokens.refresh_token",
|
|
25
|
-
expires_at: "tokens.expires_at",
|
|
26
|
-
account_uuid: "tokens.account_uuid",
|
|
27
|
-
active: "tokens.active"
|
|
28
|
-
});
|
|
29
|
-
} };
|
|
30
|
-
const tokenLoaderQueries = { A: [] };
|
|
31
|
-
//#endregion
|
|
32
|
-
export { requestLogLoaderQueries, requestLogSubsetQueries, tokenLoaderQueries, tokenSubsetQueries };
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cbmltcG9ydCB7IFB1cmlXcmFwcGVyLCBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgUHVyaUxvYWRlclF1ZXJpZXMgfSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7XG4gIFJlcXVlc3RMb2dTdWJzZXRLZXksXG4gIFRva2VuU3Vic2V0S2V5LFxuICBSZXF1ZXN0TG9nQmFzZVNjaGVtYSxcbiAgVG9rZW5CYXNlU2NoZW1hLFxufSBmcm9tIFwiLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5cbi8vIFN1YnNldFF1ZXJ5OiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N1YnNldFF1ZXJpZXMgPSB7XG4gIEE6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInJlcXVlc3RfbG9nc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9ncy5jcmVhdGVkX2F0XCIsXG4gICAgICB0b2tlbl9uYW1lOiBcInJlcXVlc3RfbG9ncy50b2tlbl9uYW1lXCIsXG4gICAgICBxdWVyeTogXCJyZXF1ZXN0X2xvZ3MucXVlcnlcIixcbiAgICAgIHJlc3BvbnNlOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9ncy5kdXJhdGlvbl9tc1wiLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gTG9hZGVyUXVlcnk6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCByZXF1ZXN0TG9nTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxSZXF1ZXN0TG9nU3Vic2V0S2V5PjtcblxuLy8gU3Vic2V0UXVlcnk6IFRva2VuXG5leHBvcnQgY29uc3QgdG9rZW5TdWJzZXRRdWVyaWVzID0ge1xuICBBOiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICByZXR1cm4gcWJXcmFwcGVyLmZyb20oXCJ0b2tlbnNcIikuc2VsZWN0KHtcbiAgICAgIGlkOiBcInRva2Vucy5pZFwiLFxuICAgICAgY3JlYXRlZF9hdDogXCJ0b2tlbnMuY3JlYXRlZF9hdFwiLFxuICAgICAgdG9rZW46IFwidG9rZW5zLnRva2VuXCIsXG4gICAgICBuYW1lOiBcInRva2Vucy5uYW1lXCIsXG4gICAgICByZWZyZXNoX3Rva2VuOiBcInRva2Vucy5yZWZyZXNoX3Rva2VuXCIsXG4gICAgICBleHBpcmVzX2F0OiBcInRva2Vucy5leHBpcmVzX2F0XCIsXG4gICAgICBhY2NvdW50X3V1aWQ6IFwidG9rZW5zLmFjY291bnRfdXVpZFwiLFxuICAgICAgYWN0aXZlOiBcInRva2Vucy5hY3RpdmVcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxUb2tlblN1YnNldEtleT47XG5cbi8vIERhdGFiYXNlU2NoZW1hXG5kZWNsYXJlIG1vZHVsZSBcInNvbmFtdVwiIHtcbiAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7XG4gICAgcmVxdWVzdF9sb2dzOiBSZXF1ZXN0TG9nQmFzZVNjaGVtYTtcbiAgICB0b2tlbnM6IFRva2VuQmFzZVNjaGVtYTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7fVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQWNBLE1BQWEsMEJBQTBCLEVBQ3JDLElBQUksY0FBaUQ7QUFDbkQsUUFBTyxVQUFVLEtBQUssZUFBZSxDQUFDLE9BQU87RUFDM0MsSUFBSTtFQUNKLFlBQVk7RUFDWixZQUFZO0VBQ1osT0FBTztFQUNQLFVBQVU7RUFDVixjQUFjO0VBQ2QsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsYUFBYTtFQUNkLENBQUM7R0FFTDtBQUdELE1BQWEsMEJBQTBCLEVBQ3JDLEdBQUcsRUFBRSxFQUNOO0FBR0QsTUFBYSxxQkFBcUIsRUFDaEMsSUFBSSxjQUFpRDtBQUNuRCxRQUFPLFVBQVUsS0FBSyxTQUFTLENBQUMsT0FBTztFQUNyQyxJQUFJO0VBQ0osWUFBWTtFQUNaLE9BQU87RUFDUCxNQUFNO0VBQ04sZUFBZTtFQUNmLFlBQVk7RUFDWixjQUFjO0VBQ2QsUUFBUTtFQUNULENBQUM7R0FFTDtBQUdELE1BQWEscUJBQXFCLEVBQ2hDLEdBQUcsRUFBRSxFQUNOIn0=
|