@tx5dr/contracts 1.2.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 (180) hide show
  1. package/CLAUDE.md +41 -0
  2. package/dist/index.d.ts +55 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +86 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/schema/__tests__/plugin-runtime-log.schema.test.d.ts +2 -0
  7. package/dist/schema/__tests__/plugin-runtime-log.schema.test.d.ts.map +1 -0
  8. package/dist/schema/__tests__/plugin-runtime-log.schema.test.js +78 -0
  9. package/dist/schema/__tests__/plugin-runtime-log.schema.test.js.map +1 -0
  10. package/dist/schema/ability.d.ts +85 -0
  11. package/dist/schema/ability.d.ts.map +1 -0
  12. package/dist/schema/ability.js +119 -0
  13. package/dist/schema/ability.js.map +1 -0
  14. package/dist/schema/api-response.schema.d.ts +1017 -0
  15. package/dist/schema/api-response.schema.d.ts.map +1 -0
  16. package/dist/schema/api-response.schema.js +137 -0
  17. package/dist/schema/api-response.schema.js.map +1 -0
  18. package/dist/schema/audio-sidecar.schema.d.ts +106 -0
  19. package/dist/schema/audio-sidecar.schema.d.ts.map +1 -0
  20. package/dist/schema/audio-sidecar.schema.js +47 -0
  21. package/dist/schema/audio-sidecar.schema.js.map +1 -0
  22. package/dist/schema/audio.schema.d.ts +227 -0
  23. package/dist/schema/audio.schema.d.ts.map +1 -0
  24. package/dist/schema/audio.schema.js +56 -0
  25. package/dist/schema/audio.schema.js.map +1 -0
  26. package/dist/schema/auth.schema.d.ts +738 -0
  27. package/dist/schema/auth.schema.d.ts.map +1 -0
  28. package/dist/schema/auth.schema.js +161 -0
  29. package/dist/schema/auth.schema.js.map +1 -0
  30. package/dist/schema/cycle.schema.d.ts +33 -0
  31. package/dist/schema/cycle.schema.d.ts.map +1 -0
  32. package/dist/schema/cycle.schema.js +23 -0
  33. package/dist/schema/cycle.schema.js.map +1 -0
  34. package/dist/schema/desktop-https.schema.d.ts +146 -0
  35. package/dist/schema/desktop-https.schema.d.ts.map +1 -0
  36. package/dist/schema/desktop-https.schema.js +31 -0
  37. package/dist/schema/desktop-https.schema.js.map +1 -0
  38. package/dist/schema/ft8.schema.d.ts +1107 -0
  39. package/dist/schema/ft8.schema.d.ts.map +1 -0
  40. package/dist/schema/ft8.schema.js +268 -0
  41. package/dist/schema/ft8.schema.js.map +1 -0
  42. package/dist/schema/hello.schema.d.ts +10 -0
  43. package/dist/schema/hello.schema.d.ts.map +1 -0
  44. package/dist/schema/hello.schema.js +5 -0
  45. package/dist/schema/hello.schema.js.map +1 -0
  46. package/dist/schema/logbook.schema.d.ts +1472 -0
  47. package/dist/schema/logbook.schema.d.ts.map +1 -0
  48. package/dist/schema/logbook.schema.js +256 -0
  49. package/dist/schema/logbook.schema.js.map +1 -0
  50. package/dist/schema/mode.schema.d.ts +130 -0
  51. package/dist/schema/mode.schema.d.ts.map +1 -0
  52. package/dist/schema/mode.schema.js +141 -0
  53. package/dist/schema/mode.schema.js.map +1 -0
  54. package/dist/schema/openwebrx.schema.d.ts +352 -0
  55. package/dist/schema/openwebrx.schema.d.ts.map +1 -0
  56. package/dist/schema/openwebrx.schema.js +139 -0
  57. package/dist/schema/openwebrx.schema.js.map +1 -0
  58. package/dist/schema/operator.schema.d.ts +883 -0
  59. package/dist/schema/operator.schema.d.ts.map +1 -0
  60. package/dist/schema/operator.schema.js +97 -0
  61. package/dist/schema/operator.schema.js.map +1 -0
  62. package/dist/schema/plugin.schema.d.ts +1579 -0
  63. package/dist/schema/plugin.schema.d.ts.map +1 -0
  64. package/dist/schema/plugin.schema.js +336 -0
  65. package/dist/schema/plugin.schema.js.map +1 -0
  66. package/dist/schema/process-monitor.schema.d.ts +282 -0
  67. package/dist/schema/process-monitor.schema.d.ts.map +1 -0
  68. package/dist/schema/process-monitor.schema.js +31 -0
  69. package/dist/schema/process-monitor.schema.js.map +1 -0
  70. package/dist/schema/pskreporter.schema.d.ts +185 -0
  71. package/dist/schema/pskreporter.schema.d.ts.map +1 -0
  72. package/dist/schema/pskreporter.schema.js +80 -0
  73. package/dist/schema/pskreporter.schema.js.map +1 -0
  74. package/dist/schema/qso.schema.d.ts +419 -0
  75. package/dist/schema/qso.schema.d.ts.map +1 -0
  76. package/dist/schema/qso.schema.js +137 -0
  77. package/dist/schema/qso.schema.js.map +1 -0
  78. package/dist/schema/radio-capability.schema.d.ts +625 -0
  79. package/dist/schema/radio-capability.schema.d.ts.map +1 -0
  80. package/dist/schema/radio-capability.schema.js +191 -0
  81. package/dist/schema/radio-capability.schema.js.map +1 -0
  82. package/dist/schema/radio-power-support.d.ts +45 -0
  83. package/dist/schema/radio-power-support.d.ts.map +1 -0
  84. package/dist/schema/radio-power-support.js +64 -0
  85. package/dist/schema/radio-power-support.js.map +1 -0
  86. package/dist/schema/radio-power.schema.d.ts +319 -0
  87. package/dist/schema/radio-power.schema.d.ts.map +1 -0
  88. package/dist/schema/radio-power.schema.js +87 -0
  89. package/dist/schema/radio-power.schema.js.map +1 -0
  90. package/dist/schema/radio-profile.schema.d.ts +2694 -0
  91. package/dist/schema/radio-profile.schema.d.ts.map +1 -0
  92. package/dist/schema/radio-profile.schema.js +71 -0
  93. package/dist/schema/radio-profile.schema.js.map +1 -0
  94. package/dist/schema/radio.schema.d.ts +1438 -0
  95. package/dist/schema/radio.schema.d.ts.map +1 -0
  96. package/dist/schema/radio.schema.js +314 -0
  97. package/dist/schema/radio.schema.js.map +1 -0
  98. package/dist/schema/realtime.schema.d.ts +1299 -0
  99. package/dist/schema/realtime.schema.d.ts.map +1 -0
  100. package/dist/schema/realtime.schema.js +184 -0
  101. package/dist/schema/realtime.schema.js.map +1 -0
  102. package/dist/schema/rigctld.schema.d.ts +151 -0
  103. package/dist/schema/rigctld.schema.d.ts.map +1 -0
  104. package/dist/schema/rigctld.schema.js +42 -0
  105. package/dist/schema/rigctld.schema.js.map +1 -0
  106. package/dist/schema/server-message-keys.d.ts +21 -0
  107. package/dist/schema/server-message-keys.d.ts.map +1 -0
  108. package/dist/schema/server-message-keys.js +22 -0
  109. package/dist/schema/server-message-keys.js.map +1 -0
  110. package/dist/schema/slot-info.schema.d.ts +696 -0
  111. package/dist/schema/slot-info.schema.d.ts.map +1 -0
  112. package/dist/schema/slot-info.schema.js +144 -0
  113. package/dist/schema/slot-info.schema.js.map +1 -0
  114. package/dist/schema/spectrum.schema.d.ts +716 -0
  115. package/dist/schema/spectrum.schema.d.ts.map +1 -0
  116. package/dist/schema/spectrum.schema.js +128 -0
  117. package/dist/schema/spectrum.schema.js.map +1 -0
  118. package/dist/schema/station-info.schema.d.ts +202 -0
  119. package/dist/schema/station-info.schema.d.ts.map +1 -0
  120. package/dist/schema/station-info.schema.js +32 -0
  121. package/dist/schema/station-info.schema.js.map +1 -0
  122. package/dist/schema/system.schema.d.ts +113 -0
  123. package/dist/schema/system.schema.d.ts.map +1 -0
  124. package/dist/schema/system.schema.js +95 -0
  125. package/dist/schema/system.schema.js.map +1 -0
  126. package/dist/schema/transmission.schema.d.ts +413 -0
  127. package/dist/schema/transmission.schema.d.ts.map +1 -0
  128. package/dist/schema/transmission.schema.js +78 -0
  129. package/dist/schema/transmission.schema.js.map +1 -0
  130. package/dist/schema/voice.schema.d.ts +38 -0
  131. package/dist/schema/voice.schema.d.ts.map +1 -0
  132. package/dist/schema/voice.schema.js +24 -0
  133. package/dist/schema/voice.schema.js.map +1 -0
  134. package/dist/schema/websocket.schema.d.ts +16916 -0
  135. package/dist/schema/websocket.schema.d.ts.map +1 -0
  136. package/dist/schema/websocket.schema.js +1050 -0
  137. package/dist/schema/websocket.schema.js.map +1 -0
  138. package/dist/utils/grid.d.ts +13 -0
  139. package/dist/utils/grid.d.ts.map +1 -0
  140. package/dist/utils/grid.js +71 -0
  141. package/dist/utils/grid.js.map +1 -0
  142. package/eslint.config.js +15 -0
  143. package/package.json +28 -0
  144. package/src/index.ts +152 -0
  145. package/src/schema/__tests__/plugin-runtime-log.schema.test.ts +90 -0
  146. package/src/schema/ability.ts +205 -0
  147. package/src/schema/api-response.schema.ts +187 -0
  148. package/src/schema/audio-sidecar.schema.ts +53 -0
  149. package/src/schema/audio.schema.ts +73 -0
  150. package/src/schema/auth.schema.ts +224 -0
  151. package/src/schema/cycle.schema.ts +25 -0
  152. package/src/schema/desktop-https.schema.ts +43 -0
  153. package/src/schema/ft8.schema.ts +362 -0
  154. package/src/schema/hello.schema.ts +7 -0
  155. package/src/schema/logbook.schema.ts +310 -0
  156. package/src/schema/mode.schema.ts +158 -0
  157. package/src/schema/openwebrx.schema.ts +160 -0
  158. package/src/schema/operator.schema.ts +112 -0
  159. package/src/schema/plugin.schema.ts +503 -0
  160. package/src/schema/process-monitor.schema.ts +41 -0
  161. package/src/schema/pskreporter.schema.ts +102 -0
  162. package/src/schema/qso.schema.ts +173 -0
  163. package/src/schema/radio-capability.schema.ts +244 -0
  164. package/src/schema/radio-power-support.ts +107 -0
  165. package/src/schema/radio-power.schema.ts +101 -0
  166. package/src/schema/radio-profile.schema.ts +91 -0
  167. package/src/schema/radio.schema.ts +385 -0
  168. package/src/schema/realtime.schema.ts +262 -0
  169. package/src/schema/rigctld.schema.ts +51 -0
  170. package/src/schema/server-message-keys.ts +26 -0
  171. package/src/schema/slot-info.schema.ts +162 -0
  172. package/src/schema/spectrum.schema.ts +166 -0
  173. package/src/schema/station-info.schema.ts +40 -0
  174. package/src/schema/system.schema.ts +121 -0
  175. package/src/schema/transmission.schema.ts +105 -0
  176. package/src/schema/voice.schema.ts +28 -0
  177. package/src/schema/websocket.schema.ts +1480 -0
  178. package/src/utils/grid.ts +94 -0
  179. package/test/mode-schema.test.ts +48 -0
  180. package/tsconfig.json +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ft8.schema.d.ts","sourceRoot":"","sources":["../../src/schema/ft8.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ import { z } from 'zod';
2
+ import { LogbookAnalysisSchema } from './slot-info.schema.js';
3
+ // FT8解码帧信息(基于wsjtx-lib的数据类型)
4
+ export const FT8DecodeSchema = z.object({
5
+ // 时间戳
6
+ timestamp: z.number(),
7
+ // 信噪比
8
+ snr: z.number(),
9
+ // 时间偏移(秒)
10
+ dt: z.number(),
11
+ // 频率偏移(Hz)
12
+ df: z.number(),
13
+ // 解码的消息文本
14
+ message: z.string(),
15
+ // 是否为低置信度解码
16
+ lowConfidence: z.boolean().optional(),
17
+ // 解码周期(15秒周期内的序号)
18
+ cycle: z.number(),
19
+ });
20
+ // FT8编码请求
21
+ export const FT8EncodeRequestSchema = z.object({
22
+ message: z.string(),
23
+ frequency: z.number().optional(),
24
+ // 发射功率(dBm)
25
+ power: z.number().optional(),
26
+ });
27
+ // FT8编码响应
28
+ export const FT8EncodeResponseSchema = z.object({
29
+ success: z.boolean(),
30
+ audioData: z.array(z.number()).optional(),
31
+ duration: z.number().optional(),
32
+ error: z.string().optional(),
33
+ });
34
+ // FT8解码帧列表响应
35
+ export const FT8DecodesResponseSchema = z.object({
36
+ decodes: z.array(FT8DecodeSchema),
37
+ cycle: z.number(),
38
+ timestamp: z.number(),
39
+ });
40
+ // FT8频谱数据
41
+ export const FT8SpectrumSchema = z.object({
42
+ // 时间戳
43
+ timestamp: z.number(),
44
+ // 采样率
45
+ sampleRate: z.number(),
46
+ // 频率范围
47
+ frequencyRange: z.object({
48
+ min: z.number(),
49
+ max: z.number(),
50
+ }),
51
+ // 二进制频谱数据
52
+ binaryData: z.object({
53
+ // 二进制数据,使用base64编码
54
+ data: z.string(),
55
+ // 数据格式描述
56
+ format: z.object({
57
+ type: z.literal('int16'),
58
+ // 数据点数量
59
+ length: z.number(),
60
+ // 缩放因子(可选)
61
+ scale: z.number().optional(),
62
+ // 偏移量(可选)
63
+ offset: z.number().optional(),
64
+ }),
65
+ }),
66
+ // 频谱数据摘要
67
+ summary: z.object({
68
+ // 峰值频率(Hz)
69
+ peakFrequency: z.number(),
70
+ // 峰值幅度(dB)
71
+ peakMagnitude: z.number(),
72
+ // 平均幅度(dB)
73
+ averageMagnitude: z.number(),
74
+ // 动态范围(dB)
75
+ dynamicRange: z.number(),
76
+ // 能量分布(可选)
77
+ energyDistribution: z.array(z.number()).optional(),
78
+ }).optional(),
79
+ });
80
+ // FT8频谱响应
81
+ export const FT8SpectrumResponseSchema = z.object({
82
+ spectrum: FT8SpectrumSchema,
83
+ });
84
+ // FT8发射控制请求
85
+ export const FT8TransmitRequestSchema = z.object({
86
+ message: z.string(),
87
+ frequency: z.number(),
88
+ // 是否立即发射
89
+ immediate: z.boolean().optional(),
90
+ // 发射周期(如果不是立即发射)
91
+ cycle: z.number().optional(),
92
+ });
93
+ // FT8发射控制响应
94
+ export const FT8TransmitResponseSchema = z.object({
95
+ success: z.boolean(),
96
+ message: z.string().optional(),
97
+ scheduledCycle: z.number().optional(),
98
+ });
99
+ /**
100
+ * Canonical FT8 message kind identifiers used by the parser.
101
+ *
102
+ * These values describe the semantic role of a decoded message after TX-5DR has
103
+ * normalized the raw free-text payload into structured FT8/QSO stages.
104
+ */
105
+ export const FT8MessageType = {
106
+ CQ: 'cq', // CQ呼叫
107
+ CALL: 'call', // 响应呼叫
108
+ SIGNAL_REPORT: 'signal_report', // 信号报告
109
+ ROGER_REPORT: 'roger_report', // 确认信号报告
110
+ RRR: 'rrr', // RRR确认
111
+ SEVENTY_THREE: '73', // 73告别
112
+ FOX_RR73: 'fox_rr73', // Fox/Hound DXpedition模式:Fox确认完成并邀请下一个Hound
113
+ CUSTOM: 'custom', // 自定义消息
114
+ UNKNOWN: 'unknown', // 未知消息类型
115
+ };
116
+ /**
117
+ * Zod schema for {@link FT8MessageType} values.
118
+ */
119
+ export const FT8MessageTypeSchema = z.enum([
120
+ FT8MessageType.CQ,
121
+ FT8MessageType.CALL,
122
+ FT8MessageType.SIGNAL_REPORT,
123
+ FT8MessageType.ROGER_REPORT,
124
+ FT8MessageType.RRR,
125
+ FT8MessageType.SEVENTY_THREE,
126
+ FT8MessageType.FOX_RR73,
127
+ FT8MessageType.CUSTOM,
128
+ FT8MessageType.UNKNOWN,
129
+ ]);
130
+ /**
131
+ * Base shape shared by every structured FT8 message.
132
+ *
133
+ * Use this when code only needs to discriminate on the message `type` without
134
+ * caring about the rest of the payload.
135
+ */
136
+ export const FT8MessageBaseSchema = z.object({
137
+ type: FT8MessageTypeSchema,
138
+ });
139
+ /**
140
+ * Structured representation of a CQ message.
141
+ *
142
+ * This is typically the main entry point for automation plugins that scan the
143
+ * band for new targets to answer.
144
+ */
145
+ export const FT8MessageCQSchema = FT8MessageBaseSchema.extend({
146
+ type: z.literal('cq'),
147
+ senderCallsign: z.string(),
148
+ // Reuses the legacy field name for compatibility. The value can be a
149
+ // directed-CQ modifier such as DX/EU/JA or a callback token such as 290.
150
+ flag: z.string().optional(),
151
+ grid: z.string().optional(),
152
+ });
153
+ /**
154
+ * Structured representation of a directed call message.
155
+ *
156
+ * This covers "A B" style messages where one station calls or answers a
157
+ * specific target station, optionally including grid information.
158
+ */
159
+ export const FT8MessageCallSchema = FT8MessageBaseSchema.extend({
160
+ type: z.literal('call'),
161
+ senderCallsign: z.string(),
162
+ targetCallsign: z.string(),
163
+ grid: z.string().optional(),
164
+ });
165
+ /**
166
+ * Structured representation of a signal report message.
167
+ *
168
+ * This usually corresponds to the report-exchange phase of a normal FT8 QSO.
169
+ */
170
+ export const FT8MessageSignalReportSchema = FT8MessageBaseSchema.extend({
171
+ type: z.literal('signal_report'),
172
+ senderCallsign: z.string(),
173
+ targetCallsign: z.string(),
174
+ report: z.number(),
175
+ });
176
+ /**
177
+ * Structured representation of an RR73-style "roger + report" message.
178
+ *
179
+ * In standard FT8 flow this acknowledges the received report while also
180
+ * carrying the sender's report for the other station.
181
+ */
182
+ export const FT8MessageRogerReportSchema = FT8MessageBaseSchema.extend({
183
+ type: z.literal('roger_report'),
184
+ senderCallsign: z.string(),
185
+ targetCallsign: z.string(),
186
+ report: z.number(),
187
+ });
188
+ /**
189
+ * Structured representation of an `RRR` confirmation message.
190
+ *
191
+ * This indicates the sender considers the report exchange complete.
192
+ */
193
+ export const FT8MessageRRRSchema = FT8MessageBaseSchema.extend({
194
+ type: z.literal('rrr'),
195
+ senderCallsign: z.string(),
196
+ targetCallsign: z.string(),
197
+ });
198
+ /**
199
+ * Structured representation of a final `73` closing message.
200
+ *
201
+ * This is typically the terminal stage of a completed FT8 QSO.
202
+ */
203
+ export const FT8MessageSeventyThreeSchema = FT8MessageBaseSchema.extend({
204
+ type: z.literal('73'),
205
+ senderCallsign: z.string(),
206
+ targetCallsign: z.string(),
207
+ });
208
+ /**
209
+ * Structured representation of a Fox/Hound `RR73` completion message.
210
+ *
211
+ * This variant appears in DXpedition workflows where the Fox acknowledges one
212
+ * completed Hound and may invite the next one in the same frame.
213
+ */
214
+ export const FT8MessageFoxRR73Schema = FT8MessageBaseSchema.extend({
215
+ type: z.literal('fox_rr73'),
216
+ senderCallsign: z.string().optional(), // 可解析时填入真实 Fox 呼号;仅短哈希时留空
217
+ completedCallsign: z.string(), // 已完成QSO的Hound呼号
218
+ nextCallsign: z.string(), // 下一个被邀请的Hound呼号
219
+ foxHash: z.string().optional(), // Fox的哈希码(去掉尖括号后的值)
220
+ snrForNext: z.number().optional(), // Fox告知下一个Hound的信号强度(如+04→4)
221
+ });
222
+ /**
223
+ * Structured representation of a decoder-recognized message whose free-text
224
+ * payload is intentionally left uninterpreted.
225
+ */
226
+ export const FT8MessageCustomSchema = FT8MessageBaseSchema.extend({
227
+ type: z.literal('custom'),
228
+ });
229
+ /**
230
+ * Fallback structured representation for a decoded message that the parser
231
+ * could not confidently classify.
232
+ */
233
+ export const FT8MessageUnknownSchema = FT8MessageBaseSchema.extend({
234
+ type: z.literal('unknown'),
235
+ });
236
+ /**
237
+ * Discriminated union of every structured FT8 message variant understood by
238
+ * TX-5DR.
239
+ */
240
+ export const FT8MessageSchema = z.discriminatedUnion('type', [
241
+ FT8MessageCQSchema,
242
+ FT8MessageCallSchema,
243
+ FT8MessageSignalReportSchema,
244
+ FT8MessageRogerReportSchema,
245
+ FT8MessageRRRSchema,
246
+ FT8MessageSeventyThreeSchema,
247
+ FT8MessageFoxRR73Schema,
248
+ FT8MessageCustomSchema,
249
+ FT8MessageUnknownSchema,
250
+ ]);
251
+ /**
252
+ * Fully parsed decode entry used by selection, filtering and automation logic.
253
+ *
254
+ * This is the main plugin-facing FT8 payload. It combines RF metrics from the
255
+ * decoder (`snr`, `dt`, `df`), the original unparsed text (`rawMessage`), the
256
+ * normalized semantic form (`message`) and optional logbook enrichment.
257
+ */
258
+ export const ParsedFT8MessageSchema = z.object({
259
+ snr: z.number(),
260
+ dt: z.number(),
261
+ df: z.number(),
262
+ rawMessage: z.string(),
263
+ message: FT8MessageSchema,
264
+ slotId: z.string(),
265
+ timestamp: z.number(),
266
+ logbookAnalysis: LogbookAnalysisSchema.optional(),
267
+ });
268
+ //# sourceMappingURL=ft8.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ft8.schema.js","sourceRoot":"","sources":["../../src/schema/ft8.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export declare const HelloResponseSchema: z.ZodObject<{
3
+ message: z.ZodString;
4
+ }, "strip", z.ZodTypeAny, {
5
+ message: string;
6
+ }, {
7
+ message: string;
8
+ }>;
9
+ export type HelloResponse = z.infer<typeof HelloResponseSchema>;
10
+ //# sourceMappingURL=hello.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello.schema.d.ts","sourceRoot":"","sources":["../../src/schema/hello.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ export const HelloResponseSchema = z.object({
3
+ message: z.string(),
4
+ });
5
+ //# sourceMappingURL=hello.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello.schema.js","sourceRoot":"","sources":["../../src/schema/hello.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}