@panneau/protocol 0.0.0-stage → 5.0.0-alpha.1

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 (103) hide show
  1. package/README.md +35 -2
  2. package/dist/conditions.d.ts +7 -0
  3. package/dist/conditions.d.ts.map +1 -0
  4. package/dist/conditions.js +21 -0
  5. package/dist/conditions.js.map +1 -0
  6. package/dist/conformance/index.d.ts +42 -0
  7. package/dist/conformance/index.d.ts.map +1 -0
  8. package/dist/conformance/index.js +270 -0
  9. package/dist/conformance/index.js.map +1 -0
  10. package/dist/constants.d.ts +21 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/constants.js +73 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +21 -0
  17. package/dist/lint.d.ts +8 -0
  18. package/dist/lint.d.ts.map +1 -0
  19. package/dist/lint.js +73 -0
  20. package/dist/lint.js.map +1 -0
  21. package/dist/mock/example.d.ts +8 -0
  22. package/dist/mock/example.d.ts.map +1 -0
  23. package/dist/mock/example.js +190 -0
  24. package/dist/mock/example.js.map +1 -0
  25. package/dist/mock/index.d.ts +24 -0
  26. package/dist/mock/index.d.ts.map +1 -0
  27. package/dist/mock/index.js +254 -0
  28. package/dist/mock/index.js.map +1 -0
  29. package/dist/openapi.d.ts +11 -0
  30. package/dist/openapi.d.ts.map +1 -0
  31. package/dist/openapi.js +540 -0
  32. package/dist/openapi.js.map +1 -0
  33. package/dist/problem.d.ts +7 -0
  34. package/dist/problem.d.ts.map +1 -0
  35. package/dist/problem.js +22 -0
  36. package/dist/problem.js.map +1 -0
  37. package/dist/query.d.ts +41 -0
  38. package/dist/query.d.ts.map +1 -0
  39. package/dist/query.js +80 -0
  40. package/dist/query.js.map +1 -0
  41. package/dist/rules.d.ts +29 -0
  42. package/dist/rules.d.ts.map +1 -0
  43. package/dist/rules.js +143 -0
  44. package/dist/rules.js.map +1 -0
  45. package/dist/runtime/index.d.ts +10 -0
  46. package/dist/runtime/index.d.ts.map +1 -0
  47. package/dist/runtime/index.js +9 -0
  48. package/dist/schemas/action.d.ts +163 -0
  49. package/dist/schemas/action.d.ts.map +1 -0
  50. package/dist/schemas/action.js +56 -0
  51. package/dist/schemas/action.js.map +1 -0
  52. package/dist/schemas/api.d.ts +371 -0
  53. package/dist/schemas/api.d.ts.map +1 -0
  54. package/dist/schemas/api.js +140 -0
  55. package/dist/schemas/api.js.map +1 -0
  56. package/dist/schemas/boot.d.ts +14 -0
  57. package/dist/schemas/boot.d.ts.map +1 -0
  58. package/dist/schemas/boot.js +16 -0
  59. package/dist/schemas/boot.js.map +1 -0
  60. package/dist/schemas/common.d.ts +28 -0
  61. package/dist/schemas/common.d.ts.map +1 -0
  62. package/dist/schemas/common.js +35 -0
  63. package/dist/schemas/common.js.map +1 -0
  64. package/dist/schemas/definition.d.ts +462 -0
  65. package/dist/schemas/definition.d.ts.map +1 -0
  66. package/dist/schemas/definition.js +101 -0
  67. package/dist/schemas/definition.js.map +1 -0
  68. package/dist/schemas/field.d.ts +139 -0
  69. package/dist/schemas/field.d.ts.map +1 -0
  70. package/dist/schemas/field.js +94 -0
  71. package/dist/schemas/field.js.map +1 -0
  72. package/dist/schemas/index.d.ts +1536 -0
  73. package/dist/schemas/index.d.ts.map +1 -0
  74. package/dist/schemas/index.js +68 -0
  75. package/dist/schemas/index.js.map +1 -0
  76. package/dist/schemas/layout.d.ts +26 -0
  77. package/dist/schemas/layout.d.ts.map +1 -0
  78. package/dist/schemas/layout.js +23 -0
  79. package/dist/schemas/layout.js.map +1 -0
  80. package/dist/schemas/list.d.ts +69 -0
  81. package/dist/schemas/list.d.ts.map +1 -0
  82. package/dist/schemas/list.js +41 -0
  83. package/dist/schemas/list.js.map +1 -0
  84. package/dist/schemas/resource.d.ts +328 -0
  85. package/dist/schemas/resource.d.ts.map +1 -0
  86. package/dist/schemas/resource.js +38 -0
  87. package/dist/schemas/resource.js.map +1 -0
  88. package/dist/validate.d.ts +28 -0
  89. package/dist/validate.d.ts.map +1 -0
  90. package/dist/validate.js +52 -0
  91. package/dist/validate.js.map +1 -0
  92. package/dist/values.d.ts +7 -0
  93. package/dist/values.d.ts.map +1 -0
  94. package/dist/values.js +29 -0
  95. package/dist/values.js.map +1 -0
  96. package/dist/version.d.ts +5 -0
  97. package/dist/version.d.ts.map +1 -0
  98. package/dist/version.js +9 -0
  99. package/dist/version.js.map +1 -0
  100. package/package.json +53 -5
  101. package/schema/boot.schema.json +1229 -0
  102. package/schema/definition.schema.json +1195 -0
  103. package/schema/openapi.json +3839 -0
@@ -0,0 +1,462 @@
1
+ import { z } from 'zod';
2
+ export declare const User: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ email: z.ZodOptional<z.ZodString>;
6
+ avatarUrl: z.ZodOptional<z.ZodString>;
7
+ abilities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
8
+ }, z.core.$loose>;
9
+ export declare const AuthProvider: z.ZodObject<{
10
+ id: z.ZodString;
11
+ label: z.ZodString;
12
+ url: z.ZodOptional<z.ZodString>;
13
+ icon: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$loose>;
15
+ export declare const Auth: z.ZodObject<{
16
+ mode: z.ZodEnum<{
17
+ external: "external";
18
+ panneau: "panneau";
19
+ }>;
20
+ loginUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ password: z.ZodOptional<z.ZodBoolean>;
22
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
23
+ id: z.ZodString;
24
+ label: z.ZodString;
25
+ url: z.ZodOptional<z.ZodString>;
26
+ icon: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$loose>>>;
28
+ passwordReset: z.ZodOptional<z.ZodBoolean>;
29
+ twoFactor: z.ZodOptional<z.ZodBoolean>;
30
+ passkeys: z.ZodOptional<z.ZodBoolean>;
31
+ emailVerification: z.ZodOptional<z.ZodBoolean>;
32
+ }, z.core.$loose>;
33
+ export declare const MenuItem: z.ZodObject<{
34
+ type: z.ZodString;
35
+ label: z.ZodOptional<z.ZodString>;
36
+ icon: z.ZodOptional<z.ZodString>;
37
+ resource: z.ZodOptional<z.ZodString>;
38
+ page: z.ZodOptional<z.ZodString>;
39
+ url: z.ZodOptional<z.ZodString>;
40
+ external: z.ZodOptional<z.ZodBoolean>;
41
+ children: z.ZodOptional<z.ZodArray<typeof MenuItem>>;
42
+ }, z.core.$loose>;
43
+ export declare const Page: z.ZodObject<{
44
+ component: z.ZodString;
45
+ path: z.ZodOptional<z.ZodString>;
46
+ label: z.ZodOptional<z.ZodString>;
47
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
48
+ }, z.core.$loose>;
49
+ export declare const Widget: z.ZodObject<{
50
+ id: z.ZodString;
51
+ type: z.ZodString;
52
+ label: z.ZodOptional<z.ZodString>;
53
+ width: z.ZodOptional<z.ZodNumber>;
54
+ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
55
+ }, z.core.$loose>;
56
+ export declare const Uploads: z.ZodObject<{
57
+ mode: z.ZodEnum<{
58
+ multipart: "multipart";
59
+ tus: "tus";
60
+ presigned: "presigned";
61
+ }>;
62
+ endpoint: z.ZodOptional<z.ZodString>;
63
+ maxSize: z.ZodOptional<z.ZodNumber>;
64
+ }, z.core.$loose>;
65
+ export declare const Definition: z.ZodObject<{
66
+ protocol: z.ZodLiteral<1>;
67
+ name: z.ZodString;
68
+ locale: z.ZodString;
69
+ locales: z.ZodArray<z.ZodString>;
70
+ api: z.ZodObject<{
71
+ baseUrl: z.ZodString;
72
+ }, z.core.$loose>;
73
+ resources: z.ZodArray<z.ZodObject<{
74
+ id: z.ZodString;
75
+ label: z.ZodObject<{
76
+ singular: z.ZodString;
77
+ plural: z.ZodString;
78
+ }, z.core.$loose>;
79
+ description: z.ZodOptional<z.ZodString>;
80
+ icon: z.ZodOptional<z.ZodString>;
81
+ itemTitle: z.ZodOptional<z.ZodString>;
82
+ fields: z.ZodArray<z.ZodObject<{
83
+ name: z.ZodString;
84
+ type: z.ZodString;
85
+ label: z.ZodOptional<z.ZodString>;
86
+ help: z.ZodOptional<z.ZodString>;
87
+ placeholder: z.ZodOptional<z.ZodString>;
88
+ default: z.ZodOptional<z.ZodUnknown>;
89
+ localized: z.ZodOptional<z.ZodBoolean>;
90
+ readOnly: z.ZodOptional<z.ZodBoolean>;
91
+ createOnly: z.ZodOptional<z.ZodBoolean>;
92
+ updateOnly: z.ZodOptional<z.ZodBoolean>;
93
+ rules: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
94
+ rule: z.ZodLiteral<"required">;
95
+ message: z.ZodOptional<z.ZodString>;
96
+ }, z.core.$loose>, z.ZodObject<{
97
+ rule: z.ZodEnum<{
98
+ min: "min";
99
+ max: "max";
100
+ }>;
101
+ value: z.ZodNumber;
102
+ message: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$loose>, z.ZodObject<{
104
+ rule: z.ZodLiteral<"pattern">;
105
+ value: z.ZodString;
106
+ flags: z.ZodOptional<z.ZodString>;
107
+ message: z.ZodOptional<z.ZodString>;
108
+ }, z.core.$loose>, z.ZodObject<{
109
+ rule: z.ZodEnum<{
110
+ email: "email";
111
+ url: "url";
112
+ }>;
113
+ message: z.ZodOptional<z.ZodString>;
114
+ }, z.core.$loose>, z.ZodObject<{
115
+ rule: z.ZodLiteral<"in">;
116
+ value: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
117
+ message: z.ZodOptional<z.ZodString>;
118
+ }, z.core.$loose>, z.ZodObject<{
119
+ rule: z.ZodLiteral<"accept">;
120
+ value: z.ZodArray<z.ZodString>;
121
+ message: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$loose>, z.ZodObject<{
123
+ rule: z.ZodLiteral<"maxSize">;
124
+ value: z.ZodNumber;
125
+ message: z.ZodOptional<z.ZodString>;
126
+ }, z.core.$loose>, z.ZodObject<{
127
+ rule: z.ZodEnum<{
128
+ before: "before";
129
+ after: "after";
130
+ }>;
131
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
132
+ field: z.ZodString;
133
+ }, z.core.$loose>]>;
134
+ message: z.ZodOptional<z.ZodString>;
135
+ }, z.core.$loose>, z.ZodObject<{
136
+ rule: z.ZodString;
137
+ message: z.ZodOptional<z.ZodString>;
138
+ }, z.core.$loose>]>>>;
139
+ visibleWhen: z.ZodOptional<z.ZodObject<{
140
+ field: z.ZodOptional<z.ZodString>;
141
+ equals: z.ZodOptional<z.ZodUnknown>;
142
+ in: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
143
+ notIn: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
144
+ filled: z.ZodOptional<z.ZodBoolean>;
145
+ all: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
146
+ any: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
147
+ }, z.core.$loose>>;
148
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
149
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
150
+ label: z.ZodString;
151
+ description: z.ZodOptional<z.ZodString>;
152
+ disabled: z.ZodOptional<z.ZodBoolean>;
153
+ }, z.core.$loose>>>;
154
+ multiple: z.ZodOptional<z.ZodBoolean>;
155
+ resource: z.ZodOptional<z.ZodString>;
156
+ accept: z.ZodOptional<z.ZodArray<z.ZodString>>;
157
+ from: z.ZodOptional<z.ZodString>;
158
+ display: z.ZodOptional<z.ZodString>;
159
+ fields: z.ZodOptional<z.ZodArray<typeof import("./field").Field>>;
160
+ types: z.ZodOptional<z.ZodArray<typeof import("./field").BlockType>>;
161
+ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
162
+ }, z.core.$loose>>;
163
+ form: z.ZodOptional<z.ZodObject<{
164
+ layout: z.ZodOptional<z.ZodArray<z.ZodObject<{
165
+ type: z.ZodString;
166
+ name: z.ZodOptional<z.ZodString>;
167
+ label: z.ZodOptional<z.ZodString>;
168
+ description: z.ZodOptional<z.ZodString>;
169
+ text: z.ZodOptional<z.ZodString>;
170
+ component: z.ZodOptional<z.ZodString>;
171
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
172
+ width: z.ZodOptional<z.ZodNumber>;
173
+ collapsible: z.ZodOptional<z.ZodBoolean>;
174
+ collapsed: z.ZodOptional<z.ZodBoolean>;
175
+ visibleWhen: z.ZodOptional<z.ZodObject<{
176
+ field: z.ZodOptional<z.ZodString>;
177
+ equals: z.ZodOptional<z.ZodUnknown>;
178
+ in: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
179
+ notIn: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
180
+ filled: z.ZodOptional<z.ZodBoolean>;
181
+ all: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
182
+ any: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
183
+ }, z.core.$loose>>;
184
+ children: z.ZodOptional<z.ZodArray<typeof import("./layout").LayoutNode>>;
185
+ }, z.core.$loose>>>;
186
+ }, z.core.$loose>>;
187
+ list: z.ZodOptional<z.ZodObject<{
188
+ columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
189
+ field: z.ZodOptional<z.ZodString>;
190
+ id: z.ZodOptional<z.ZodString>;
191
+ label: z.ZodOptional<z.ZodString>;
192
+ display: z.ZodOptional<z.ZodString>;
193
+ sortable: z.ZodOptional<z.ZodBoolean>;
194
+ width: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
195
+ align: z.ZodOptional<z.ZodEnum<{
196
+ start: "start";
197
+ center: "center";
198
+ end: "end";
199
+ }>>;
200
+ }, z.core.$loose>>>;
201
+ filters: z.ZodOptional<z.ZodArray<z.ZodObject<{
202
+ id: z.ZodString;
203
+ type: z.ZodString;
204
+ label: z.ZodOptional<z.ZodString>;
205
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
206
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
207
+ label: z.ZodString;
208
+ description: z.ZodOptional<z.ZodString>;
209
+ disabled: z.ZodOptional<z.ZodBoolean>;
210
+ }, z.core.$loose>>>;
211
+ resource: z.ZodOptional<z.ZodString>;
212
+ multiple: z.ZodOptional<z.ZodBoolean>;
213
+ default: z.ZodOptional<z.ZodUnknown>;
214
+ }, z.core.$loose>>>;
215
+ sorts: z.ZodOptional<z.ZodArray<z.ZodString>>;
216
+ defaultSort: z.ZodOptional<z.ZodString>;
217
+ search: z.ZodOptional<z.ZodBoolean>;
218
+ layouts: z.ZodOptional<z.ZodArray<z.ZodString>>;
219
+ perPage: z.ZodOptional<z.ZodNumber>;
220
+ perPageOptions: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
221
+ inlineEdit: z.ZodOptional<z.ZodArray<z.ZodString>>;
222
+ selectable: z.ZodOptional<z.ZodBoolean>;
223
+ }, z.core.$loose>>;
224
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
225
+ id: z.ZodString;
226
+ label: z.ZodString;
227
+ icon: z.ZodOptional<z.ZodString>;
228
+ kind: z.ZodDefault<z.ZodEnum<{
229
+ link: "link";
230
+ server: "server";
231
+ client: "client";
232
+ }>>;
233
+ scope: z.ZodArray<z.ZodEnum<{
234
+ resource: "resource";
235
+ item: "item";
236
+ selection: "selection";
237
+ }>>;
238
+ placement: z.ZodOptional<z.ZodArray<z.ZodEnum<{
239
+ row: "row";
240
+ toolbar: "toolbar";
241
+ form: "form";
242
+ menu: "menu";
243
+ }>>>;
244
+ destructive: z.ZodOptional<z.ZodBoolean>;
245
+ confirm: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
246
+ title: z.ZodOptional<z.ZodString>;
247
+ message: z.ZodOptional<z.ZodString>;
248
+ confirmLabel: z.ZodOptional<z.ZodString>;
249
+ cancelLabel: z.ZodOptional<z.ZodString>;
250
+ }, z.core.$loose>]>>;
251
+ fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
252
+ name: z.ZodString;
253
+ type: z.ZodString;
254
+ label: z.ZodOptional<z.ZodString>;
255
+ help: z.ZodOptional<z.ZodString>;
256
+ placeholder: z.ZodOptional<z.ZodString>;
257
+ default: z.ZodOptional<z.ZodUnknown>;
258
+ localized: z.ZodOptional<z.ZodBoolean>;
259
+ readOnly: z.ZodOptional<z.ZodBoolean>;
260
+ createOnly: z.ZodOptional<z.ZodBoolean>;
261
+ updateOnly: z.ZodOptional<z.ZodBoolean>;
262
+ rules: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
263
+ rule: z.ZodLiteral<"required">;
264
+ message: z.ZodOptional<z.ZodString>;
265
+ }, z.core.$loose>, z.ZodObject<{
266
+ rule: z.ZodEnum<{
267
+ min: "min";
268
+ max: "max";
269
+ }>;
270
+ value: z.ZodNumber;
271
+ message: z.ZodOptional<z.ZodString>;
272
+ }, z.core.$loose>, z.ZodObject<{
273
+ rule: z.ZodLiteral<"pattern">;
274
+ value: z.ZodString;
275
+ flags: z.ZodOptional<z.ZodString>;
276
+ message: z.ZodOptional<z.ZodString>;
277
+ }, z.core.$loose>, z.ZodObject<{
278
+ rule: z.ZodEnum<{
279
+ email: "email";
280
+ url: "url";
281
+ }>;
282
+ message: z.ZodOptional<z.ZodString>;
283
+ }, z.core.$loose>, z.ZodObject<{
284
+ rule: z.ZodLiteral<"in">;
285
+ value: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
286
+ message: z.ZodOptional<z.ZodString>;
287
+ }, z.core.$loose>, z.ZodObject<{
288
+ rule: z.ZodLiteral<"accept">;
289
+ value: z.ZodArray<z.ZodString>;
290
+ message: z.ZodOptional<z.ZodString>;
291
+ }, z.core.$loose>, z.ZodObject<{
292
+ rule: z.ZodLiteral<"maxSize">;
293
+ value: z.ZodNumber;
294
+ message: z.ZodOptional<z.ZodString>;
295
+ }, z.core.$loose>, z.ZodObject<{
296
+ rule: z.ZodEnum<{
297
+ before: "before";
298
+ after: "after";
299
+ }>;
300
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
301
+ field: z.ZodString;
302
+ }, z.core.$loose>]>;
303
+ message: z.ZodOptional<z.ZodString>;
304
+ }, z.core.$loose>, z.ZodObject<{
305
+ rule: z.ZodString;
306
+ message: z.ZodOptional<z.ZodString>;
307
+ }, z.core.$loose>]>>>;
308
+ visibleWhen: z.ZodOptional<z.ZodObject<{
309
+ field: z.ZodOptional<z.ZodString>;
310
+ equals: z.ZodOptional<z.ZodUnknown>;
311
+ in: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
312
+ notIn: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
313
+ filled: z.ZodOptional<z.ZodBoolean>;
314
+ all: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
315
+ any: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
316
+ }, z.core.$loose>>;
317
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
318
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
319
+ label: z.ZodString;
320
+ description: z.ZodOptional<z.ZodString>;
321
+ disabled: z.ZodOptional<z.ZodBoolean>;
322
+ }, z.core.$loose>>>;
323
+ multiple: z.ZodOptional<z.ZodBoolean>;
324
+ resource: z.ZodOptional<z.ZodString>;
325
+ accept: z.ZodOptional<z.ZodArray<z.ZodString>>;
326
+ from: z.ZodOptional<z.ZodString>;
327
+ display: z.ZodOptional<z.ZodString>;
328
+ fields: z.ZodOptional<z.ZodArray<typeof import("./field").Field>>;
329
+ types: z.ZodOptional<z.ZodArray<typeof import("./field").BlockType>>;
330
+ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
331
+ }, z.core.$loose>>>;
332
+ layout: z.ZodOptional<z.ZodArray<z.ZodObject<{
333
+ type: z.ZodString;
334
+ name: z.ZodOptional<z.ZodString>;
335
+ label: z.ZodOptional<z.ZodString>;
336
+ description: z.ZodOptional<z.ZodString>;
337
+ text: z.ZodOptional<z.ZodString>;
338
+ component: z.ZodOptional<z.ZodString>;
339
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
340
+ width: z.ZodOptional<z.ZodNumber>;
341
+ collapsible: z.ZodOptional<z.ZodBoolean>;
342
+ collapsed: z.ZodOptional<z.ZodBoolean>;
343
+ visibleWhen: z.ZodOptional<z.ZodObject<{
344
+ field: z.ZodOptional<z.ZodString>;
345
+ equals: z.ZodOptional<z.ZodUnknown>;
346
+ in: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
347
+ notIn: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
348
+ filled: z.ZodOptional<z.ZodBoolean>;
349
+ all: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
350
+ any: z.ZodOptional<z.ZodArray<typeof import("./common").Condition>>;
351
+ }, z.core.$loose>>;
352
+ children: z.ZodOptional<z.ZodArray<typeof import("./layout").LayoutNode>>;
353
+ }, z.core.$loose>>>;
354
+ queued: z.ZodOptional<z.ZodBoolean>;
355
+ url: z.ZodOptional<z.ZodString>;
356
+ route: z.ZodOptional<z.ZodString>;
357
+ component: z.ZodOptional<z.ZodString>;
358
+ abilities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
359
+ }, z.core.$loose>>>;
360
+ abilities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
361
+ features: z.ZodOptional<z.ZodObject<{
362
+ drafts: z.ZodOptional<z.ZodBoolean>;
363
+ revisions: z.ZodOptional<z.ZodBoolean>;
364
+ preview: z.ZodOptional<z.ZodUnion<readonly [z.ZodNull, z.ZodObject<{
365
+ mode: z.ZodEnum<{
366
+ component: "component";
367
+ iframe: "iframe";
368
+ }>;
369
+ component: z.ZodOptional<z.ZodString>;
370
+ }, z.core.$loose>]>>;
371
+ search: z.ZodOptional<z.ZodBoolean>;
372
+ }, z.core.$loose>>;
373
+ types: z.ZodOptional<z.ZodArray<z.ZodObject<{
374
+ id: z.ZodString;
375
+ label: z.ZodString;
376
+ icon: z.ZodOptional<z.ZodString>;
377
+ fields: z.ZodArray<typeof import("./field").Field>;
378
+ }, z.core.$loose>>>;
379
+ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
380
+ }, z.core.$loose>>;
381
+ pages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
382
+ component: z.ZodString;
383
+ path: z.ZodOptional<z.ZodString>;
384
+ label: z.ZodOptional<z.ZodString>;
385
+ props: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
386
+ }, z.core.$loose>>>;
387
+ menus: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
388
+ type: z.ZodString;
389
+ label: z.ZodOptional<z.ZodString>;
390
+ icon: z.ZodOptional<z.ZodString>;
391
+ resource: z.ZodOptional<z.ZodString>;
392
+ page: z.ZodOptional<z.ZodString>;
393
+ url: z.ZodOptional<z.ZodString>;
394
+ external: z.ZodOptional<z.ZodBoolean>;
395
+ children: z.ZodOptional<z.ZodArray<typeof MenuItem>>;
396
+ }, z.core.$loose>>>>;
397
+ routes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
398
+ auth: z.ZodOptional<z.ZodObject<{
399
+ mode: z.ZodEnum<{
400
+ external: "external";
401
+ panneau: "panneau";
402
+ }>;
403
+ loginUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
404
+ password: z.ZodOptional<z.ZodBoolean>;
405
+ providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
406
+ id: z.ZodString;
407
+ label: z.ZodString;
408
+ url: z.ZodOptional<z.ZodString>;
409
+ icon: z.ZodOptional<z.ZodString>;
410
+ }, z.core.$loose>>>;
411
+ passwordReset: z.ZodOptional<z.ZodBoolean>;
412
+ twoFactor: z.ZodOptional<z.ZodBoolean>;
413
+ passkeys: z.ZodOptional<z.ZodBoolean>;
414
+ emailVerification: z.ZodOptional<z.ZodBoolean>;
415
+ }, z.core.$loose>>;
416
+ dashboard: z.ZodOptional<z.ZodObject<{
417
+ widgets: z.ZodArray<z.ZodObject<{
418
+ id: z.ZodString;
419
+ type: z.ZodString;
420
+ label: z.ZodOptional<z.ZodString>;
421
+ width: z.ZodOptional<z.ZodNumber>;
422
+ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
423
+ }, z.core.$loose>>;
424
+ }, z.core.$loose>>;
425
+ search: z.ZodOptional<z.ZodObject<{
426
+ enabled: z.ZodBoolean;
427
+ }, z.core.$loose>>;
428
+ uploads: z.ZodOptional<z.ZodObject<{
429
+ mode: z.ZodEnum<{
430
+ multipart: "multipart";
431
+ tus: "tus";
432
+ presigned: "presigned";
433
+ }>;
434
+ endpoint: z.ZodOptional<z.ZodString>;
435
+ maxSize: z.ZodOptional<z.ZodNumber>;
436
+ }, z.core.$loose>>;
437
+ theme: z.ZodOptional<z.ZodObject<{
438
+ colorScheme: z.ZodOptional<z.ZodEnum<{
439
+ light: "light";
440
+ dark: "dark";
441
+ auto: "auto";
442
+ }>>;
443
+ }, z.core.$loose>>;
444
+ user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
445
+ id: z.ZodString;
446
+ name: z.ZodString;
447
+ email: z.ZodOptional<z.ZodString>;
448
+ avatarUrl: z.ZodOptional<z.ZodString>;
449
+ abilities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
450
+ }, z.core.$loose>>>;
451
+ }, z.core.$loose>;
452
+ export type User = z.infer<typeof User>;
453
+ export type AuthProvider = z.infer<typeof AuthProvider>;
454
+ export type Auth = z.infer<typeof Auth>;
455
+ export type MenuItem = z.infer<typeof MenuItem>;
456
+ export type Page = z.infer<typeof Page>;
457
+ export type Widget = z.infer<typeof Widget>;
458
+ export type Uploads = z.infer<typeof Uploads>;
459
+ export type Definition = z.infer<typeof Definition>;
460
+ /** A definition as a backend writes it, before defaults are applied. */
461
+ export type DefinitionInput = z.input<typeof Definition>;
462
+ //# sourceMappingURL=definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/schemas/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,IAAI;;;;;;iBAMf,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;iBAef,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;cAYG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;iBAIjB,CAAC;AAElD,eAAO,MAAM,IAAI;;;;;iBAQf,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;iBAQjB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;iBAIlB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAhCC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyEiC,CAAC;AAEpG,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -0,0 +1,101 @@
1
+ import "../version.js";
2
+ import { Abilities, Id } from "./common.js";
3
+ import { Resource } from "./resource.js";
4
+ import { z } from "zod";
5
+ //#region src/schemas/definition.ts
6
+ var User = z.looseObject({
7
+ id: Id,
8
+ name: z.string(),
9
+ email: z.string().optional(),
10
+ avatarUrl: z.string().optional(),
11
+ abilities: Abilities.optional()
12
+ });
13
+ var AuthProvider = z.looseObject({
14
+ id: z.string().min(1),
15
+ label: z.string(),
16
+ url: z.string().optional().meta({ description: "Where the login with this provider starts." }),
17
+ icon: z.string().optional()
18
+ });
19
+ var Auth = z.looseObject({
20
+ mode: z.enum(["panneau", "external"]).meta({ description: "`panneau`: Panneau's own login pages. `external`: the site handles login." }),
21
+ loginUrl: z.string().nullable().optional().meta({ description: "`external`: where unauthenticated users are sent." }),
22
+ password: z.boolean().optional(),
23
+ providers: z.array(AuthProvider).optional(),
24
+ passwordReset: z.boolean().optional(),
25
+ twoFactor: z.boolean().optional(),
26
+ passkeys: z.boolean().optional(),
27
+ emailVerification: z.boolean().optional()
28
+ });
29
+ var MenuItem = z.looseObject({
30
+ type: z.string().min(1).meta({ description: "Built-in: `resources`, `resource`, `page`, `link`, `separator`, `group`." }),
31
+ label: z.string().optional(),
32
+ icon: z.string().optional(),
33
+ resource: z.string().optional(),
34
+ page: z.string().optional(),
35
+ url: z.string().optional(),
36
+ external: z.boolean().optional(),
37
+ get children() {
38
+ return z.array(MenuItem).optional();
39
+ }
40
+ }).meta({ description: "An entry of a menu." });
41
+ var Page = z.looseObject({
42
+ component: z.string().min(1).meta({ description: "A page provided by a plugin, or a built-in page." }),
43
+ path: z.string().optional().meta({ description: "Path of a custom page." }),
44
+ label: z.string().optional(),
45
+ props: z.record(z.string(), z.unknown()).optional()
46
+ });
47
+ var Widget = z.looseObject({
48
+ id: z.string().min(1),
49
+ type: z.string().min(1).meta({ description: "Built-in: `stat`, `chart`, `recent-items`, `shortcuts`, `welcome`." }),
50
+ label: z.string().optional(),
51
+ width: z.number().int().min(1).max(12).optional(),
52
+ settings: z.record(z.string(), z.unknown()).optional()
53
+ });
54
+ var Uploads = z.looseObject({
55
+ mode: z.enum([
56
+ "multipart",
57
+ "tus",
58
+ "presigned"
59
+ ]),
60
+ endpoint: z.string().optional(),
61
+ maxSize: z.number().int().positive().optional()
62
+ });
63
+ var Definition = z.looseObject({
64
+ protocol: z.literal(1),
65
+ name: z.string(),
66
+ locale: z.string().min(2).meta({ description: "BCP 47 locale of the labels and messages." }),
67
+ locales: z.array(z.string().min(2)).min(1).meta({ description: "Locales of localized content fields." }),
68
+ api: z.looseObject({ baseUrl: z.string() }),
69
+ resources: z.array(Resource),
70
+ pages: z.record(z.string(), Page).optional(),
71
+ menus: z.record(z.string(), z.array(MenuItem)).optional(),
72
+ routes: z.record(z.string(), z.string()).optional().meta({ description: "Named paths of the frontend, for `link` actions and redirects." }),
73
+ auth: Auth.optional(),
74
+ dashboard: z.looseObject({ widgets: z.array(Widget) }).optional(),
75
+ search: z.looseObject({ enabled: z.boolean() }).optional(),
76
+ uploads: Uploads.optional(),
77
+ theme: z.looseObject({ colorScheme: z.enum([
78
+ "light",
79
+ "dark",
80
+ "auto"
81
+ ]).optional() }).optional(),
82
+ user: User.nullable().optional()
83
+ }).superRefine((definition, context) => {
84
+ const ids = /* @__PURE__ */ new Set();
85
+ definition.resources.forEach((resource, index) => {
86
+ if (ids.has(resource.id)) context.addIssue({
87
+ code: "custom",
88
+ message: `Duplicate resource id \`${resource.id}\`.`,
89
+ path: [
90
+ "resources",
91
+ index,
92
+ "id"
93
+ ]
94
+ });
95
+ ids.add(resource.id);
96
+ });
97
+ }).meta({ description: "Everything a frontend needs to render the admin for the current user." });
98
+ //#endregion
99
+ export { Auth, AuthProvider, Definition, MenuItem, Page, Uploads, User, Widget };
100
+
101
+ //# sourceMappingURL=definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.js","names":[],"sources":["../../src/schemas/definition.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PROTOCOL_VERSION } from '../version';\nimport { Abilities, Id } from './common';\nimport { Resource } from './resource';\n\nexport const User = z.looseObject({\n id: Id,\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n abilities: Abilities.optional(),\n});\n\nexport const AuthProvider = z.looseObject({\n id: z.string().min(1),\n label: z.string(),\n url: z.string().optional().meta({ description: 'Where the login with this provider starts.' }),\n icon: z.string().optional(),\n});\n\nexport const Auth = z.looseObject({\n mode: z.enum(['panneau', 'external']).meta({\n description: \"`panneau`: Panneau's own login pages. `external`: the site handles login.\",\n }),\n loginUrl: z\n .string()\n .nullable()\n .optional()\n .meta({ description: '`external`: where unauthenticated users are sent.' }),\n password: z.boolean().optional(),\n providers: z.array(AuthProvider).optional(),\n passwordReset: z.boolean().optional(),\n twoFactor: z.boolean().optional(),\n passkeys: z.boolean().optional(),\n emailVerification: z.boolean().optional(),\n});\n\nexport const MenuItem = z\n .looseObject({\n type: z.string().min(1).meta({\n description: 'Built-in: `resources`, `resource`, `page`, `link`, `separator`, `group`.',\n }),\n label: z.string().optional(),\n icon: z.string().optional(),\n resource: z.string().optional(),\n page: z.string().optional(),\n url: z.string().optional(),\n external: z.boolean().optional(),\n // The return type is written out so that declaration files keep the recursion.\n get children(): z.ZodOptional<z.ZodArray<typeof MenuItem>> {\n return z.array(MenuItem).optional();\n },\n })\n .meta({ description: 'An entry of a menu.' });\n\nexport const Page = z.looseObject({\n component: z\n .string()\n .min(1)\n .meta({ description: 'A page provided by a plugin, or a built-in page.' }),\n path: z.string().optional().meta({ description: 'Path of a custom page.' }),\n label: z.string().optional(),\n props: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const Widget = z.looseObject({\n id: z.string().min(1),\n type: z.string().min(1).meta({\n description: 'Built-in: `stat`, `chart`, `recent-items`, `shortcuts`, `welcome`.',\n }),\n label: z.string().optional(),\n width: z.number().int().min(1).max(12).optional(),\n settings: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const Uploads = z.looseObject({\n mode: z.enum(['multipart', 'tus', 'presigned']),\n endpoint: z.string().optional(),\n maxSize: z.number().int().positive().optional(),\n});\n\nexport const Definition = z\n .looseObject({\n protocol: z.literal(PROTOCOL_VERSION),\n name: z.string(),\n locale: z\n .string()\n .min(2)\n .meta({ description: 'BCP 47 locale of the labels and messages.' }),\n locales: z\n .array(z.string().min(2))\n .min(1)\n .meta({ description: 'Locales of localized content fields.' }),\n api: z.looseObject({ baseUrl: z.string() }),\n resources: z.array(Resource),\n pages: z.record(z.string(), Page).optional(),\n menus: z.record(z.string(), z.array(MenuItem)).optional(),\n routes: z.record(z.string(), z.string()).optional().meta({\n description: 'Named paths of the frontend, for `link` actions and redirects.',\n }),\n auth: Auth.optional(),\n dashboard: z.looseObject({ widgets: z.array(Widget) }).optional(),\n search: z.looseObject({ enabled: z.boolean() }).optional(),\n uploads: Uploads.optional(),\n theme: z\n .looseObject({ colorScheme: z.enum(['light', 'dark', 'auto']).optional() })\n .optional(),\n user: User.nullable().optional(),\n })\n .superRefine((definition, context) => {\n const ids = new Set<string>();\n definition.resources.forEach((resource, index) => {\n if (ids.has(resource.id)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate resource id \\`${resource.id}\\`.`,\n path: ['resources', index, 'id'],\n });\n }\n ids.add(resource.id);\n });\n })\n .meta({ description: 'Everything a frontend needs to render the admin for the current user.' });\n\nexport type User = z.infer<typeof User>;\nexport type AuthProvider = z.infer<typeof AuthProvider>;\nexport type Auth = z.infer<typeof Auth>;\nexport type MenuItem = z.infer<typeof MenuItem>;\nexport type Page = z.infer<typeof Page>;\nexport type Widget = z.infer<typeof Widget>;\nexport type Uploads = z.infer<typeof Uploads>;\nexport type Definition = z.infer<typeof Definition>;\n/** A definition as a backend writes it, before defaults are applied. */\nexport type DefinitionInput = z.input<typeof Definition>;\n"],"mappings":";;;;;AAMA,IAAa,OAAO,EAAE,YAAY;CAC9B,IAAI;CACJ,MAAM,EAAE,OAAO;CACf,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,WAAW,UAAU,SAAS;AAClC,CAAC;AAED,IAAa,eAAe,EAAE,YAAY;CACtC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,OAAO,EAAE,OAAO;CAChB,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,6CAA6C,CAAC;CAC7F,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC;AAED,IAAa,OAAO,EAAE,YAAY;CAC9B,MAAM,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,EACvC,aAAa,4EACjB,CAAC;CACD,UAAU,EACL,OAAO,CAAC,CACR,SAAS,CAAC,CACV,SAAS,CAAC,CACV,KAAK,EAAE,aAAa,oDAAoD,CAAC;CAC9E,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC/B,WAAW,EAAE,MAAM,YAAY,CAAC,CAAC,SAAS;CAC1C,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS;CACpC,WAAW,EAAE,QAAQ,CAAC,CAAC,SAAS;CAChC,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC/B,mBAAmB,EAAE,QAAQ,CAAC,CAAC,SAAS;AAC5C,CAAC;AAED,IAAa,WAAW,EACnB,YAAY;CACT,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EACzB,aAAa,2EACjB,CAAC;CACD,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS;CAE/B,IAAI,WAAuD;EACvD,OAAO,EAAE,MAAM,QAAQ,CAAC,CAAC,SAAS;CACtC;AACJ,CAAC,CAAC,CACD,KAAK,EAAE,aAAa,sBAAsB,CAAC;AAEhD,IAAa,OAAO,EAAE,YAAY;CAC9B,WAAW,EACN,OAAO,CAAC,CACR,IAAI,CAAC,CAAC,CACN,KAAK,EAAE,aAAa,mDAAmD,CAAC;CAC7E,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,yBAAyB,CAAC;CAC1E,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;AACtD,CAAC;AAED,IAAa,SAAS,EAAE,YAAY;CAChC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EACzB,aAAa,qEACjB,CAAC;CACD,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS;CAChD,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;AACzD,CAAC;AAED,IAAa,UAAU,EAAE,YAAY;CACjC,MAAM,EAAE,KAAK;EAAC;EAAa;EAAO;CAAW,CAAC;CAC9C,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;AAClD,CAAC;AAED,IAAa,aAAa,EACrB,YAAY;CACT,UAAU,EAAE,QAAA,CAAwB;CACpC,MAAM,EAAE,OAAO;CACf,QAAQ,EACH,OAAO,CAAC,CACR,IAAI,CAAC,CAAC,CACN,KAAK,EAAE,aAAa,4CAA4C,CAAC;CACtE,SAAS,EACJ,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB,IAAI,CAAC,CAAC,CACN,KAAK,EAAE,aAAa,uCAAuC,CAAC;CACjE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;CAC1C,WAAW,EAAE,MAAM,QAAQ;CAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,SAAS;CAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,SAAS;CACxD,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EACrD,aAAa,iEACjB,CAAC;CACD,MAAM,KAAK,SAAS;CACpB,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;CAChE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;CACzD,SAAS,QAAQ,SAAS;CAC1B,OAAO,EACF,YAAY,EAAE,aAAa,EAAE,KAAK;EAAC;EAAS;EAAQ;CAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAC1E,SAAS;CACd,MAAM,KAAK,SAAS,CAAC,CAAC,SAAS;AACnC,CAAC,CAAC,CACD,aAAa,YAAY,YAAY;CAClC,MAAM,sBAAM,IAAI,IAAY;CAC5B,WAAW,UAAU,SAAS,UAAU,UAAU;EAC9C,IAAI,IAAI,IAAI,SAAS,EAAE,GACnB,QAAQ,SAAS;GACb,MAAM;GACN,SAAS,2BAA2B,SAAS,GAAG;GAChD,MAAM;IAAC;IAAa;IAAO;GAAI;EACnC,CAAC;EAEL,IAAI,IAAI,SAAS,EAAE;CACvB,CAAC;AACL,CAAC,CAAC,CACD,KAAK,EAAE,aAAa,wEAAwE,CAAC"}