on-zero 0.1.39 → 0.1.41

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 (84) hide show
  1. package/dist/cjs/createUseQuery.cjs +3 -2
  2. package/dist/cjs/createUseQuery.js +2 -2
  3. package/dist/cjs/createUseQuery.js.map +1 -1
  4. package/dist/cjs/createUseQuery.native.js +3 -2
  5. package/dist/cjs/createUseQuery.native.js.map +1 -1
  6. package/dist/cjs/createZeroClient.cjs +28 -5
  7. package/dist/cjs/createZeroClient.js +19 -4
  8. package/dist/cjs/createZeroClient.js.map +1 -1
  9. package/dist/cjs/createZeroClient.native.js +29 -5
  10. package/dist/cjs/createZeroClient.native.js.map +1 -1
  11. package/dist/cjs/createZeroServer.cjs +5 -2
  12. package/dist/cjs/createZeroServer.js +5 -2
  13. package/dist/cjs/createZeroServer.js.map +1 -1
  14. package/dist/cjs/createZeroServer.native.js +5 -2
  15. package/dist/cjs/createZeroServer.native.js.map +1 -1
  16. package/dist/cjs/generate.cjs +458 -39
  17. package/dist/cjs/generate.js +485 -31
  18. package/dist/cjs/generate.js.map +2 -2
  19. package/dist/cjs/generate.native.js +812 -51
  20. package/dist/cjs/generate.native.js.map +1 -1
  21. package/dist/cjs/generate.test.cjs +251 -0
  22. package/dist/cjs/generate.test.js +252 -0
  23. package/dist/cjs/generate.test.js.map +1 -1
  24. package/dist/cjs/generate.test.native.js +251 -0
  25. package/dist/cjs/generate.test.native.js.map +1 -1
  26. package/dist/cjs/helpers/createMutators.cjs +21 -8
  27. package/dist/cjs/helpers/createMutators.js +16 -6
  28. package/dist/cjs/helpers/createMutators.js.map +1 -1
  29. package/dist/cjs/helpers/createMutators.native.js +28 -10
  30. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  31. package/dist/esm/createUseQuery.js +3 -3
  32. package/dist/esm/createUseQuery.js.map +1 -1
  33. package/dist/esm/createUseQuery.mjs +4 -3
  34. package/dist/esm/createUseQuery.mjs.map +1 -1
  35. package/dist/esm/createUseQuery.native.js +4 -3
  36. package/dist/esm/createUseQuery.native.js.map +1 -1
  37. package/dist/esm/createZeroClient.js +19 -4
  38. package/dist/esm/createZeroClient.js.map +1 -1
  39. package/dist/esm/createZeroClient.mjs +28 -5
  40. package/dist/esm/createZeroClient.mjs.map +1 -1
  41. package/dist/esm/createZeroClient.native.js +29 -5
  42. package/dist/esm/createZeroClient.native.js.map +1 -1
  43. package/dist/esm/createZeroServer.js +5 -2
  44. package/dist/esm/createZeroServer.js.map +1 -1
  45. package/dist/esm/createZeroServer.mjs +5 -2
  46. package/dist/esm/createZeroServer.mjs.map +1 -1
  47. package/dist/esm/createZeroServer.native.js +5 -2
  48. package/dist/esm/createZeroServer.native.js.map +1 -1
  49. package/dist/esm/generate.js +486 -32
  50. package/dist/esm/generate.js.map +2 -2
  51. package/dist/esm/generate.mjs +459 -40
  52. package/dist/esm/generate.mjs.map +1 -1
  53. package/dist/esm/generate.native.js +813 -52
  54. package/dist/esm/generate.native.js.map +1 -1
  55. package/dist/esm/generate.test.js +252 -0
  56. package/dist/esm/generate.test.js.map +1 -1
  57. package/dist/esm/generate.test.mjs +251 -0
  58. package/dist/esm/generate.test.mjs.map +1 -1
  59. package/dist/esm/generate.test.native.js +251 -0
  60. package/dist/esm/generate.test.native.js.map +1 -1
  61. package/dist/esm/helpers/createMutators.js +6 -4
  62. package/dist/esm/helpers/createMutators.js.map +1 -1
  63. package/dist/esm/helpers/createMutators.mjs +6 -4
  64. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  65. package/dist/esm/helpers/createMutators.native.js +13 -6
  66. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  67. package/package.json +2 -2
  68. package/readme.md +110 -2
  69. package/src/createUseQuery.tsx +15 -6
  70. package/src/createZeroClient.tsx +42 -6
  71. package/src/createZeroServer.ts +9 -0
  72. package/src/generate.test.ts +340 -0
  73. package/src/generate.ts +863 -43
  74. package/src/helpers/createMutators.ts +22 -8
  75. package/types/createUseQuery.d.ts +2 -1
  76. package/types/createUseQuery.d.ts.map +1 -1
  77. package/types/createZeroClient.d.ts +10 -1
  78. package/types/createZeroClient.d.ts.map +1 -1
  79. package/types/createZeroServer.d.ts +7 -1
  80. package/types/createZeroServer.d.ts.map +1 -1
  81. package/types/generate.d.ts +1 -0
  82. package/types/generate.d.ts.map +1 -1
  83. package/types/helpers/createMutators.d.ts +3 -1
  84. package/types/helpers/createMutators.d.ts.map +1 -1
@@ -109,6 +109,7 @@ this folder is auto-generated by on-zero. do not edit files here directly.
109
109
  - \`tables.ts\` - exports table schemas for type inference
110
110
  - \`groupedQueries.ts\` - namespaced query re-exports for client setup
111
111
  - \`syncedQueries.ts\` - namespaced syncedQuery wrappers for server setup
112
+ - \`syncedMutations.ts\` - valibot validators for mutation args (server auto-validation)
112
113
 
113
114
  ## usage guidelines
114
115
 
@@ -179,22 +180,7 @@ import * as v from 'valibot'
179
180
  import * as Queries from './groupedQueries'
180
181
  `, namespaceDefs = sortedFiles.map((file) => {
181
182
  const queryDefs = queryByFile.get(file).sort((a, b) => a.name.localeCompare(b.name)).map((q) => {
182
- const lines = q.valibotCode.split(`
183
- `).filter((l) => l.trim()), schemaLineIndex = lines.findIndex(
184
- (l) => l.startsWith("export const QueryParams")
185
- );
186
- let validatorDef = "";
187
- if (schemaLineIndex !== -1) {
188
- const schemaLines = [];
189
- let openBraces = 0, started = !1;
190
- for (let i = schemaLineIndex; i < lines.length; i++) {
191
- const line = lines[i], cleaned = started ? line : line.replace("export const QueryParams = ", "");
192
- if (schemaLines.push(cleaned), started = !0, openBraces += (cleaned.match(/\{/g) || []).length, openBraces -= (cleaned.match(/\}/g) || []).length, openBraces += (cleaned.match(/\(/g) || []).length, openBraces -= (cleaned.match(/\)/g) || []).length, openBraces === 0 && schemaLines.length > 0)
193
- break;
194
- }
195
- validatorDef = schemaLines.join(`
196
- `);
197
- }
183
+ const validatorDef = q.valibotCode.trim();
198
184
  if (q.params === "void" || !validatorDef)
199
185
  return ` ${q.name}: defineQuery(() => Queries.${file}.${q.name}()),`;
200
186
  const indentedValidator = validatorDef.split(`
@@ -221,6 +207,372 @@ ${queriesObject}
221
207
  })
222
208
  `;
223
209
  }
210
+ function createTypeResolver(ts, files, dir) {
211
+ const configPath = ts.findConfigFile(dir, ts.sys.fileExists, "tsconfig.json");
212
+ let compilerOptions = {
213
+ target: ts.ScriptTarget.Latest,
214
+ module: ts.ModuleKind.ESNext,
215
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
216
+ strict: !1,
217
+ skipLibCheck: !0,
218
+ noEmit: !0
219
+ };
220
+ if (configPath) {
221
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
222
+ if (configFile.config) {
223
+ const parsed = ts.parseJsonConfigFileContent(
224
+ configFile.config,
225
+ ts.sys,
226
+ (0, import_node_path.dirname)(configPath)
227
+ );
228
+ compilerOptions = { ...compilerOptions, ...parsed.options };
229
+ }
230
+ }
231
+ const fileMap = /* @__PURE__ */ new Map();
232
+ for (const f of files)
233
+ fileMap.set(f.path, f.content);
234
+ const host = ts.createCompilerHost(compilerOptions), originalGetSourceFile = host.getSourceFile.bind(host);
235
+ host.getSourceFile = (fileName, languageVersion, onError) => {
236
+ const content = fileMap.get(fileName);
237
+ return content !== void 0 ? ts.createSourceFile(fileName, content, languageVersion, !0) : originalGetSourceFile(fileName, languageVersion, onError);
238
+ }, host.fileExists = (fileName) => fileMap.has(fileName) || ts.sys.fileExists(fileName), host.readFile = (fileName) => fileMap.get(fileName) ?? ts.sys.readFile(fileName);
239
+ const program = ts.createProgram(
240
+ files.map((f) => f.path),
241
+ compilerOptions,
242
+ host
243
+ ), checker = program.getTypeChecker();
244
+ return {
245
+ program,
246
+ checker,
247
+ // resolve a type annotation node to a ts.Type
248
+ resolveType(node) {
249
+ try {
250
+ return checker.getTypeFromTypeNode(node);
251
+ } catch {
252
+ return null;
253
+ }
254
+ },
255
+ // convert a resolved type to valibot code
256
+ typeToValibot(type) {
257
+ return tsTypeToValibot(ts, checker, type);
258
+ }
259
+ };
260
+ }
261
+ function resolveParamType(ts, resolver, sourceFile, exportName, paramIndex) {
262
+ let result = null;
263
+ return ts.forEachChild(sourceFile, (node) => {
264
+ if (result || !ts.isVariableStatement(node) || !node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) return;
265
+ const decl = node.declarationList.declarations[0];
266
+ if (!(!decl || !ts.isVariableDeclaration(decl)) && decl.name.getText(sourceFile) === exportName && decl.initializer && ts.isArrowFunction(decl.initializer)) {
267
+ const param = decl.initializer.parameters[paramIndex];
268
+ param?.type && (result = resolver.resolveType(param.type));
269
+ }
270
+ }), result;
271
+ }
272
+ function resolveMutationParamTypes(ts, resolver, sourceFile) {
273
+ const resolved = /* @__PURE__ */ new Map();
274
+ return ts.forEachChild(sourceFile, (node) => {
275
+ if (!ts.isVariableStatement(node) || !node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) return;
276
+ const decl = node.declarationList.declarations[0];
277
+ if (!decl || !ts.isVariableDeclaration(decl) || decl.name.getText(sourceFile) !== "mutate" || !decl.initializer || !ts.isCallExpression(decl.initializer)) return;
278
+ const args = decl.initializer.arguments;
279
+ let handlersArg = null;
280
+ for (let i = args.length - 1; i >= 0; i--)
281
+ if (ts.isObjectLiteralExpression(args[i])) {
282
+ handlersArg = args[i];
283
+ break;
284
+ }
285
+ if (handlersArg)
286
+ for (const prop of handlersArg.properties) {
287
+ if (!ts.isPropertyAssignment(prop) && !ts.isMethodDeclaration(prop)) continue;
288
+ const name = prop.name?.getText(sourceFile);
289
+ if (!name) continue;
290
+ let params = null;
291
+ if (ts.isPropertyAssignment(prop)) {
292
+ const init = prop.initializer;
293
+ (ts.isArrowFunction(init) || ts.isFunctionExpression(init)) && (params = init.parameters);
294
+ } else ts.isMethodDeclaration(prop) && (params = prop.parameters);
295
+ if (!params || params.length < 2) continue;
296
+ const typeNode = params[1].type;
297
+ if (!typeNode) continue;
298
+ const expanded = resolver.resolveType(typeNode);
299
+ expanded && resolved.set(name, expanded);
300
+ }
301
+ }), resolved;
302
+ }
303
+ function extractMutationsFromModel(ts, sourceFile, content, _fileName, silent, typeToValibot, resolvedTypes, resolvedTypeToValibot) {
304
+ let mutateNode = null;
305
+ if (ts.forEachChild(sourceFile, (node) => {
306
+ if (!ts.isVariableStatement(node) || !node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) return;
307
+ const decl = node.declarationList.declarations[0];
308
+ !decl || !ts.isVariableDeclaration(decl) || decl.name.getText(sourceFile) === "mutate" && decl.initializer && ts.isCallExpression(decl.initializer) && (mutateNode = decl.initializer);
309
+ }), !mutateNode) return null;
310
+ const args = mutateNode.arguments, hasCRUD = args.length >= 2;
311
+ let handlersArg = null;
312
+ args.length === 1 && ts.isObjectLiteralExpression(args[0]) ? handlersArg = args[0] : args.length === 3 && ts.isObjectLiteralExpression(args[2]) && (handlersArg = args[2]);
313
+ const columns = {}, primaryKeys = [];
314
+ hasCRUD && extractSchemaColumns(ts, sourceFile, columns, primaryKeys);
315
+ const custom = [];
316
+ if (handlersArg)
317
+ for (const prop of handlersArg.properties) {
318
+ if (!ts.isPropertyAssignment(prop) && !ts.isMethodDeclaration(prop)) continue;
319
+ const name = prop.name?.getText(sourceFile);
320
+ if (!name) continue;
321
+ let params = null;
322
+ if (ts.isPropertyAssignment(prop)) {
323
+ const init = prop.initializer;
324
+ (ts.isArrowFunction(init) || ts.isFunctionExpression(init)) && (params = init.parameters);
325
+ } else ts.isMethodDeclaration(prop) && (params = prop.parameters);
326
+ if (!params) continue;
327
+ if (params.length < 2) {
328
+ custom.push({ name, paramType: "void", valibotCode: "" });
329
+ continue;
330
+ }
331
+ const paramType = params[1].type?.getText(sourceFile) || "unknown";
332
+ if (paramType === "unknown") {
333
+ custom.push({ name, paramType: "unknown", valibotCode: "" });
334
+ continue;
335
+ }
336
+ let valibotCode = typeToValibot(paramType);
337
+ if (!valibotCode && resolvedTypes && resolvedTypeToValibot) {
338
+ const resolvedType = resolvedTypes.get(name);
339
+ resolvedType && (valibotCode = resolvedTypeToValibot(resolvedType));
340
+ }
341
+ custom.push({
342
+ name,
343
+ paramType,
344
+ valibotCode: valibotCode || ""
345
+ });
346
+ }
347
+ return {
348
+ modelName: "",
349
+ hasCRUD,
350
+ columns,
351
+ primaryKeys,
352
+ custom
353
+ };
354
+ }
355
+ function extractSchemaColumns(ts, sourceFile, columns, primaryKeys) {
356
+ function visit(node) {
357
+ if (ts.isCallExpression(node)) {
358
+ const text = node.expression.getText(sourceFile);
359
+ if (text.endsWith(".primaryKey"))
360
+ for (const arg of node.arguments)
361
+ ts.isStringLiteral(arg) && primaryKeys.push(arg.text);
362
+ if (text.endsWith(".columns") && node.arguments.length === 1) {
363
+ const obj = node.arguments[0];
364
+ if (ts.isObjectLiteralExpression(obj))
365
+ for (const prop of obj.properties) {
366
+ if (!ts.isPropertyAssignment(prop)) continue;
367
+ const colName = prop.name?.getText(sourceFile);
368
+ if (!colName) continue;
369
+ const initText = prop.initializer.getText(sourceFile), colType = parseColumnType(initText);
370
+ columns[colName] = colType;
371
+ }
372
+ }
373
+ }
374
+ ts.forEachChild(node, visit);
375
+ }
376
+ visit(sourceFile);
377
+ }
378
+ function parseColumnType(initText) {
379
+ const optional = initText.includes(".optional()");
380
+ let type = "string";
381
+ return initText.startsWith("number(") ? type = "number" : initText.startsWith("boolean(") ? type = "boolean" : initText.startsWith("json(") || initText.startsWith("json<") ? type = "json" : initText.startsWith("enumeration(") && (type = "enum"), { type, optional };
382
+ }
383
+ function columnTypeToValibot(col) {
384
+ let base;
385
+ switch (col.type) {
386
+ case "string":
387
+ base = "v.string()";
388
+ break;
389
+ case "number":
390
+ base = "v.number()";
391
+ break;
392
+ case "boolean":
393
+ base = "v.boolean()";
394
+ break;
395
+ case "json":
396
+ base = "v.unknown()";
397
+ break;
398
+ case "enum":
399
+ base = "v.string()";
400
+ break;
401
+ default:
402
+ base = "v.unknown()";
403
+ }
404
+ return col.optional ? `v.optional(v.nullable(${base}))` : base;
405
+ }
406
+ function schemaColumnsToValibot(columns, primaryKeys, mode) {
407
+ const entries = [];
408
+ if (mode === "delete")
409
+ for (const pk of primaryKeys) {
410
+ const col = columns[pk];
411
+ col && entries.push(`${pk}: ${columnTypeToValibot({ ...col, optional: !1 })}`);
412
+ }
413
+ else if (mode === "update")
414
+ for (const [name, col] of Object.entries(columns))
415
+ primaryKeys.includes(name) ? entries.push(`${name}: ${columnTypeToValibot({ ...col, optional: !1 })}`) : entries.push(`${name}: ${columnTypeToValibot({ ...col, optional: !0 })}`);
416
+ else
417
+ for (const [name, col] of Object.entries(columns))
418
+ entries.push(`${name}: ${columnTypeToValibot(col)}`);
419
+ return `v.object({
420
+ ${entries.join(`,
421
+ `)},
422
+ })`;
423
+ }
424
+ function generateSyncedMutationsFile(modelMutations) {
425
+ return `// auto-generated by: on-zero generate
426
+ // mutation validators derived from model schemas and handler types
427
+ import * as v from 'valibot'
428
+
429
+ export const mutationValidators = {
430
+ ${[...modelMutations].sort(
431
+ (a, b) => a.modelName.localeCompare(b.modelName)
432
+ ).map((model) => {
433
+ const entries = [];
434
+ if (model.hasCRUD && Object.keys(model.columns).length > 0)
435
+ for (const mode of ["insert", "update", "delete"])
436
+ if (model.custom.some((m) => m.name === mode)) {
437
+ const customMut = model.custom.find((m) => m.name === mode);
438
+ customMut.valibotCode ? entries.push(
439
+ ` ${mode}: ${extractValibotExpression(customMut.valibotCode)},`
440
+ ) : entries.push(
441
+ ` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`
442
+ );
443
+ } else
444
+ entries.push(
445
+ ` ${mode}: ${schemaColumnsToValibot(model.columns, model.primaryKeys, mode)},`
446
+ );
447
+ for (const mut of model.custom)
448
+ if (!(model.hasCRUD && ["insert", "update", "delete", "upsert"].includes(mut.name))) {
449
+ if (mut.paramType === "void" || !mut.valibotCode) {
450
+ entries.push(` ${mut.name}: v.void_(),`);
451
+ continue;
452
+ }
453
+ entries.push(` ${mut.name}: ${extractValibotExpression(mut.valibotCode)},`);
454
+ }
455
+ return ` ${model.modelName}: {
456
+ ${entries.join(`
457
+ `)}
458
+ },`;
459
+ }).join(`
460
+ `)}
461
+ }
462
+ `;
463
+ }
464
+ function extractValibotExpression(valibotCode) {
465
+ return valibotCode.trim() || "v.unknown()";
466
+ }
467
+ function parseTypeString(type) {
468
+ if (type = type.trim(), type === "string") return "v.string()";
469
+ if (type === "number") return "v.number()";
470
+ if (type === "boolean") return "v.boolean()";
471
+ if (type === "void" || type === "undefined") return "v.void_()";
472
+ if (type === "null") return "v.null_()";
473
+ if (type === "any" || type === "unknown") return "v.unknown()";
474
+ if (type.startsWith("{") && type.endsWith("}")) {
475
+ const inner = type.slice(1, -1).trim();
476
+ if (!inner) return "v.object({})";
477
+ const normalized = inner.replace(/\n/g, "; ").replace(/;\s*;/g, ";"), entries = [];
478
+ for (const part of normalized.split(";")) {
479
+ const trimmed = part.trim().replace(/,\s*$/, "");
480
+ if (!trimmed) continue;
481
+ const match = trimmed.match(/^(?:readonly\s+)?(\w+)(\?)?:\s*(.+)$/);
482
+ if (!match) continue;
483
+ const [, name, opt, typeStr] = match, parsed = parseTypeString(typeStr.trim());
484
+ if (!parsed) return null;
485
+ let val = parsed;
486
+ opt && (val = `v.optional(${val})`), entries.push(`${name}: ${val}`);
487
+ }
488
+ return entries.length === 0 ? "v.object({})" : `v.object({
489
+ ${entries.join(`,
490
+ `)},
491
+ })`;
492
+ }
493
+ if (type.endsWith("[]")) {
494
+ const inner = parseTypeString(type.slice(0, -2).trim());
495
+ return inner ? `v.array(${inner})` : null;
496
+ }
497
+ return null;
498
+ }
499
+ function tsTypeToValibot(ts, checker, type, seen) {
500
+ seen || (seen = /* @__PURE__ */ new Set());
501
+ const flags = type.getFlags();
502
+ if (flags & (ts.TypeFlags.Object | ts.TypeFlags.Intersection)) {
503
+ if (seen.has(type)) return "v.unknown()";
504
+ seen.add(type);
505
+ }
506
+ const recurse = (t) => tsTypeToValibot(ts, checker, t, seen);
507
+ if (flags & ts.TypeFlags.String) return "v.string()";
508
+ if (flags & ts.TypeFlags.Number) return "v.number()";
509
+ if (flags & ts.TypeFlags.Boolean) return "v.boolean()";
510
+ if (flags & ts.TypeFlags.Void || flags & ts.TypeFlags.Undefined) return "v.void_()";
511
+ if (flags & ts.TypeFlags.Null) return "v.null_()";
512
+ if (flags & ts.TypeFlags.Any || flags & ts.TypeFlags.Unknown) return "v.unknown()";
513
+ if (flags & ts.TypeFlags.Never) return "v.never()";
514
+ if (flags & ts.TypeFlags.StringLiteral)
515
+ return `v.literal(${JSON.stringify(type.value)})`;
516
+ if (flags & ts.TypeFlags.NumberLiteral)
517
+ return `v.literal(${type.value})`;
518
+ if (flags & ts.TypeFlags.BooleanLiteral)
519
+ return `v.literal(${type.intrinsicName === "true"})`;
520
+ if (type.isUnion()) {
521
+ const members = type.types, hasNull = members.some((t) => t.getFlags() & ts.TypeFlags.Null), hasUndefined = members.some(
522
+ (t) => t.getFlags() & (ts.TypeFlags.Undefined | ts.TypeFlags.Void)
523
+ ), rest = members.filter(
524
+ (t) => !(t.getFlags() & (ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Void))
525
+ );
526
+ if (rest.length === 2 && rest.every((t) => t.getFlags() & ts.TypeFlags.BooleanLiteral)) {
527
+ let inner2 = "v.boolean()";
528
+ return hasNull && (inner2 = `v.nullable(${inner2})`), hasUndefined && (inner2 = `v.optional(${inner2})`), inner2;
529
+ }
530
+ if (rest.length === 0) return "v.unknown()";
531
+ let inner = rest.length === 1 ? recurse(rest[0]) : `v.union([${rest.map((t) => recurse(t)).join(", ")}])`;
532
+ return hasNull && (inner = `v.nullable(${inner})`), hasUndefined && (inner = `v.optional(${inner})`), inner;
533
+ }
534
+ const resolveSymbolType = (prop) => prop.valueDeclaration ? checker.getTypeOfSymbolAtLocation(prop, prop.valueDeclaration) : prop.declarations?.[0] ? checker.getTypeOfSymbolAtLocation(prop, prop.declarations[0]) : checker.getDeclaredTypeOfSymbol(prop);
535
+ if (type.isIntersection()) {
536
+ const props2 = type.getProperties();
537
+ if (props2.length === 0) return "v.object({})";
538
+ const entries = [];
539
+ for (const prop of props2) {
540
+ const propType = resolveSymbolType(prop), isOptional = !!(prop.getFlags() & ts.SymbolFlags.Optional);
541
+ let val = recurse(propType);
542
+ isOptional && !val.startsWith("v.optional(") && (val = `v.optional(${val})`), entries.push(`${prop.getName()}: ${val}`);
543
+ }
544
+ return `v.object({
545
+ ${entries.join(`,
546
+ `)},
547
+ })`;
548
+ }
549
+ const props = type.getProperties();
550
+ if (props.length > 0 && (type.getFlags() & ts.TypeFlags.Object || type.objectFlags)) {
551
+ const objectFlags = type.objectFlags ?? 0;
552
+ if (objectFlags & ts.ObjectFlags.Reference) {
553
+ const typeRef = type, name = type.getSymbol()?.getName();
554
+ if ((name === "Array" || name === "ReadonlyArray") && typeRef.typeArguments?.length === 1)
555
+ return `v.array(${recurse(typeRef.typeArguments[0])})`;
556
+ }
557
+ if (objectFlags & ts.ObjectFlags.Tuple)
558
+ return `v.tuple([${(type.typeArguments || []).map((t) => recurse(t)).join(", ")}])`;
559
+ const entries = [];
560
+ for (const prop of props) {
561
+ const propType = resolveSymbolType(prop), isOptional = !!(prop.getFlags() & ts.SymbolFlags.Optional);
562
+ let val = recurse(propType);
563
+ isOptional && !val.startsWith("v.optional(") && (val = `v.optional(${val})`), entries.push(`${prop.getName()}: ${val}`);
564
+ }
565
+ return entries.length === 0 ? "v.object({})" : `v.object({
566
+ ${entries.join(`,
567
+ `)},
568
+ })`;
569
+ }
570
+ const stringIndex = type.getStringIndexType();
571
+ if (stringIndex)
572
+ return `v.record(v.string(), ${recurse(stringIndex)})`;
573
+ const numberIndex = type.getNumberIndexType();
574
+ return numberIndex ? `v.record(v.number(), ${recurse(numberIndex)})` : "v.unknown()";
575
+ }
224
576
  async function generate(options) {
225
577
  const { dir, after, silent } = options, baseDir = (0, import_node_path.resolve)(dir), modelsDir = (0, import_node_path.resolve)(baseDir, "models"), generatedDir = (0, import_node_path.resolve)(baseDir, "generated"), queriesDir = (0, import_node_path.resolve)(baseDir, "queries");
226
578
  (0, import_node_fs.existsSync)(generatedDir) || (0, import_node_fs.mkdirSync)(generatedDir, { recursive: !0 }), loadCache();
@@ -241,9 +593,27 @@ async function generate(options) {
241
593
  generateTablesFile(filesWithSchema)
242
594
  ),
243
595
  writeFileIfChanged((0, import_node_path.resolve)(generatedDir, "README.md"), generateReadmeFile())
244
- ].filter(Boolean).length, queryCount = 0;
596
+ ].filter(Boolean).length, queryCount = 0, mutationCount = 0;
597
+ const ts = await import("typescript"), typeToValibot = (paramType) => {
598
+ try {
599
+ return parseTypeString(paramType.trim());
600
+ } catch {
601
+ return null;
602
+ }
603
+ };
245
604
  if ((0, import_node_fs.existsSync)(queriesDir)) {
246
- const ts = await import("typescript"), { ModelToValibot } = await import("@sinclair/typebox-codegen/model/index.js"), { TypeScriptToModel } = await import("@sinclair/typebox-codegen/typescript/index.js"), queryFiles = (0, import_node_fs.readdirSync)(queriesDir).filter((f) => f.endsWith(".ts")), allQueries = [];
605
+ const queryFiles = (0, import_node_fs.readdirSync)(queriesDir).filter((f) => f.endsWith(".ts")), allQueries = [];
606
+ let queryResolver = null;
607
+ const getQueryResolver = () => {
608
+ if (!queryResolver) {
609
+ const allFiles = (0, import_node_fs.readdirSync)(queriesDir).filter((f) => f.endsWith(".ts")).map((f) => ({
610
+ path: (0, import_node_path.resolve)(queriesDir, f),
611
+ content: (0, import_node_fs.readFileSync)((0, import_node_path.resolve)(queriesDir, f), "utf-8")
612
+ }));
613
+ queryResolver = createTypeResolver(ts, allFiles, queriesDir);
614
+ }
615
+ return queryResolver;
616
+ };
247
617
  for (const file of queryFiles) {
248
618
  const filePath = (0, import_node_path.resolve)(queriesDir, file), fileBaseName = (0, import_node_path.basename)(file, ".ts");
249
619
  try {
@@ -266,17 +636,26 @@ async function generate(options) {
266
636
  const params = declaration.initializer.parameters;
267
637
  let paramType = "void";
268
638
  params.length > 0 && (paramType = params[0].type?.getText(sourceFile) || "unknown");
269
- try {
270
- const typeString = `type QueryParams = ${paramType}`, model = TypeScriptToModel.Generate(typeString), valibotCode = ModelToValibot.Generate(model);
271
- allQueries.push({
272
- name,
273
- params: paramType,
274
- valibotCode,
275
- sourceFile: fileBaseName
276
- });
277
- } catch (err) {
278
- silent || console.error(`\u2717 ${name}: ${err}`);
639
+ let valibotCode = typeToValibot(paramType);
640
+ if (!valibotCode && params.length > 0 && params[0].type) {
641
+ const resolver = getQueryResolver(), resolverSourceFile = resolver.program.getSourceFile(filePath);
642
+ if (resolverSourceFile) {
643
+ const resolvedType = resolveParamType(
644
+ ts,
645
+ resolver,
646
+ resolverSourceFile,
647
+ name,
648
+ 0
649
+ );
650
+ resolvedType && (valibotCode = resolver.typeToValibot(resolvedType));
651
+ }
279
652
  }
653
+ valibotCode ? allQueries.push({
654
+ name,
655
+ params: paramType,
656
+ valibotCode,
657
+ sourceFile: fileBaseName
658
+ }) : !silent && paramType !== "void" && console.error(`\u2717 ${name}: could not resolve type "${paramType}"`);
280
659
  }
281
660
  }
282
661
  });
@@ -294,8 +673,82 @@ async function generate(options) {
294
673
  );
295
674
  groupedChanged && filesChanged++, syncedChanged && filesChanged++;
296
675
  }
297
- if (filesChanged > 0 && !silent && console.info(
298
- `\u2713 ${allModelFiles.length} models (${filesWithSchema.length} schemas)${queryCount ? `, ${queryCount} queries` : ""}`
676
+ const allModelMutations = [], mutationFiles = [], unresolvedModels = [];
677
+ for (const file of allModelFiles) {
678
+ const filePath = (0, import_node_path.resolve)(modelsDir, file), fileBaseName = (0, import_node_path.basename)(file, ".ts");
679
+ try {
680
+ const content = (0, import_node_fs.readFileSync)(filePath, "utf-8");
681
+ if (!content.includes("export const mutate")) continue;
682
+ mutationFiles.push({ path: filePath, content, baseName: fileBaseName });
683
+ const sourceFile = ts.createSourceFile(
684
+ filePath,
685
+ content,
686
+ ts.ScriptTarget.Latest,
687
+ !0
688
+ ), result = extractMutationsFromModel(
689
+ ts,
690
+ sourceFile,
691
+ content,
692
+ filePath,
693
+ !!silent,
694
+ typeToValibot
695
+ );
696
+ result && (result.modelName = fileBaseName, allModelMutations.push(result), result.custom.some(
697
+ (m) => m.paramType !== "void" && m.paramType !== "unknown" && !m.valibotCode
698
+ ) && unresolvedModels.push({ baseName: fileBaseName, filePath }));
699
+ } catch (err) {
700
+ silent || console.error(`Error extracting mutations from ${file}:`, err);
701
+ }
702
+ }
703
+ if (unresolvedModels.length > 0) {
704
+ const collectTsFiles = (dir2) => {
705
+ const results = [];
706
+ for (const entry of (0, import_node_fs.readdirSync)(dir2, { withFileTypes: !0 })) {
707
+ const fullPath = (0, import_node_path.resolve)(dir2, entry.name);
708
+ entry.isDirectory() && entry.name !== "node_modules" ? results.push(...collectTsFiles(fullPath)) : entry.isFile() && entry.name.endsWith(".ts") && !entry.name.endsWith(".d.ts") && results.push({ path: fullPath, content: (0, import_node_fs.readFileSync)(fullPath, "utf-8") });
709
+ }
710
+ return results;
711
+ }, allFiles = collectTsFiles(baseDir), modelResolver = createTypeResolver(ts, allFiles, baseDir);
712
+ for (const { baseName, filePath } of unresolvedModels) {
713
+ const resolverSourceFile = modelResolver.program.getSourceFile(filePath);
714
+ if (!resolverSourceFile) continue;
715
+ const resolvedTypes = resolveMutationParamTypes(
716
+ ts,
717
+ modelResolver,
718
+ resolverSourceFile
719
+ );
720
+ if (resolvedTypes.size === 0) continue;
721
+ const content = (0, import_node_fs.readFileSync)(filePath, "utf-8"), sourceFile = ts.createSourceFile(
722
+ filePath,
723
+ content,
724
+ ts.ScriptTarget.Latest,
725
+ !0
726
+ ), result = extractMutationsFromModel(
727
+ ts,
728
+ sourceFile,
729
+ content,
730
+ filePath,
731
+ !!silent,
732
+ typeToValibot,
733
+ resolvedTypes,
734
+ modelResolver.typeToValibot
735
+ );
736
+ if (result) {
737
+ result.modelName = baseName;
738
+ const idx = allModelMutations.findIndex((m) => m.modelName === baseName);
739
+ idx >= 0 && (allModelMutations[idx] = result);
740
+ }
741
+ }
742
+ }
743
+ for (const model of allModelMutations)
744
+ model.hasCRUD && (mutationCount += 3), mutationCount += model.custom.filter(
745
+ (m) => !model.hasCRUD || !["insert", "update", "delete", "upsert"].includes(m.name)
746
+ ).length;
747
+ if (allModelMutations.length > 0 && writeFileIfChanged(
748
+ (0, import_node_path.resolve)(generatedDir, "syncedMutations.ts"),
749
+ generateSyncedMutationsFile(allModelMutations)
750
+ ) && filesChanged++, filesChanged > 0 && !silent && console.info(
751
+ `\u2713 ${allModelFiles.length} models (${filesWithSchema.length} schemas)${queryCount ? `, ${queryCount} queries` : ""}${mutationCount ? `, ${mutationCount} mutations` : ""}`
299
752
  ), filesChanged > 0 && after) {
300
753
  const { execSync } = await import("node:child_process");
301
754
  try {
@@ -311,7 +764,8 @@ async function generate(options) {
311
764
  filesChanged,
312
765
  modelCount: allModelFiles.length,
313
766
  schemaCount: filesWithSchema.length,
314
- queryCount
767
+ queryCount,
768
+ mutationCount
315
769
  };
316
770
  }
317
771
  async function watch(options) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generate.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B,wBAC3B,iBAAgF,oBAChF,mBAAkC;AAElC,MAAM,OAAO,CAAC,UAAc,+BAAW,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK;AAEvE,IAAI,gBAAwC,CAAC,GACzC,oBAAoB;AAExB,SAAS,cAAc;AACrB,MAAI,MAAM,QAAQ,IAAI;AACtB,SAAO,QAAQ,OAAK;AAClB,UAAM,SAAK,0BAAQ,KAAK,cAAc;AACtC,YAAI,2BAAW,EAAE,GAAG;AAClB,YAAM,eAAW,0BAAQ,IAAI,UAAU;AACvC,iBAAK,2BAAW,QAAQ,SACtB,0BAAU,UAAU,EAAE,WAAW,GAAK,CAAC,GAElC;AAAA,IACT;AACA,cAAM,0BAAQ,KAAK,IAAI;AAAA,EACzB;AACA,SAAO;AACT;AAEA,SAAS,YAAY;AACnB,QAAM,WAAW,YAAY;AAC7B,MAAK,UACL;AAAA,4BAAoB,0BAAQ,UAAU,qBAAqB;AAC3D,QAAI;AACF,sBAAgB,KAAK,UAAM,6BAAa,mBAAmB,OAAO,CAAC;AAAA,IACrE,QAAQ;AACN,sBAAgB,CAAC;AAAA,IACnB;AAAA;AACF;AAEA,SAAS,YAAY;AACnB,EAAI,yBACF,8BAAc,mBAAmB,KAAK,UAAU,aAAa,IAAI;AAAA,GAAM,OAAO;AAElF;AAEA,SAAS,mBAAmB,UAAkB,SAA0B;AACtE,QAAM,cAAc,KAAK,OAAO;AAGhC,SAFmB,cAAc,QAAQ,MAEtB,mBAAe,2BAAW,QAAQ,IAC5C,UAGT,8BAAc,UAAU,SAAS,OAAO,GACxC,cAAc,QAAQ,IAAI,aACnB;AACT;AAEA,SAAS,mBAAmB,YAAsB;AAChD,QAAM,aAAa,WAAW,IAAI,CAAC,UAAM,2BAAS,GAAG,KAAK,CAAC,EAAE,KAAK,GAC5D,gBAAgB,CAAC,SAAkB,SAAS,SAAS,eAAe,MAEpE,UAAU,WACb,IAAI,CAAC,SAAS,eAAe,cAAc,IAAI,CAAC,oBAAoB,IAAI,GAAG,EAC3E,KAAK;AAAA,CAAI,GAKN,YAAY;AAAA,EAHS,CAAC,GAAG,UAAU,EAAE;AAAA,IAAK,CAAC,GAAG,MAClD,cAAc,CAAC,EAAE,cAAc,cAAc,CAAC,CAAC;AAAA,EACjD,EACiE,IAAI,CAAC,SAAS,KAAK,cAAc,IAAI,CAAC,GAAG,EAAE,KAAK;AAAA,CAAI,CAAC;AAAA;AAEtH,SAAO;AAAA,EAA2C,OAAO;AAAA;AAAA,EAAO,SAAS;AAAA;AAC3E;AAEA,SAAS,kBAAkB,YAAsB;AAC/C,QAAM,aAAa,WAAW,IAAI,CAAC,UAAM,2BAAS,GAAG,KAAK,CAAC,EAAE,KAAK,GAC5D,gBAAgB,CAAC,SAAkB,SAAS,SAAS,eAAe;AAU1E,SAAO;AAAA;AAAA;AAAA,EARa,WACjB,IAAI,CAAC,SAAS;AACb,UAAM,aAAa,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,GACxD,aAAa,cAAc,IAAI;AACrC,WAAO,eAAe,UAAU,mCAAmC,UAAU;AAAA,cAAkB,UAAU,yCAAyC,UAAU;AAAA,EAC9J,CAAC,EACA,KAAK;AAAA;AAAA,CAAM,CAEiH;AAAA;AACjI;AAEA,SAAS,mBAAmB,YAAsB;AAChD,QAAM,aAAa,WAAW,IAAI,CAAC,UAAM,2BAAS,GAAG,KAAK,CAAC,EAAE,KAAK,GAC5D,gBAAgB,CAAC,SAAkB,SAAS,SAAS,eAAe;AAM1E,SAAO;AAAA;AAAA;AAAA,EAJS,WACb,IAAI,CAAC,SAAS,sBAAsB,cAAc,IAAI,CAAC,sBAAsB,IAAI,GAAG,EACpF,KAAK;AAAA,CAAI,CAE+H;AAAA;AAC7I;AAEA,SAAS,qBAAqB;AAC5B,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyDT;AAEA,SAAS,2BACP,SACA;AAOA,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EANa,CAAC,GAAG,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,EAGrE,IAAI,CAAC,SAAS,eAAe,IAAI,qBAAqB,IAAI,GAAG,EAC7D,KAAK;AAAA,CAAI,CASL;AAAA;AAET;AAEA,SAAS,0BACP,SAMA;AACA,QAAM,cAAc,oBAAI,IAA4B;AACpD,aAAW,KAAK;AACd,IAAK,YAAY,IAAI,EAAE,UAAU,KAC/B,YAAY,IAAI,EAAE,YAAY,CAAC,CAAC,GAElC,YAAY,IAAI,EAAE,UAAU,EAAG,KAAK,CAAC;AAGvC,QAAM,cAAc,MAAM,KAAK,YAAY,KAAK,CAAC,EAAE,KAAK,GAElD,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,GAOV,gBAAgB,YACnB,IAAI,CAAC,SAAS;AAKb,UAAM,YAJc,YACjB,IAAI,IAAI,EACR,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,EAG3C,IAAI,CAAC,MAAM;AACV,YAAM,QAAQ,EAAE,YAAY,MAAM;AAAA,CAAI,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GACxD,kBAAkB,MAAM;AAAA,QAAU,CAAC,MACvC,EAAE,WAAW,0BAA0B;AAAA,MACzC;AAEA,UAAI,eAAe;AACnB,UAAI,oBAAoB,IAAI;AAC1B,cAAM,cAAwB,CAAC;AAC/B,YAAI,aAAa,GACb,UAAU;AAEd,iBAAS,IAAI,iBAAiB,IAAI,MAAM,QAAQ,KAAK;AACnD,gBAAM,OAAO,MAAM,CAAC,GACd,UAAU,UACZ,OACA,KAAK,QAAQ,+BAA+B,EAAE;AASlD,cARA,YAAY,KAAK,OAAO,GACxB,UAAU,IAEV,eAAe,QAAQ,MAAM,KAAK,KAAK,CAAC,GAAG,QAC3C,eAAe,QAAQ,MAAM,KAAK,KAAK,CAAC,GAAG,QAC3C,eAAe,QAAQ,MAAM,KAAK,KAAK,CAAC,GAAG,QAC3C,eAAe,QAAQ,MAAM,KAAK,KAAK,CAAC,GAAG,QAEvC,eAAe,KAAK,YAAY,SAAS;AAC3C;AAAA,QAEJ;AACA,uBAAe,YAAY,KAAK;AAAA,CAAI;AAAA,MACtC;AAEA,UAAI,EAAE,WAAW,UAAU,CAAC;AAC1B,eAAO,KAAK,EAAE,IAAI,+BAA+B,IAAI,IAAI,EAAE,IAAI;AAGjE,YAAM,oBAAoB,aACvB,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,MAAM,MAAO,MAAM,IAAI,OAAO,OAAO,IAAI,EAAG,EACjD,KAAK;AAAA,CAAI;AAEZ,aAAO,KAAK,EAAE,IAAI;AAAA,MACtB,iBAAiB;AAAA,4BACK,IAAI,IAAI,EAAE,IAAI;AAAA;AAAA,IAElC,CAAC,EACA,KAAK;AAAA,CAAI;AAEZ,WAAO,SAAS,IAAI;AAAA,EAAS,SAAS;AAAA;AAAA,EACxC,CAAC,EACA,KAAK;AAAA;AAAA,CAAM,GAER,gBAAgB,YAAY,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,EAAE,KAAK;AAAA,CAAI;AAEvE,SAAO,GAAG,OAAO;AAAA,EACjB,aAAa;AAAA;AAAA;AAAA,EAGb,aAAa;AAAA;AAAA;AAGf;AAuBA,eAAsB,SAAS,SAAmD;AAChF,QAAM,EAAE,KAAK,OAAO,OAAO,IAAI,SACzB,cAAU,0BAAQ,GAAG,GACrB,gBAAY,0BAAQ,SAAS,QAAQ,GACrC,mBAAe,0BAAQ,SAAS,WAAW,GAC3C,iBAAa,0BAAQ,SAAS,SAAS;AAE7C,MAAK,2BAAW,YAAY,SAC1B,0BAAU,cAAc,EAAE,WAAW,GAAK,CAAC,GAG7C,UAAU;AAEV,QAAM,oBAAgB,4BAAY,SAAS,EACxC,OAAO,CAAC,MAAM,EAAE,SAAS,KAAK,CAAC,EAC/B,KAAK,GAEF,kBAAkB,cAAc;AAAA,IAAO,CAAC,UAC5C,iCAAa,0BAAQ,WAAW,CAAC,GAAG,OAAO,EAAE,SAAS,8BAA8B;AAAA,EACtF;AAkBA,MAAI,eAhBiB;AAAA,IACnB;AAAA,UACE,0BAAQ,cAAc,WAAW;AAAA,MACjC,mBAAmB,aAAa;AAAA,IAClC;AAAA,IACA;AAAA,UACE,0BAAQ,cAAc,UAAU;AAAA,MAChC,kBAAkB,eAAe;AAAA,IACnC;AAAA,IACA;AAAA,UACE,0BAAQ,cAAc,WAAW;AAAA,MACjC,mBAAmB,eAAe;AAAA,IACpC;AAAA,IACA,uBAAmB,0BAAQ,cAAc,WAAW,GAAG,mBAAmB,CAAC;AAAA,EAC7E,EAEgC,OAAO,OAAO,EAAE,QAC5C,aAAa;AAGjB,UAAI,2BAAW,UAAU,GAAG;AAC1B,UAAM,KAAK,MAAM,OAAO,YAAY,GAC9B,EAAE,eAAe,IAAI,MAAM,OAAO,0CAA0C,GAC5E,EAAE,kBAAkB,IACxB,MAAM,OAAO,+CAA+C,GAExD,iBAAa,4BAAY,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,KAAK,CAAC,GAEpE,aAKD,CAAC;AAEN,eAAW,QAAQ,YAAY;AAC7B,YAAM,eAAW,0BAAQ,YAAY,IAAI,GACnC,mBAAe,2BAAS,MAAM,KAAK;AAEzC,UAAI;AACF,cAAM,cAAU,6BAAa,UAAU,OAAO,GACxC,aAAa,GAAG;AAAA,UACpB;AAAA,UACA;AAAA,UACA,GAAG,aAAa;AAAA,UAChB;AAAA,QACF;AAEA,WAAG,aAAa,YAAY,CAAC,SAAS;AACpC,cAAI,GAAG,oBAAoB,IAAI,GAAG;AAIhC,gBAAI,CAHmB,KAAK,WAAW;AAAA,cACrC,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW;AAAA,YAClC,EACqB;AAErB,kBAAM,cAAc,KAAK,gBAAgB,aAAa,CAAC;AACvD,gBAAI,CAAC,eAAe,CAAC,GAAG,sBAAsB,WAAW,EAAG;AAE5D,kBAAM,OAAO,YAAY,KAAK,QAAQ,UAAU;AAChD,gBAAI,SAAS,aAAc;AAE3B,gBAAI,YAAY,eAAe,GAAG,gBAAgB,YAAY,WAAW,GAAG;AAC1E,oBAAM,SAAS,YAAY,YAAY;AACvC,kBAAI,YAAY;AAEhB,cAAI,OAAO,SAAS,MAElB,YADc,OAAO,CAAC,EACJ,MAAM,QAAQ,UAAU,KAAK;AAGjD,kBAAI;AACF,sBAAM,aAAa,sBAAsB,SAAS,IAC5C,QAAQ,kBAAkB,SAAS,UAAU,GAC7C,cAAc,eAAe,SAAS,KAAK;AAEjD,2BAAW,KAAK;AAAA,kBACd;AAAA,kBACA,QAAQ;AAAA,kBACR;AAAA,kBACA,YAAY;AAAA,gBACd,CAAC;AAAA,cACH,SAAS,KAAK;AACZ,gBAAK,UAAQ,QAAQ,MAAM,UAAK,IAAI,KAAK,GAAG,EAAE;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,QAAK,UAAQ,QAAQ,MAAM,oBAAoB,IAAI,KAAK,GAAG;AAAA,MAC7D;AAAA,IACF;AAEA,iBAAa,WAAW;AAExB,UAAM,iBAAiB;AAAA,UACrB,0BAAQ,cAAc,mBAAmB;AAAA,MACzC,2BAA2B,UAAU;AAAA,IACvC,GACM,gBAAgB;AAAA,UACpB,0BAAQ,cAAc,kBAAkB;AAAA,MACxC,0BAA0B,UAAU;AAAA,IACtC;AAEA,IAAI,kBAAgB,gBAChB,iBAAe;AAAA,EACrB;AASA,MAPI,eAAe,KAAK,CAAC,UACvB,QAAQ;AAAA,IACN,UAAK,cAAc,MAAM,YAAY,gBAAgB,MAAM,YAAY,aAAa,KAAK,UAAU,aAAa,EAAE;AAAA,EACpH,GAIE,eAAe,KAAK,OAAO;AAC7B,UAAM,EAAE,SAAS,IAAI,MAAM,OAAO,oBAAoB;AACtD,QAAI;AACF,eAAS,OAAO;AAAA,QACd,OAAO;AAAA,QACP,KAAK,EAAE,GAAG,QAAQ,KAAK,uBAAuB,aAAa;AAAA,MAC7D,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,MAAK,UAAQ,QAAQ,MAAM,gCAAgC,GAAG,EAAE;AAAA,IAClE;AAAA,EACF;AAEA,mBAAU,GAEH;AAAA,IACL;AAAA,IACA,YAAY,cAAc;AAAA,IAC1B,aAAa,gBAAgB;AAAA,IAC7B;AAAA,EACF;AACF;AAEA,eAAsB,MAAM,SAAuB;AACjD,QAAM,EAAE,KAAK,WAAW,IAAK,IAAI,SAC3B,cAAU,0BAAQ,GAAG,GACrB,gBAAY,0BAAQ,SAAS,QAAQ,GACrC,iBAAa,0BAAQ,SAAS,SAAS,GACvC,mBAAe,0BAAQ,SAAS,WAAW;AAGjD,QAAM,SAAS,EAAE,GAAG,SAAS,QAAQ,GAAK,CAAC,GAC3C,QAAQ,KAAK;AAAA,CAAkB;AAE/B,QAAM,WAAW,MAAM,OAAO,UAAU;AAExC,MAAI,gBAAsD;AAE1D,QAAM,sBAAsB,CAAC,MAAc,UAAkB;AAC3D,IAAI,iBAAe,aAAa,aAAa,GAC7C,QAAQ,KAAK;AAAA,EAAK,KAAK,IAAI,IAAI,EAAE,GACjC,gBAAgB,WAAW,MAAM;AAC/B,eAAS,EAAE,GAAG,SAAS,QAAQ,GAAM,CAAC;AAAA,IACxC,GAAG,QAAQ;AAAA,EACb,GAEM,UAAU,SAAS,MAAM,CAAC,WAAW,UAAU,GAAG;AAAA,IACtD,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,SAAS,CAAC,YAAY;AAAA,EACxB,CAAC;AAED,iBAAQ,GAAG,UAAU,CAAC,SAAS,oBAAoB,MAAM,WAAI,CAAC,GAC9D,QAAQ,GAAG,OAAO,CAAC,SAAS,oBAAoB,MAAM,QAAG,CAAC,GAC1D,QAAQ,GAAG,UAAU,CAAC,SAAS,oBAAoB,MAAM,kBAAM,CAAC,GAEzD;AACT;",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["inner", "props", "dir"]
6
6
  }