sonamu 0.2.44 → 0.2.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs DELETED
@@ -1,427 +0,0 @@
1
- const require = (await import('module')).createRequire(import.meta.url);
2
- import {
3
- AlreadyProcessedException,
4
- ApiParamType,
5
- BadRequestException,
6
- BaseModel,
7
- BaseModelClass,
8
- DB,
9
- DuplicateRowException,
10
- EntityManager,
11
- FixtureManager,
12
- FixtureManagerClass,
13
- GenerateOptions,
14
- InternalServerErrorException,
15
- Migrator,
16
- NotFoundException,
17
- PathAndCode,
18
- RenderingNode,
19
- SQLDateTimeString,
20
- ServiceUnavailableException,
21
- SoException,
22
- Sonamu,
23
- SonamuQueryMode,
24
- Syncer,
25
- TargetNotFoundException,
26
- TemplateKey,
27
- TemplateOptions,
28
- UnauthorizedException,
29
- UpsertBuilder,
30
- api,
31
- apiParamToTsCode,
32
- apiParamTypeToTsType,
33
- findApiRootPath,
34
- findAppRootPath,
35
- getTextTypeLength,
36
- getZodObjectFromApi,
37
- getZodObjectFromApiParams,
38
- getZodTypeFromApiParamType,
39
- globAsync,
40
- importMultiple,
41
- isBelongsToOneRelationProp,
42
- isBigIntegerProp,
43
- isBooleanProp,
44
- isCustomJoinClause,
45
- isDaemonServer,
46
- isDateProp,
47
- isDateTimeProp,
48
- isDecimalProp,
49
- isDevelopment,
50
- isDoubleProp,
51
- isEnumProp,
52
- isFloatProp,
53
- isHasManyRelationProp,
54
- isInDocker,
55
- isIntegerProp,
56
- isJsonProp,
57
- isKnexError,
58
- isLocal,
59
- isManyToManyRelationProp,
60
- isOneToOneRelationProp,
61
- isProduction,
62
- isRefField,
63
- isRelationProp,
64
- isRemote,
65
- isSoException,
66
- isStaging,
67
- isStringProp,
68
- isTest,
69
- isTextProp,
70
- isTimeProp,
71
- isTimestampProp,
72
- isUuidProp,
73
- isVirtualProp,
74
- nonNullable,
75
- propNodeToZodTypeDef,
76
- propToZodTypeDef,
77
- registeredApis,
78
- serializeZodType,
79
- unwrapPromiseOnce,
80
- zArrayable,
81
- zodTypeToTsTypeDef,
82
- zodTypeToZodCode
83
- } from "./chunk-FOD6BJQJ.mjs";
84
- import "./chunk-JXJTFHF7.mjs";
85
-
86
- // src/exceptions/error-handler.ts
87
- function setupErrorHandler(server) {
88
- server.setErrorHandler((error, request, reply) => {
89
- error.statusCode ?? (error.statusCode = 400);
90
- if (isSoException(error) && error.payload && Array.isArray(error.payload)) {
91
- const issues = error.payload;
92
- const [issue] = issues;
93
- const message = `${issue.message} (${issue.path.join("/")})`;
94
- request.log.error(`${error.statusCode} ${message}`);
95
- reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
96
- name: error.name,
97
- code: error.code,
98
- message,
99
- validationErrors: error.validation,
100
- issues
101
- });
102
- } else {
103
- request.log.error(`${error.statusCode} ${error.message}`);
104
- reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
105
- name: error.name,
106
- code: error.code,
107
- message: error.message,
108
- validationErrors: error.validation
109
- });
110
- }
111
- });
112
- }
113
-
114
- // src/entity/entity-utils.ts
115
- import inflection from "inflection";
116
-
117
- // src/utils/model.ts
118
- function asArray(param) {
119
- if (Array.isArray(param)) {
120
- return param;
121
- } else {
122
- return [param];
123
- }
124
- }
125
- function objToMap(obj) {
126
- const keys = Object.keys(obj);
127
- if (keys.every((key) => parseInt(key).toString() === key)) {
128
- return new Map(keys.map((key) => [parseInt(key), obj[key]]));
129
- } else {
130
- return new Map(Object.entries(obj));
131
- }
132
- }
133
-
134
- // src/entity/entity-utils.ts
135
- var p = {
136
- integer,
137
- bigInteger,
138
- text,
139
- string,
140
- float,
141
- double,
142
- decimal,
143
- boolean,
144
- date,
145
- dateTime,
146
- time,
147
- timestamp,
148
- json,
149
- uuid,
150
- enums,
151
- virtual,
152
- relationOneToOne,
153
- relationBelongsToOne,
154
- relationHasMany,
155
- relationManyToMany
156
- };
157
- function integer(name, option) {
158
- return {
159
- name,
160
- type: "integer",
161
- ...option
162
- };
163
- }
164
- function bigInteger(name, option) {
165
- return {
166
- name,
167
- type: "bigInteger",
168
- ...option
169
- };
170
- }
171
- function text(name, option) {
172
- return {
173
- name,
174
- type: "text",
175
- ...option
176
- };
177
- }
178
- function string(name, option) {
179
- return {
180
- name,
181
- type: "string",
182
- ...option
183
- };
184
- }
185
- function float(name, option) {
186
- return {
187
- name,
188
- type: "float",
189
- precision: 8,
190
- scale: 2,
191
- ...option
192
- };
193
- }
194
- function double(name, option) {
195
- return {
196
- name,
197
- type: "double",
198
- precision: 8,
199
- scale: 2,
200
- ...option
201
- };
202
- }
203
- function decimal(name, option) {
204
- return {
205
- name,
206
- type: "decimal",
207
- precision: 8,
208
- scale: 2,
209
- ...option
210
- };
211
- }
212
- function boolean(name, option) {
213
- return {
214
- name,
215
- type: "boolean",
216
- ...option
217
- };
218
- }
219
- function date(name, option) {
220
- if (option?.now === true) {
221
- delete option.now;
222
- option.dbDefault = "CURRENT_TIMESTAMP";
223
- }
224
- return {
225
- name,
226
- type: "date",
227
- ...option
228
- };
229
- }
230
- function dateTime(name, option) {
231
- if (option?.now === true) {
232
- delete option.now;
233
- option.dbDefault = "CURRENT_TIMESTAMP";
234
- }
235
- return {
236
- name,
237
- type: "dateTime",
238
- ...option
239
- };
240
- }
241
- function time(name, option) {
242
- if (option?.now === true) {
243
- delete option.now;
244
- option.dbDefault = "CURRENT_TIMESTAMP";
245
- }
246
- return {
247
- name,
248
- type: "time",
249
- ...option
250
- };
251
- }
252
- function timestamp(name, option) {
253
- if (option?.now === true) {
254
- delete option.now;
255
- option.dbDefault = "CURRENT_TIMESTAMP";
256
- }
257
- return {
258
- name,
259
- type: "timestamp",
260
- ...option
261
- };
262
- }
263
- function json(name, option) {
264
- return {
265
- name,
266
- type: "json",
267
- ...option
268
- };
269
- }
270
- function uuid(name, option) {
271
- return {
272
- name,
273
- type: "uuid",
274
- ...option
275
- };
276
- }
277
- function enums(name, option) {
278
- return {
279
- name,
280
- type: "enum",
281
- id: option.id ?? `$Model${inflection.camelize(name)}`,
282
- ...option
283
- };
284
- }
285
- function virtual(name, option) {
286
- return {
287
- name,
288
- type: "virtual",
289
- ...option
290
- };
291
- }
292
- function relationOneToOne(name, option) {
293
- return {
294
- name,
295
- type: "relation",
296
- relationType: "OneToOne",
297
- ...option
298
- };
299
- }
300
- function relationBelongsToOne(name, option) {
301
- return {
302
- name,
303
- type: "relation",
304
- relationType: "BelongsToOne",
305
- ...option
306
- };
307
- }
308
- function relationHasMany(name, option) {
309
- return {
310
- name,
311
- type: "relation",
312
- relationType: "HasMany",
313
- ...option
314
- };
315
- }
316
- function relationManyToMany(name, option) {
317
- return {
318
- name,
319
- type: "relation",
320
- relationType: "ManyToMany",
321
- ...option
322
- };
323
- }
324
- var i = {
325
- index,
326
- unique
327
- };
328
- function index(columns) {
329
- return {
330
- type: "index",
331
- columns: asArray(columns)
332
- };
333
- }
334
- function unique(columns) {
335
- return {
336
- type: "unique",
337
- columns: asArray(columns)
338
- };
339
- }
340
- export {
341
- AlreadyProcessedException,
342
- ApiParamType,
343
- BadRequestException,
344
- BaseModel,
345
- BaseModelClass,
346
- DB,
347
- DuplicateRowException,
348
- EntityManager,
349
- FixtureManager,
350
- FixtureManagerClass,
351
- GenerateOptions,
352
- InternalServerErrorException,
353
- Migrator,
354
- NotFoundException,
355
- PathAndCode,
356
- RenderingNode,
357
- SQLDateTimeString,
358
- ServiceUnavailableException,
359
- SoException,
360
- Sonamu,
361
- SonamuQueryMode,
362
- Syncer,
363
- TargetNotFoundException,
364
- TemplateKey,
365
- TemplateOptions,
366
- UnauthorizedException,
367
- UpsertBuilder,
368
- api,
369
- apiParamToTsCode,
370
- apiParamTypeToTsType,
371
- asArray,
372
- findApiRootPath,
373
- findAppRootPath,
374
- getTextTypeLength,
375
- getZodObjectFromApi,
376
- getZodObjectFromApiParams,
377
- getZodTypeFromApiParamType,
378
- globAsync,
379
- i,
380
- importMultiple,
381
- isBelongsToOneRelationProp,
382
- isBigIntegerProp,
383
- isBooleanProp,
384
- isCustomJoinClause,
385
- isDaemonServer,
386
- isDateProp,
387
- isDateTimeProp,
388
- isDecimalProp,
389
- isDevelopment,
390
- isDoubleProp,
391
- isEnumProp,
392
- isFloatProp,
393
- isHasManyRelationProp,
394
- isInDocker,
395
- isIntegerProp,
396
- isJsonProp,
397
- isKnexError,
398
- isLocal,
399
- isManyToManyRelationProp,
400
- isOneToOneRelationProp,
401
- isProduction,
402
- isRefField,
403
- isRelationProp,
404
- isRemote,
405
- isSoException,
406
- isStaging,
407
- isStringProp,
408
- isTest,
409
- isTextProp,
410
- isTimeProp,
411
- isTimestampProp,
412
- isUuidProp,
413
- isVirtualProp,
414
- nonNullable,
415
- objToMap,
416
- p,
417
- propNodeToZodTypeDef,
418
- propToZodTypeDef,
419
- registeredApis,
420
- serializeZodType,
421
- setupErrorHandler,
422
- unwrapPromiseOnce,
423
- zArrayable,
424
- zodTypeToTsTypeDef,
425
- zodTypeToZodCode
426
- };
427
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/exceptions/error-handler.ts","../src/entity/entity-utils.ts","../src/utils/model.ts"],"sourcesContent":["import { FastifyInstance } from \"fastify\";\nimport { ZodIssue } from \"zod\";\nimport { isSoException } from \"./so-exceptions\";\n\nexport function setupErrorHandler(server: FastifyInstance) {\n server.setErrorHandler((error, request, reply) => {\n error.statusCode ??= 400;\n\n if (isSoException(error) && error.payload && Array.isArray(error.payload)) {\n const issues = error.payload as ZodIssue[];\n const [issue] = issues;\n const message = `${issue.message} (${issue.path.join(\"/\")})`;\n\n request.log.error(`${error.statusCode} ${message}`);\n reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({\n name: error.name,\n code: error.code,\n message: message,\n validationErrors: error.validation,\n issues,\n });\n } else {\n request.log.error(`${error.statusCode} ${error.message}`);\n reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({\n name: error.name,\n code: error.code,\n message: error.message,\n validationErrors: error.validation,\n });\n }\n });\n}\n","import inflection from \"inflection\";\nimport {\n BelongsToOneRelationProp,\n BigIntegerProp,\n BooleanProp,\n DateProp,\n DateTimeProp,\n DecimalProp,\n DistributiveOmit,\n DoubleProp,\n EnumProp,\n FloatProp,\n HasManyRelationProp,\n IntegerProp,\n JsonProp,\n ManyToManyRelationProp,\n OneToOneRelationProp,\n EntityIndex,\n StringProp,\n TextProp,\n TimeProp,\n TimestampProp,\n UuidProp,\n VirtualProp,\n} from \"../types/types\";\nimport { asArray } from \"../utils/model\";\n\nexport const p = {\n integer,\n bigInteger,\n text,\n string,\n float,\n double,\n decimal,\n boolean,\n date,\n dateTime,\n time,\n timestamp,\n json,\n uuid,\n enums,\n virtual,\n relationOneToOne,\n relationBelongsToOne,\n relationHasMany,\n relationManyToMany,\n};\n\nfunction integer(\n name: string,\n option?: Omit<IntegerProp, \"name\" | \"type\">\n): IntegerProp {\n return {\n name,\n type: \"integer\",\n ...option,\n };\n}\nfunction bigInteger(\n name: string,\n option?: Omit<BigIntegerProp, \"name\" | \"type\">\n): BigIntegerProp {\n return {\n name,\n type: \"bigInteger\",\n ...option,\n };\n}\nfunction text(name: string, option: Omit<TextProp, \"name\" | \"type\">): TextProp {\n return {\n name,\n type: \"text\",\n ...option,\n };\n}\nfunction string(\n name: string,\n option: Omit<StringProp, \"name\" | \"type\">\n): StringProp {\n return {\n name,\n type: \"string\",\n ...option,\n };\n}\nfunction float(\n name: string,\n option?: Omit<FloatProp, \"name\" | \"type\">\n): FloatProp {\n return {\n name,\n type: \"float\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction double(\n name: string,\n option?: Omit<DoubleProp, \"name\" | \"type\">\n): DoubleProp {\n return {\n name,\n type: \"double\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction decimal(\n name: string,\n option?: Omit<DecimalProp, \"name\" | \"type\">\n): DecimalProp {\n return {\n name,\n type: \"decimal\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction boolean(\n name: string,\n option?: Omit<BooleanProp, \"name\" | \"type\">\n): BooleanProp {\n return {\n name,\n type: \"boolean\",\n ...option,\n };\n}\nfunction date(\n name: string,\n option?: Omit<DateProp, \"name\" | \"type\"> & { now?: true }\n): DateProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"date\",\n ...option,\n };\n}\nfunction dateTime(\n name: string,\n option?: Omit<DateTimeProp, \"name\" | \"type\"> & { now?: true }\n): DateTimeProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"dateTime\",\n ...option,\n };\n}\nfunction time(\n name: string,\n option?: Omit<TimeProp, \"name\" | \"type\"> & { now?: true }\n): TimeProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"time\",\n ...option,\n };\n}\nfunction timestamp(\n name: string,\n option?: Omit<TimestampProp, \"name\" | \"type\"> & { now?: true }\n): TimestampProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"timestamp\",\n ...option,\n };\n}\nfunction json(name: string, option: Omit<JsonProp, \"name\" | \"type\">): JsonProp {\n return {\n name,\n type: \"json\",\n ...option,\n };\n}\nfunction uuid(name: string, option: Omit<UuidProp, \"name\" | \"type\">): UuidProp {\n return {\n name,\n type: \"uuid\",\n ...option,\n };\n}\nfunction enums(\n name: string,\n option: Omit<EnumProp, \"name\" | \"type\" | \"id\"> & { id?: string }\n): EnumProp {\n return {\n name,\n type: \"enum\",\n id: option.id ?? `$Model${inflection.camelize(name)}`,\n ...option,\n };\n}\nfunction virtual(\n name: string,\n option: Omit<VirtualProp, \"name\" | \"type\" | \"dbDefault\" | \"toFilter\">\n): VirtualProp {\n return {\n name,\n type: \"virtual\",\n ...option,\n };\n}\nfunction relationOneToOne(\n name: string,\n option: DistributiveOmit<\n OneToOneRelationProp,\n \"name\" | \"type\" | \"relationType\"\n >\n): OneToOneRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"OneToOne\",\n ...option,\n };\n}\nfunction relationBelongsToOne(\n name: string,\n option: Omit<BelongsToOneRelationProp, \"name\" | \"type\" | \"relationType\">\n): BelongsToOneRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"BelongsToOne\",\n ...option,\n };\n}\nfunction relationHasMany(\n name: string,\n option: Omit<HasManyRelationProp, \"name\" | \"type\" | \"relationType\">\n): HasManyRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"HasMany\",\n ...option,\n };\n}\nfunction relationManyToMany(\n name: string,\n option: Omit<ManyToManyRelationProp, \"name\" | \"type\" | \"relationType\">\n): ManyToManyRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"ManyToMany\",\n ...option,\n };\n}\n\nexport const i = {\n index,\n unique,\n};\n\nfunction index(columns: string | string[]): EntityIndex {\n return {\n type: \"index\",\n columns: asArray(columns),\n };\n}\n\nfunction unique(columns: string | string[]): EntityIndex {\n return {\n type: \"unique\",\n columns: asArray(columns),\n };\n}\n","import _ from \"lodash\";\n\nexport type ListResult<T> = {\n rows: T[];\n total?: number;\n};\n\nexport type ArrayOr<T> = T | T[];\n\nexport function asArray<T>(param: T | T[]): T[] {\n if (Array.isArray(param)) {\n return param;\n } else {\n return [param as T] as T[];\n }\n}\n\nexport function objToMap<T>(obj: { [k: string]: T }) {\n const keys = Object.keys(obj);\n if (keys.every((key) => parseInt(key).toString() === key)) {\n return new Map<number, T>(keys.map((key) => [parseInt(key), obj[key]]));\n } else {\n return new Map<string, T>(Object.entries(obj));\n }\n}\n\nexport interface BaseListParams {\n id?: number | number[];\n num?: number;\n page?: number;\n keyword?: string;\n queryMode?: \"list\" | \"count\" | \"both\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,kBAAkB,QAAyB;AACzD,SAAO,gBAAgB,CAAC,OAAO,SAAS,UAAU;AAChD,UAAM,eAAN,MAAM,aAAe;AAErB,QAAI,cAAc,KAAK,KAAK,MAAM,WAAW,MAAM,QAAQ,MAAM,OAAO,GAAG;AACzE,YAAM,SAAS,MAAM;AACrB,YAAM,CAAC,KAAK,IAAI;AAChB,YAAM,UAAU,GAAG,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC;AAEzD,cAAQ,IAAI,MAAM,GAAG,MAAM,UAAU,IAAI,OAAO,EAAE;AAClD,YAAM,OAAO,MAAM,cAAc,MAAM,MAAM,aAAa,GAAG,EAAE,KAAK;AAAA,QAClE,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ;AAAA,QACA,kBAAkB,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,IAAI,MAAM,GAAG,MAAM,UAAU,IAAI,MAAM,OAAO,EAAE;AACxD,YAAM,OAAO,MAAM,cAAc,MAAM,MAAM,aAAa,GAAG,EAAE,KAAK;AAAA,QAClE,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,QACf,kBAAkB,MAAM;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AC/BA,OAAO,gBAAgB;;;ACShB,SAAS,QAAW,OAAqB;AAC9C,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,CAAC,KAAU;AAAA,EACpB;AACF;AAEO,SAAS,SAAY,KAAyB;AACnD,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,MAAI,KAAK,MAAM,CAAC,QAAQ,SAAS,GAAG,EAAE,SAAS,MAAM,GAAG,GAAG;AACzD,WAAO,IAAI,IAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AAAA,EACxE,OAAO;AACL,WAAO,IAAI,IAAe,OAAO,QAAQ,GAAG,CAAC;AAAA,EAC/C;AACF;;;ADGO,IAAM,IAAI;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,WACP,MACA,QACgB;AAChB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KAAK,MAAc,QAAmD;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,OACP,MACA,QACY;AACZ,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,MACP,MACA,QACW;AACX,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;AACA,SAAS,OACP,MACA,QACY;AACZ,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;AACA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;AACA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KACP,MACA,QACU;AACV,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,SACP,MACA,QACc;AACd,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KACP,MACA,QACU;AACV,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,UACP,MACA,QACe;AACf,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KAAK,MAAc,QAAmD;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KAAK,MAAc,QAAmD;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,MACP,MACA,QACU;AACV,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,IAAI,OAAO,MAAM,SAAS,WAAW,SAAS,IAAI,CAAC;AAAA,IACnD,GAAG;AAAA,EACL;AACF;AACA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,iBACP,MACA,QAIsB;AACtB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AACA,SAAS,qBACP,MACA,QAC0B;AAC1B,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AACA,SAAS,gBACP,MACA,QACqB;AACrB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AACA,SAAS,mBACP,MACA,QACwB;AACxB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AAEO,IAAM,IAAI;AAAA,EACf;AAAA,EACA;AACF;AAEA,SAAS,MAAM,SAAyC;AACtD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,OAAO;AAAA,EAC1B;AACF;AAEA,SAAS,OAAO,SAAyC;AACvD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,OAAO;AAAA,EAC1B;AACF;","names":[]}