@modularizer/plat 0.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.
Files changed (287) hide show
  1. package/README.md +574 -0
  2. package/bin/z2.js +5 -0
  3. package/dist/args/coerce.d.ts +54 -0
  4. package/dist/args/coerce.d.ts.map +1 -0
  5. package/dist/args/coerce.js +236 -0
  6. package/dist/args/coerce.js.map +1 -0
  7. package/dist/args/index.d.ts +2 -0
  8. package/dist/args/index.d.ts.map +1 -0
  9. package/dist/args/index.js +2 -0
  10. package/dist/args/index.js.map +1 -0
  11. package/dist/args/scalars.d.ts +87 -0
  12. package/dist/args/scalars.d.ts.map +1 -0
  13. package/dist/args/scalars.js +22 -0
  14. package/dist/args/scalars.js.map +1 -0
  15. package/dist/args/validate.d.ts +23 -0
  16. package/dist/args/validate.d.ts.map +1 -0
  17. package/dist/args/validate.js +185 -0
  18. package/dist/args/validate.js.map +1 -0
  19. package/dist/args/z2.d.ts +27 -0
  20. package/dist/args/z2.d.ts.map +1 -0
  21. package/dist/args/z2.js +24 -0
  22. package/dist/args/z2.js.map +1 -0
  23. package/dist/cli/commands/api-proxy.d.ts +9 -0
  24. package/dist/cli/commands/api-proxy.d.ts.map +1 -0
  25. package/dist/cli/commands/api-proxy.js +292 -0
  26. package/dist/cli/commands/api-proxy.js.map +1 -0
  27. package/dist/cli/commands/env.d.ts +32 -0
  28. package/dist/cli/commands/env.d.ts.map +1 -0
  29. package/dist/cli/commands/env.js +157 -0
  30. package/dist/cli/commands/env.js.map +1 -0
  31. package/dist/cli/commands/gen.d.ts +2 -0
  32. package/dist/cli/commands/gen.d.ts.map +1 -0
  33. package/dist/cli/commands/gen.js +88 -0
  34. package/dist/cli/commands/gen.js.map +1 -0
  35. package/dist/cli/commands/init-project.d.ts +9 -0
  36. package/dist/cli/commands/init-project.d.ts.map +1 -0
  37. package/dist/cli/commands/init-project.js +143 -0
  38. package/dist/cli/commands/init-project.js.map +1 -0
  39. package/dist/cli/commands/jwt-cmd.d.ts +10 -0
  40. package/dist/cli/commands/jwt-cmd.d.ts.map +1 -0
  41. package/dist/cli/commands/jwt-cmd.js +33 -0
  42. package/dist/cli/commands/jwt-cmd.js.map +1 -0
  43. package/dist/cli/commands/run.d.ts +5 -0
  44. package/dist/cli/commands/run.d.ts.map +1 -0
  45. package/dist/cli/commands/run.js +31 -0
  46. package/dist/cli/commands/run.js.map +1 -0
  47. package/dist/cli/commands/serve.d.ts +2 -0
  48. package/dist/cli/commands/serve.d.ts.map +1 -0
  49. package/dist/cli/commands/serve.js +43 -0
  50. package/dist/cli/commands/serve.js.map +1 -0
  51. package/dist/cli/commands/watch.d.ts +5 -0
  52. package/dist/cli/commands/watch.d.ts.map +1 -0
  53. package/dist/cli/commands/watch.js +119 -0
  54. package/dist/cli/commands/watch.js.map +1 -0
  55. package/dist/cli/index.d.ts +11 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +11 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/jwt-helper.d.ts +32 -0
  60. package/dist/cli/jwt-helper.d.ts.map +1 -0
  61. package/dist/cli/jwt-helper.js +84 -0
  62. package/dist/cli/jwt-helper.js.map +1 -0
  63. package/dist/cli/proxy.d.ts +40 -0
  64. package/dist/cli/proxy.d.ts.map +1 -0
  65. package/dist/cli/proxy.js +171 -0
  66. package/dist/cli/proxy.js.map +1 -0
  67. package/dist/cli/runtime.d.ts +17 -0
  68. package/dist/cli/runtime.d.ts.map +1 -0
  69. package/dist/cli/runtime.js +286 -0
  70. package/dist/cli/runtime.js.map +1 -0
  71. package/dist/cli/spec-source.d.ts +13 -0
  72. package/dist/cli/spec-source.d.ts.map +1 -0
  73. package/dist/cli/spec-source.js +207 -0
  74. package/dist/cli/spec-source.js.map +1 -0
  75. package/dist/cli/z2.d.ts +7 -0
  76. package/dist/cli/z2.d.ts.map +1 -0
  77. package/dist/cli/z2.js +93 -0
  78. package/dist/cli/z2.js.map +1 -0
  79. package/dist/client/file-transport-plugin.d.ts +25 -0
  80. package/dist/client/file-transport-plugin.d.ts.map +1 -0
  81. package/dist/client/file-transport-plugin.js +80 -0
  82. package/dist/client/file-transport-plugin.js.map +1 -0
  83. package/dist/client/http-transport-plugin.d.ts +27 -0
  84. package/dist/client/http-transport-plugin.d.ts.map +1 -0
  85. package/dist/client/http-transport-plugin.js +48 -0
  86. package/dist/client/http-transport-plugin.js.map +1 -0
  87. package/dist/client/index.d.ts +6 -0
  88. package/dist/client/index.d.ts.map +1 -0
  89. package/dist/client/index.js +6 -0
  90. package/dist/client/index.js.map +1 -0
  91. package/dist/client/openapi-client.d.ts +332 -0
  92. package/dist/client/openapi-client.d.ts.map +1 -0
  93. package/dist/client/openapi-client.js +879 -0
  94. package/dist/client/openapi-client.js.map +1 -0
  95. package/dist/client/proxy.d.ts +5 -0
  96. package/dist/client/proxy.d.ts.map +1 -0
  97. package/dist/client/proxy.js +353 -0
  98. package/dist/client/proxy.js.map +1 -0
  99. package/dist/client/request-builder.d.ts +4 -0
  100. package/dist/client/request-builder.d.ts.map +1 -0
  101. package/dist/client/request-builder.js +88 -0
  102. package/dist/client/request-builder.js.map +1 -0
  103. package/dist/client/rpc-transport-plugin.d.ts +17 -0
  104. package/dist/client/rpc-transport-plugin.d.ts.map +1 -0
  105. package/dist/client/rpc-transport-plugin.js +69 -0
  106. package/dist/client/rpc-transport-plugin.js.map +1 -0
  107. package/dist/client/tools.d.ts +69 -0
  108. package/dist/client/tools.d.ts.map +1 -0
  109. package/dist/client/tools.js +122 -0
  110. package/dist/client/tools.js.map +1 -0
  111. package/dist/client/transport-plugin.d.ts +62 -0
  112. package/dist/client/transport-plugin.d.ts.map +1 -0
  113. package/dist/client/transport-plugin.js +40 -0
  114. package/dist/client/transport-plugin.js.map +1 -0
  115. package/dist/index.d.ts +9 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +8 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/logging.d.ts +9 -0
  120. package/dist/logging.d.ts.map +1 -0
  121. package/dist/logging.js +29 -0
  122. package/dist/logging.js.map +1 -0
  123. package/dist/rpc.d.ts +39 -0
  124. package/dist/rpc.d.ts.map +1 -0
  125. package/dist/rpc.js +2 -0
  126. package/dist/rpc.js.map +1 -0
  127. package/dist/server/auth/index.d.ts +4 -0
  128. package/dist/server/auth/index.d.ts.map +1 -0
  129. package/dist/server/auth/index.js +2 -0
  130. package/dist/server/auth/index.js.map +1 -0
  131. package/dist/server/auth/jwt.d.ts +27 -0
  132. package/dist/server/auth/jwt.d.ts.map +1 -0
  133. package/dist/server/auth/jwt.js +95 -0
  134. package/dist/server/auth/jwt.js.map +1 -0
  135. package/dist/server/cache/index.d.ts +2 -0
  136. package/dist/server/cache/index.d.ts.map +1 -0
  137. package/dist/server/cache/index.js +2 -0
  138. package/dist/server/cache/index.js.map +1 -0
  139. package/dist/server/cache/utils.d.ts +30 -0
  140. package/dist/server/cache/utils.d.ts.map +1 -0
  141. package/dist/server/cache/utils.js +116 -0
  142. package/dist/server/cache/utils.js.map +1 -0
  143. package/dist/server/call-sessions.d.ts +50 -0
  144. package/dist/server/call-sessions.d.ts.map +1 -0
  145. package/dist/server/call-sessions.js +90 -0
  146. package/dist/server/call-sessions.js.map +1 -0
  147. package/dist/server/config/bucket.d.ts +9 -0
  148. package/dist/server/config/bucket.d.ts.map +1 -0
  149. package/dist/server/config/bucket.js +57 -0
  150. package/dist/server/config/bucket.js.map +1 -0
  151. package/dist/server/config/defaults.d.ts +3 -0
  152. package/dist/server/config/defaults.d.ts.map +1 -0
  153. package/dist/server/config/defaults.js +29 -0
  154. package/dist/server/config/defaults.js.map +1 -0
  155. package/dist/server/config/index.d.ts +5 -0
  156. package/dist/server/config/index.d.ts.map +1 -0
  157. package/dist/server/config/index.js +5 -0
  158. package/dist/server/config/index.js.map +1 -0
  159. package/dist/server/config/logger.d.ts +3 -0
  160. package/dist/server/config/logger.d.ts.map +1 -0
  161. package/dist/server/config/logger.js +2 -0
  162. package/dist/server/config/logger.js.map +1 -0
  163. package/dist/server/config/types.d.ts +198 -0
  164. package/dist/server/config/types.d.ts.map +1 -0
  165. package/dist/server/config/types.js +2 -0
  166. package/dist/server/config/types.js.map +1 -0
  167. package/dist/server/core.d.ts +42 -0
  168. package/dist/server/core.d.ts.map +1 -0
  169. package/dist/server/core.js +202 -0
  170. package/dist/server/core.js.map +1 -0
  171. package/dist/server/env.d.ts +39 -0
  172. package/dist/server/env.d.ts.map +1 -0
  173. package/dist/server/env.js +66 -0
  174. package/dist/server/env.js.map +1 -0
  175. package/dist/server/file-queue-protocol-plugin.d.ts +7 -0
  176. package/dist/server/file-queue-protocol-plugin.d.ts.map +1 -0
  177. package/dist/server/file-queue-protocol-plugin.js +150 -0
  178. package/dist/server/file-queue-protocol-plugin.js.map +1 -0
  179. package/dist/server/file-queue.d.ts +25 -0
  180. package/dist/server/file-queue.d.ts.map +1 -0
  181. package/dist/server/file-queue.js +2 -0
  182. package/dist/server/file-queue.js.map +1 -0
  183. package/dist/server/help.d.ts +19 -0
  184. package/dist/server/help.d.ts.map +1 -0
  185. package/dist/server/help.js +91 -0
  186. package/dist/server/help.js.map +1 -0
  187. package/dist/server/index.d.ts +29 -0
  188. package/dist/server/index.d.ts.map +1 -0
  189. package/dist/server/index.js +29 -0
  190. package/dist/server/index.js.map +1 -0
  191. package/dist/server/operation-registry.d.ts +9 -0
  192. package/dist/server/operation-registry.d.ts.map +1 -0
  193. package/dist/server/operation-registry.js +16 -0
  194. package/dist/server/operation-registry.js.map +1 -0
  195. package/dist/server/param-aliases.d.ts +40 -0
  196. package/dist/server/param-aliases.d.ts.map +1 -0
  197. package/dist/server/param-aliases.js +112 -0
  198. package/dist/server/param-aliases.js.map +1 -0
  199. package/dist/server/protocol-plugin.d.ts +72 -0
  200. package/dist/server/protocol-plugin.d.ts.map +1 -0
  201. package/dist/server/protocol-plugin.js +2 -0
  202. package/dist/server/protocol-plugin.js.map +1 -0
  203. package/dist/server/rate-limit/index.d.ts +2 -0
  204. package/dist/server/rate-limit/index.d.ts.map +1 -0
  205. package/dist/server/rate-limit/index.js +2 -0
  206. package/dist/server/rate-limit/index.js.map +1 -0
  207. package/dist/server/rate-limit/utils.d.ts +27 -0
  208. package/dist/server/rate-limit/utils.d.ts.map +1 -0
  209. package/dist/server/rate-limit/utils.js +126 -0
  210. package/dist/server/rate-limit/utils.js.map +1 -0
  211. package/dist/server/routing.d.ts +39 -0
  212. package/dist/server/routing.d.ts.map +1 -0
  213. package/dist/server/routing.js +70 -0
  214. package/dist/server/routing.js.map +1 -0
  215. package/dist/server/rpc-protocol-plugin.d.ts +12 -0
  216. package/dist/server/rpc-protocol-plugin.d.ts.map +1 -0
  217. package/dist/server/rpc-protocol-plugin.js +134 -0
  218. package/dist/server/rpc-protocol-plugin.js.map +1 -0
  219. package/dist/server/server.d.ts +143 -0
  220. package/dist/server/server.d.ts.map +1 -0
  221. package/dist/server/server.js +1161 -0
  222. package/dist/server/server.js.map +1 -0
  223. package/dist/server/token-limit/index.d.ts +2 -0
  224. package/dist/server/token-limit/index.d.ts.map +1 -0
  225. package/dist/server/token-limit/index.js +2 -0
  226. package/dist/server/token-limit/index.js.map +1 -0
  227. package/dist/server/token-limit/utils.d.ts +44 -0
  228. package/dist/server/token-limit/utils.d.ts.map +1 -0
  229. package/dist/server/token-limit/utils.js +260 -0
  230. package/dist/server/token-limit/utils.js.map +1 -0
  231. package/dist/server/tools.d.ts +51 -0
  232. package/dist/server/tools.d.ts.map +1 -0
  233. package/dist/server/tools.js +225 -0
  234. package/dist/server/tools.js.map +1 -0
  235. package/dist/server/transports.d.ts +25 -0
  236. package/dist/server/transports.d.ts.map +1 -0
  237. package/dist/server/transports.js +2 -0
  238. package/dist/server/transports.js.map +1 -0
  239. package/dist/spec/decorators.d.ts +41 -0
  240. package/dist/spec/decorators.d.ts.map +1 -0
  241. package/dist/spec/decorators.js +93 -0
  242. package/dist/spec/decorators.js.map +1 -0
  243. package/dist/spec/index.d.ts +3 -0
  244. package/dist/spec/index.d.ts.map +1 -0
  245. package/dist/spec/index.js +3 -0
  246. package/dist/spec/index.js.map +1 -0
  247. package/dist/spec/metadata.d.ts +5 -0
  248. package/dist/spec/metadata.d.ts.map +1 -0
  249. package/dist/spec/metadata.js +37 -0
  250. package/dist/spec/metadata.js.map +1 -0
  251. package/dist/types/client.d.ts +81 -0
  252. package/dist/types/client.d.ts.map +1 -0
  253. package/dist/types/client.js +14 -0
  254. package/dist/types/client.js.map +1 -0
  255. package/dist/types/endpoints.d.ts +76 -0
  256. package/dist/types/endpoints.d.ts.map +1 -0
  257. package/dist/types/endpoints.js +2 -0
  258. package/dist/types/endpoints.js.map +1 -0
  259. package/dist/types/errors.d.ts +86 -0
  260. package/dist/types/errors.d.ts.map +1 -0
  261. package/dist/types/errors.js +153 -0
  262. package/dist/types/errors.js.map +1 -0
  263. package/dist/types/http.d.ts +80 -0
  264. package/dist/types/http.d.ts.map +1 -0
  265. package/dist/types/http.js +61 -0
  266. package/dist/types/http.js.map +1 -0
  267. package/dist/types/index.d.ts +9 -0
  268. package/dist/types/index.d.ts.map +1 -0
  269. package/dist/types/index.js +9 -0
  270. package/dist/types/index.js.map +1 -0
  271. package/dist/types/openapi.d.ts +220 -0
  272. package/dist/types/openapi.d.ts.map +1 -0
  273. package/dist/types/openapi.js +11 -0
  274. package/dist/types/openapi.js.map +1 -0
  275. package/dist/types/opts.d.ts +46 -0
  276. package/dist/types/opts.d.ts.map +1 -0
  277. package/dist/types/opts.js +2 -0
  278. package/dist/types/opts.js.map +1 -0
  279. package/dist/types/plugins.d.ts +93 -0
  280. package/dist/types/plugins.d.ts.map +1 -0
  281. package/dist/types/plugins.js +5 -0
  282. package/dist/types/plugins.js.map +1 -0
  283. package/dist/types/tools.d.ts +52 -0
  284. package/dist/types/tools.d.ts.map +1 -0
  285. package/dist/types/tools.js +2 -0
  286. package/dist/types/tools.js.map +1 -0
  287. package/package.json +84 -0
@@ -0,0 +1,198 @@
1
+ import { AuthMode, CacheController, RateLimitConfigs, RateLimitController, TokenLimitConfigs, TokenLimitController } from "../../types";
2
+ import { Logger } from "./logger";
3
+ import type { InMemoryCallSessionController } from "../call-sessions";
4
+ import type { PLATServerProtocolPlugin } from "../protocol-plugin";
5
+ export interface AuthHandler {
6
+ verify(mode: AuthMode, req: any, ctx: any): Promise<any> | any;
7
+ }
8
+ export type Serializer = (value: any) => any;
9
+ export interface CORSOptions {
10
+ origin?: string | string[] | boolean | ((origin: string) => boolean);
11
+ credentials?: boolean;
12
+ methods?: string[];
13
+ headers?: string[];
14
+ exposedHeaders?: string[];
15
+ maxAge?: number;
16
+ }
17
+ export interface FileQueueOptions {
18
+ inbox: string;
19
+ outbox: string;
20
+ pollIntervalMs?: number;
21
+ archive?: string | false;
22
+ }
23
+ export interface PLATServerOptions {
24
+ /**
25
+ * How much error information to expose to clients
26
+ * - 'none': only { error: 'Internal server error' }
27
+ * - 'message': { error: 'Original error message' }
28
+ * - 'full': { error: message, stack, data, ... }
29
+ */
30
+ errorExposure?: 'none' | 'message' | 'full';
31
+ /**
32
+ * Custom serializers for non-standard types
33
+ * Applied after default Date/DateTime serialization
34
+ */
35
+ serializers?: Record<string, Serializer>;
36
+ /**
37
+ * CORS configuration
38
+ */
39
+ cors?: CORSOptions | boolean;
40
+ /**
41
+ * Default response headers
42
+ */
43
+ headers?: Record<string, string>;
44
+ /**
45
+ * Hook called for each incoming request
46
+ */
47
+ onRequest?: (req: any, res: any, path: string, method: string) => void | Promise<void>;
48
+ /**
49
+ * Hook called for each successful response
50
+ */
51
+ onResponse?: (req: any, res: any, statusCode: number, result: any) => void | Promise<void>;
52
+ /**
53
+ * Hook called when an error occurs
54
+ */
55
+ onError?: (req: any, res: any, error: Error, statusCode: number) => void | Promise<void>;
56
+ /**
57
+ * Hook to handle uncaught exceptions
58
+ * Return true to prevent default error response
59
+ */
60
+ handleError?: (req: any, res: any, error: Error) => boolean | Promise<boolean>;
61
+ /**
62
+ * Port to listen on
63
+ */
64
+ port?: number;
65
+ /**
66
+ * Host to listen on (default: 'localhost')
67
+ */
68
+ host?: string;
69
+ /**
70
+ * Protocol for logging (default: 'http')
71
+ */
72
+ protocol?: string;
73
+ /**
74
+ * RPC/WebSocket transport configuration
75
+ * - true: enable RPC websocket endpoint at /rpc
76
+ * - string: mount at specified path
77
+ * - false: disable
78
+ */
79
+ rpc?: boolean | string;
80
+ /**
81
+ * OpenAPI specification for Swagger/ReDoc docs
82
+ */
83
+ openapi?: any;
84
+ /**
85
+ * Enable automatic Swagger UI (default: true if openapi provided)
86
+ * - true: mount at /docs
87
+ * - string: mount at specified path (e.g. '/api-docs')
88
+ * - false: disable
89
+ */
90
+ swagger?: boolean | string;
91
+ /**
92
+ * Enable automatic ReDoc (default: true if openapi provided)
93
+ * - true: mount at /redoc
94
+ * - string: mount at specified path (e.g. '/api-redoc')
95
+ * - false: disable
96
+ */
97
+ redoc?: boolean | string;
98
+ /**
99
+ * URL path redirects, e.g. { '/': '/docs' }
100
+ */
101
+ redirects?: Record<string, string>;
102
+ /**
103
+ * Logger instance (defaults to console-based logger)
104
+ */
105
+ logger?: Logger;
106
+ /**
107
+ * Authentication handler for verifying auth modes
108
+ */
109
+ auth?: AuthHandler;
110
+ /**
111
+ * Default auth mode for all routes (can be overridden per-controller or per-route)
112
+ * Default: 'public' (no auth required)
113
+ */
114
+ defaultAuth?: AuthMode;
115
+ /**
116
+ * Rate limiting configuration
117
+ */
118
+ rateLimit?: {
119
+ controller?: RateLimitController;
120
+ configs?: RateLimitConfigs;
121
+ retryAfterHeaders?: boolean | {
122
+ delay?: boolean;
123
+ retryAt?: boolean;
124
+ };
125
+ };
126
+ /**
127
+ * Token limiting configuration
128
+ */
129
+ tokenLimit?: {
130
+ controller?: TokenLimitController;
131
+ configs?: TokenLimitConfigs;
132
+ retryAfterHeaders?: boolean | {
133
+ delay?: boolean;
134
+ retryAt?: boolean;
135
+ };
136
+ responseCostHeader?: boolean;
137
+ };
138
+ /**
139
+ * Caching configuration
140
+ */
141
+ cache?: {
142
+ controller?: CacheController;
143
+ cacheHeader?: boolean;
144
+ };
145
+ /**
146
+ * Custom route options validation
147
+ * Called for each route to validate any custom keys in RouteOpts
148
+ * Throw an error to reject invalid options
149
+ */
150
+ validateRouteOpts?: (opts: Record<string, any>, methodName: string, path: string) => void | Promise<void>;
151
+ /**
152
+ * Method prefix configuration
153
+ * Enforce specific method prefixes (get, list, create, etc.)
154
+ * - '*': Allow any prefix (default, recommended)
155
+ * - Array of strings: Only allow these prefixes (e.g., ['get', 'list', 'create'])
156
+ */
157
+ allowedMethodPrefixes?: '*' | string[];
158
+ /**
159
+ * Disallowed method prefixes
160
+ * Forbid specific method prefixes (e.g., 'fetch', 'search')
161
+ * Default: [] (none disallowed)
162
+ */
163
+ disAllowedMethodPrefixes?: string[];
164
+ /**
165
+ * Parameter name coercions/aliases
166
+ * Maps parameter names to their canonical forms
167
+ * - Key: alternative name (e.g., 'query')
168
+ * - Value: canonical name (e.g., 'q')
169
+ * Automatically filters out identity mappings (e.g., 'q' -> 'q')
170
+ * Default: { query: 'q', search: 'q', format: 'fmt' }
171
+ */
172
+ paramCoercions?: Record<string, string>;
173
+ /**
174
+ * Disallowed parameter names in handlers
175
+ * Throws error if a handler uses these parameter names
176
+ * Forces use of canonical names instead
177
+ * Default: [] (none disallowed)
178
+ * Example: ['search'] forces use of 'q' instead
179
+ */
180
+ disAllowedParams?: string[];
181
+ /**
182
+ * Deferred HTTP call sessions for long-running operations.
183
+ */
184
+ calls?: {
185
+ controller?: InMemoryCallSessionController;
186
+ path?: string;
187
+ };
188
+ /**
189
+ * Optional file-based request/response transport.
190
+ * Reads JSON requests from inbox and writes JSON responses to outbox.
191
+ */
192
+ fileQueue?: FileQueueOptions | false;
193
+ /**
194
+ * Extra protocol plugins. Built-in HTTP/WS/file behavior still works by default.
195
+ */
196
+ protocolPlugins?: PLATServerProtocolPlugin[];
197
+ }
198
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/config/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import type { PLATServerResolvedOperation } from './transports';
2
+ import { PLATOperationRegistry } from './operation-registry';
3
+ interface PLATServerCoreOptions {
4
+ allowedMethodPrefixes?: '*' | string[];
5
+ disAllowedMethodPrefixes?: string[];
6
+ validateRouteOpts?: (opts: Record<string, any>, methodName: string, path: string) => void | Promise<void>;
7
+ }
8
+ interface PLATServerCoreStores {
9
+ routes: Array<{
10
+ method: string;
11
+ path: string;
12
+ methodName?: string;
13
+ }>;
14
+ tools: Map<string, any>;
15
+ operationRegistry: PLATOperationRegistry;
16
+ registeredMethodNames: Set<string>;
17
+ registeredControllerNames: Set<string>;
18
+ }
19
+ export interface RegisteredControllerOperation {
20
+ operation: PLATServerResolvedOperation;
21
+ route: {
22
+ method: string;
23
+ path: string;
24
+ methodName: string;
25
+ };
26
+ variants: Array<{
27
+ method: string;
28
+ path: string;
29
+ }>;
30
+ }
31
+ export declare class PLATServerCore {
32
+ private options;
33
+ private stores;
34
+ constructor(options: PLATServerCoreOptions, stores: PLATServerCoreStores);
35
+ registerControllers(...ControllerClasses: (new () => any)[]): RegisteredControllerOperation[];
36
+ private processPendingRoutes;
37
+ private collectRoutes;
38
+ private extractMethodPrefix;
39
+ private validateMethodName;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/server/core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,UAAU,qBAAqB;IAC7B,qBAAqB,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAAA;IACtC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAA;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1G;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvB,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClC,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,2BAA2B,CAAA;IACtC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,QAAQ,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAID,qBAAa,cAAc;IAEvB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;gBADN,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,oBAAoB;IAGtC,mBAAmB,CAAC,GAAG,iBAAiB,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,6BAA6B,EAAE;IAsH7F,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,kBAAkB;CA+C3B"}
@@ -0,0 +1,202 @@
1
+ import { createToolDefinition } from './tools';
2
+ import { generateRouteVariants } from './routing';
3
+ import { ensureRouteMeta, getControllerMeta, pendingRoutes, ROUTE_METADATA_KEY } from '../spec';
4
+ const RESERVED_METHOD_NAMES = ['tools', 'routes', 'endpoints', 'help', 'openapi'];
5
+ export class PLATServerCore {
6
+ options;
7
+ stores;
8
+ constructor(options, stores) {
9
+ this.options = options;
10
+ this.stores = stores;
11
+ }
12
+ registerControllers(...ControllerClasses) {
13
+ const registered = [];
14
+ for (const ControllerClass of ControllerClasses) {
15
+ const meta = getControllerMeta(ControllerClass);
16
+ if (!meta) {
17
+ throw new Error(`${ControllerClass.name} is not decorated with @Controller`);
18
+ }
19
+ const instance = new ControllerClass();
20
+ const controllerTag = meta.tag || meta.basePath || ControllerClass.name;
21
+ const lowerControllerTag = controllerTag.toLowerCase();
22
+ if (RESERVED_METHOD_NAMES.includes(lowerControllerTag)) {
23
+ throw new Error(`Controller '${controllerTag}' uses a reserved plat system name. ` +
24
+ `Reserved names: ${RESERVED_METHOD_NAMES.join(', ')}. ` +
25
+ `Choose a different controller name/tag.`);
26
+ }
27
+ if (this.stores.registeredMethodNames.has(controllerTag)) {
28
+ throw new Error(`Controller '${controllerTag}' conflicts with an existing method name. ` +
29
+ `Controller names and method names must not overlap. ` +
30
+ `Rename either the controller or the method.`);
31
+ }
32
+ this.stores.registeredControllerNames.add(controllerTag);
33
+ this.processPendingRoutes(ControllerClass);
34
+ const freshMeta = getControllerMeta(ControllerClass);
35
+ const routes = this.collectRoutes(ControllerClass, freshMeta);
36
+ for (const [key, route] of routes.entries()) {
37
+ const methodName = String(key);
38
+ this.validateMethodName(methodName, ControllerClass.name);
39
+ if (this.stores.registeredControllerNames.has(methodName)) {
40
+ throw new Error(`Method '${methodName}' in ${ControllerClass.name} conflicts with controller name '${methodName}'. ` +
41
+ `Method names and controller names must not overlap. ` +
42
+ `Rename either the method or the controller.`);
43
+ }
44
+ if (this.stores.registeredMethodNames.has(methodName)) {
45
+ throw new Error(`Duplicate operationId: method "${methodName}" is defined in multiple controllers. ` +
46
+ `In plat, method names must be globally unique across all controllers. ` +
47
+ `Consider renaming one of these methods to have a unique name. ` +
48
+ `Current controller: ${ControllerClass.name}`);
49
+ }
50
+ this.stores.registeredMethodNames.add(methodName);
51
+ const fullPath = '/' + methodName;
52
+ const routeMeta = freshMeta?.routes.get(key);
53
+ this.stores.tools.set(methodName, createToolDefinition({
54
+ name: methodName,
55
+ summary: routeMeta?.summary ?? routeMeta?.opts?.summary,
56
+ description: routeMeta?.description ?? routeMeta?.opts?.description ?? `${route.method.toUpperCase()} ${fullPath}`,
57
+ method: route.method,
58
+ path: fullPath,
59
+ controller: controllerTag,
60
+ tags: [
61
+ controllerTag,
62
+ ...(Array.isArray(routeMeta?.opts?.tags) ? routeMeta?.opts?.tags : []),
63
+ ].filter((value, index, arr) => Boolean(value) && arr.indexOf(value) === index),
64
+ examples: Array.isArray(routeMeta?.opts?.examples) ? routeMeta?.opts?.examples : undefined,
65
+ hidden: routeMeta?.opts?.hidden === true,
66
+ safe: routeMeta?.opts?.safe ?? ['GET', 'HEAD'].includes(route.method.toUpperCase()),
67
+ idempotent: routeMeta?.opts?.idempotent ?? ['GET', 'HEAD', 'PUT', 'DELETE'].includes(route.method.toUpperCase()),
68
+ longRunning: routeMeta?.opts?.longRunning === true,
69
+ input_schema: routeMeta?.inputSchema ? createToolDefinition(methodName, route.method, fullPath, '', routeMeta.inputSchema).input_schema : undefined,
70
+ response_schema: routeMeta?.outputSchema ? createToolDefinition(methodName, route.method, fullPath, '', undefined, routeMeta.outputSchema).response_schema : undefined,
71
+ }));
72
+ const operation = {
73
+ method: route.method.toUpperCase(),
74
+ path: fullPath,
75
+ methodName,
76
+ boundMethod: instance[methodName].bind(instance),
77
+ controllerTag,
78
+ routeMeta,
79
+ controllerMeta: freshMeta,
80
+ };
81
+ this.stores.operationRegistry.register(operation);
82
+ const routeRecord = {
83
+ method: route.method.toUpperCase(),
84
+ path: fullPath,
85
+ methodName,
86
+ };
87
+ this.stores.routes.push(routeRecord);
88
+ registered.push({
89
+ operation,
90
+ route: routeRecord,
91
+ variants: generateRouteVariants(methodName, route.method)
92
+ .filter((variant) => !(variant.path === fullPath && variant.method === route.method.toUpperCase())),
93
+ });
94
+ }
95
+ }
96
+ return registered;
97
+ }
98
+ processPendingRoutes(ControllerClass) {
99
+ if (!pendingRoutes.has(ControllerClass))
100
+ return;
101
+ const routes = pendingRoutes.get(ControllerClass);
102
+ for (const route of routes) {
103
+ const routeMeta = ensureRouteMeta(ControllerClass, route.key);
104
+ routeMeta.method = route.method;
105
+ routeMeta.path = '/' + String(route.key);
106
+ routeMeta.auth = route.opts?.auth;
107
+ routeMeta.rateLimit = route.opts?.rateLimit;
108
+ routeMeta.tokenLimit = route.opts?.tokenLimit;
109
+ routeMeta.cache = route.opts?.cache;
110
+ routeMeta.summary = route.opts?.summary;
111
+ routeMeta.description = route.opts?.description;
112
+ if (route.opts) {
113
+ routeMeta.opts = route.opts;
114
+ }
115
+ }
116
+ pendingRoutes.delete(ControllerClass);
117
+ }
118
+ collectRoutes(ControllerClass, freshMeta) {
119
+ const routes = new Map();
120
+ for (const key of Object.getOwnPropertyNames(ControllerClass.prototype)) {
121
+ if (key === 'constructor')
122
+ continue;
123
+ const method = ControllerClass.prototype[key];
124
+ if (typeof method !== 'function')
125
+ continue;
126
+ const routeData = method[ROUTE_METADATA_KEY];
127
+ if (routeData) {
128
+ routes.set(key, { method: routeData.httpMethod });
129
+ }
130
+ }
131
+ if (freshMeta) {
132
+ for (const [key, routeMeta] of freshMeta.routes.entries()) {
133
+ if (!routeMeta.method)
134
+ continue;
135
+ routes.set(key, { method: routeMeta.method });
136
+ if (this.options.validateRouteOpts && routeMeta.opts) {
137
+ const result = this.options.validateRouteOpts(routeMeta.opts, String(key), routeMeta.path);
138
+ if (result && typeof result === 'object' && 'then' in result) {
139
+ // Keep behavior aligned with the current server host.
140
+ }
141
+ }
142
+ }
143
+ }
144
+ return routes;
145
+ }
146
+ extractMethodPrefix(methodName) {
147
+ const standardPrefixes = ['create', 'update', 'delete', 'list', 'find', 'send', 'get', 'do'];
148
+ for (const prefix of standardPrefixes) {
149
+ if (methodName.startsWith(prefix) && methodName.length > prefix.length) {
150
+ const nextChar = methodName.charAt(prefix.length);
151
+ if (nextChar === nextChar.toUpperCase()) {
152
+ return prefix;
153
+ }
154
+ }
155
+ }
156
+ for (let i = 1; i < methodName.length; i++) {
157
+ const char = methodName.charAt(i);
158
+ if (char === char.toUpperCase() && char !== char.toLowerCase()) {
159
+ return methodName.substring(0, i);
160
+ }
161
+ }
162
+ return methodName.length > 0 ? methodName : null;
163
+ }
164
+ validateMethodName(methodName, controllerName) {
165
+ if (!methodName || methodName.length === 0)
166
+ return;
167
+ const firstChar = methodName.charAt(0);
168
+ if (firstChar === firstChar.toUpperCase() && firstChar !== firstChar.toLowerCase()) {
169
+ throw new Error(`Method '${methodName}' in ${controllerName} violates plat naming convention: ` +
170
+ `method names must start with a lowercase letter. ` +
171
+ `Use '${firstChar.toLowerCase()}${methodName.slice(1)}' instead.`);
172
+ }
173
+ if (methodName.includes('_')) {
174
+ const camelCase = methodName.replace(/_([a-z])/g, (_, char) => char.toUpperCase());
175
+ throw new Error(`Method '${methodName}' in ${controllerName} violates plat naming convention: ` +
176
+ `underscores are not allowed. Use camelCase instead. ` +
177
+ `Use '${camelCase}' instead.`);
178
+ }
179
+ if (RESERVED_METHOD_NAMES.includes(methodName.toLowerCase())) {
180
+ throw new Error(`Method '${methodName}' in ${controllerName} uses a reserved plat system name. ` +
181
+ `Reserved names: ${RESERVED_METHOD_NAMES.join(', ')}. ` +
182
+ `Choose a different method name.`);
183
+ }
184
+ if (this.options.allowedMethodPrefixes && this.options.allowedMethodPrefixes !== '*') {
185
+ const prefix = this.extractMethodPrefix(methodName);
186
+ if (prefix && !this.options.allowedMethodPrefixes.includes(prefix)) {
187
+ throw new Error(`Method '${methodName}' in ${controllerName} uses disallowed prefix '${prefix}'. ` +
188
+ `Allowed prefixes: ${this.options.allowedMethodPrefixes.join(', ')}. ` +
189
+ `Rename the method to use an allowed prefix.`);
190
+ }
191
+ }
192
+ if (this.options.disAllowedMethodPrefixes && this.options.disAllowedMethodPrefixes.length > 0) {
193
+ const prefix = this.extractMethodPrefix(methodName);
194
+ if (prefix && this.options.disAllowedMethodPrefixes.includes(prefix)) {
195
+ throw new Error(`Method '${methodName}' in ${controllerName} uses disallowed prefix '${prefix}'. ` +
196
+ `Disallowed prefixes: ${this.options.disAllowedMethodPrefixes.join(', ')}. ` +
197
+ `Rename the method to use a different prefix.`);
198
+ }
199
+ }
200
+ }
201
+ }
202
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/server/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Environment variable configuration loader
3
+ * Uses dotenv to load variables from .env file
4
+ */
5
+ export interface ServerEnvConfig {
6
+ port: number;
7
+ host: string;
8
+ protocol: string;
9
+ errorExposure: 'none' | 'message' | 'full';
10
+ jwtSecret?: string;
11
+ cors: boolean;
12
+ swagger: boolean;
13
+ redoc: boolean;
14
+ defaultAuth: string;
15
+ rateLimitMaxBalance: number;
16
+ rateLimitFillInterval: number;
17
+ rateLimitFillAmount: number;
18
+ rateLimitHeaders: boolean;
19
+ tokenLimitMaxBalance: number;
20
+ tokenLimitFillInterval: number;
21
+ tokenLimitFillAmount: number;
22
+ tokenCostHeader: boolean;
23
+ cacheHeader: boolean;
24
+ logLevel: 'debug' | 'info' | 'warn' | 'error';
25
+ nodeEnv: 'development' | 'production' | 'test';
26
+ }
27
+ /**
28
+ * Load and parse server configuration from environment variables
29
+ */
30
+ export declare function loadServerConfig(): ServerEnvConfig;
31
+ /**
32
+ * Get JWT configuration from environment
33
+ */
34
+ export declare function getJwtConfig(): {
35
+ secret: string;
36
+ expiresIn: string;
37
+ refreshExpiresIn: string;
38
+ };
39
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/server/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,OAAO,CAAA;IACzB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,OAAO,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,CAAA;CAC/C;AAmBD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAuBlD;AAED;;GAEG;AACH,wBAAgB,YAAY;;;;EAW3B"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Environment variable configuration loader
3
+ * Uses dotenv to load variables from .env file
4
+ */
5
+ import dotenv from 'dotenv';
6
+ // Load .env file
7
+ dotenv.config();
8
+ /**
9
+ * Parse boolean from environment variable
10
+ */
11
+ function parseBoolean(value, defaultValue) {
12
+ if (!value)
13
+ return defaultValue;
14
+ return value.toLowerCase() === 'true' || value === '1' || value === 'yes';
15
+ }
16
+ /**
17
+ * Parse number from environment variable
18
+ */
19
+ function parseNumber(value, defaultValue) {
20
+ if (!value)
21
+ return defaultValue;
22
+ const num = parseInt(value, 10);
23
+ return isNaN(num) ? defaultValue : num;
24
+ }
25
+ /**
26
+ * Load and parse server configuration from environment variables
27
+ */
28
+ export function loadServerConfig() {
29
+ return {
30
+ port: parseNumber(process.env.PLAT_SERVER_PORT, 3000),
31
+ host: process.env.PLAT_SERVER_HOST || 'localhost',
32
+ protocol: process.env.PLAT_PROTOCOL || 'http',
33
+ errorExposure: process.env.PLAT_ERROR_EXPOSURE || 'message',
34
+ jwtSecret: process.env.JWT_SECRET,
35
+ cors: process.env.PLAT_CORS ? parseBoolean(process.env.PLAT_CORS, true) : true,
36
+ swagger: process.env.PLAT_SWAGGER ? parseBoolean(process.env.PLAT_SWAGGER, true) : true,
37
+ redoc: process.env.PLAT_REDOC ? parseBoolean(process.env.PLAT_REDOC, true) : true,
38
+ defaultAuth: process.env.PLAT_DEFAULT_AUTH || 'public',
39
+ rateLimitMaxBalance: parseNumber(process.env.PLAT_RATE_LIMIT_MAX_BALANCE, 100),
40
+ rateLimitFillInterval: parseNumber(process.env.PLAT_RATE_LIMIT_FILL_INTERVAL, 1000),
41
+ rateLimitFillAmount: parseNumber(process.env.PLAT_RATE_LIMIT_FILL_AMOUNT, 10),
42
+ rateLimitHeaders: parseBoolean(process.env.PLAT_RATE_LIMIT_HEADERS, true),
43
+ tokenLimitMaxBalance: parseNumber(process.env.PLAT_TOKEN_LIMIT_MAX_BALANCE, 10000),
44
+ tokenLimitFillInterval: parseNumber(process.env.PLAT_TOKEN_LIMIT_FILL_INTERVAL, 1000),
45
+ tokenLimitFillAmount: parseNumber(process.env.PLAT_TOKEN_LIMIT_FILL_AMOUNT, 100),
46
+ tokenCostHeader: parseBoolean(process.env.PLAT_TOKEN_COST_HEADER, true),
47
+ cacheHeader: parseBoolean(process.env.PLAT_CACHE_HEADER, true),
48
+ logLevel: process.env.PLAT_LOG_LEVEL || 'info',
49
+ nodeEnv: process.env.NODE_ENV || 'development',
50
+ };
51
+ }
52
+ /**
53
+ * Get JWT configuration from environment
54
+ */
55
+ export function getJwtConfig() {
56
+ const secret = process.env.JWT_SECRET;
57
+ if (!secret) {
58
+ throw new Error('JWT_SECRET environment variable is not set');
59
+ }
60
+ return {
61
+ secret,
62
+ expiresIn: process.env.JWT_EXPIRES_IN || '24h',
63
+ refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES_IN || '7d',
64
+ };
65
+ }
66
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/server/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { PLATServerProtocolPlugin } from './protocol-plugin';
2
+ import type { FileQueueOptions } from './config/types';
3
+ export interface FileQueueProtocolPluginOptions {
4
+ config: FileQueueOptions | false | undefined;
5
+ }
6
+ export declare function createFileQueueProtocolPlugin(options: FileQueueProtocolPluginOptions): PLATServerProtocolPlugin;
7
+ //# sourceMappingURL=file-queue-protocol-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-queue-protocol-plugin.d.ts","sourceRoot":"","sources":["../../src/server/file-queue-protocol-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAA8B,MAAM,mBAAmB,CAAA;AAE7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,gBAAgB,GAAG,KAAK,GAAG,SAAS,CAAA;CAC7C;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG,wBAAwB,CA6K/G"}