localsbnb-mcp-server 1.0.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 (169) hide show
  1. package/README.md +93 -0
  2. package/dist/auth/apiKeyManager.d.ts +61 -0
  3. package/dist/auth/apiKeyManager.d.ts.map +1 -0
  4. package/dist/auth/apiKeyManager.js +121 -0
  5. package/dist/auth/apiKeyManager.js.map +1 -0
  6. package/dist/auth/index.d.ts +3 -0
  7. package/dist/auth/index.d.ts.map +1 -0
  8. package/dist/auth/index.js +3 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/permissionChecker.d.ts +10 -0
  11. package/dist/auth/permissionChecker.d.ts.map +1 -0
  12. package/dist/auth/permissionChecker.js +45 -0
  13. package/dist/auth/permissionChecker.js.map +1 -0
  14. package/dist/client/cacheManager.d.ts +24 -0
  15. package/dist/client/cacheManager.d.ts.map +1 -0
  16. package/dist/client/cacheManager.js +64 -0
  17. package/dist/client/cacheManager.js.map +1 -0
  18. package/dist/client/httpClient.d.ts +12 -0
  19. package/dist/client/httpClient.d.ts.map +1 -0
  20. package/dist/client/httpClient.js +121 -0
  21. package/dist/client/httpClient.js.map +1 -0
  22. package/dist/client/index.d.ts +4 -0
  23. package/dist/client/index.d.ts.map +1 -0
  24. package/dist/client/index.js +4 -0
  25. package/dist/client/index.js.map +1 -0
  26. package/dist/client/retryHandler.d.ts +18 -0
  27. package/dist/client/retryHandler.d.ts.map +1 -0
  28. package/dist/client/retryHandler.js +68 -0
  29. package/dist/client/retryHandler.js.map +1 -0
  30. package/dist/config/index.d.ts +24 -0
  31. package/dist/config/index.d.ts.map +1 -0
  32. package/dist/config/index.js +39 -0
  33. package/dist/config/index.js.map +1 -0
  34. package/dist/config/tools.d.ts +7 -0
  35. package/dist/config/tools.d.ts.map +1 -0
  36. package/dist/config/tools.js +159 -0
  37. package/dist/config/tools.js.map +1 -0
  38. package/dist/index.d.ts +3 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +34 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/logs/combined.log +30 -0
  43. package/dist/logs/error.log +0 -0
  44. package/dist/package.json +64 -0
  45. package/dist/run.cjs +19 -0
  46. package/dist/run.sh +3 -0
  47. package/dist/server.d.ts +26 -0
  48. package/dist/server.d.ts.map +1 -0
  49. package/dist/server.js +129 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/start.mjs +34 -0
  52. package/dist/tools/channels/getChannelDetails.d.ts +3 -0
  53. package/dist/tools/channels/getChannelDetails.d.ts.map +1 -0
  54. package/dist/tools/channels/getChannelDetails.js +30 -0
  55. package/dist/tools/channels/getChannelDetails.js.map +1 -0
  56. package/dist/tools/channels/index.d.ts +1 -0
  57. package/dist/tools/channels/index.d.ts.map +1 -0
  58. package/dist/tools/channels/index.js +6 -0
  59. package/dist/tools/channels/index.js.map +1 -0
  60. package/dist/tools/channels/listChannels.d.ts +3 -0
  61. package/dist/tools/channels/listChannels.d.ts.map +1 -0
  62. package/dist/tools/channels/listChannels.js +29 -0
  63. package/dist/tools/channels/listChannels.js.map +1 -0
  64. package/dist/tools/finance/analyzeRevenue.d.ts +3 -0
  65. package/dist/tools/finance/analyzeRevenue.d.ts.map +1 -0
  66. package/dist/tools/finance/analyzeRevenue.js +30 -0
  67. package/dist/tools/finance/analyzeRevenue.js.map +1 -0
  68. package/dist/tools/finance/index.d.ts +2 -0
  69. package/dist/tools/finance/index.d.ts.map +1 -0
  70. package/dist/tools/finance/index.js +8 -0
  71. package/dist/tools/finance/index.js.map +1 -0
  72. package/dist/tools/finance/queryFinancialData.d.ts +3 -0
  73. package/dist/tools/finance/queryFinancialData.d.ts.map +1 -0
  74. package/dist/tools/finance/queryFinancialData.js +30 -0
  75. package/dist/tools/finance/queryFinancialData.js.map +1 -0
  76. package/dist/tools/finance/queryOperationalData.d.ts +3 -0
  77. package/dist/tools/finance/queryOperationalData.d.ts.map +1 -0
  78. package/dist/tools/finance/queryOperationalData.js +30 -0
  79. package/dist/tools/finance/queryOperationalData.js.map +1 -0
  80. package/dist/tools/finance/queryOperationalDataV2.d.ts +3 -0
  81. package/dist/tools/finance/queryOperationalDataV2.d.ts.map +1 -0
  82. package/dist/tools/finance/queryOperationalDataV2.js +125 -0
  83. package/dist/tools/finance/queryOperationalDataV2.js.map +1 -0
  84. package/dist/tools/orders/cancelOrder.d.ts +3 -0
  85. package/dist/tools/orders/cancelOrder.d.ts.map +1 -0
  86. package/dist/tools/orders/cancelOrder.js +27 -0
  87. package/dist/tools/orders/cancelOrder.js.map +1 -0
  88. package/dist/tools/orders/getOrderDetails.d.ts +3 -0
  89. package/dist/tools/orders/getOrderDetails.d.ts.map +1 -0
  90. package/dist/tools/orders/getOrderDetails.js +23 -0
  91. package/dist/tools/orders/getOrderDetails.js.map +1 -0
  92. package/dist/tools/orders/getOrderDetailsV2.d.ts +3 -0
  93. package/dist/tools/orders/getOrderDetailsV2.d.ts.map +1 -0
  94. package/dist/tools/orders/getOrderDetailsV2.js +48 -0
  95. package/dist/tools/orders/getOrderDetailsV2.js.map +1 -0
  96. package/dist/tools/orders/index.d.ts +3 -0
  97. package/dist/tools/orders/index.d.ts.map +1 -0
  98. package/dist/tools/orders/index.js +12 -0
  99. package/dist/tools/orders/index.js.map +1 -0
  100. package/dist/tools/orders/queryOrders.d.ts +3 -0
  101. package/dist/tools/orders/queryOrders.d.ts.map +1 -0
  102. package/dist/tools/orders/queryOrders.js +37 -0
  103. package/dist/tools/orders/queryOrders.js.map +1 -0
  104. package/dist/tools/orders/queryTodayOrders.d.ts +3 -0
  105. package/dist/tools/orders/queryTodayOrders.d.ts.map +1 -0
  106. package/dist/tools/orders/queryTodayOrders.js +159 -0
  107. package/dist/tools/orders/queryTodayOrders.js.map +1 -0
  108. package/dist/tools/rooms/batchUpdatePrices.d.ts +3 -0
  109. package/dist/tools/rooms/batchUpdatePrices.d.ts.map +1 -0
  110. package/dist/tools/rooms/batchUpdatePrices.js +40 -0
  111. package/dist/tools/rooms/batchUpdatePrices.js.map +1 -0
  112. package/dist/tools/rooms/index.d.ts +6 -0
  113. package/dist/tools/rooms/index.d.ts.map +1 -0
  114. package/dist/tools/rooms/index.js +7 -0
  115. package/dist/tools/rooms/index.js.map +1 -0
  116. package/dist/tools/rooms/queryRoomPrices.d.ts +3 -0
  117. package/dist/tools/rooms/queryRoomPrices.d.ts.map +1 -0
  118. package/dist/tools/rooms/queryRoomPrices.js +66 -0
  119. package/dist/tools/rooms/queryRoomPrices.js.map +1 -0
  120. package/dist/tools/rooms/queryRoomStatusNew.d.ts +28 -0
  121. package/dist/tools/rooms/queryRoomStatusNew.d.ts.map +1 -0
  122. package/dist/tools/rooms/queryRoomStatusNew.js +66 -0
  123. package/dist/tools/rooms/queryRoomStatusNew.js.map +1 -0
  124. package/dist/tools/rooms/queryTodayRoomStatus.d.ts +3 -0
  125. package/dist/tools/rooms/queryTodayRoomStatus.d.ts.map +1 -0
  126. package/dist/tools/rooms/queryTodayRoomStatus.js +72 -0
  127. package/dist/tools/rooms/queryTodayRoomStatus.js.map +1 -0
  128. package/dist/tools/rooms/updateRoomPrice.d.ts +3 -0
  129. package/dist/tools/rooms/updateRoomPrice.d.ts.map +1 -0
  130. package/dist/tools/rooms/updateRoomPrice.js +39 -0
  131. package/dist/tools/rooms/updateRoomPrice.js.map +1 -0
  132. package/dist/types/api.d.ts +122 -0
  133. package/dist/types/api.d.ts.map +1 -0
  134. package/dist/types/api.js +3 -0
  135. package/dist/types/api.js.map +1 -0
  136. package/dist/types/index.d.ts +5 -0
  137. package/dist/types/index.d.ts.map +1 -0
  138. package/dist/types/index.js +3 -0
  139. package/dist/types/index.js.map +1 -0
  140. package/dist/types/mcp.d.ts +41 -0
  141. package/dist/types/mcp.d.ts.map +1 -0
  142. package/dist/types/mcp.js +2 -0
  143. package/dist/types/mcp.js.map +1 -0
  144. package/dist/types/tools.d.ts +93 -0
  145. package/dist/types/tools.d.ts.map +1 -0
  146. package/dist/types/tools.js +2 -0
  147. package/dist/types/tools.js.map +1 -0
  148. package/dist/utils/desensitize.d.ts +32 -0
  149. package/dist/utils/desensitize.d.ts.map +1 -0
  150. package/dist/utils/desensitize.js +100 -0
  151. package/dist/utils/desensitize.js.map +1 -0
  152. package/dist/utils/errorHandler.d.ts +21 -0
  153. package/dist/utils/errorHandler.d.ts.map +1 -0
  154. package/dist/utils/errorHandler.js +137 -0
  155. package/dist/utils/errorHandler.js.map +1 -0
  156. package/dist/utils/index.d.ts +5 -0
  157. package/dist/utils/index.d.ts.map +1 -0
  158. package/dist/utils/index.js +5 -0
  159. package/dist/utils/index.js.map +1 -0
  160. package/dist/utils/logger.d.ts +4 -0
  161. package/dist/utils/logger.d.ts.map +1 -0
  162. package/dist/utils/logger.js +37 -0
  163. package/dist/utils/logger.js.map +1 -0
  164. package/dist/utils/validator.d.ts +273 -0
  165. package/dist/utils/validator.d.ts.map +1 -0
  166. package/dist/utils/validator.js +153 -0
  167. package/dist/utils/validator.js.map +1 -0
  168. package/mcp.sample.json +12 -0
  169. package/package.json +64 -0
@@ -0,0 +1,137 @@
1
+ import { ZodError } from 'zod';
2
+ import { logger } from './logger.js';
3
+ export var ErrorCode;
4
+ (function (ErrorCode) {
5
+ // 认证错误
6
+ ErrorCode["AUTH_REQUIRED"] = "AUTH_REQUIRED";
7
+ ErrorCode["AUTH_INVALID"] = "AUTH_INVALID";
8
+ ErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
9
+ // 参数错误
10
+ ErrorCode["INVALID_PARAMS"] = "INVALID_PARAMS";
11
+ ErrorCode["MISSING_PARAMS"] = "MISSING_PARAMS";
12
+ // API错误
13
+ ErrorCode["API_ERROR"] = "API_ERROR";
14
+ ErrorCode["API_TIMEOUT"] = "API_TIMEOUT";
15
+ ErrorCode["API_RATE_LIMIT"] = "API_RATE_LIMIT";
16
+ ErrorCode["API_NOT_FOUND"] = "API_NOT_FOUND";
17
+ // 系统错误
18
+ ErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
19
+ })(ErrorCode || (ErrorCode = {}));
20
+ /** PRD 附录 A:错误码与拟人化友好话术 */
21
+ const FRIENDLY_MESSAGES = {
22
+ [ErrorCode.AUTH_REQUIRED]: '请先配置 token 与营地信息。',
23
+ [ErrorCode.AUTH_INVALID]: '当前登录已失效,请重新配置。',
24
+ [ErrorCode.PERMISSION_DENIED]: '您没有执行该操作的权限。',
25
+ [ErrorCode.INVALID_PARAMS]: '请检查输入条件后重试。',
26
+ [ErrorCode.MISSING_PARAMS]: '请检查输入条件后重试。',
27
+ [ErrorCode.API_ERROR]: '操作失败,请稍后重试。',
28
+ [ErrorCode.API_TIMEOUT]: '老板,网络有点开小差,稍等一分钟再试。',
29
+ [ErrorCode.API_RATE_LIMIT]: '请求有点多,稍等再试。',
30
+ [ErrorCode.API_NOT_FOUND]: '操作失败,请稍后重试。',
31
+ [ErrorCode.INTERNAL_ERROR]: '系统暂时有点忙,请稍后再试。',
32
+ };
33
+ function getFriendlyMessage(code) {
34
+ return FRIENDLY_MESSAGES[code] ?? FRIENDLY_MESSAGES[ErrorCode.INTERNAL_ERROR];
35
+ }
36
+ export class MCPError extends Error {
37
+ code;
38
+ details;
39
+ constructor(code, message, details) {
40
+ super(message);
41
+ this.code = code;
42
+ this.details = details;
43
+ this.name = 'MCPError';
44
+ }
45
+ }
46
+ export function handleError(error) {
47
+ logger.error('Tool execution error', error instanceof Error ? error : new Error(String(error)));
48
+ if (error instanceof MCPError) {
49
+ return {
50
+ content: [
51
+ {
52
+ type: 'text',
53
+ text: JSON.stringify({
54
+ error: true,
55
+ code: error.code,
56
+ message: error.message,
57
+ friendlyMessage: getFriendlyMessage(error.code),
58
+ details: error.details,
59
+ }, null, 2),
60
+ },
61
+ ],
62
+ isError: true,
63
+ };
64
+ }
65
+ if (error instanceof ZodError) {
66
+ const errors = error.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join('\n');
67
+ return {
68
+ content: [
69
+ {
70
+ type: 'text',
71
+ text: JSON.stringify({
72
+ error: true,
73
+ code: ErrorCode.INVALID_PARAMS,
74
+ message: '参数验证失败',
75
+ friendlyMessage: getFriendlyMessage(ErrorCode.INVALID_PARAMS),
76
+ details: errors,
77
+ }, null, 2),
78
+ },
79
+ ],
80
+ isError: true,
81
+ };
82
+ }
83
+ if (error instanceof Error) {
84
+ const code = inferErrorCodeFromMessage(error.message);
85
+ return {
86
+ content: [
87
+ {
88
+ type: 'text',
89
+ text: JSON.stringify({
90
+ error: true,
91
+ code,
92
+ message: error.message,
93
+ friendlyMessage: getFriendlyMessage(code),
94
+ }, null, 2),
95
+ },
96
+ ],
97
+ isError: true,
98
+ };
99
+ }
100
+ return {
101
+ content: [
102
+ {
103
+ type: 'text',
104
+ text: JSON.stringify({
105
+ error: true,
106
+ code: ErrorCode.INTERNAL_ERROR,
107
+ message: '未知错误',
108
+ friendlyMessage: getFriendlyMessage(ErrorCode.INTERNAL_ERROR),
109
+ details: String(error),
110
+ }, null, 2),
111
+ },
112
+ ],
113
+ isError: true,
114
+ };
115
+ }
116
+ /** 根据错误信息推断错误码(便于返回对应友好话术) */
117
+ function inferErrorCodeFromMessage(message) {
118
+ const m = message.toLowerCase();
119
+ if (m.includes('timeout') || m.includes('超时'))
120
+ return ErrorCode.API_TIMEOUT;
121
+ if (m.includes('rate') || m.includes('limit') || m.includes('限流') || m.includes('频繁'))
122
+ return ErrorCode.API_RATE_LIMIT;
123
+ if (m.includes('camp') || m.includes('token') || m.includes('auth') || m.includes('鉴权'))
124
+ return ErrorCode.AUTH_REQUIRED;
125
+ return ErrorCode.INTERNAL_ERROR;
126
+ }
127
+ export function createSuccessResult(data) {
128
+ return {
129
+ content: [
130
+ {
131
+ type: 'text',
132
+ text: JSON.stringify(data, null, 2),
133
+ },
134
+ ],
135
+ };
136
+ }
137
+ //# sourceMappingURL=errorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { logger } from './logger.js';
2
+ export * from './validator.js';
3
+ export * from './errorHandler.js';
4
+ export * from './desensitize.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { logger } from './logger.js';
2
+ export * from './validator.js';
3
+ export * from './errorHandler.js';
4
+ export * from './desensitize.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import winston from 'winston';
2
+ export declare const logger: winston.Logger;
3
+ export type Logger = typeof logger;
4
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AA0B9B,eAAO,MAAM,MAAM,gBAajB,CAAC;AAUH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -0,0 +1,37 @@
1
+ import winston from 'winston';
2
+ import { config } from '../config/index.js';
3
+ const logFormat = winston.format.combine(winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), winston.format.json());
4
+ const consoleFormat = winston.format.combine(winston.format.colorize(), winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.printf(({ timestamp, level, message, ...meta }) => {
5
+ const metaStr = Object.keys(meta).length ? JSON.stringify(meta, null, 2) : '';
6
+ return `${timestamp} [${level}]: ${message} ${metaStr}`;
7
+ }));
8
+ // MCP 协议要求:stdout 只能用于 JSON-RPC,所有日志必须输出到 stderr
9
+ // 创建一个只输出到 stderr 的 Console transport
10
+ const stderrTransport = new winston.transports.Console({
11
+ stderrLevels: ['error', 'warn', 'info', 'debug', 'verbose', 'silly'],
12
+ // 确保所有级别的日志都输出到 stderr
13
+ consoleWarnLevels: [],
14
+ });
15
+ export const logger = winston.createLogger({
16
+ level: config.log.level,
17
+ format: config.log.format === 'json' ? logFormat : consoleFormat,
18
+ transports: [
19
+ stderrTransport,
20
+ new winston.transports.File({
21
+ filename: 'logs/error.log',
22
+ level: 'error',
23
+ }),
24
+ new winston.transports.File({
25
+ filename: 'logs/combined.log',
26
+ }),
27
+ ],
28
+ });
29
+ // 确保logs目录存在
30
+ import { mkdirSync } from 'fs';
31
+ try {
32
+ mkdirSync('logs', { recursive: true });
33
+ }
34
+ catch (error) {
35
+ // 目录可能已存在,忽略错误
36
+ }
37
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CACtC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAC3D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB,CAAC;AAEF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAC3D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO,GAAG,SAAS,KAAK,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;AAC1D,CAAC,CAAC,CACH,CAAC;AAEF,iDAAiD;AACjD,sCAAsC;AACtC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;IACrD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;IACpE,uBAAuB;IACvB,iBAAiB,EAAE,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK;IACvB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;IAChE,UAAU,EAAE;QACV,eAAe;QACf,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,OAAO;SACf,CAAC;QACF,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,mBAAmB;SAC9B,CAAC;KACH;CACF,CAAC,CAAC;AAEH,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,IAAI,CAAC;IACH,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,eAAe;AACjB,CAAC"}
@@ -0,0 +1,273 @@
1
+ import { z } from 'zod';
2
+ import type { QueryOrdersParams, CreateOrderParams, QueryRoomStatusParams, QueryRoomPricesParams, UpdateRoomPriceParams, BatchUpdatePricesParams, QueryFinancialDataParams, QueryOperationalDataParams, AnalyzeRevenueParams, ListChannelsParams, GetChannelDetailsParams } from '../types/tools.js';
3
+ export declare const queryOrdersSchema: z.ZodObject<{
4
+ storeId: z.ZodString;
5
+ startDate: z.ZodString;
6
+ endDate: z.ZodString;
7
+ status: z.ZodOptional<z.ZodEnum<["pending", "checked_in", "checked_out", "cancelled"]>>;
8
+ roomType: z.ZodOptional<z.ZodString>;
9
+ guestName: z.ZodOptional<z.ZodString>;
10
+ phone: z.ZodOptional<z.ZodString>;
11
+ page: z.ZodDefault<z.ZodNumber>;
12
+ pageSize: z.ZodDefault<z.ZodNumber>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ storeId: string;
15
+ startDate: string;
16
+ endDate: string;
17
+ page: number;
18
+ pageSize: number;
19
+ status?: "pending" | "checked_in" | "checked_out" | "cancelled" | undefined;
20
+ roomType?: string | undefined;
21
+ guestName?: string | undefined;
22
+ phone?: string | undefined;
23
+ }, {
24
+ storeId: string;
25
+ startDate: string;
26
+ endDate: string;
27
+ status?: "pending" | "checked_in" | "checked_out" | "cancelled" | undefined;
28
+ roomType?: string | undefined;
29
+ guestName?: string | undefined;
30
+ phone?: string | undefined;
31
+ page?: number | undefined;
32
+ pageSize?: number | undefined;
33
+ }>;
34
+ export declare function validateQueryOrdersParams(args: unknown): QueryOrdersParams;
35
+ export declare const getOrderDetailsSchema: z.ZodObject<{
36
+ orderId: z.ZodString;
37
+ }, "strip", z.ZodTypeAny, {
38
+ orderId: string;
39
+ }, {
40
+ orderId: string;
41
+ }>;
42
+ export declare function validateGetOrderDetailsParams(args: unknown): {
43
+ orderId: string;
44
+ };
45
+ export declare const createOrderSchema: z.ZodObject<{
46
+ storeId: z.ZodString;
47
+ guestName: z.ZodString;
48
+ phone: z.ZodString;
49
+ idCard: z.ZodOptional<z.ZodString>;
50
+ roomTypeId: z.ZodString;
51
+ checkInDate: z.ZodString;
52
+ checkOutDate: z.ZodString;
53
+ totalAmount: z.ZodOptional<z.ZodNumber>;
54
+ deposit: z.ZodOptional<z.ZodNumber>;
55
+ channel: z.ZodOptional<z.ZodString>;
56
+ remark: z.ZodOptional<z.ZodString>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ storeId: string;
59
+ guestName: string;
60
+ phone: string;
61
+ roomTypeId: string;
62
+ checkInDate: string;
63
+ checkOutDate: string;
64
+ idCard?: string | undefined;
65
+ totalAmount?: number | undefined;
66
+ deposit?: number | undefined;
67
+ channel?: string | undefined;
68
+ remark?: string | undefined;
69
+ }, {
70
+ storeId: string;
71
+ guestName: string;
72
+ phone: string;
73
+ roomTypeId: string;
74
+ checkInDate: string;
75
+ checkOutDate: string;
76
+ idCard?: string | undefined;
77
+ totalAmount?: number | undefined;
78
+ deposit?: number | undefined;
79
+ channel?: string | undefined;
80
+ remark?: string | undefined;
81
+ }>;
82
+ export declare function validateCreateOrderParams(args: unknown): CreateOrderParams;
83
+ export declare const checkInOrderSchema: z.ZodObject<{
84
+ orderId: z.ZodString;
85
+ roomId: z.ZodOptional<z.ZodString>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ orderId: string;
88
+ roomId?: string | undefined;
89
+ }, {
90
+ orderId: string;
91
+ roomId?: string | undefined;
92
+ }>;
93
+ export declare function validateCheckInOrderParams(args: unknown): {
94
+ orderId: string;
95
+ roomId?: string;
96
+ };
97
+ export declare const checkOutOrderSchema: z.ZodObject<{
98
+ orderId: z.ZodString;
99
+ }, "strip", z.ZodTypeAny, {
100
+ orderId: string;
101
+ }, {
102
+ orderId: string;
103
+ }>;
104
+ export declare function validateCheckOutOrderParams(args: unknown): {
105
+ orderId: string;
106
+ };
107
+ export declare const cancelOrderSchema: z.ZodObject<{
108
+ orderId: z.ZodString;
109
+ reason: z.ZodOptional<z.ZodString>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ orderId: string;
112
+ reason?: string | undefined;
113
+ }, {
114
+ orderId: string;
115
+ reason?: string | undefined;
116
+ }>;
117
+ export declare function validateCancelOrderParams(args: unknown): {
118
+ orderId: string;
119
+ reason?: string;
120
+ };
121
+ export declare const queryRoomStatusSchema: z.ZodObject<{
122
+ storeId: z.ZodString;
123
+ startDate: z.ZodString;
124
+ endDate: z.ZodString;
125
+ roomTypeId: z.ZodOptional<z.ZodString>;
126
+ }, "strip", z.ZodTypeAny, {
127
+ storeId: string;
128
+ startDate: string;
129
+ endDate: string;
130
+ roomTypeId?: string | undefined;
131
+ }, {
132
+ storeId: string;
133
+ startDate: string;
134
+ endDate: string;
135
+ roomTypeId?: string | undefined;
136
+ }>;
137
+ export declare function validateQueryRoomStatusParams(args: unknown): QueryRoomStatusParams;
138
+ export declare const queryRoomPricesSchema: z.ZodObject<{
139
+ storeId: z.ZodString;
140
+ startDate: z.ZodString;
141
+ endDate: z.ZodString;
142
+ roomTypeId: z.ZodOptional<z.ZodString>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ storeId: string;
145
+ startDate: string;
146
+ endDate: string;
147
+ roomTypeId?: string | undefined;
148
+ }, {
149
+ storeId: string;
150
+ startDate: string;
151
+ endDate: string;
152
+ roomTypeId?: string | undefined;
153
+ }>;
154
+ export declare function validateQueryRoomPricesParams(args: unknown): QueryRoomPricesParams;
155
+ export declare const updateRoomPriceSchema: z.ZodObject<{
156
+ storeId: z.ZodString;
157
+ roomTypeId: z.ZodString;
158
+ date: z.ZodString;
159
+ price: z.ZodNumber;
160
+ }, "strip", z.ZodTypeAny, {
161
+ storeId: string;
162
+ roomTypeId: string;
163
+ date: string;
164
+ price: number;
165
+ }, {
166
+ storeId: string;
167
+ roomTypeId: string;
168
+ date: string;
169
+ price: number;
170
+ }>;
171
+ export declare function validateUpdateRoomPriceParams(args: unknown): UpdateRoomPriceParams;
172
+ export declare const batchUpdatePricesSchema: z.ZodObject<{
173
+ storeId: z.ZodString;
174
+ updates: z.ZodArray<z.ZodObject<{
175
+ roomTypeId: z.ZodString;
176
+ date: z.ZodString;
177
+ price: z.ZodNumber;
178
+ }, "strip", z.ZodTypeAny, {
179
+ roomTypeId: string;
180
+ date: string;
181
+ price: number;
182
+ }, {
183
+ roomTypeId: string;
184
+ date: string;
185
+ price: number;
186
+ }>, "many">;
187
+ }, "strip", z.ZodTypeAny, {
188
+ storeId: string;
189
+ updates: {
190
+ roomTypeId: string;
191
+ date: string;
192
+ price: number;
193
+ }[];
194
+ }, {
195
+ storeId: string;
196
+ updates: {
197
+ roomTypeId: string;
198
+ date: string;
199
+ price: number;
200
+ }[];
201
+ }>;
202
+ export declare function validateBatchUpdatePricesParams(args: unknown): BatchUpdatePricesParams;
203
+ export declare const queryFinancialDataSchema: z.ZodObject<{
204
+ storeId: z.ZodString;
205
+ startDate: z.ZodString;
206
+ endDate: z.ZodString;
207
+ category: z.ZodOptional<z.ZodEnum<["income", "expense"]>>;
208
+ }, "strip", z.ZodTypeAny, {
209
+ storeId: string;
210
+ startDate: string;
211
+ endDate: string;
212
+ category?: "income" | "expense" | undefined;
213
+ }, {
214
+ storeId: string;
215
+ startDate: string;
216
+ endDate: string;
217
+ category?: "income" | "expense" | undefined;
218
+ }>;
219
+ export declare function validateQueryFinancialDataParams(args: unknown): QueryFinancialDataParams;
220
+ export declare const queryOperationalDataSchema: z.ZodObject<{
221
+ storeId: z.ZodString;
222
+ startDate: z.ZodString;
223
+ endDate: z.ZodString;
224
+ type: z.ZodOptional<z.ZodEnum<["accommodation", "voucher"]>>;
225
+ }, "strip", z.ZodTypeAny, {
226
+ storeId: string;
227
+ startDate: string;
228
+ endDate: string;
229
+ type?: "accommodation" | "voucher" | undefined;
230
+ }, {
231
+ storeId: string;
232
+ startDate: string;
233
+ endDate: string;
234
+ type?: "accommodation" | "voucher" | undefined;
235
+ }>;
236
+ export declare function validateQueryOperationalDataParams(args: unknown): QueryOperationalDataParams;
237
+ export declare const analyzeRevenueSchema: z.ZodObject<{
238
+ storeId: z.ZodString;
239
+ startDate: z.ZodString;
240
+ endDate: z.ZodString;
241
+ forecastDays: z.ZodDefault<z.ZodNumber>;
242
+ }, "strip", z.ZodTypeAny, {
243
+ storeId: string;
244
+ startDate: string;
245
+ endDate: string;
246
+ forecastDays: number;
247
+ }, {
248
+ storeId: string;
249
+ startDate: string;
250
+ endDate: string;
251
+ forecastDays?: number | undefined;
252
+ }>;
253
+ export declare function validateAnalyzeRevenueParams(args: unknown): AnalyzeRevenueParams;
254
+ export declare const listChannelsSchema: z.ZodObject<{
255
+ storeId: z.ZodString;
256
+ }, "strip", z.ZodTypeAny, {
257
+ storeId: string;
258
+ }, {
259
+ storeId: string;
260
+ }>;
261
+ export declare function validateListChannelsParams(args: unknown): ListChannelsParams;
262
+ export declare const getChannelDetailsSchema: z.ZodObject<{
263
+ storeId: z.ZodString;
264
+ channelId: z.ZodString;
265
+ }, "strip", z.ZodTypeAny, {
266
+ storeId: string;
267
+ channelId: string;
268
+ }, {
269
+ storeId: string;
270
+ channelId: string;
271
+ }>;
272
+ export declare function validateGetChannelDetailsParams(args: unknown): GetChannelDetailsParams;
273
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAM3B,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAE1E;AAGD,eAAO,MAAM,qBAAqB;;;;;;EAEhC,CAAC;AAEH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAEhF;AAGD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY5B,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CAE1E;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAE9F;AAGD,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAE9E;AAGD,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAE7F;AAGD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAElF;AAGD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAElF;AAGD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKhC,CAAC;AAEH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAElF;AAGD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAC;AAEH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,GAAG,uBAAuB,CAEtF;AAGD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAExF;AAGD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;EAKrC,CAAC;AAEH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,OAAO,GAAG,0BAA0B,CAE5F;AAGD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAEhF;AAGD,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAC;AAEH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAE5E;AAGD,eAAO,MAAM,uBAAuB;;;;;;;;;EAGlC,CAAC;AAEH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,GAAG,uBAAuB,CAEtF"}
@@ -0,0 +1,153 @@
1
+ import { z } from 'zod';
2
+ // 日期格式验证
3
+ const dateSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, '日期格式必须是 YYYY-MM-DD');
4
+ // 订单查询参数验证
5
+ export const queryOrdersSchema = z.object({
6
+ storeId: z.string().min(1, '店铺ID不能为空'),
7
+ startDate: dateSchema,
8
+ endDate: dateSchema,
9
+ status: z.enum(['pending', 'checked_in', 'checked_out', 'cancelled']).optional(),
10
+ roomType: z.string().optional(),
11
+ guestName: z.string().optional(),
12
+ phone: z.string().optional(),
13
+ page: z.number().int().positive().default(1),
14
+ pageSize: z.number().int().positive().max(100).default(20),
15
+ });
16
+ export function validateQueryOrdersParams(args) {
17
+ return queryOrdersSchema.parse(args);
18
+ }
19
+ // 获取订单详情参数验证
20
+ export const getOrderDetailsSchema = z.object({
21
+ orderId: z.string().min(1, '订单ID不能为空'),
22
+ });
23
+ export function validateGetOrderDetailsParams(args) {
24
+ return getOrderDetailsSchema.parse(args);
25
+ }
26
+ // 创建订单参数验证
27
+ export const createOrderSchema = z.object({
28
+ storeId: z.string().min(1, '店铺ID不能为空'),
29
+ guestName: z.string().min(1, '客人姓名不能为空'),
30
+ phone: z.string().min(1, '手机号不能为空'),
31
+ idCard: z.string().optional(),
32
+ roomTypeId: z.string().min(1, '房源类型ID不能为空'),
33
+ checkInDate: dateSchema,
34
+ checkOutDate: dateSchema,
35
+ totalAmount: z.number().nonnegative().optional(),
36
+ deposit: z.number().nonnegative().optional(),
37
+ channel: z.string().optional(),
38
+ remark: z.string().optional(),
39
+ });
40
+ export function validateCreateOrderParams(args) {
41
+ return createOrderSchema.parse(args);
42
+ }
43
+ // 办理入住参数验证
44
+ export const checkInOrderSchema = z.object({
45
+ orderId: z.string().min(1, '订单ID不能为空'),
46
+ roomId: z.string().optional(),
47
+ });
48
+ export function validateCheckInOrderParams(args) {
49
+ return checkInOrderSchema.parse(args);
50
+ }
51
+ // 办理退房参数验证
52
+ export const checkOutOrderSchema = z.object({
53
+ orderId: z.string().min(1, '订单ID不能为空'),
54
+ });
55
+ export function validateCheckOutOrderParams(args) {
56
+ return checkOutOrderSchema.parse(args);
57
+ }
58
+ // 取消订单参数验证
59
+ export const cancelOrderSchema = z.object({
60
+ orderId: z.string().min(1, '订单ID不能为空'),
61
+ reason: z.string().optional(),
62
+ });
63
+ export function validateCancelOrderParams(args) {
64
+ return cancelOrderSchema.parse(args);
65
+ }
66
+ // 查询房态参数验证
67
+ export const queryRoomStatusSchema = z.object({
68
+ storeId: z.string().min(1, '店铺ID不能为空'),
69
+ startDate: dateSchema,
70
+ endDate: dateSchema,
71
+ roomTypeId: z.string().optional(),
72
+ });
73
+ export function validateQueryRoomStatusParams(args) {
74
+ return queryRoomStatusSchema.parse(args);
75
+ }
76
+ // 查询房价参数验证
77
+ export const queryRoomPricesSchema = z.object({
78
+ storeId: z.string().min(1, '店铺ID不能为空'),
79
+ startDate: dateSchema,
80
+ endDate: dateSchema,
81
+ roomTypeId: z.string().optional(),
82
+ });
83
+ export function validateQueryRoomPricesParams(args) {
84
+ return queryRoomPricesSchema.parse(args);
85
+ }
86
+ // 更新房价参数验证
87
+ export const updateRoomPriceSchema = z.object({
88
+ storeId: z.string().min(1, '店铺ID不能为空'),
89
+ roomTypeId: z.string().min(1, '房源类型ID不能为空'),
90
+ date: dateSchema,
91
+ price: z.number().positive('价格必须大于0'),
92
+ });
93
+ export function validateUpdateRoomPriceParams(args) {
94
+ return updateRoomPriceSchema.parse(args);
95
+ }
96
+ // 批量更新价格参数验证
97
+ export const batchUpdatePricesSchema = z.object({
98
+ storeId: z.string().min(1, '店铺ID不能为空'),
99
+ updates: z.array(z.object({
100
+ roomTypeId: z.string().min(1, '房源类型ID不能为空'),
101
+ date: dateSchema,
102
+ price: z.number().positive('价格必须大于0'),
103
+ })).min(1, '至少需要一个更新项'),
104
+ });
105
+ export function validateBatchUpdatePricesParams(args) {
106
+ return batchUpdatePricesSchema.parse(args);
107
+ }
108
+ // 查询财务数据参数验证
109
+ export const queryFinancialDataSchema = z.object({
110
+ storeId: z.string().min(1, '店铺ID不能为空'),
111
+ startDate: dateSchema,
112
+ endDate: dateSchema,
113
+ category: z.enum(['income', 'expense']).optional(),
114
+ });
115
+ export function validateQueryFinancialDataParams(args) {
116
+ return queryFinancialDataSchema.parse(args);
117
+ }
118
+ // 查询经营数据参数验证
119
+ export const queryOperationalDataSchema = z.object({
120
+ storeId: z.string().min(1, '店铺ID不能为空'),
121
+ startDate: dateSchema,
122
+ endDate: dateSchema,
123
+ type: z.enum(['accommodation', 'voucher']).optional(),
124
+ });
125
+ export function validateQueryOperationalDataParams(args) {
126
+ return queryOperationalDataSchema.parse(args);
127
+ }
128
+ // 收益分析参数验证
129
+ export const analyzeRevenueSchema = z.object({
130
+ storeId: z.string().min(1, '店铺ID不能为空'),
131
+ startDate: dateSchema,
132
+ endDate: dateSchema,
133
+ forecastDays: z.number().int().positive().max(30).default(7),
134
+ });
135
+ export function validateAnalyzeRevenueParams(args) {
136
+ return analyzeRevenueSchema.parse(args);
137
+ }
138
+ // 获取渠道列表参数验证
139
+ export const listChannelsSchema = z.object({
140
+ storeId: z.string().min(1, '店铺ID不能为空'),
141
+ });
142
+ export function validateListChannelsParams(args) {
143
+ return listChannelsSchema.parse(args);
144
+ }
145
+ // 获取渠道详情参数验证
146
+ export const getChannelDetailsSchema = z.object({
147
+ storeId: z.string().min(1, '店铺ID不能为空'),
148
+ channelId: z.string().min(1, '渠道ID不能为空'),
149
+ });
150
+ export function validateGetChannelDetailsParams(args) {
151
+ return getChannelDetailsSchema.parse(args);
152
+ }
153
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,SAAS;AACT,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAEjF,WAAW;AACX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,UAAU,6BAA6B,CAAC,IAAa;IACzD,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;IAC3C,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,UAAU,2BAA2B,CAAC,IAAa;IACvD,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,UAAU,6BAA6B,CAAC,IAAa;IACzD,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,UAAU,6BAA6B,CAAC,IAAa;IACzD,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;IAC3C,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,UAAU,6BAA6B,CAAC,IAAa;IACzD,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;QACP,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;QAC3C,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;KACtC,CAAC,CACH,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,UAAU,+BAA+B,CAAC,IAAa;IAC3D,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,UAAU,gCAAgC,CAAC,IAAa;IAC5D,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAEH,MAAM,UAAU,kCAAkC,CAAC,IAAa;IAC9D,OAAO,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,WAAW;AACX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,UAAU;IACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAAC,IAAa;IACxD,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACtD,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,aAAa;AACb,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,UAAU,+BAA+B,CAAC,IAAa;IAC3D,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}